Reduce lock contention in the loading phase (https://github.com/bazelbuild/bazel/pull/28665) Profiling `bazel build //src:bazel-dev --nobuild` with `--experimental_command_profile=lock` revealed between 2.5s and 10s of total thread wait time in repo rule related event handling. #28661 already reduces that time by a fair amount and this PR makes the profile fully flat. Benchmarks indicate a ~2-3% improvement in wall time: ```shell $ hyperfine --prepare './{bazel} clean --expunge' './{bazel} build //src:bazel-dev --nobuild' --warmup 1 --runs 5 --parameter-list bazel bazel-after,bazel-before Benchmark 1: ../bazel-truffle/bazel-after build //src:bazel-dev --nobuild Time (mean ± σ): 4.191 s ± 0.066 s [User: 0.029 s, System: 0.026 s] Range (min … max): 4.109 s … 4.264 s 5 runs Benchmark 2: ../bazel-truffle/bazel-before build //src:bazel-dev --nobuild Time (mean ± σ): 4.292 s ± 0.171 s [User: 0.029 s, System: 0.025 s] Range (min … max): 4.124 s … 4.520 s 5 runs Summary ../bazel-truffle/bazel-after build //src:bazel-dev --nobuild ran 1.02 ± 0.04 times faster than ../bazel-truffle/bazel-before build //src:bazel-dev --nobuild ``` Closes #28665. PiperOrigin-RevId: 875172188 Change-Id: I7305be6268486b509abbf78bbf86140ed16f473d
{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.
To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
See CONTRIBUTING.md