Bazel Blog

Bazel 6.0 LTS

Bazel 6.0 launched!

Today, we launch Bazel 6.0 LTS! Bazel 6.0 delivers many requested customer updates to simplify Bazel usage and eliminate common Android app development roadblocks.

Image

Bzlmod becomes Generally available

Bzlmod automatically resolves transitive dependencies, allowing projects to scale while staying fast and resource-efficient. In development since 2021, Bzlmod enters general availability with Bazel 6.0.

  • Pipelines to automatically check common dependencies and rulesets into the Bazel Central Registry.
  • Updated Bzlmod Migration Guide includes scripts and documentation for migration.
  • Added Bzlmod support for rules_jvm_external, allowing users to download Maven dependencies for Java projects.

Build Android apps with Bazel

By popular customer request, Bazel 6.0 uses D8 for dexing and desugaring by default. With D8, you leverage the latest Android tooling when building mobile apps. Through community contributions, Bazel Android builds now also support a variety of quality-of-life and efficiency improvements, such as persistent workers for resource processing and (optional) manifest permission merging.

Optional toolchains

Our Developer Satisfaction survey indicated that rule authors want support for improved toolchain development. Bazel 6.0 allows authors to write rules using an optional, high performance toolchains when available, with a fallback implementation for other platforms.

New build performance profiles

Optimize for build productivity with new system and CPU related metrics data.

  • system load average (--experimental_collect_load_average_in_profiler)
  • worker memory usage (--experimental_collect_worker_data_in_profiler)
  • system network usage (--experimental_collect_system_network_usage)

Control .bzl dependencies with load visibility

Now, rule and macro authors can declare a load visibility for their .bzl files by calling the new visibility() built-in function. This restricts what parts of the workspace may load() the .bzl file, so that macros and rules do not automatically become public APIs.

Read the full release notes for Bazel 6.0.