Skip to content

Releases: bazelbuild/bazel

7.2.0rc1

15 May 16:44
084478b
Compare
Choose a tag to compare
7.2.0rc1 Pre-release
Pre-release

Note

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

Release 7.2.0rc1 (2024-05-15)

Baseline: 3e4e2af

Bazel 7.2.0 is a minor LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

C++ / Objective-C

  • The default Unix C++ toolchain now supports the parse_headers feature to validate header files with --process_headers_in_dependencies. (#22369)

Configurability

  • aquery: //foo:bar now means "all configured targets with label //foo:bar" instead of "choose an arbitrary configured target with label //foo:bar". This is in line with cquery behavior. (#22135)
  • Starlark command-line flags can now be referred to through alias targets. (#22212)

External Deps

  • Added a new flag --incompatible_disable_native_repo_rules to disable native repo rule usage in WORKSPACE. All native repo rules now have a Starlark counterpart that can be used in both WORKSPACE and Bzlmod; see #22080 for more details. (#22203)
  • The format for MODULE.bazel.lock is now less likely to result in merge conflicts and is updated incrementally, with only new files downloaded from registries and existing ones taken from the repository cache (if configured). (#22351)
  • bzlmod git_override now accepts the strip_prefix arg and passes it to the underlying git_repository call. (#22137)
  • Added a new include() directive to MODULE.bazel files, which allows the root module file to be divided into multiple segments. (#22204)
    • Known issue: bazel mod tidy doesn't yet work with include()d segments. Will be fixed in rc2.
  • Fixed certain deadlocks in repo fetching with worker threads (--experimental_worker_for_repo_fetching=auto). (#22261)
  • print statements in module files are now only executed for the root module and modules subject to non-registry overrides (e.g. local_path_override). (#22263)
  • The new refresh value for --lockfile_mode behaves like the update mode, but additionally forces a refresh of mutable registry content (yanked versions and missing module versions) when switched to or from time to time while enabled. (#22371)
  • bazel fetch now more reliably fetches repos required for a build by triggering the analysis phase. (#21841)

Remote Execution

  • The combined coverage report produced via --combined_report=lcov is now announced on the BES via the new CoverageReport event. (#22327)
  • The compact and full execution logs now contain start times for spawns (if available). (#22341)
  • Added a new flag --incompatible_modify_execution_info_additive, which causes the --modify_execution_info flag to become additive when specified multiple times. (#22316)
  • Added new flags --experimental_remote_output_service and --experimental_remote_output_service_output_path_prefix for remote output service

Starlark / Build Language

  • Starlark min and max buitins now allow a key callback, similarly to sorted. (#21960)
  • native.package_relative_label can now be used in rule initializers.

Refer to the full list of commits for more details.

Acknowledgements:

This release contains contributions from many people at Google, as well as Brentley Jones, Cameron Martin, Daniel Wagner-Hall, Douglas Thor, Fabian Meumertzheim, George Gensure, Mark Elliot, Romain Chossart, Son Luong Ngoc, Spencer Putt, and Thomas Weischuh.

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.

7.1.2

08 May 21:15
Compare
Choose a tag to compare

Note

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

Release 7.1.2 (2024-05-08)

Baseline: 3e4e2af

Bazel 7.1.2 is a patch LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

Android

  • Set public visibility for R8 desugar binary (#22176)

External Deps

  • Fixed excessive repo fetching caused by changes to .netrc (#22186)

Remote Execution

  • Don't upload remote input to remote cache (#21941)
  • Implement RemoteActionFileSystem#statIfFound correctly when the path cannot be canonicalized (#21889)

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.

7.1.2rc2

08 May 19:23
a1dcae8
Compare
Choose a tag to compare
7.1.2rc2 Pre-release
Pre-release

Note

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

Release 7.1.2rc2 (2024-05-08)

Baseline: 3e4e2af

Bazel 7.1.2 is a patch LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

Android

  • Set public visibility for R8 desugar binary (#22176)

External Deps

  • Fixed excessive repo fetching caused by changes to .netrc (#22186)

Remote Execution

  • Don't upload remote input to remote cache (#21941)
  • Implement RemoteActionFileSystem#statIfFound correctly when the path cannot be canonicalized (#21889)

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.

7.1.2rc1

06 May 20:43
a01c443
Compare
Choose a tag to compare
7.1.2rc1 Pre-release
Pre-release

Note

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

Release 7.1.2rc1 (2024-05-06)

Baseline: 3e4e2af

Bazel 7.1.2 is a patch LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

External Deps

  • Fixed excessive repo fetching caused by changes to .netrc (#22186)

Remote Execution

  • Don't upload remote input to remote cache (#21941)
  • Implement RemoteActionFileSystem#statIfFound correctly when the path cannot be canonicalized (#21889)

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.

7.1.1

21 Mar 18:37
Compare
Choose a tag to compare

Note

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

Release 7.1.1 (2024-03-21)

Baseline: 9b39cca

Bazel 7.1.1 is a patch LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

External Deps

  • Fix bazel mod tidy failure with no changes (#21662)
  • Allow any canonical repo name to be used with bazel mod show_repo (#21694)
  • Fix two bazel mod tidy crashes (#21700)
  • Reverted the 7.1.0 change to make bazel fetch use cquery under the hood (#21735)

Local Execution

  • Also inject a failure for createWritableDirectory when testing that ActionOutputDirectoryHelper propagates exceptions. (#21683)
  • Fix race condition and add more logging for null entry error message (#21692)
  • Fix sandbox cleanup crashing after server restart (#21733)

Performance

  • Actually use shouldPublish() to determine whether to publish the execution log to the BEP. (#21671)
  • Use execution info instead of hard-coded mnemonics for Java path mapping (#21703)

Java

  • Let native Turbine image find ct.sym with non-hermetic java_runtime (#21670)

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.

7.1.1rc2

19 Mar 21:31
3e4e2af
Compare
Choose a tag to compare
7.1.1rc2 Pre-release
Pre-release

Note

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

Release 7.1.1rc2 (2024-03-19)

Baseline: 9b39cca

Bazel 7.1.1 is a patch LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

External Deps

  • Fix bazel mod tidy failure with no changes (#21662)
  • Allow any canonical repo name to be used with bazel mod show_repo (#21694)
  • Fix two bazel mod tidy crashes (#21700)
  • Reverted the 7.1.0 change to make bazel fetch use cquery under the hood (#21735)

Local Execution

  • Also inject a failure for createWritableDirectory when testing that ActionOutputDirectoryHelper propagates exceptions. (#21683)
  • Fix race condition and add more logging for null entry error message (#21692)
  • Fix sandbox cleanup crashing after server restart (#21733)

Performance

  • Actually use shouldPublish() to determine whether to publish the execution log to the BEP. (#21671)
  • Use execution info instead of hard-coded mnemonics for Java path mapping (#21703)

Java

  • Let native Turbine image find ct.sym with non-hermetic java_runtime (#21670)

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.

7.1.1rc1

15 Mar 16:57
8aea621
Compare
Choose a tag to compare
7.1.1rc1 Pre-release
Pre-release

Note

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

Release 7.1.1rc1 (2024-03-15)

Baseline: 9b39cca

Bazel 7.1.1 is a patch LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

External Deps

  • Fix bazel mod tidy failure with no changes (#21662)
  • Allow any canonical repo name to be used with bazel mod show_repo (#21694)
  • Fix two bazel mod tidy crashes (#21700)

Local Execution

  • Also inject a failure for createWritableDirectory when testing that ActionOutputDirectoryHelper propagates exceptions. (#21683)
  • Fix race condition and add more logging for null entry error message (#21692)

Performance

  • Actually use shouldPublish() to determine whether to publish the execution log to the BEP. (#21671)
  • Use execution info instead of hard-coded mnemonics for Java path mapping (#21703)

Java

  • Let native Turbine image find ct.sym with non-hermetic java_runtime (#21670)

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.

7.1.0

11 Mar 18:24
Compare
Choose a tag to compare

Note

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

Release 7.1.0 (2024-03-11)

Baseline: 8f4b115

Bazel 7.1.0 is a minor LTS release. It is fully backward compatible with Bazel 7.0 and contains selected changes by the Bazel community and Google engineers.

Configurability

  • genrule now supports setting stamp = -1 to request conditional stamping (based on the value of the build's --stamp flag). (#21512)

External Deps

  • Added a flag --enable_workspace (defaults to True) that allows the user to completely disable WORKSPACE logic when turned off. We plan to change the default to False with Bazel 8. (#20365)
  • Added new repo rule and module extension APIs to watch arbitrary files or directory trees: (#21435)
    • New methods repository_ctx.watch() and module_ctx.watch() allow changes to a path to trigger a refetch/re-evaluation of the repo/extension.
    • Several methods such as repository_ctx.read() and repository_ctx.template() gain a new watch parameter to allow them to watch for changes to the path in question.
    • path.readdir() now watches for changes under the directory by default.
    • New method repository_ctx.watch_tree() allows changes to anything transitively under a directory tree to trigger a repo refetch.
  • Added path.is_dir to detect whether a path points to a directory.
  • Added a new method repository_ctx.getenv, which allows Starlark repository rules to declare environment variable dependencies during the fetch, instead of upfront using repository_rule.environ. (#20944)
  • The flag --experimental_worker_for_repo_fetching now defaults to auto, which uses virtual threads from JDK 21 if it's available. This eliminates restarts during repo fetching. (#21082)
  • The new bazel mod tidy subcommand automatically updates use_repo calls in the MODULE.bazel file for extensions that use module_ctx.extension_metadata. (#21265)
  • bazel mod dump_repo_mapping <canonical repo name>... returns the repository mappings of the given repositories in NDJSON. This information can be used by IDEs and Starlark language servers to resolve labels with --enable_bzlmod. (#21023)
  • Added init_submodules attribute to git_override. Registries now support the git_repository type in source.json. (#21036)
  • Bazel's Bash completion can now complete external repository labels when using --enable_bzlmod. (#21149)
  • Fixed bazel fetch by replacing query with cquery as underlying implementation (#21567, #13847).
  • The scheme for generating canonical repository names has changed to improve cacheability of actions across dependency version updates. Note that canonical names are not considered to be public API and can change at any time. See https://bazel.build/external/module#repository_names_and_strict_deps for advice on how to avoid hardcoding canonical repository names. (#21316)
  • Various methods and fields related to labels and repos are deprecated in favor of new options with clearer naming and intent. The deprecated APIs can be disabled by setting --noincompatible_enable_deprecated_label_apis. (#20977)
    • native.repository_name() is deprecated in favor of the new native.repo_name().
    • Label.workspace_name is deprecated in favor of the new Label.repo_name.
    • Label.relative() is deprecated in favor of the new Label.same_package_label() alongside the existing native.package_relative_label() and Label().

Performance

  • Make Bazel's RAM estimate container aware (#20644)
    • On Linux, Bazel's RAM estimate for the host machine is now aware of container resource limits.
    • On macOS, Bazel no longer consistently overestimates the total RAM by ~5% (1024^2/1000^2).
    • On Windows, Bazel's RAM estimate is now generally more accurate as it is no longer influenced by JVM heuristics.
  • Added a new --experimental_execution_log_compact_file flag to produce an execution log in a leaner format and with less runtime overhead. The //src/tools/execlog:converter tool may be used to convert it into one of the preexisting --execution_log_{json,binary}_file formats.
  • Reduced the execution phase overhead for actions that create tree artifacts with a very large number of files (tens or hundreds of thousands).
  • Made sandboxing and sandboxed workers faster. This is achieved by deleting files asynchronously, reusing runfiles, reducing copying and not stashing unnecessary tmp directories.

Python

  • Fixed --incompatible_python_disallow_native_rules to work with targets at the top level (e.g. "//:foo") (#17773)
  • rules_python version increased from 0.4.0 to 0.22.1 in bazel_tools builtin module.

Remote Execution

  • Bazel now respects expires from Credential Helpers. (#21429)

Acknowledgements:

This release contains contributions from many people at Google, as well as Alessandro Patti, Artem V. Navrotskiy, Brentley Jones, Cameron Martin, Christian Scott, Cristin Donoso, David Ostrovsky, Ed Schouten, Fabian Meumertzheim, Gunnar Wagenknecht, Jordan Mele, Keith Smiley, Nikhil Kalige, Patrick Balestra, Rahul Butani, Ryan Beasley, Son Luong Ngoc, Sushain Cherivirala, thesayyn, Viktor Kustov, Yannic Bonenberger.

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.

7.1.0rc2

07 Mar 18:46
9b39cca
Compare
Choose a tag to compare
7.1.0rc2 Pre-release
Pre-release

Note

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

Release 7.1.0rc2 (2024-03-07)

Baseline: 8f4b115

Configurability

  • genrule now supports setting stamp = -1 to request conditional stamping (based on the value of the build's --stamp flag). (#21512)

External Deps

  • Added a flag --enable_workspace (defaults to True) that allows the user to completely disable WORKSPACE logic when turned off. We plan to change the default to False with Bazel 8. (#20365)
  • Added new repo rule and module extension APIs to watch arbitrary files or directory trees: (#21435)
    • New methods repository_ctx.watch() and module_ctx.watch() allow changes to a path to trigger a refetch/re-evaluation of the repo/extension.
    • Several methods such as repository_ctx.read() and repository_ctx.template() gain a new watch parameter to allow them to watch for changes to the path in question.
    • path.readdir() now watches for changes under the directory by default.
    • New method repository_ctx.watch_tree() allows changes to anything transitively under a directory tree to trigger a repo refetch.
  • Added path.is_dir to detect whether a path points to a directory.
  • Added a new method repository_ctx.getenv, which allows Starlark repository rules to declare environment variable dependencies during the fetch, instead of upfront using repository_rule.environ. (#20944)
  • The flag --experimental_worker_for_repo_fetching now defaults to auto, which uses virtual threads from JDK 21 if it's available. This eliminates restarts during repo fetching. (#21082)
  • The new bazel mod tidy subcommand automatically updates use_repo calls in the MODULE.bazel file for extensions that use module_ctx.extension_metadata. (#21265)
  • bazel mod dump_repo_mapping <canonical repo name>... returns the repository mappings of the given repositories in NDJSON. This information can be used by IDEs and Starlark language servers to resolve labels with --enable_bzlmod. (#21023)
  • Added init_submodules attribute to git_override. Registries now support the git_repository type in source.json. (#21036)
  • Bazel's Bash completion can now complete external repository labels when using --enable_bzlmod. (#21149)
  • Fixed bazel fetch by replacing query with cquery as underlying implementation (#21567, #13847).
  • The scheme for generating canonical repository names has changed to improve cacheability of actions across dependency version updates. Note that canonical names are not considered to be public API and can change at any time. See https://bazel.build/external/module#repository_names_and_strict_deps for advice on how to avoid hardcoding canonical repository names. (#21316)
  • Various methods and fields related to labels and repos are deprecated in favor of new options with clearer naming and intent. The deprecated APIs can be disabled by setting --noincompatible_enable_deprecated_label_apis. (#20977)
    • native.repository_name() is deprecated in favor of the new native.repo_name().
    • Label.workspace_name is deprecated in favor of the new Label.repo_name.
    • Label.relative() is deprecated in favor of the new Label.same_package_label() alongside the existing native.package_relative_label() and Label().

Performance

  • Make Bazel's RAM estimate container aware (#20644)
    • On Linux, Bazel's RAM estimate for the host machine is now aware of container resource limits.
    • On macOS, Bazel no longer consistently overestimates the total RAM by ~5% (1024^2/1000^2).
    • On Windows, Bazel's RAM estimate is now generally more accurate as it is no longer influenced by JVM heuristics.
  • Added a new --experimental_execution_log_compact_file flag to produce an execution log in a leaner format and with less runtime overhead. The //src/tools/execlog:converter tool may be used to convert it into one of the preexisting --execution_log_{json,binary}_file formats.
  • Reduced the execution phase overhead for actions that create tree artifacts with a very large number of files (tens or hundreds of thousands).
  • Made sandboxing and sandboxed workers faster. This is achieved by deleting files asynchronously, reusing runfiles, reducing copying and not stashing unnecessary tmp directories.

Python

  • Fixed --incompatible_python_disallow_native_rules to work with targets at the top level (e.g. "//:foo") (#17773)
  • rules_python version increased from 0.4.0 to 0.22.1 in bazel_tools builtin module.

Remote Execution

  • Bazel now respects expires from Credential Helpers. (#21429)

Acknowledgements:

This release contains contributions from many people at Google, as well as Alessandro Patti, Artem V. Navrotskiy, Brentley Jones, Cameron Martin, Christian Scott, Cristin Donoso, David Ostrovsky, Ed Schouten, Fabian Meumertzheim, Gunnar Wagenknecht, Jordan Mele, Keith Smiley, Nikhil Kalige, Patrick Balestra, Rahul Butani, Ryan Beasley, Son Luong Ngoc, Sushain Cherivirala, thesayyn, Viktor Kustov, Yannic Bonenberger.

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.

7.1.0rc1

22 Feb 16:34
f788fed
Compare
Choose a tag to compare
7.1.0rc1 Pre-release
Pre-release

Note

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

Release 7.1.0rc1 (2024-02-22)

Baseline: 8f4b115

External Deps

  • Added a flag --enable_workspace (defaults to True) that allows the user to completely disable WORKSPACE logic when turned off. We plan to change the default to False with Bazel 8. (#20365)
  • Added new APIs to watch arbitrary files or directory trees repository_ctx.watch, repository_ctx.watch_tree. (#21435)
  • Added a new method repository_ctx.getenv, which allows Starlark repository rules to declare environment variable dependencies during the fetch, instead of upfront using repository_rule.environ. (#20944)
  • The flag --experimental_worker_for_repo_fetching now defaults to auto, which uses virtual threads from JDK 21 if it's available. This eliminates restarts during repo fetching. (#21082)
  • The new bazel mod tidy subcommand automatically updates use_repo calls in the MODULE.bazel file for extensions that use module_ctx.extension_metadata. (#21265)
  • bazel mod dump_repo_mapping <canonical repo name>... returns the repository mappings of the given repositories in NDJSON. This information can be used by IDEs and Starlark language servers to resolve labels with --enable_bzlmod. (#21023)
  • Added init_submodules attribute to git_override. Registries now support the git_repository type in source.json (#21036)
  • Bazel's Bash completion can now complete external repository labels when using --enable_bzlmod. (#21149)
  • Fixed bazel fetch by replacing query with cquery as underlying implementation (#21567, #13847).
  • The scheme for generating canonical repository names has changed to improve cacheability of actions across dependency version updates. Note that canonical names are not considered to be public API and can change at any time. See https://bazel.build/external/module#repository_names_and_strict_deps for advice on how to avoid hardcoding canonical repository names. (#21316)
  • Various methods and fields related to labels and repos are deprecated in favor of new options with clearer naming and intent. The deprecated APIs can be disabled by setting --noincompatible_enable_deprecated_label_apis. (#20977)
    • native.repository_name() is deprecated in favor of the new native.repo_name().
    • Label.workspace_name is deprecated in favor of the new Label.repo_name.
    • Label.relative() is deprecated in favor of the new Label.same_package_label() alongside the existing native.package_relative_label() and Label().

Performance

  • Make Bazel's RAM estimate container aware (#20644)
    • On Linux, Bazel's RAM estimate for the host machine is now aware of container resource limits.
    • On macOS, Bazel no longer consistently overestimates the total RAM by ~5% (1024^2/1000^2).
    • On Windows, Bazel's RAM estimate is now generally more accurate as it is no longer influenced by JVM heuristics.
  • Added a new --experimental_execution_log_compact_file flag to produce an execution log in a leaner format and with less runtime overhead. The //src/tools/execlog:converter tool may be used to convert it into one of the preexisting --execution_log_{json,binary}_file formats.
  • Reduced the execution phase overhead for actions that create tree artifacts with a very large number of files (tens or hundreds of thousands).
  • Made sandboxing and sandboxed workers faster. This is achieved by deleting files asynchronously, reusing runfiles, reducing copying and not stashing unnecessary tmp directories.

Python

  • Fixed --incompatible_python_disallow_native_rules to work with targets at the top level (e.g. "//:foo") (#17773)
  • Minimum rules_python version increased from 0.4.0 to 0.22.1

Remote Execution

  • Bazel now respects expires from Credential Helpers. (#21429)

Refer to the full list of commits for more details.

Acknowledgements:

This release contains contributions from many people at Google, as well as Alessandro Patti, Artem V. Navrotskiy, Brentley Jones, Christian Scott, David Ostrovsky, Ed Schouten, Fabian Meumertzheim, Gunnar Wagenknecht, Jordan Mele, Keith Smiley, Nikhil Kalige, Patrick Balestra, Rahul Butani, Ryan Beasley, Son Luong Ngoc, Sushain Cherivirala, thesayyn, Yannic Bonenberger.

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.