Releases: bazelbuild/bazel
8.7.0rc2
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_groupnow 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 attributeto 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_chunkingflag 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 wheninternal_starlark_utf_8_byte_stringsis 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.
8.7.0rc1
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_groupnow 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 attributeto 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_chunkingflag 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 wheninternal_starlark_utf_8_byte_stringsis 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.
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. 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_uncachedor--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_levelandmax_compatibility_levelattributes ofmodulein 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_groupnow supports labels with external repositories in thepackagesattribute. (#28893)rctx.symlinknow 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_chunkingflag 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.
9.1.0rc3
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_uncachedor--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_levelandmax_compatibility_levelattributes ofmodulein 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_groupnow supports labels with external repositories in thepackagesattribute. (#28893)rctx.symlinknow 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_chunkingflag 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.
9.1.0rc2
Note
If you are looking for rolling releases, please visit this page.
Release 9.1.0rc2 (2026-04-14)
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")
Configurability
- Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29239)
External Deps
- The
compatibility_levelandmax_compatibility_levelattributes ofmodulein 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_groupnow supports labels with external repositories in thepackagesattribute. (#28893)rctx.symlinknow 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_chunkingflag 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.
9.1.0rc1
Note
If you are looking for rolling releases, please visit this page.
Release 9.1.0rc1 (2026-04-09)
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")
Configurability
- Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29239)
External Deps
- The
compatibility_levelandmax_compatibility_levelattributes ofmodulein 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_groupnow supports labels with external repositories in thepackagesattribute. (#28893)rctx.symlinknow 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_chunkingflag 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.
9.0.2
Note
If you are looking for rolling releases, please visit this page.
Release 9.0.2 (2026-04-09)
Bazel 9.0.2 is a patch 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")
- Include both windows and unix files in embedded_zipper_sources (#29235)
- The local and remote repo contents caches now include the host OS and CPU architecture in the cache key. (#29194)
- Fixed
launcher/launcher_makerfor cross platform builds. (#29238) - Correctly cross-jlink Windows arm64 builds (#29012)
- Make include verification aware of Windows case-insensitivity (#29214)
- Fix infinite spin-wait and missing cancellation propagation in TaskDeduplicator. (#28990)
- Treat
RUNFILES_TREE_MARKERas a directory in `BuildEvent.forArtifact()`. (#29010) - Allow platform-specific startup bazelrc flags. (#29251)
Acknowledgments
This release contains contributions from many people at Google, as well as Boleyn Su, Fabian Meumertzheim, and Keith Smiley.
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.
9.0.2rc3
Note
If you are looking for rolling releases, please visit this page.
Release 9.0.2rc3 (2026-04-09)
Bazel 9.0.2 is a patch 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")
- Include both windows and unix files in embedded_zipper_sources (#29235)
- The local and remote repo contents caches now include the host OS and CPU architecture in the cache key. (#29194)
- Fixed
launcher/launcher_makerfor cross platform builds. (#29238) - Correctly cross-jlink Windows arm64 builds (#29012)
- Make include verification aware of Windows case-insensitivity (#29214)
- Fix infinite spin-wait and missing cancellation propagation in TaskDeduplicator. (#28990)
- Treat
RUNFILES_TREE_MARKERas a directory in `BuildEvent.forArtifact()`. (#29010) - Allow platform-specific startup bazelrc flags. (#29251)
Acknowledgments
This release contains contributions from many people at Google, as well as Boleyn Su, Fabian Meumertzheim, and Keith Smiley.
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.
9.0.2rc2
Note
If you are looking for rolling releases, please visit this page.
Release 9.0.2rc2 (2026-04-07)
Bazel 9.0.2 is a patch 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")
- Include both windows and unix files in embedded_zipper_sources (#29235)
- The local and remote repo contents caches now include the host OS and CPU architecture in the cache key. (#29194)
- Fixed
launcher/launcher_makerfor cross platform builds. (#29238) - Correctly cross-jlink Windows arm64 builds (#29012)
- Make include verification aware of Windows case-insensitivity (#29214)
- Fix infinite spin-wait and missing cancellation propagation in TaskDeduplicator. (#28990)
- Treat
RUNFILES_TREE_MARKERas a directory in `BuildEvent.forArtifact()`. (#29010)
Acknowledgments
This release contains contributions from many people at Google, as well as Boleyn Su and Fabian Meumertzheim.
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.
9.0.2rc1
Note
If you are looking for rolling releases, please visit this page.
Release 9.0.2rc1 (2026-04-02)
Bazel 9.0.2 is a patch 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")
OSS
- Correctly cross-jlink Windows arm64 builds (#29012)
Performance
- Make include verification aware of Windows case-insensitivity (#29214)
Remote Execution
- Fix infinite spin-wait and missing cancellation propagation in TaskDeduplicator. (#28990)
- Treat RUNFILES_TREE_MARKER as a directory in `BuildEvent.forArtifact()`. (#29010)
Acknowledgments
This release contains contributions from many people at Google, as well as Fabian Meumertzheim.
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.