---
title: 'Bazel roadmap'
---

## Overview

As the Bazel project continues to evolve in response to your needs, we want to
share our 2024 update.

This roadmap describes current initiatives and predictions for the future of
Bazel development, giving you visibility into current priorities and ongoing
projects.

## Bazel 8.0 Release

We plan to bring Bazel 8.0 [long term support
(LTS)](https://bazel.build/release/versioning) to you in late 2024.
The following features are planned to be implemented.

### Bzlmod: external dependency management system

[Bzlmod](https://bazel.build/versions/8.7.0/docs/bzlmod) automatically resolves transitive
dependencies, allowing projects to scale while staying fast and
resource-efficient.

With Bazel 8, we will disable WORKSPACE support by default (it will still be
possible to enable it using `--enable_workspace`); with Bazel 9 WORKSPACE
support will be removed. Starting with Bazel 7.1, you can set
`--noenable_workspace` to opt into the new behavior.

Bazel 8.0 will contain a number of enhancements to
[Bazel's external dependency management]
(https://docs.google.com/document/d/1moQfNcEIttsk6vYanNKIy3ZuK53hQUFq1b1r0rmsYVg/edit#heading=h.lgyp7ubwxmjc)
functionality, including:

*   The new flag `--enable_workspace` can be set to `false` to completely
    disable WORKSPACE functionality.
*   New directory watching API (see
    [#21435](https://github.com/bazelbuild/bazel/pull/21435), shipped in Bazel
    7.1).
*   Improved scheme for generating canonical repository names for better
    cacheability of actions across dependency version updates.
    ([#21316](https://github.com/bazelbuild/bazel/pull/21316), shipped in Bazel
    7.1)
*   An improved shared repository cache (see
    [#12227](https://github.com/bazelbuild/bazel/issues/12227)).
*   Vendor and offline mode support — allows users to run builds with
    pre-downloaded dependencies (see
    [#19563](https://github.com/bazelbuild/bazel/issues/19563)).
*   Reduced merge conflicts in lock files
    ([#20396](https://github.com/bazelbuild/bazel/issues/20369)).
*   Segmented MODULE.bazel
    ([#17880](https://github.com/bazelbuild/bazel/issues/17880))
*   Allow overriding module extension generated repository
    ([#19301](https://github.com/bazelbuild/bazel/issues/19301))
*   Improved documentation (e.g.
    [#18030](https://github.com/bazelbuild/bazel/issues/18030),
    [#15821](https://github.com/bazelbuild/bazel/issues/15821)) and migration
    guide and migration tooling.

### Remote execution improvements

*   Add support for asynchronous execution, speeding up remote execution by
    increased parallelism with flag `--jobs`.
*   Make it easier to debug cache misses by a new compact execution log,
    reducing its size by 100x and its runtime overhead significantly (see
    [#18643](https://github.com/bazelbuild/bazel/issues/18643)).
*   Implement garbage collection for the disk cache (see
    [#5139](https://github.com/bazelbuild/bazel/issues/5139)).
*   Implement remote output service to allow lazy downloading of arbitrary build
    outputs (see
    [#20933](https://github.com/bazelbuild/bazel/discussions/20933)).

### Migration of Android, C++, Java, Python, and Proto rules

Complete migration of Android, C++, Java, and Python rulesets to dedicated
repositories and decoupling them from the Bazel releases. This effort allows
Bazel users and rule authors to

*   Update rules independently of Bazel.
*   Update and customize rules as needed.

The new location of the rulesets is going to be `bazelbuild/rules_android`,
`rules_cc`, `rules_java`, `rules_python` and `google/protobuf`. `rules_proto` is
going to be deprecated.

Bazel 8 will provide a temporary migration flag that will automatically use the
rulesets that were previously part of the binary from their repositories. All
the users of those rulesets are expected to eventually depend on their
repositories and load them similarly to other rulesets that were never part of
Bazel.

Bazel 8 will also improve on the existing extending rules and subrule APIs and
mark them as non-experimental.

### Starlark improvements

*   Symbolic Macros are a new way of writing macros that is friendlier to
    `BUILD` users, macro authors, and tooling. Compared to legacy macros, which
    Bazel has only limited insight into, symbolic macros help users avoid common
    pitfalls and enforce best practices.
*   Package finalizers are a proposed feature for adding first-class support for
    custom package validation logic. They are intended to help us deprecate
    `native.existing_rules()`.

### Configurability

*   Output path mapping continues to stabilize: promising better remote cache
    performance and build speed for rule designers who use transitions.
*   Automatically set build flags suitable for a given `--platforms`.
*   Define project-supported flag combinations and automatically build targets
    with default flags without having to set bazelrcs.
*   Don't redo build analysis every time build flags change.

### Project Skyfocus - minimize retained data structures

Bazel holds a lot of state in RAM for fast incremental builds. However,
developers often change a small subset of the source files (e.g. almost never
one of the external dependencies). With Skyfocus, Bazel will provide an
experimental way to drop unnecessary incremental state and reduce Bazel's memory
footprint, while still providing the same fast incremental build experience.

The initial scope aims to improve the retained heap metric only. Peak heap
reduction is a possibility, but not included in the initial scope.

### Misc

*   Mobile install v3, a simpler and better maintained approach to incrementally
    deploy Android applications.
*   Garbage collection for repository caches and Bazel's `install_base`.
*   Reduced sandboxing overhead.

### Bazel-JetBrains* IntelliJ IDEA support

Incremental IntelliJ plugin updates to support the latest JetBrains plugin
release.

*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](https://groups.google.com/g/bazel-discuss) community.*

*Copyright © 2022 JetBrains s.r.o. JetBrains and IntelliJ are registered trademarks of JetBrains s.r.o
