Bazel Build API 2021 Roadmap

Last verified: 2021-04-09 (update history)

Point of contact: comius

Discuss: Build API roadmap: discussion

Scope

Build API team is covering native rule implementations and the native API exposed to Starlark.

Goal

Have all rules implemented in Starlark and handed over to teams specialised in the particular language. Remove language specific logic from Bazel’s core.

Java rules

The Java rules will first be rewritten to Starlark and tested internally on a large code-base. After that they will be released to Bazel.

Q1 2021

  • Improve the Java sandwich, making it possible to rewrite existing Java rules. DONE

Q2 2021

  • Improve Starlark support for native libraries in Java. IN PROGRESS
  • Improve java_common support for plugins and IDEs - proposal Java common refactoring. IN PROGRESS
  • java_library rule is Starlarkified. IN PROGRESS

Mid 2021

  • java_binary and java_test rules are Starlarkified.
  • java_import and java_plugin rules are Starlarkified.

Fall 2021

  • Starlarkification of java_*_proto_library
  • Remaining java rules are Starlarkified: java_package_configuration, java_runtime, java_toolchain.

2022

  • Starlarkification of java_common module.

C++ rules

Before C++ rules can be rewritten in Starlark some internal cleanups are needed. After that the C++ rules will be rewritten to Starlark piece by piece using builtins functionality. The API for C++ rules will not be made accessible from .bzl files until cc_module is rewritten in Starlark as well.

Q1 2021

  • Clang modules support, DROPPED*
  • and Include scanning support, expected performance improvements from both DROPPED*
  • *We need more data to evaluate whether modules are really what is needed to improve performance.

Q2 2021

  • Internal Go rules are Starlarkified IN PROGRESS
  • Objective-C rules objc_library and objc_import and native code related to them are Starlarkified IN PROGRESS

Fall 2021 and beginning 2022

  • cc_binary, cc_test and cc_library are Starlarkified

2022

  • Starlarkification of other C++ rules (fdo_profile, cc_import, cc_toolchain, cc_toolchain_suite, fdo_prefetch_hints, cc_toolchain_alias, cc_libc_top_alias, cc_host_toolchain_alias, +2)
  • Starlarkification of cc_common module

Misc

Mid 2021