Bazel

Developer Tools

A fast, scalable, multi-language build system.

Latest 9.2.0 · by GoogleWebsitebazelbuild/bazel

Release activity

Release activity — 11 releases across 11 days since Apr 15, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Apr 15, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 19, 2026No releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
Monday1 release on Apr 20, 20261 release on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 20261 release on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on Apr 21, 2026No releases on Apr 28, 20261 release on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Apr 22, 2026No releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 20261 release on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 23, 2026No releases on Apr 30, 20261 release on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 20261 release on Jun 25, 2026No releases on Jul 2, 20261 release on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 20261 release on Aug 6, 2026
FridayNo releases on Apr 24, 2026No releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 20261 release on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on Apr 25, 2026No releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

11 releases since Apr 15, 2026

Changelog

8.8.0rc1

Pre-release

Release 8.8.0rc1 (2026-08-06)

Release Notes:

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 originalPermalink
How 8.8.0rc1 went

9.2.0

Added 6
  • 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 for `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 and allow breaking changes to the facts schema
Changed 8
  • `exec_properties` now respects `resources:cpu` and `resources:memory` for local resource estimation
  • Source directories in external repositories are temporarily allowed to cross package boundaries, gated by the new `--incompatible_check_external_repo_source_dir_package_boundary` flag
  • 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
  • The remote repo contents cache no longer caches or restores repos with cross-repo symlinks to avoid a large surface area for bugs
  • 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 6
  • Bazel no longer crashes when a `label_list_dict` attribute is used in a split transition
  • Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a `.bzl` file
  • Modifying environment variables no longer causes spurious reloading of packages in external repositories
  • 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 a crash with `--experimental_remote_repo_contents_cache` when running without a remote or disk cache

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

Release 9.2.0 (2026-07-13)

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)
Core
  • Source directories in external repositories are temporarily allowed to cross package boundaries. This will be disallowed in the future, gated by the new --incompatible_check_external_repo_source_dir_package_boundary flag. (#30040)
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)
  • Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a .bzl file. (#30037)
  • The remote repo contents cache no longer caches or restores repos with cross-repo symlinks, thus avoiding a large surface area for bugs. The effort to reenable this support is tracked by #30160. (#30190)
  • Modifying environment variables no longer causes spurious reloading of packages in external repositories. (#30194)
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)
  • Fixed a crash with --experimental_remote_repo_contents_cache when running without a remote or disk cache. (#30060)
  • Fixed a spurious remote-execution failure with --experimental_output_paths=strip where a lost input in a tree artifact shared between actions could not be recovered by action rewinding. (#30193)
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)
  • Windows launcher stubs now embed an asInvoker UAC manifest, preventing "The requested operation requires elevation. (error: 740)" for targets whose name matches the installer-detection heuristic. (#30182)
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 originalPermalink
How 9.2.0 went

9.2.0rc2

Pre-release
Added 7
  • Add refines_constraint_value attribute on constraint_setting to indicate that non-default values for that setting specified on a platform require the refined value to also be specified
  • Add and_then method on transitions to compose transitions, supporting both Starlark transitions and native transitions
  • Add --incompatible_check_external_repo_source_dir_package_boundary flag to disallow source directories in external repositories from crossing package boundaries
  • Add SOCKS proxy support for socks://, socks4://, and socks5:// URLs in HTTPS_PROXY and HTTP_PROXY environment variables
  • Add strip_components attribute to extract, download_and_extract, and http_archive to allow stripping of path components when extracting files
  • Add module_ctx.tag_sort_key(tag) method to return an opaque object for a given tag that can be compared to derive the order of tags from different classes
  • Add facts_version integer parameter to module_extension() to invalidate persisted facts in MODULE.bazel.lock for that extension
Changed 5
  • exec_properties now respects resources:cpu and resources:memory for local resource estimation
  • Remote repo contents cache now correctly materializes chains of symlinks as action inputs but no longer supports symlinks into the main repository
  • Remote repo contents cache no longer caches or restores repos with cross-repo symlinks to avoid a large surface area for bugs
  • 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
Fixed 7
  • Fix crash when label_list_dict attribute is used in a split transition
  • Prevent external repos from being refetched when they contribute inputs to an action using the hermetic Linux sandbox
  • Fix spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a .bzl file
  • Fix spurious reloading of packages in external repositories when modifying environment variables
  • Fix performance regression in Bazel 9 causing RepoMappingManifest actions to consume excessive CPU time
  • Fix repo content caching for non-gRPC cache backends
  • Fix crash with --experimental_remote_repo_contents_cache when running without a remote or disk cache
Removed 1
  • Remove limit on the size of gRPC messages received from the remote executor or cache

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

Release 9.2.0rc2 (2026-07-09)

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)
Core
  • Source directories in external repositories are temporarily allowed to cross package boundaries. This will be disallowed in the future, gated by the new --incompatible_check_external_repo_source_dir_package_boundary flag. (#30040)
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)
  • Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a .bzl file. (#30037)
  • The remote repo contents cache no longer caches or restores repos with cross-repo symlinks, thus avoiding a large surface area for bugs. The effort to reenable this support is tracked by #30160. (#30190)
  • Modifying environment variables no longer causes spurious reloading of packages in external repositories. (#30194)
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)
  • Fixed a crash with --experimental_remote_repo_contents_cache when running without a remote or disk cache. (#30060)
  • Fixed a spurious remote-execution failure with --experimental_output_paths=strip where a lost input in a tree artifact shared between actions could not be recovered by action rewinding. (#30193)
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)
  • Windows launcher stubs now embed an asInvoker UAC manifest, preventing "The requested operation requires elevation. (error: 740)" for targets whose name matches the installer-detection heuristic. (#30182)
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 originalPermalink
How 9.2.0rc2 went

9.2.0rc1

Pre-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 originalPermalink
How 9.2.0rc1 went

9.1.1

Changed 1
  • Support bounded parallel chunk transfers
Fixed 8
  • Reverted --downloader_config from being a repeatable flag to restore backward compatibility
  • Fixed a crash with file:// URIs
  • Fixed a crash with opaque URIs
  • Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled
  • Fixed crash on --remote_default_exec_properties with the same key
  • Verify the whole blob when downloading chunks
  • Fixed JVM crash from VerifyException in GrpcCacheClient.onNext()
  • Invalidate unresolved symlink info after deletion in the RAFS

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

Release 9.1.1 (2026-06-03)

Bazel 9.1.1 is a patch LTS release. With the exception of CcInfo (see below), it is backward compatible with Bazel 9.0.

IMPORTANT

Compatibility Note: CcInfo removal and rules_go

If you encounter the error "The CcInfo symbol has been removed", this is due to an intentional change in Bazel 9 regarding C++ Starlarkification. While this change was present in 9.0.0, a bug fixed in 9.0.1 (#28360) now correctly surfaces this error instead of failing silently or with a confusing message. To fix this, please upgrade rules_go, rules_nodejs or any broken rulesets. For example,

# Add repo_name = None if you don't directly depend on them.
bazel_dep(name = "rules_go", version = "0.59.0") 
bazel_dep(name = "rules_nodejs", version = "6.7.3")
External Deps
  • --downloader_config was accidentally made a repeatable flag in 9.1.0, which was a backwards-incompatible change. This has been reverted in 9.1.1. (#29616)
  • Fixed a crash with file:// URIs. (#29579)
  • Fixed a crash with opaque URIs. (#29658)
Remote Execution
  • Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled. (#29677)
  • Fix crash on --remote_default_exec_properties with the same key. (#29596)
  • Verify the whole blob when downloading chunks (#29593)
  • Support bounded parallel chunk transfers (#29614)
  • Fix JVM crash from VerifyException in GrpcCacheClient.onNext() (#29583)
  • Invalidate unresolved symlink info after deletion in the RAFS (#29671)
Acknowledgments

This release contains contributions from many people at Google, as well as Armando Montanez, ashutosh0x, Boleyn Su, Fabian Meumertzheim, H5-O5, Joseph Gette, Keith Smiley, Paul Tarjan, Ted Kaplan, Tyler French, and Will Stranton.

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 originalPermalink
How 9.1.1 went

9.1.1rc1

Pre-release
Changed 1
  • Support bounded parallel chunk transfers
Fixed 8
  • Reverted --downloader_config flag from being accidentally made repeatable in 9.1.0 to restore backward compatibility
  • Fixed a crash with file:// URIs
  • Fixed a crash with opaque URIs
  • Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled
  • Fixed crash on --remote_default_exec_properties with the same key
  • Verify the whole blob when downloading chunks
  • Fixed JVM crash from VerifyException in GrpcCacheClient.onNext()
  • Invalidate unresolved symlink info after deletion in the RAFS

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

Release 9.1.1rc1 (2026-05-29)

Bazel 9.1.1 is a patch LTS release. With the exception of CcInfo (see below), it is backward compatible with Bazel 9.0.

IMPORTANT

Compatibility Note: CcInfo removal and rules_go

If you encounter the error "The CcInfo symbol has been removed", this is due to an intentional change in Bazel 9 regarding C++ Starlarkification. While this change was present in 9.0.0, a bug fixed in 9.0.1 (#28360) now correctly surfaces this error instead of failing silently or with a confusing message. To fix this, please upgrade rules_go, rules_nodejs or any broken rulesets. For example,

# Add repo_name = None if you don't directly depend on them.
bazel_dep(name = "rules_go", version = "0.59.0") 
bazel_dep(name = "rules_nodejs", version = "6.7.3")
External Deps
  • --downloader_config was accidentally made a repeatable flag in 9.1.0, which was a backwards-incompatible change. This has been reverted in 9.1.1. (#29616)
  • Fixed a crash with file:// URIs. (#29579)
  • Fixed a crash with opaque URIs. (#29658)
Remote Execution
  • Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled. (#29677)
  • Fix crash on --remote_default_exec_properties with the same key. (#29596)
  • Verify the whole blob when downloading chunks (#29593)
  • Support bounded parallel chunk transfers (#29614)
  • Fix JVM crash from VerifyException in GrpcCacheClient.onNext() (#29583)
  • Invalidate unresolved symlink info after deletion in the RAFS (#29671)
Acknowledgments

This release contains contributions from many people at Google, as well as Armando Montanez, ashutosh0x, Boleyn Su, Fabian Meumertzheim, H5-O5, Joseph Gette, Keith Smiley, Paul Tarjan, Ted Kaplan, Tyler French, and Will Stranton.

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 originalPermalink
How 9.1.1rc1 went

8.7.0

Added 4
  • Added SOCKS proxy support, accepting socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties
  • Add strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files
  • Add experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from remote or disk cache evictions
  • Add --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks
Changed 1
  • package_group now supports labels with external repositories in the packages attribute
Fixed 2
  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine
  • string.splitlines() no longer treat u+0085 as a newline character when internal_starlark_utf_8_byte_strings is set

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

Release 8.7.0 (2026-05-07)

Bazel 8.7.0 is a minor LTS release. It is fully backward compatible with Bazel 8.0 and contains selected changes by the Bazel community and Google engineers.

Configurability
  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29240)
External Dependencies
  • package_group now supports labels with external repositories in the packages attribute (#28896).
  • Added SOCKS proxy support. Bazel now accepts socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties. (#29305)
  • Adds the strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. (#29367)
Remote Execution
  • Bazel now has experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from (remote or disk) cache evictions. (#28971)
  • Added --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks. Requires server support. (#28900)
Starlark / Build Language
  • string.splitlines() no longer treat u+0085 as a newline character when internal_starlark_utf_8_byte_strings is set (which defaults to true) (#28932)
Acknowledgments

This release contains contributions from many people at Google, as well as Boleyn Su, Fabian Meumertzheim, H5-O5, Jacob Nowjack, Justin Won, Keith Smiley, Mike Lundy, Sarad Pant, and Will Stranton.

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 originalPermalink
How 8.7.0 went

8.7.0rc2

Pre-release

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

Release 8.7.0rc2 (2026-05-04)

Bazel 8.7.0 is a minor LTS release. It is fully backward compatible with Bazel 8.0 and contains selected changes by the Bazel community and Google engineers.

Configurability
  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29240)
External Dependencies
  • package_group now supports labels with external repositories in the packages attribute (#28896).
  • Added SOCKS proxy support. Bazel now accepts socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties. (#29305)
  • Adds the strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. (#29367)
Remote Execution
  • Bazel now has experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from (remote or disk) cache evictions. (#28971)
  • Added --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks. Requires server support. (#28900)
Starlark / Build Language
  • string.splitlines() no longer treat u+0085 as a newline character when internal_starlark_utf_8_byte_strings is set (which defaults to true) (#28932)
Acknowledgments

This release contains contributions from many people at Google, as well as Boleyn Su, Fabian Meumertzheim, H5-O5, Jacob Nowjack, Justin Won, Keith Smiley, Mike Lundy, Sarad Pant, and Will Stranton.

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 originalPermalink
How 8.7.0rc2 went

8.7.0rc1

Pre-release

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

Release 8.7.0rc1 (2026-04-27)

Bazel 8.7.0 is a minor LTS release. It is fully backward compatible with Bazel 8.0 and contains selected changes by the Bazel community and Google engineers.

Configurability
  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29240)
External Dependencies
  • package_group now supports labels with external repositories in the packages attribute (#28896).
  • Added SOCKS proxy support. Bazel now accepts socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties. (#29305)
  • Adds the strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. (#29367)
Remote Execution
  • Bazel now has experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from (remote or disk) cache evictions. (#28971)
  • Added --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks. Requires server support. (#28900)
Starlark / Build Language
  • string.splitlines() no longer treat u+0085 as a newline character when internal_starlark_utf_8_byte_strings is set (which defaults to true) (#28932)
Acknowledgments

This release contains contributions from many people at Google, as well as Boleyn Su, Fabian Meumertzheim, H5-O5, Jacob Nowjack, Justin Won, Keith Smiley, Mike Lundy, Sarad Pant, and Will Stranton.

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 originalPermalink
How 8.7.0rc1 went

9.1.0

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

Release 9.1.0 (2026-04-20)

Bazel 9.1.0 is a minor LTS release. With two exceptions (see below: CcInfo and --downloader_config), it is backward compatible with Bazel 9.0 and contains selected changes by the Bazel community and Google engineers.

IMPORTANT

Compatibility Note: CcInfo removal and rules_go

If you encounter the error "The CcInfo symbol has been removed", this is due to an intentional change in Bazel 9 regarding C++ Starlarkification. While this change was present in 9.0.0, a bug fixed in 9.0.1 (#28360) now correctly surfaces this error instead of failing silently or with a confusing message. To fix this, please upgrade rules_go, rules_nodejs or any broken rulesets. For example,

# Add repo_name = None if you don't directly depend on them.
bazel_dep(name = "rules_go", version = "0.59.0") 
bazel_dep(name = "rules_nodejs", version = "6.7.3")
CLI
  • Reporting of cached test results can now be suppressed with --test_summary=short_uncached or --test_summary=detailed_uncached. (#29263)
Configurability
  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29239)
External Deps
  • The --downloader_config flag can now be specified multiple times to use several downloader config files at once. Note that this is technically a breaking change, and will be reverted in future 9.x releases, starting from 9.1.1. Bazel 10.x will again contain this incompatible change.
  • The compatibility_level and max_compatibility_level attributes of module in MODULE.bazel are now no-ops. Module maintainers should stop specifying those attributes and provide clear build time error messages and actionable migration paths when making major breaking changes. (#28616)
  • package_group now supports labels with external repositories in the packages attribute. (#28893)
  • rctx.symlink now implicitly watches the target if it falls back to a copy. (#28741)
  • The local and remote repo contents cache now include the host OS and CPU architecture in the cache key. (#29195)
  • The remote repo contents cache now supports all reproducible repo rules. (#29225)
Remote Execution
  • Bazel now has experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from (remote or disk) cache evictions. (#28958)
  • Added --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks. Requires server support. (#28903)
Starlark / Build Language
  • string.splitlines() no longer incorrectly treats u+0085 (NEL) as a newline character (#28931)
Acknowledgments

This release contains contributions from many people at Google, as well as Armando Montanez, ashutosh0x, Boleyn Su, Fabian Meumertzheim, H5-O5, Joseph Gette, Keith Smiley, Paul Tarjan, Ted Kaplan, Tyler French, and Will Stranton.

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 originalPermalink
How 9.1.0 went

9.1.0rc3

Pre-release

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

Release 9.1.0rc3 (2026-04-15)

Bazel 9.1.0 is a minor LTS release. It is fully backward compatible with Bazel 9.0 and contains selected changes by the Bazel community and Google engineers.

IMPORTANT

Compatibility Note: CcInfo removal and rules_go

If you encounter the error "The CcInfo symbol has been removed", this is due to an intentional change in Bazel 9 regarding C++ Starlarkification. While this change was present in 9.0.0, a bug fixed in 9.0.1 (#28360) now correctly surfaces this error instead of failing silently or with a confusing message. To fix this, please upgrade rules_go, rules_nodejs or any broken rulesets. For example,

# Add repo_name = None if you don't directly depend on them.
bazel_dep(name = "rules_go", version = "0.59.0") 
bazel_dep(name = "rules_nodejs", version = "6.7.3")
CLI
  • Reporting of cached test results can now be suppressed with --test_summary=short_uncached or --test_summary=detailed_uncached. (#29263)
Configurability
  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29239)
External Deps
  • The compatibility_level and max_compatibility_level attributes of module in MODULE.bazel are now no-ops. Module maintainers should stop specifying those attributes and provide clear build time error messages and actionable migration paths when making major breaking changes. (#28616)
  • package_group now supports labels with external repositories in the packages attribute. (#28893)
  • rctx.symlink now implicitly watches the target if it falls back to a copy. (#28741)
  • The local and remote repo contents cache now include the host OS and CPU architecture in the cache key. (#29195)
  • The remote repo contents cache now supports all reproducible repo rules. (#29225)
Remote Execution
  • Bazel now has experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from (remote or disk) cache evictions. (#28958)
  • Added --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks. Requires server support. (#28903)
Starlark / Build Language
  • string.splitlines() no longer incorrectly treats u+0085 (NEL) as a newline character (#28931)
Acknowledgments

This release contains contributions from many people at Google, as well as Armando Montanez, ashutosh0x, Boleyn Su, Fabian Meumertzheim, H5-O5, Joseph Gette, Keith Smiley, Paul Tarjan, Ted Kaplan, Tyler French, and Will Stranton.

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 originalPermalink
How 9.1.0rc3 went
View all

Discussion