Releases: bazelbuild/bazel
8.3.0
Note
If you are looking for rolling releases, please visit this page.
Release 8.3.0 (2025-06-23)
Bazel 8.3.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.
General
- Bazel now prints exactly which startup options have changed when the running Bazel server needs to be killed. (#26034)
Apple / Xcode
- Added support for dSYM generation to cc_binary. (#26031)
- On macOS, Bazel now respects the environment variable DEVELOPER_DIR for Xcode selection. (#25885)
C / C++
- Added strip_include_prefix to cc_import. (#26296)
External Dependencies
- Added a new flag
--repo_contents_cache
(defaults to thecontents
directory under the--repository_cache
) where Bazel stores fetched contents of repos that can be safely cached across workspaces. A repo rule can indicate cacheability by returningrepository_ctx.repo_metadata(reproducible=True)
from its implementation function. (#26129) - source.json now supports a new attribute
mirror_urls
as backup URLs for the source archive. (#25937) - Added the
load_wasm
andexecute_wasm
methods torepository_ctx
andmodule_ctx
that allow repo rules and module extensions to run a WebAssembly binary. These methods are only available if--experimental_repository_ctx_execute_wasm
is set. (#26280) - repository_ctx.download_and_extract now supports the .whl file extension for Python wheel files, treating them as ZIP archives under PEP 427. (#26323)
- User-provided repo names may now start with a number. (#26252)
- Added a "hidden" lockfile under the output base that contains the output of reproducible module extensions for performance. (#26195)
Performance
- Add executable to stateful runfiles if necessary, avoiding a very costly check during analysis. (#26288)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Levy, Adin Cebic, Benji Vos, benjivos, David Sanderson, Fabian Meumertzheim, Farid Zakaria, Greg, helly25, Jaden Peterson, Jim Carroll, John Millikin, Jordan Mele, Keith Smiley, Zhongpeng Lin, and Alberto Cavalcante.
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.3.0rc3
Note
If you are looking for rolling releases, please visit this page.
Release 8.3.0rc3 (2025-06-17)
Bazel 8.3.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.
General
- Bazel now prints exactly which startup options have changed when the running Bazel server needs to be killed. (#26034)
Apple / Xcode
- Added support for dSYM generation to cc_binary. (#26031)
- On macOS, Bazel now respects the environment variable DEVELOPER_DIR for Xcode selection. (#25885)
C / C++
- Added strip_include_prefix to cc_import. (#26296)
External Dependencies
- Added a new flag
--repo_contents_cache
(defaults to thecontents
directory under the--repository_cache
) where Bazel stores fetched contents of repos that can be safely cached across workspaces. A repo rule can indicate cacheability by returningrepository_ctx.repo_metadata(reproducible=True)
from its implementation function. (#26129) - source.json now supports a new attribute
mirror_urls
as backup URLs for the source archive. (#25937) - Added the
load_wasm
andexecute_wasm
methods torepository_ctx
andmodule_ctx
that allow repo rules and module extensions to run a WebAssembly binary. These methods are only available if--experimental_repository_ctx_execute_wasm
is set. (#26280) - repository_ctx.download_and_extract now supports the .whl file extension for Python wheel files, treating them as ZIP archives under PEP 427. (#26323)
- User-provided repo names may now start with a number. (#26252)
- Added a "hidden" lockfile under the output base that contains the output of reproducible module extensions for performance. (#26195)
Performance
- Add executable to stateful runfiles if necessary, avoiding a very costly check during analysis. (#26288)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Levy, Adin Cebic, Benji Vos, benjivos, David Sanderson, Fabian Meumertzheim, Farid Zakaria, Greg, helly25, Jaden Peterson, Jim Carroll, John Millikin, Jordan Mele, Keith Smiley, Zhongpeng Lin, and Alberto Cavalcante.
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.3.0rc2
Note
If you are looking for rolling releases, please visit this page.
Release 8.3.0rc2 (2025-06-17)
Bazel 8.3.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.
General
- Bazel now prints exactly which startup options have changed when the running Bazel server needs to be killed. (#26034)
Apple / Xcode
- Added support for dSYM generation to cc_binary. (#26031)
- On macOS, Bazel now respects the environment variable DEVELOPER_DIR for Xcode selection. (#25885)
C / C++
- Added strip_include_prefix to cc_import. (#26296)
External Dependencies
- Added a new flag
--repo_contents_cache
(defaults to thecontents
directory under the--repository_cache
) where Bazel stores fetched contents of repos that can be safely cached across workspaces. A repo rule can indicate cacheability by returningrepository_ctx.repo_metadata(reproducible=True)
from its implementation function. (#26129) - source.json now supports a new attribute
mirror_urls
as backup URLs for the source archive. (#25937) - Added the
load_wasm
andexecute_wasm
methods torepository_ctx
andmodule_ctx
that allow repo rules and module extensions to run a WebAssembly binary. These methods are only available if--experimental_repository_ctx_execute_wasm
is set. (#26280) - User-provided repo names may now start with a number. (#26252)
- Added a "hidden" lockfile under the output base that contains the output of reproducible module extensions for performance. (#26195)
Performance
- Add executable to stateful runfiles if necessary, avoiding a very costly check during analysis. (#26288)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Levy, Adin Cebic, Benji Vos, benjivos, David Sanderson, Fabian Meumertzheim, Farid Zakaria, Greg, helly25, Jaden Peterson, Jim Carroll, John Millikin, Jordan Mele, Keith Smiley, Zhongpeng Lin, and Alberto Cavalcante.
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.3.0rc1
Note
If you are looking for rolling releases, please visit this page.
Release 8.3.0rc1 (2025-06-16)
Bazel 8.3.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.
General
- Bazel now prints exactly which startup options have changed when the running Bazel server needs to be killed. (#26034)
Apple / Xcode
- Added support for dSYM generation to cc_binary. (#26031)
- On macOS, Bazel now respects the environment variable DEVELOPER_DIR for Xcode selection. (#25885)
External Dependencies
- Added a new flag
--repo_contents_cache
(defaults to thecontents
directory under the--repository_cache
) where Bazel stores fetched contents of repos that can be safely cached across workspaces. A repo rule can indicate cacheability by returningrepository_ctx.repo_metadata(reproducible=True)
from its implementation function. (#26129) - source.json now supports a new attribute
mirror_urls
as backup URLs for the source archive. (#25937) - Added the
load_wasm
andexecute_wasm
methods torepository_ctx
andmodule_ctx
that allow repo rules and module extensions to run a WebAssembly binary. These methods are only available if--experimental_repository_ctx_execute_wasm
is set. (#26280) - User-provided repo names may now start with a number. (#26252)
- Added a "hidden" lockfile under the output base that contains the output of reproducible module extensions for performance. (#26195)
Performance
- Add executable to stateful runfiles if necessary, avoiding a very costly check during analysis. (#26288)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Levy, Adin Cebic, Benji Vos, benjivos, David Sanderson, Fabian Meumertzheim, Farid Zakaria, Greg, helly25, Jaden Peterson, Jim Carroll, John Millikin, Jordan Mele, Keith Smiley, Zhongpeng Lin, and Alberto Cavalcante.
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.2.1
Note
If you are looking for rolling releases, please visit this page.
Release 8.2.1 (2025-04-17)
Bazel 8.2.1 is a patch LTS release. It is fully backward compatible with Bazel 8.0 and contains selected changes by the Bazel community and Google engineers.
External Dependencies
- Fixed crash when setting --noincompatible_enable_deprecated_label_apis with native.repository_name() (#25850)
Performance
- Fix atomic writes of
VirtualActionInput
s on Windows (#25857)
Remote Execution
- Fix crash on lost inputs that are symlinks (#25856)
Refer to the full list of commits for more details.
Acknowledgements:
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.
8.2.1rc1
Note
If you are looking for rolling releases, please visit this page.
Release 8.2.1rc1 (2025-04-15)
Bazel 8.2.1 is a patch LTS release. It is fully backward compatible with Bazel 8.0 and contains selected changes by the Bazel community and Google engineers.
External Dependencies
- Fixed crash when setting --noincompatible_enable_deprecated_label_apis with native.repository_name() (#25850)
Performance
- Fix atomic writes of
VirtualActionInput
s on Windows (#25857)
Remote Execution
- Fix crash on lost inputs that are symlinks (#25856)
Refer to the full list of commits for more details.
Acknowledgements:
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.
8.2.0
Note
If you are looking for rolling releases, please visit this page.
Release 8.2.0 (2025-04-14)
Bazel 8.2.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.
Build Event Protocol
- BEP will now always attempt to set exit_code on TestResult from the result of the test runner. (#25278)
Configurability
- Add
missing_toolchain_error
to theplatform
rule, to customize error messages when a required toolchain type can't be found for a platform. (#25284) - Add
use_target_platform_constraints
attribute to thetoolchain
rule. Although it is not used, it enables writing custom test toolchains that will more naturally match the target platform in Bazel 9.0. (#25685) - Skylib's analysis_test supports testing Starlark analysis logic with --experimental_* and --incompatible_* flags. (#25536)
- Include DefaultInfo in cquery's Starlark output. (#25719)
External Dependencies
- The
repo_name
parameter ofbazel_dep
can now be set toNone
to mark it a "nodep" dependency -- that is, thebazel_dep
specification is only honored if the target module already exists in the dependency graph by some other means. (#25381) --experimental_downloader_config
is now no longer experimental, and has been renamed to--downloader_config
. The old flag name can still be used. (#25660)- Added sparse_checkout_patterns and sparse_checkout_file arguments to the git_repository rule. If non-empty, this will cause the rule to perform a sparse checkout of the repository, only checking out files that match the .gitignore-style patterns in this list. (#25765)
- Literal dicts are now allowed as extra keyword args in MODULE.bazel files. This makes it possible to use repo names that are not valid Starlark identifiers in override_repo and use_repo. (#25611)
Remote Execution
- Fix a deadlock when using --remote_cache_async and HTTP cache. (#25788)
Starlark / Build Language
- Set generator_name, generator_function, generator_location, and the full Starlark stack for rule targets instantiated in a symbolic macro. (#25772)
- Added a new boolean flag --incompatible_disable_autoloads_in_main_repo, defaulting to false. When set to true, autoloads specified by
--incompatible_autoload_externally
are fully disabled in the main repo. This flag will be flipped to true by default in Bazel 9. (#25530)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Sky, Chuck Grindel, Fabian Meumertzheim, Jim Carroll, jjudd, Keith Lea, kxxt, Roman Salvador, and Tyler French.
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.2.0rc3
Note
If you are looking for rolling releases, please visit this page.
Release 8.2.0rc3 (2025-04-10)
Bazel 8.2.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.
Build Event Protocol
- BEP will now always attempt to set exit_code on TestResult from the result of the test runner. (#25278)
Configurability
- Add
missing_toolchain_error
to theplatform
rule, to customize error messages when a required toolchain type can't be found for a platform. (#25284) - Add
use_target_platform_constraints
attribute to thetoolchain
rule. Although it is not used, it enables writing custom test toolchains that will more naturally match the target platform in Bazel 9.0. (#25685) - Skylib's analysis_test supports testing Starlark analysis logic with --experimental_* and --incompatible_* flags. (#25536)
- Include DefaultInfo in cquery's Starlark output. (#25719)
External Dependencies
- The
repo_name
parameter ofbazel_dep
can now be set toNone
to mark it a "nodep" dependency -- that is, thebazel_dep
specification is only honored if the target module already exists in the dependency graph by some other means. (#25381) --experimental_downloader_config
is now no longer experimental, and has been renamed to--downloader_config
. The old flag name can still be used. (#25660)- Added sparse_checkout_patterns and sparse_checkout_file arguments to the git_repository rule. If non-empty, this will cause the rule to perform a sparse checkout of the repository, only checking out files that match the .gitignore-style patterns in this list. (#25765)
- Literal dicts are now allowed as extra keyword args in MODULE.bazel files. This makes it possible to use repo names that are not valid Starlark identifiers in override_repo and use_repo. (#25611)
Remote Execution
- Fix a deadlock when using --remote_cache_async and HTTP cache. (#25788)
Starlark / Build Language
- Set generator_name, generator_function, generator_location, and the full Starlark stack for rule targets instantiated in a symbolic macro. (#25772)
- Added a new boolean flag --incompatible_disable_autoloads_in_main_repo, defaulting to false. When set to true, autoloads specified by
--incompatible_autoload_externally
are fully disabled in the main repo. This flag will be flipped to true by default in Bazel 9. (#25530)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Sky, Chuck Grindel, Fabian Meumertzheim, Jim Carroll, jjudd, Keith Lea, kxxt, Roman Salvador, and Tyler French.
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.2.0rc2
Note
If you are looking for rolling releases, please visit this page.
Release 8.2.0rc2 (2025-04-09)
Bazel 8.2.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.
Build Event Protocol
- BEP will now always attempt to set exit_code on TestResult from the result of the test runner. (#25278)
Configurability
- Add
missing_toolchain_error
to theplatform
rule, to customize error messages when a required toolchain type can't be found for a platform. (#25284) - Add
use_target_platform_constraints
attribute to thetoolchain
rule. Although it is not used, it enables writing custom test toolchains that will more naturally match the target platform in Bazel 9.0. (#25685) - Skylib's analysis_test supports testing Starlark analysis logic with --experimental_* and --incompatible_* flags. (#25536)
- Include DefaultInfo in cquery's Starlark output. (#25719)
External Dependencies
- The
repo_name
parameter ofbazel_dep
can now be set toNone
to mark it a "nodep" dependency -- that is, thebazel_dep
specification is only honored if the target module already exists in the dependency graph by some other means. (#25381) --experimental_downloader_config
is now no longer experimental, and has been renamed to--downloader_config
. The old flag name can still be used. (#25660)- Added sparse_checkout_patterns and sparse_checkout_file arguments to the git_repository rule. If non-empty, this will cause the rule to perform a sparse checkout of the repository, only checking out files that match the .gitignore-style patterns in this list. (#25765)
- Literal dicts are now allowed as extra keyword args in MODULE.bazel files. This makes it possible to use repo names that are not valid Starlark identifiers in override_repo and use_repo. (#25611)
Remote Execution
- Fix a deadlock when using --remote_cache_async and HTTP cache. (#25788)
Starlark / Build Language
- Set generator_name, generator_function, generator_location, and the full Starlark stack for rule targets instantiated in a symbolic macro. (#25772)
- Added a new boolean flag --incompatible_disable_autoloads_in_main_repo, defaulting to false. When set to true, autoloads specified by
--incompatible_autoload_externally
are fully disabled in the main repo. This flag will be flipped to true by default in Bazel 9. (#25530)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Sky, Chuck Grindel, Fabian Meumertzheim, Jim Carroll, jjudd, Keith Lea, kxxt, Roman Salvador, and Tyler French.
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.2.0rc1
Note
If you are looking for rolling releases, please visit this page.
Release 8.2.0rc1 (2025-04-07)
Bazel 8.2.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.
Build Event Protocol
- BEP will now always attempt to set exit_code on TestResult from the result of the test runner. (#25278)
Configurability
- Add
missing_toolchain_error
to theplatform
rule, to customize error messages when a required toolchain type can't be found for a platform. (#25284) - Add
use_target_platform_constraints
attribute to thetoolchain
rule. Although it is not used, it enables writing custom test toolchains that will more naturally match the target platform in Bazel 9.0. (#25685) - Skylib's analysis_test supports testing Starlark analysis logic with --experimental_* and --incompatible_* flags. (#25536)
- Include DefaultInfo in cquery's Starlark output. (#25719)
External Dependencies
- The
repo_name
parameter ofbazel_dep
can now be set toNone
to mark it a "nodep" dependency -- that is, thebazel_dep
specification is only honored if the target module already exists in the dependency graph by some other means. (#25381) --experimental_downloader_config
is now no longer experimental, and has been renamed to--downloader_config
. The old flag name can still be used. (#25660)- Added sparse_checkout_patterns and sparse_checkout_file arguments to the git_repository rule. If non-empty, this will cause the rule to perform a sparse checkout of the repository, only checking out files that match the .gitignore-style patterns in this list. (#25765)
- Literal dicts are now allowed as extra keyword args in MODULE.bazel files. This makes it possible to use repo names that are not valid Starlark identifiers in override_repo and use_repo. (#25611)
Starlark / Build Language
- Set generator_name, generator_function, generator_location, and the full Starlark stack for rule targets instantiated in a symbolic macro. (#25772)
- Added a new boolean flag --incompatible_disable_autoloads_in_main_repo, defaulting to false. When set to true, autoloads specified by
--incompatible_autoload_externally
are fully disabled in the main repo. This flag will be flipped to true by default in Bazel 9. (#25530)
Refer to the full list of commits for more details.
Acknowledgements:
This release contains contributions from many people at Google, as well as Aaron Sky, Chuck Grindel, Fabian Meumertzheim, Jim Carroll, jjudd, Keith Lea, kxxt, Roman Salvador, and Tyler French.
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.