Overview
The Bazel project constantly evolves in response to your needs — developing features and providing support while maintaining, refactoring, and improving the performance of the core product.
With these changes, we’re looking to keep our open-source community informed and included. This roadmap describes current initiatives and predictions for the future of Bazel development, giving you visibility into current priorities and ongoing projects.
This roadmap snapshots targets, and should not be taken as guarantees. Priorities are subject to change in response to developer and customer feedback, or new market opportunities.
To be notified of new features — including updates to this roadmap — join the Google Group community.
Q4 — Bazel 6.0 Release
Q4 brings Bazel 6.0 — the new long term support (LTS) version. Bazel 6.0 plans to include new powerful and community-requested features for managing dependencies, developing with Android, and more.
Bzlmod: external dependency management system
Bzlmod automatically resolves transitive dependencies, allowing projects to scale while staying fast and resource-efficient. Introduced experimentally in Bazel 5.0, Bzlmod will be generally available and provide a solution for the diamond dependency problem.
- Bzlmod goes from ‘experimental’ to ‘generally available’
- Includes support for
rules\_jvm\_external
, allowing users to download Maven dependencies for Java projects - Bzlmod Migration Guide provides tools, scripts, and documentation to teams looking to adopt Bzlmod
- The Bazel central repository hosts core Bazel
BUILD
rules (rules\_jvm\_external
,rules\_go
,rules\_python
,rules\_nodejs
) and key dependencies required for Bzlmod
For more on this development, watch the Bzlmod community update or read the original design doc.
Android app build with Bazel
Bazel 6.0 will include improved tooling and merged-in community feature contributions. Anticipating further adoption and a growing codebase, the Bazel team will prioritize integration of Android build tools with Bazel Android rules.
- Updates D8 to v. 3.3.28 and sets it as the default dexer.
- Merges to main community feature contributions added in 5.X including support for:
- Persistent workers with D8
- Desugaring using D8
- Merging "uses-permissions" tags in Android manifests
- Multiplex workers in Android resource processing
Optional toolchains
Our Developer Satisfaction survey showed that rule authors want support for further toolchain development. Bazel 6.0 will allow authors to write rules using an optional, high performance toolchain when available with a fallback implementation for other platforms.
Bazel-JetBrains* IntelliJ IDEA support
JetBrains has partnered with Bazel to co-maintain the Bazel IntelliJ IDEA plugin, supporting the goal of increasing community stewardship and opening up capacity for feature requests and development.
- IntelliJ plugin v. 2022.2 provides support for the latest JetBrains plugin release
- Increases compatibility with remote development
- Furthers community-driven development for in-flight features such as Scala support
For more on this development, read the Bazel-JetBrains blog announcement.
Future development
Looking ahead, the Bazel team has begun development or anticipates prioritizing the following features in 2023 and beyond.
Improving Bazel's Android build rules
Continue to invest in the Android app development experience, focusing on the workflow through build, test, and deployment.
- Migration to and support for R8
- Updates to the Android rules, including translation to the Starlark language
- Support for App Bundle
- Support for recent NDK versions
- Test code coverage
OSS license compliance tools
Developers requested a robust license compliance checker to ensure the availability and security of included packages. This project provides a set of rules and tools to help identify and mitigate compliance and license risks associated with a given software component. Target features include:
- The ability to audit the packages used by a given target
- The ability to build organization specific license compliance checks.
See the in-progress rules_license implementation on Github.
Bzlmod: external dependency management system
At launch, Bzlmod improves the scalability and reliability of transitive dependencies. Over the next three years, Bzlmod aims to replace WORKSPACE
as the default Bazel workspace dependency management subsystem. Targeted features include:
- Support for hermetic builds
- Vendor/offline mode pinning versioned references rules to a local copy
- Bazel Central Registry includes regular community contribution and adoption of key Bazel rules & projects
- Bzlmod becomes the default tool for building Bazel projects
Signed builds
Bazel will provide trusted binaries for Windows and Mac signed with Google keys. This feature enables multi-platform developers/dev-ops to identify the source of Bazel binaries and protect their systems from malicious, unverified binaries.
Standardized Platforms API
The new Platforms API will standardize the architecture configuration for multi-language, multi-platform builds. With this feature, developers can reduce costly development-time errors and complexity in their large builds.
Build analysis metrics
Bazel telemetry will provide analysis-phase time metrics, letting developers optimize their own build performance.
Remote execution with “Builds without the Bytes”
Builds without the Bytes will optimize performance by only allowing Bazel to download needed artifacts, preventing builds from bottlenecking on network bandwidth. Features added for remote builds include:
- Use asynchronous download to let local and remote actions kick off as soon as they’ve downloaded their dependent outputs
- Add Symlinks support
- Retrieve intermediate outputs from remote actions once a build completes
*Copyright © 2022 JetBrains s.r.o. JetBrains and IntelliJ are registered trademarks of JetBrains s.r.o.