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’
- 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
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
Software Bill of Materials data generation (SBOMs) & OSS license compliance tools
With Bazel, developers can generate data to produce SBOMs. This data will be available in text or JSON format and can be easily formatted to meet SPDX or CycloneDX needs.
Additionally, the project also provides rules to declare the licenses that Bazel modules are available under, and tools to build processes around those declarations.See the in-progress rules_license implementation on GitHub.
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.
Automated execution for dynamic builds
By improving resource utilization predictions, Bazel will optimize local and dynamic execution of build actions, leading to faster builds and less overloaded developer machines.
Build analysis metrics
Bazel 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 actions kick off as soon as they’ve downloaded their dependent outputs
- Add Symlinks support
- Add ways to support retrieving intermediate outputs from remote actions during a build
- Supports remote cache eviction between invocations
*Copyright © 2022 JetBrains s.r.o. JetBrains and IntelliJ are registered trademarks of JetBrains s.r.o.