commit | 1d93d26d9900328dcba0026bf21cb45cc37a4596 | [log] [tgz] |
---|---|---|
author | adonovan <adonovan@google.com> | Thu May 07 14:50:42 2020 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Thu May 07 14:51:39 2020 -0700 |
tree | d5cb034f45135d6e67ffebde46e75b7081fe209c | |
parent | 00806c840e44d837c86d89eb2263c8edea4a18c5 [diff] |
bazel syntax: delete StarlarkThread.Extension This change replaces every use of Extension by Module. Extension was a pair of a globals dictionary, and a digest of "the thread's source file" (a dubious concept) and all the Starlark (actually: .bzl) files it transitively loads. Before this change, construction of StarlarkThread would combine the file hash (which is only defined if the parseWithDigest function was used) with the transitive hashes of the imports, and would save this information in the StarlarkThread. Now, StarlarkImportLookupFunction does this hashing, and saves the result in a new field of BazelStarlarkContext, which is the application-specific state carried by a Starlark thread created by Bazel. This field is set only in threads created by StarlarkImportLookupFunction. SkylarkTestCase.newStarlarkThread sets it to a dummy value, because execAndExport requires it to be set. (It was implicitly a dummy value prior to this change: in these tests source files are not parsed with parseWithDigest, and newStarlarkThread uses an empty import map.) Also: - use byte[] not string for digest. - StarlarkImportLookupValue - record the transitive digest alongside the module. - use == equivalence relation. There is no realistic scenario in which two distinct SILV instances alive at the same time might be equal. - terminology: import -> load extension -> module hashCode -> digest - without Fingerprint, lib.syntax no longer depends on lib.util. - Extension.checkStateEquals moved to SerializationCheckingGraph. - Eval: hoist loop-invariant code for LoadStatement - discard_graph_edges_test: remove assertions on cardinality of Extension. The cardinality of Module is quite different, and not something that belongs in this test. A follow-up change will remove StarlarkFile.getContentHash. This is a breaking API change for Copybara. PiperOrigin-RevId: 310441579
{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