Bazel roadmap

Stay organized with collections Save and categorize content based on your preferences.
Report an issue View source

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.