# Bazel changelog > A fast, scalable, multi-language build system. - Vendor: Google - Category: Developer Tools - Official site: https://bazel.build - Tracked by: What's New (https://whatsnew.fyi/product/bazel) - Harvested from: GitHub (bazelbuild/bazel) - Entries below: 11 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### 8.8.0rc1 - Date: 2026-08-06 - Version: 8.8.0rc1 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/8.8.0rc1 - Permalink: https://whatsnew.fyi/product/bazel/releases/8.8.0rc1 - Labels: 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](https://mirror.bazel.build/openjdk/index.html). _Security_: All our binaries are signed with our [public key](https://bazel.build/bazel-release.pub.gpg) 3D5919B448457EE0. ### 9.2.0 - Date: 2026-07-13 - Version: 9.2.0 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/9.2.0 - Permalink: https://whatsnew.fyi/product/bazel/releases/9.2.0 - **added** — 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 - **fixed** — Bazel no longer crashes when a `label_list_dict` attribute is used in a split transition - **changed** — `exec_properties` now respects `resources:cpu` and `resources:memory` for local resource estimation - **added** — The `and_then` method on `transition`s can be used to compose transitions, supporting both Starlark transitions and native transitions - **changed** — 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 - **added** — Added SOCKS proxy support for `socks://`, `socks4://`, and `socks5://` URLs in `HTTPS_PROXY`/`HTTP_PROXY` environment variables and related system properties - **added** — Added the `strip_components` attribute to `extract`/`download_and_extract`/`http_archive` to allow stripping of path components when extracting files - **added** — 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 - **added** — `module_extension(...)` now accepts a `facts_version` integer parameter to invalidate persisted facts and allow breaking changes to the facts schema - **changed** — External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox - **changed** — The remote repo contents cache now correctly materializes chains of symlinks as action inputs, but no longer supports symlinks into the main repository - **fixed** — Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a `.bzl` file - **changed** — The remote repo contents cache no longer caches or restores repos with cross-repo symlinks to avoid a large surface area for bugs - **fixed** — Modifying environment variables no longer causes spurious reloading of packages in external repositories - **fixed** — Fixed a performance regression in Bazel 9 that causes `RepoMappingManifest` actions to consume a lot of CPU time - **changed** — Enable TCP keepalive by default for gRPC connections with reasonable defaults - **fixed** — Fixed repo content caching for non-gRPC cache backends - **changed** — CDC chunk uploads and downloads can now happen in parallel within a large blob - **changed** — Bazel no longer limits the size of gRPC messages received from the remote executor or cache - **fixed** — 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](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/releases/tag/9.0.1) 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](https://github.com/bazelbuild/bazel/pull/29727)) * Bazel no longer crashes when a `label_list_dict` attribute is used in a split transition (#29830). ([#29856](https://github.com/bazelbuild/bazel/pull/29856)) * `exec_properties` now respects `resources:cpu` and `resources:memory` for local resource estimation. ([#29426](https://github.com/bazelbuild/bazel/pull/29426)) * The `and_then` method on `transition`s can be used to compose transitions. Both Starlark transitions and native transitions (e.g. `config.exec()`) are supported. ([#29888](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29364)) * Adds the `strip_components` attribute to `extract`/`download_and_extract`/`http_archive` to allow stripping of path components when extracting files. ([#29369](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29871)) * External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox. ([#29889](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29959)) * Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a `.bzl` file. ([#30037](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/issues/30160). ([#30190](https://github.com/bazelbuild/bazel/pull/30190)) * Modifying environment variables no longer causes spurious reloading of packages in external repositories. ([#30194](https://github.com/bazelbuild/bazel/pull/30194)) ##### Performance * Fixed a performance regression in Bazel 9 that causes `RepoMappingManifest` actions to consume a lot of CPU time. ([#29807](https://github.com/bazelbuild/bazel/pull/29807)) ##### Remote Execution _[Truncated at 4000 characters — full notes: https://github.com/bazelbuild/bazel/releases/tag/9.2.0]_ ### 9.2.0rc2 - Date: 2026-07-09 - Version: 9.2.0rc2 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/9.2.0rc2 - Permalink: https://whatsnew.fyi/product/bazel/releases/9.2.0rc2 - Labels: Pre-release - **added** — 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 - **fixed** — Fix crash when label_list_dict attribute is used in a split transition - **changed** — exec_properties now respects resources:cpu and resources:memory for local resource estimation - **added** — Add and_then method on transitions to compose transitions, supporting both Starlark transitions and native transitions - **added** — Add --incompatible_check_external_repo_source_dir_package_boundary flag to disallow source directories in external repositories from crossing package boundaries - **added** — Add SOCKS proxy support for socks://, socks4://, and socks5:// URLs in HTTPS_PROXY and HTTP_PROXY environment variables - **added** — Add strip_components attribute to extract, download_and_extract, and http_archive to allow stripping of path components when extracting files - **added** — 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 - **added** — Add facts_version integer parameter to module_extension() to invalidate persisted facts in MODULE.bazel.lock for that extension - **fixed** — Prevent external repos from being refetched when they contribute inputs to an action using the hermetic Linux sandbox - **changed** — Remote repo contents cache now correctly materializes chains of symlinks as action inputs but no longer supports symlinks into the main repository - **fixed** — Fix spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a .bzl file - **changed** — Remote repo contents cache no longer caches or restores repos with cross-repo symlinks to avoid a large surface area for bugs - **fixed** — Fix spurious reloading of packages in external repositories when modifying environment variables - **fixed** — Fix performance regression in Bazel 9 causing RepoMappingManifest actions to consume excessive CPU time - **changed** — Enable TCP keepalive by default for gRPC connections with reasonable defaults - **fixed** — Fix repo content caching for non-gRPC cache backends - **changed** — CDC chunk uploads and downloads can now happen in parallel within a large blob - **removed** — Remove limit on the size of gRPC messages received from the remote executor or cache - **fixed** — Fix crash with --experimental_remote_repo_contents_cache when running without a remote or disk cache > [!NOTE] > If you are looking for [rolling releases](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/releases/tag/9.0.1) 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](https://github.com/bazelbuild/bazel/pull/29727)) * Bazel no longer crashes when a `label_list_dict` attribute is used in a split transition (#29830). ([#29856](https://github.com/bazelbuild/bazel/pull/29856)) * `exec_properties` now respects `resources:cpu` and `resources:memory` for local resource estimation. ([#29426](https://github.com/bazelbuild/bazel/pull/29426)) * The `and_then` method on `transition`s can be used to compose transitions. Both Starlark transitions and native transitions (e.g. `config.exec()`) are supported. ([#29888](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29364)) * Adds the `strip_components` attribute to `extract`/`download_and_extract`/`http_archive` to allow stripping of path components when extracting files. ([#29369](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29871)) * External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox. ([#29889](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29959)) * Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a `.bzl` file. ([#30037](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/issues/30160). ([#30190](https://github.com/bazelbuild/bazel/pull/30190)) * Modifying environment variables no longer causes spurious reloading of packages in external repositories. ([#30194](https://github.com/bazelbuild/bazel/pull/30194)) ##### Performance * Fixed a performance regression in Bazel 9 that causes `RepoMappingManifest` actions to consume a lot of CPU time. ([#29807](https://github.com/bazelbuild/bazel/pull/29807)) ##### Remote Execution _[Truncated at 4000 characters — full notes: https://github.com/bazelbuild/bazel/releases/tag/9.2.0rc2]_ ### 9.2.0rc1 - Date: 2026-06-25 - Version: 9.2.0rc1 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/9.2.0rc1 - Permalink: https://whatsnew.fyi/product/bazel/releases/9.2.0rc1 - Labels: Pre-release - **added** — 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 - **fixed** — Bazel no longer crashes when a `label_list_dict` attribute is used in a split transition - **changed** — `exec_properties` now respects `resources:cpu` and `resources:memory` for local resource estimation - **added** — The `and_then` method on `transition`s can be used to compose transitions, supporting both Starlark transitions and native transitions - **added** — Added SOCKS proxy support with `socks://`, `socks4://`, and `socks5://` URLs in `HTTPS_PROXY`/`HTTP_PROXY` environment variables and related system properties - **added** — Added the `strip_components` attribute to `extract`/`download_and_extract`/`http_archive` to allow stripping of path components when extracting files - **added** — 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 - **added** — `module_extension(...)` now accepts a `facts_version` integer parameter to invalidate persisted facts in `MODULE.bazel.lock` for that extension - **changed** — External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox - **changed** — The remote repo contents cache now correctly materializes chains of symlinks as action inputs, but no longer supports symlinks into the main repository - **fixed** — Fixed a performance regression in Bazel 9 that causes `RepoMappingManifest` actions to consume a lot of CPU time - **changed** — Enable TCP keepalive by default for gRPC connections with reasonable defaults - **fixed** — Fixed repo content caching for non-gRPC cache backends - **changed** — CDC chunk uploads and downloads can now happen in parallel within a large blob - **changed** — Bazel no longer limits the size of gRPC messages received from the remote executor or cache - **added** — Created `--incompatible_remove_ctx_android_fragment` for Starlark Flags migration - **fixed** — 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](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/releases/tag/9.0.1) 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](https://github.com/bazelbuild/bazel/pull/29727)) * Bazel no longer crashes when a `label_list_dict` attribute is used in a split transition (#29830). ([#29856](https://github.com/bazelbuild/bazel/pull/29856)) * `exec_properties` now respects `resources:cpu` and `resources:memory` for local resource estimation. ([#29426](https://github.com/bazelbuild/bazel/pull/29426)) * The `and_then` method on `transition`s can be used to compose transitions. Both Starlark transitions and native transitions (e.g. `config.exec()`) are supported. ([#29888](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29364)) * Adds the `strip_components` attribute to `extract`/`download_and_extract`/`http_archive` to allow stripping of path components when extracting files. ([#29369](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29871)) * External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox. ([#29889](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29959)) ##### Performance * Fixed a performance regression in Bazel 9 that causes `RepoMappingManifest` actions to consume a lot of CPU time. ([#29807](https://github.com/bazelbuild/bazel/pull/29807)) ##### Remote Execution * Enable TCP keepalive by default for gRPC connections with reasonable defaults ([#29898](https://github.com/bazelbuild/bazel/pull/29898)) * Fixed repo content caching for non-gRPC cache backends. ([#29869](https://github.com/bazelbuild/bazel/pull/29869)) * CDC chunk uploads and downloads can now happen in parallel within a large blob. ([#29796](https://github.com/bazelbuild/bazel/pull/29796)) * Bazel no longer limits the size of gRPC messages received from the remote executor or cache. ([#29885](https://github.com/bazelbuild/bazel/pull/29885)) ##### Starlark / Build Language * Created `--incompatible_remove_ctx_android_fragment` for Starlark Flags migration ([#29884](https://github.com/bazelbuild/bazel/pull/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](htt _[Truncated at 4000 characters — full notes: https://github.com/bazelbuild/bazel/releases/tag/9.2.0rc1]_ ### 9.1.1 - Date: 2026-06-03 - Version: 9.1.1 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/9.1.1 - Permalink: https://whatsnew.fyi/product/bazel/releases/9.1.1 - **fixed** — Reverted --downloader_config from being a repeatable flag to restore backward compatibility - **fixed** — Fixed a crash with file:// URIs - **fixed** — Fixed a crash with opaque URIs - **fixed** — Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled - **fixed** — Fixed crash on --remote_default_exec_properties with the same key - **fixed** — Verify the whole blob when downloading chunks - **fixed** — Fixed JVM crash from VerifyException in GrpcCacheClient.onNext() - **fixed** — Invalidate unresolved symlink info after deletion in the RAFS - **changed** — Support bounded parallel chunk transfers > [!NOTE] > If you are looking for [rolling releases](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29616)) * Fixed a crash with `file://` URIs. ([#29579](https://github.com/bazelbuild/bazel/pull/29579)) * Fixed a crash with opaque URIs. ([#29658](https://github.com/bazelbuild/bazel/pull/29658)) ##### Remote Execution * Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled. ([#29677](https://github.com/bazelbuild/bazel/pull/29677)) * Fix crash on `--remote_default_exec_properties` with the same key. ([#29596](https://github.com/bazelbuild/bazel/pull/29596)) * Verify the whole blob when downloading chunks ([#29593](https://github.com/bazelbuild/bazel/pull/29593)) * Support bounded parallel chunk transfers ([#29614](https://github.com/bazelbuild/bazel/pull/29614)) * Fix JVM crash from VerifyException in GrpcCacheClient.onNext() ([#29583](https://github.com/bazelbuild/bazel/pull/29583)) * Invalidate unresolved symlink info after deletion in the RAFS ([#29671](https://github.com/bazelbuild/bazel/pull/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](https://mirror.bazel.build/openjdk/index.html). _Security_: All our binaries are signed with our [public key](https://releases.bazel.build/bazel-release.pub.gpg) 3D5919B448457EE0. ### 9.1.1rc1 - Date: 2026-05-29 - Version: 9.1.1rc1 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/9.1.1rc1 - Permalink: https://whatsnew.fyi/product/bazel/releases/9.1.1rc1 - Labels: Pre-release - **fixed** — Reverted --downloader_config flag from being accidentally made repeatable in 9.1.0 to restore backward compatibility - **fixed** — Fixed a crash with file:// URIs - **fixed** — Fixed a crash with opaque URIs - **fixed** — Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled - **fixed** — Fixed crash on --remote_default_exec_properties with the same key - **fixed** — Verify the whole blob when downloading chunks - **changed** — Support bounded parallel chunk transfers - **fixed** — Fixed JVM crash from VerifyException in GrpcCacheClient.onNext() - **fixed** — Invalidate unresolved symlink info after deletion in the RAFS > [!NOTE] > If you are looking for [rolling releases](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29616)) * Fixed a crash with `file://` URIs. ([#29579](https://github.com/bazelbuild/bazel/pull/29579)) * Fixed a crash with opaque URIs. ([#29658](https://github.com/bazelbuild/bazel/pull/29658)) ##### Remote Execution * Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled. ([#29677](https://github.com/bazelbuild/bazel/pull/29677)) * Fix crash on `--remote_default_exec_properties` with the same key. ([#29596](https://github.com/bazelbuild/bazel/pull/29596)) * Verify the whole blob when downloading chunks ([#29593](https://github.com/bazelbuild/bazel/pull/29593)) * Support bounded parallel chunk transfers ([#29614](https://github.com/bazelbuild/bazel/pull/29614)) * Fix JVM crash from VerifyException in GrpcCacheClient.onNext() ([#29583](https://github.com/bazelbuild/bazel/pull/29583)) * Invalidate unresolved symlink info after deletion in the RAFS ([#29671](https://github.com/bazelbuild/bazel/pull/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](https://mirror.bazel.build/openjdk/index.html). _Security_: All our binaries are signed with our [public key](https://releases.bazel.build/bazel-release.pub.gpg) 3D5919B448457EE0. ### 8.7.0 - Date: 2026-05-07 - Version: 8.7.0 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/8.7.0 - Permalink: https://whatsnew.fyi/product/bazel/releases/8.7.0 - **fixed** — Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine - **changed** — package_group now supports labels with external repositories in the packages attribute - **added** — Added SOCKS proxy support, accepting socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties - **added** — Add strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files - **added** — Add experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from remote or disk cache evictions - **added** — Add --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks - **fixed** — 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](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/pull/29240)) ##### External Dependencies * `package_group` now supports labels with external repositories in the packages attribute ([#28896](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29305)) * Adds the `strip_components attribute` to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. ([#29367](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/28971)) * Added `--experimental_remote_cache_chunking` flag to read and write large blobs to/from the remote cache in chunks. Requires server support. ([#28900](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://mirror.bazel.build/openjdk/index.html). _Security_: All our binaries are signed with our [public key](https://releases.bazel.build/bazel-release.pub.gpg) 3D5919B448457EE0. ### 8.7.0rc2 - Date: 2026-05-05 - Version: 8.7.0rc2 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/8.7.0rc2 - Permalink: https://whatsnew.fyi/product/bazel/releases/8.7.0rc2 - Labels: Pre-release - **fixed** — Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine - **added** — package_group now supports labels with external repositories in the packages attribute - **added** — Added SOCKS proxy support with socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties - **added** — Add strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files - **added** — Add experimental support for --rewind_lost_inputs to rerun actions within a single build to recover from remote or disk cache evictions - **added** — Add --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks - **changed** — string.splitlines() no longer treats u+0085 as a newline character when internal_starlark_utf_8_byte_strings is set > [!NOTE] > If you are looking for [rolling releases](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/pull/29240)) ##### External Dependencies * `package_group` now supports labels with external repositories in the packages attribute ([#28896](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29305)) * Adds the `strip_components attribute` to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. ([#29367](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/28971)) * Added `--experimental_remote_cache_chunking` flag to read and write large blobs to/from the remote cache in chunks. Requires server support. ([#28900](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://mirror.bazel.build/openjdk/index.html). _Security_: All our binaries are signed with our [public key](https://releases.bazel.build/bazel-release.pub.gpg) 3D5919B448457EE0. ### 8.7.0rc1 - Date: 2026-04-27 - Version: 8.7.0rc1 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/8.7.0rc1 - Permalink: https://whatsnew.fyi/product/bazel/releases/8.7.0rc1 - Labels: Pre-release - **fixed** — Fix launcher/launcher_maker for cross build, for example build windows binary on linux machine - **changed** — package_group now supports labels with external repositories in the packages attribute - **added** — Added SOCKS proxy support for socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties - **added** — Add strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files - **added** — 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 - **added** — Add --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks - **fixed** — 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](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/pull/29240)) ##### External Dependencies * `package_group` now supports labels with external repositories in the packages attribute ([#28896](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29305)) * Adds the `strip_components attribute` to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. ([#29367](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/28971)) * Added `--experimental_remote_cache_chunking` flag to read and write large blobs to/from the remote cache in chunks. Requires server support. ([#28900](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/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](https://mirror.bazel.build/openjdk/index.html). _Security_: All our binaries are signed with our [public key](https://releases.bazel.build/bazel-release.pub.gpg) 3D5919B448457EE0. ### 9.1.0 - Date: 2026-04-20 - Version: 9.1.0 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/9.1.0 - Permalink: https://whatsnew.fyi/product/bazel/releases/9.1.0 - **added** — Reporting of cached test results can now be suppressed with --test_summary=short_uncached or --test_summary=detailed_uncached - **added** — package_group now supports labels with external repositories in the packages attribute - **added** — 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 - **added** — Added --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks - **changed** — The --downloader_config flag can now be specified multiple times to use several downloader config files at once - **changed** — The compatibility_level and max_compatibility_level attributes of module in MODULE.bazel are now no-ops - **changed** — The local and remote repo contents cache now include the host OS and CPU architecture in the cache key - **changed** — The remote repo contents cache now supports all reproducible repo rules - **fixed** — Fix launcher/launcher_maker for cross build, for example build windows binary on linux machine - **fixed** — rctx.symlink now implicitly watches the target if it falls back to a copy - **fixed** — string.splitlines() no longer incorrectly treats u+0085 (NEL) as a newline character > [!NOTE] > If you are looking for [rolling releases](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29263)) ##### Configurability * Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. ([#29239](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/28616)) * `package_group` now supports labels with external repositories in the `packages` attribute. ([#28893](https://github.com/bazelbuild/bazel/pull/28893)) * `rctx.symlink` now implicitly watches the target if it falls back to a copy. ([#28741](https://github.com/bazelbuild/bazel/pull/28741)) * The local and remote repo contents cache now include the host OS and CPU architecture in the cache key. ([#29195](https://github.com/bazelbuild/bazel/pull/29195)) * The remote repo contents cache now supports all reproducible repo rules. ([#29225](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/28958)) * Added `--experimental_remote_cache_chunking` flag to read and write large blobs to/from the remote cache in chunks. Requires server support. ([#28903](https://github.com/bazelbuild/bazel/pull/28903)) ##### Starlark / Build Language * `string.splitlines()` no longer incorrectly treats u+0085 (`NEL`) as a newline character ([#28931](https://github.com/bazelbuild/bazel/pull/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 dis _[Truncated at 4000 characters — full notes: https://github.com/bazelbuild/bazel/releases/tag/9.1.0]_ ### 9.1.0rc3 - Date: 2026-04-15 - Version: 9.1.0rc3 - Original notes: https://github.com/bazelbuild/bazel/releases/tag/9.1.0rc3 - Permalink: https://whatsnew.fyi/product/bazel/releases/9.1.0rc3 - Labels: Pre-release - **added** — Add `--test_summary=short_uncached` and `--test_summary=detailed_uncached` options to suppress reporting of cached test results - **fixed** — Fix launcher/launcher_maker for cross build, such as building Windows binary on Linux machine - **changed** — Make `compatibility_level` and `max_compatibility_level` attributes of `module` in MODULE.bazel no-ops - **added** — Support labels with external repositories in the `packages` attribute of `package_group` - **changed** — Make `rctx.symlink` implicitly watch the target if it falls back to a copy - **changed** — Include host OS and CPU architecture in the local and remote repo contents cache key - **added** — Extend remote repo contents cache to support all reproducible repo rules - **added** — Add experimental `--rewind_lost_inputs` support to rerun actions within a single build to recover from remote or disk cache evictions - **added** — Add `--experimental_remote_cache_chunking` flag to read and write large blobs to/from the remote cache in chunks - **fixed** — Fix `string.splitlines()` to no longer incorrectly treat U+0085 (NEL) as a newline character > [!NOTE] > If you are looking for [rolling releases](https://bazel.build/release#rolling-releases), please visit [this page](https://bazel.build/release/rolling). #### 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](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/29263)) ##### Configurability * Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. ([#29239](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/28616)) * `package_group` now supports labels with external repositories in the `packages` attribute. ([#28893](https://github.com/bazelbuild/bazel/pull/28893)) * `rctx.symlink` now implicitly watches the target if it falls back to a copy. ([#28741](https://github.com/bazelbuild/bazel/pull/28741)) * The local and remote repo contents cache now include the host OS and CPU architecture in the cache key. ([#29195](https://github.com/bazelbuild/bazel/pull/29195)) * The remote repo contents cache now supports all reproducible repo rules. ([#29225](https://github.com/bazelbuild/bazel/pull/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](https://github.com/bazelbuild/bazel/pull/28958)) * Added `--experimental_remote_cache_chunking` flag to read and write large blobs to/from the remote cache in chunks. Requires server support. ([#28903](https://github.com/bazelbuild/bazel/pull/28903)) ##### Starlark / Build Language * `string.splitlines()` no longer incorrectly treats u+0085 (`NEL`) as a newline character ([#28931](https://github.com/bazelbuild/bazel/pull/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](https://mirror.bazel.build/openjdk/index.html). _Security_: _[Truncated at 4000 characters — full notes: https://github.com/bazelbuild/bazel/releases/tag/9.1.0rc3]_