Skip to content

9.3.0rc3

Pre-release
Pre-release

Choose a tag to compare

@bazel-io bazel-io released this 23 Sep 18:02
33cd173

Note

If you are looking for rolling releases, please visit this page.

Release 9.3.0rc3 (2026-09-23)

Bazel 9.3.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.

General

  • Fix for regression in #29284 that caused select builtin actions to incorrectly inherit resource set overrides. (#31136)
  • Fixed a bug that could cause ignore_directories() to not ignore directories. (#30564)

C++ / Objective-C

  • The C++ include scanner now properly resolves headers that are generated at build time and included as part of the toolchain. (#30879)

Configurability

  • Test targets can now be built for a target platform that no execution platform is compatible with, e.g. to cross-compile them. Running such a test fails with an error at execution time instead of failing analysis. (#30946)

External Deps

  • Fixed repository_ctx.download_and_extract failing with an "Expected a file with a ... suffix" error when --downloader_config blocks all URLs and the archive is served from the repository cache. (#30470)
  • Running bazel shutdown no longer results in stale lockfile data being written. (#30394)
  • Cycles between MODULE.bazel files connected via include() are now reported as an error instead of hanging the build. (#30804)
  • Fixed a crash while evaluating MODULE.bazel files when Skyframe dropped its temporary state in response to memory pressure. (#30809)
  • {r,m}ctx.download* now report the size of downloaded files. (#30974)
  • Added repository_ctx.patch(directory). (#31016)
  • Facts of reproducible module extensions are now restored to the expected state after external modifications by every Bazel command that updates the lockfile. (#31073)
  • bazel fetch --force no longer causes the fetched repos to be fetched again by the next build with a spurious warning about external modifications. (#31134)

Performance

  • Fixed a build failure with --execution_log_compact_file when a C++ action template has no inputs. (#30826)

Remote Execution

  • Action rewinding (--rewind_lost_inputs) can now succeed even if the remote cache doesn't verify that AC entries aren't stale. (#30393)
  • Fix incremental remote builds failing to create output directories beneath stale dangling symlinks. (#30969)
  • Files uploaded to the disk cache are now copied with a copy-on-write clone where the filesystem supports it, so a cache entry can share its blocks with the output it was uploaded from. (#30901)
  • Retry 408 and 429 status codes with HTTP remote caching. (#30973)
  • Disk cache entries deleted by a concurrent garbage collection are now treated as cache misses and don't result in failures. (#31021)
  • Invalidate cached action execution results when remote cache/executor endpoints or --remote_instance_name change between invocations. (#30986)
  • With Build without the Bytes, a requested top-level output that was deleted locally is now reliably redownloaded in the next build that requests it, even if other invocations ran in between. (#30963)

Windows

  • Windows parameter files now preserve empty arguments and correctly escape backslashes before quotes and at the end of quoted arguments. (#31249)

Acknowledgments

This release contains contributions from many people at Google, as well as Andrew Hewitson, Bryce Lampe, Chris McDonald, David Jyo, David Zbarsky, Fabian Meumertzheim, Fredrik Medley, Futa, George Gensure, Guillaume Maudoux, Jason Bedard, Javier Maestro, jdymitarai, JonathanPerry651, Jordan, Keith Smiley, Ladd Van Tol, Malte Poll, peakschris, Rahul Butani, Showta Ishizaki, Son Luong Ngoc, and Tamir Duberstein.

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.