commit | 553dc6c9af2d38e4e3d356bf50e09ea7b008f25c | [log] [tgz] |
---|---|---|
author | adonovan <adonovan@google.com> | Tue Dec 10 11:22:48 2019 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Dec 10 11:23:50 2019 -0800 |
tree | 9b51f66d13e6d597c51763a9485386a1e25053ad | |
parent | a1f302a61e0dc2dd3e44d45df599255b444dd767 [diff] |
bazel packages: simplify SkylarkInfo Previously, SkylarkInfo had one of two forms: - schemaful, which held an array of values and a reference to a Layout, which mapped keys to small integers; and - schemaless, which held an ImmutableSortedMap, which is internally a 7-word structure holding separate lists of keys and values, doubly indirect. This change replaces both by a simpler representation: a single table of keys followed by values, with the keys sorted. Lookup involves binary search over the key portion. The table is more compact than the schemaless implementation, and despite having O(log)-time lookup, there are fewer cache misses than in a hash table. It may be more compact even than the schemaful implementation, because it doesn't use space for fields that are not defined. Also: - remove unnecessary Attribute.getSkylarkValue key munging done by the old copyValues function. This required fixing one caller (WorkspaceFactory). - remove unnecessary Starlark.fromJava value munging done by the old copyValues function. This requires fixing four callers. - assert validity of values. - delete Layout - optimize struct + struct to make only one pass and one allocation. - rename createSchema{ful,less} to create. - delete createEmpty RELNOTES: N/A PiperOrigin-RevId: 284810601
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
Follow our tutorials:
See CONTRIBUTING.md