Bazel 9.2.0rc1

9.2.0rc1Pre-release
Added 7
  • The new `refines_constraint_value` attribute on `constraint_setting` can be used to indicate that any non-default value for that setting specified on a `platform` requires the refined value to also be specified
  • The `and_then` method on `transition`s can be used to compose transitions, supporting both Starlark transitions and native transitions
  • Added SOCKS proxy support with `socks://`, `socks4://`, and `socks5://` URLs in `HTTPS_PROXY`/`HTTP_PROXY` environment variables and related system properties
  • Added the `strip_components` attribute to `extract`/`download_and_extract`/`http_archive` to allow stripping of path components when extracting files
  • Added the `module_ctx.tag_sort_key(tag)` method, which returns an opaque object for the given tag that can be compared to derive the order in which tags from different classes appear in the MODULE.bazel file
  • `module_extension(...)` now accepts a `facts_version` integer parameter to invalidate persisted facts in `MODULE.bazel.lock` for that extension
  • Created `--incompatible_remove_ctx_android_fragment` for Starlark Flags migration
Changed 6
  • `exec_properties` now respects `resources:cpu` and `resources:memory` for local resource estimation
  • External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox
  • The remote repo contents cache now correctly materializes chains of symlinks as action inputs, but no longer supports symlinks into the main repository
  • Enable TCP keepalive by default for gRPC connections with reasonable defaults
  • CDC chunk uploads and downloads can now happen in parallel within a large blob
  • Bazel no longer limits the size of gRPC messages received from the remote executor or cache
Fixed 4
  • Bazel no longer crashes when a `label_list_dict` attribute is used in a split transition
  • Fixed a performance regression in Bazel 9 that causes `RepoMappingManifest` actions to consume a lot of CPU time
  • Fixed repo content caching for non-gRPC cache backends
  • Fixed Bazel being unable to run a Windows executable whose path is too long to shorten under `MAX_PATH`, for example when 8dot3 short names are disabled

[!NOTE] If you are looking for rolling releases, please visit this page.

Release 9.2.0rc1 (2026-06-25)

Bazel 9.2.0 is a minor LTS release. It is fully backward compatible with Bazel 9 releases starting from 9.0.1; see Bazel 9.0.1 release notes for a note on backward compatibility.

Configurability
  • The new refines_constraint_value attribute on constraint_setting can be used to indicate that any non-default value for that setting specified on a platform requires the refined value to also be specified. (#29727)
  • Bazel no longer crashes when a label_list_dict attribute is used in a split transition (#29830). (#29856)
  • exec_properties now respects resources:cpu and resources:memory for local resource estimation. (#29426)
  • The and_then method on transitions can be used to compose transitions. Both Starlark transitions and native transitions (e.g. config.exec()) are supported. (#29888)
External Deps
  • Added SOCKS proxy support. Bazel now accepts socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties. (#29364)
  • Adds the strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. (#29369)
  • Added the module_ctx.tag_sort_key(tag) method, which returns an opaque object for the given tag that can be compared to derive the order in which tags from different classes appear in the MODULE.bazel file. (#29484)
  • module_extension(...) now accepts a facts_version integer parameter. Bumping it invalidates the facts persisted in MODULE.bazel.lock for that extension, allowing extension authors to make breaking changes to the facts schema without risking misinterpretation by older code paths. (#29871)
  • External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox. (#29889)
  • The remote repo contents cache now correctly materializes chains of symlinks as action inputs, but no longer supports symlinks into the main repository. (#29959)
Performance
  • Fixed a performance regression in Bazel 9 that causes RepoMappingManifest actions to consume a lot of CPU time. (#29807)
Remote Execution
  • Enable TCP keepalive by default for gRPC connections with reasonable defaults (#29898)
  • Fixed repo content caching for non-gRPC cache backends. (#29869)
  • CDC chunk uploads and downloads can now happen in parallel within a large blob. (#29796)
  • Bazel no longer limits the size of gRPC messages received from the remote executor or cache. (#29885)
Starlark / Build Language
  • Created --incompatible_remove_ctx_android_fragment for Starlark Flags migration (#29884)
Windows
  • Fixed Bazel being unable to run a Windows executable whose path is too long to shorten under MAX_PATH, e.g. when 8dot3 short names are disabled (microsoft/Windows-Containers#507). (#29984)
Acknowledgments

This release contains contributions from many people at Google, as well as Ashutosh0x, Bryce Lampe, Fabian Meumertzheim, Fredrik Medley, gaurav0107, Grzegorz Lukasik, Jacob Nowjack, John Cater, JonathanPerry651, Keith Smiley, peakschris, Rgis Desgroppes, Richard Lavoie, Sarad, Son Luong Ngoc, Tamir Duberstein, Tyler French, vadim, Will Stranton, and Yonatan Goldschmidt.

Notice: Bazel installers contain binaries licensed under the GPLv2 with Classpath exception. Those installers should always be redistributed along with the source code.

Some versions of Bazel contain a bundled version of OpenJDK. The license of the bundled OpenJDK and other open-source components can be displayed by running the command bazel license. The vendor and version information of the bundled OpenJDK can be displayed by running the command bazel info java-runtime. The binaries and source-code of the bundled OpenJDK can be downloaded from our mirror server.

Security: All our binaries are signed with our public key 3D5919B448457EE0.

View original

Upgraded? How did it go?

Discussion