6.4.0
Note
If you are looking for rolling releases, please visit this page.
Baseline: 0f231ac
Bazel 6.4.0 is a minor LTS release. It is fully backward compatible with Bazel 6.0 and contains selected changes by the Bazel community and Google engineers.
General
- Add support for more workspace boundary files to bash completion (#19281)
- Ignore Starlark options on commands with
allowResidue = False
(#19417) - Print Passed and Failed methods in detailed test summary (#19505)
- Keep leading zero in formatted date (#19694)
- Merge rule and aspect validation output groups (#19745)
- Bazel release process: Fix push justification. (#19768)
- Clear runfiles environment variables for
bazel run
(#19606)
Android
- Add a Starlark flag that allows disabling proguard. This will be useful for testing later. (#19179)
C++ / Objective-C
- Fix a bug where frozen targets list was mutated while expanding env attribute (#19053)
- Advertise CcInfo from cc_import (#19086) (#19088)
- Enable cc toolchain resolution when cross compiling to windows arm64. (#19198)
- Add Starlark implementation for several CcCommon methods. (#19076)
- Rename
cc_test_wrapper
tocc_test
(#19231) - Add
additional_linker_inputs
option tocc_library
rule (#19264) - Add --incompatible_disable_objc_library_transition (#19393)
- Wrong include path to Clang 16 on Windows (#19430)
- Remove default -s flag from macOS libtool invocation (#19454)
- Only use
/showIncludes
if supported (#19521) - Advertise CcInfo from cc_proto_library (#19534)
- Update unknown Xcode version error message and provide an environment variable to force re-evaluation (#19540)
- cc_library: propagate data dependencies via implementation_deps. (#19590)
- Error on potential unsupported
/showIncludes
lines (#19611) - Flip --experimental_cc_implementation_deps (#19751)
- Bump c++ standard to c++14 per default (#19794)
- Collect debug info context from implementation deps (#19836)
Configurability
- Performance improvement:
--allow_analysis_cache_discard=false
aborts the build if changed build flags would otherwise discard the analysis cache (#19503) - Performance, correctness improvement: add diff_against_dynamic_baseline option to --experimental_output_directory_naming_scheme (#19514)
- Improve error when a label is provided in
config_setting
'svalues
(#19484) - Do not allow applicable_licenses on platform (#19426)
- Raise an early error on invalid labels in transitions inputs/outputs (#19764)
- Fix unconditional Skyframe invalidation with --lockfile_mode=update
External Dependencies / Bzlmod
- Merge
use_repo
buildifier fixups into a single command (#19134) - Ensure that extension unique names followed by
~
are prefix-free (#19164) - Lockfile updates & fixes (#19153)
- A new attribute 'environ' is added to module extension to allow depending on environment variables.
- The module extension will be re-evaluated in response to changes in the files it depends on.
- Lockfile version bump will prompt users to run it in 'lockfile_mode=update'.
- Friendlier error message for
bazel_dep
s withoutversion
(#19196) - Use
debugPrint
instead ofstr
forfail
arguments (#19283) - Download
BazelRegistryJson
only once per registry (#19300) - Make module extension tag's
debugPrint
useful for error messages (#19285) - Intern repository mapping entries (#19293)
- Do not rerun module extensions when only imports or locations change (#19284)
- Fetch
RepoSpecs
in parallel (#19354) - Make
MODULE.bazel.lock
deterministic (#19370) - Ensure lockfile is updated after reset to pre-build state (#19371)
- Add visionOS support (#19436)
- Cherry pick platform dependent lockfile (#19498)
- New attributes 'os' and 'arch' added to module extension to signify its reliance on the operating system or system architecture.
- When either the 'os' attribute, the 'arch' attribute, or both are set to 'true,' separate module extensions will be stored in the lockfile for each distinct combination of operating system and architecture.
- Print dep chain leading to a module that is in error (#19543)
- Show fetch progress for the
mod
command (#19542) - Explain the use of
str(Label(...))
in the docs (#19554) - Inject builtin modules at the end of the MODULE.bazel file (#19573)
- Use case-insensitive comparison for Windows paths in
runfiles.bash
(#19626) - Show test labels in summaries in display form (#19625)
- Remove stale extension entries from lockfile (#19683)
- Bzlmod lockfile: fix pretty printing for attributes (#19691)
- Fixed a case where the MODULE.bazel.lock file contains user specific paths (#19698)
- Consider RCs equivalent to release for
bazel_compatibility
(#19689) - Remove stale extension entries from lockfile if module order changes (#19730)
- Make lockfile's
RepoSpec
attributes more readable (#19748) - Fix handling of non-ASCII characters in archive entry file names (#19765)
- Fix crash when
environ
contains duplicate entries (#19827)
Java
- Add toolchain type for Java bootstrap runtime (#19220)
- Add formatted timestamp entries to volatile workspace status file (#19499)
- Update java_tools to v12.7 (#19522)
- Use
Label
in@bazel_tools//tools/jdk
macros (#19675) - Update rules_java to 5.5.1 (#19701)
- Fix Java compilation for jdk21 (#19735)
- Handle synthetic method parameters entries that don't have names (#19758)
Performance
- Add profiling for Bzlmod operations (#19313)
- Intern empty
Depset
s (#19443) - Optimize classpath pre-processing in java_stub_template.txt (#19491)
- Also apply
NestedSet
optimizations toDepset
(#19492)
Query
- Fix valid json when using jsonproto output in queries with new
--output=streamed_jsonproto
implementation. (#19226) - Add
--consistent_labels
flag to all query commands (#19567)
Remote Cache and Execution
- Support multiple remote execution digest functions (#19042)
- Add the --remote_require_cached flag (#19075)
- BLAKE3 can be used as a digest function with the
--digest_function=blake3
startup flag (#19191) - Ensure disk cache root exists (#19225)
- Retry on javax.net.ssl.SSLException ... BAD_DECRYPT (#19346)
- build-runfiles: remove temporary file prior to creating it (#19386)
- Take the no-remote-exec tag into account when computing the action salt (#19457)
- Mark tool inputs in the execution log. (#19483)
- Add output name to CacheNotFoundException (#19452)
- Fix output materialized as symlink when building without the bytes. (#19739)
- Add blake3 NEON instructions on linux arm64 (#19804)
Rules API
- Added a new top-level symbol
PackageSpecificationInfo
, a provider for package_group targets. It has a contains method for allowlist checking. (#19422, #19425) - Always fail on unknown attributes (#19404)
- Add
--incompatible_merge_fixed_and_default_shell_env
(#19319) - Include name in
repr
of exportedrule
s (#19229)
Acknowledgements:
This release contains contributions from many people at Google, as well as Andreas Herrmann, Brentley Jones, Chirag Ramani, Ed Schouten, Fabian Meumertzheim, George Gensure, Julio Merino, Keith Smiley, Matt Mackay, NelsonLi0701, Nicholas Junge, Orion Hodson, Roman Salvador, Ted Kaplan, Thi Doan, and Tyler Williams.
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.