Bazel Configurability 2021 Roadmap

Last verified: 2021-01-25 (update history)

Point of contact: gregestren

Discuss: Configurability roadmap: discussion

Previous Roadmaps

Goal

$ bazel build //:all just works, for any project and any platforms.

  • Builds don’t require command-line flags.
  • Each target automatically uses correct settings (e.g. android_binary uses the right NDK).
  • It’s easy to build for multiple platforms.
  • Builds scale well, particularly w.r.t graph size and action caching.

We also support cquery, Starlark configuration, and select().

Roadmap

Dates are approximate based on our best understanding of problem complexity and developer availability. In 2021 we intend to focus more effort on fewer projects at once. We’ll only set ETAs for actively prioritized work in the interest of accurate expectations.

Platforms

Q3 2021Android rules use the new platforms API IN PROGRESS (#11749)

  • This is our main priority for the beginning of 2021.

Q3 2021Builds support multiple execution platforms IN PROGRESS (#11748)

pausedC++ rules use the new platformsfall API IN PROGRESS (#6516)

  • This is blocked on Android platforms. We can turn this on with a simple flag flip.

pausedMulti-platform targets NOT STARTED

  • Let targets declare that they should build for multiple platforms
  • Listed here because of user request

pausedDeprecate and remove --cpu and related flags NOT STARTED

  • This is an aspirational goal that falls out of migrating all rules to platforms.

Efficiency

2021An experimental Bazel mode caches cross-platform Java compilation IN PROGRESS (#6526)

  • Improves multi-platform build speed
  • Underallocated, so progress is slow