- The and_then method on transitions can be used to compose transitions, supporting both Starlark transitions and native transitions like config.exec()
- module_extension(...) now accepts a facts_version integer parameter to invalidate persisted facts in MODULE.bazel.lock
- The --experimental_remote_repo_contents_cache startup option allows caching results of reproducible repository rules in HTTP or gRPC remote cache
- Enable TCP keepalive by default for gRPC connections with reasonable defaults
- Make naming scheme for repo contents cache entries more reliable
- Prefetch .bzl files in the remote repo contents cache
- Support bounded parallel chunk transfers
- Bazel now parses and ignores the Starlark type annotation syntax introduced by newer Bazel versions, gated by --experimental_starlark_type_syntax and enabled by default
- Fixed repo env handling and consolidated environment variable handling for repositories
- Action rewinding can now succeed even if the remote cache does not verify that AC entries are not stale
- Fixed an error when using strip_components with archives containing symbolic or hard links
- Fixed spurious No such file errors with the remote repo contents cache when a repo contains a symlink to a .bzl file
- Fixed a crash with --experimental_remote_repo_contents_cache when running without a remote or disk cache
- Running bazel shutdown no longer results in stale lockfile data being written
- Fixed repo contents cache FileValue staleness issues
- Fixed remote repo content caching for non-gRPC backends
- Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled
- Fixed Bazel being unable to run a Windows executable whose path is too long to shorten under MAX_PATH
From Bazel
[!NOTE] If you are looking for rolling releases, please visit this page.
Release 8.8.0rc2 (2026-08-18)
Bazel 8.8.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
- The
and_thenmethod ontransitions can be used to compose transitions. Both Starlark transitions and native transitions (e.g.config.exec()) are supported. (#30330)
Core
- Fix and consolidate repo env handling (#29069)
- Action rewinding (
--rewind_lost_inputs) can now succeed even if the remote cache doesn't verify that AC entries aren't stale. (#30398)
External Dependencies
- Fixes an error when using strip_components with archives containing symbolic//hard links. (#30463)
- Make naming scheme for repo contents cache entries more reliable (#29073)
module_extension(...)now accepts afacts_versioninteger parameter. Bumping it invalidates the facts persisted inMODULE.bazel.lockfor that extension, allowing extension authors to make breaking changes to the facts schema without risking misinterpretation by older code paths. (#29992)- Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a
.bzlfile. (#30101) - Fixed a crash with
--experimental_remote_repo_contents_cachewhen running without a remote or disk cache. (#30076) - Running
bazel shutdownno longer results in stale lockfile data being written. (#30397)
OSS
- Fixed Bazel being unable to run a Windows executable whose path is too long to shorten under
MAX_PATH. (#30021)
Remote Execution
- The results of reproducible repository rules without dependencies added at runtime (e.g., via
repository_ctx.watchor.getenv) can now be cached in a regular HTTP or gRPC remote cache if the new--experimental_remote_repo_contents_cachestartup option is provided. (#29075) - Prefetch .bzl files in the remote repo contents cache. (#29082)
- Fix repo contents cache
FileValuestaleness (#29084) - Fix remote repo content caching for non-gRPC backends (#30029)
- Support bounded parallel chunk transfers (#29873)
- Enable TCP keepalive by default for gRPC connections with reasonable defaults (#30157)
- Fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled. (#29928)
- Fixed spurious "No such file" errors with the remote repo contents cache when a repo contains a symlink to a
.bzlfile. (#30101)
Starlark / Build Language
- Bazel now parses and ignores the Starlark type annotation syntax introduced by newer Bazel versions (gated by
--experimental_starlark_type_syntax, enabled by default). (#30373)
Acknowledgments
This release contains contributions from many people at Google, as well as Armando Montanez, Ashutosh Kumar Singh, Bryce Lampe, Eaugene Thomas, Fabian Meumertzheim, Jasmine Tang, John Cater, Keith Smiley, Régis Desgroppes, Richard Lavoie, Son Luong Ngoc, Vadim Berezniker, 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.