Skip to content

6.4.0

Compare
Choose a tag to compare
@bazel-io bazel-io released this 19 Oct 17:44
· 7869 commits to master since this release

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 to cc_test (#19231)
  • Add additional_linker_inputs option to cc_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's values (#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_deps without version (#19196)
  • Use debugPrint instead of str for fail 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 Depsets (#19443)
  • Optimize classpath pre-processing in java_stub_template.txt (#19491)
  • Also apply NestedSet optimizations to Depset (#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 exported rules (#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.