Bazel Build API 2021 Roadmap
Last verified: 2021-02-12 (update history)
Point of contact: comius
Discuss: Build API roadmap: discussion
Build API team is covering native rule implementations and the native API exposed to Starlark.
Have all rules implemented in Starlark and handed over to teams specialised in the particular language. Remove language specific logic from Bazel’s core.
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.
- Improve the Java sandwich, making it possible to rewrite existing Java rules. IN PROGRESS
- Improve Starlark support for native libraries in Java. IN PROGRESS
- java_library, java_binary and java_test rules are Starlarkified.
- java_import and java_plugin rules are Starlarkified.
- Starlarkification of java_*_proto_library
- Remaining java rules are Starlarkified: java_package_configuration, java_runtime, java_toolchain.
- Starlarkification of java_common module.
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.
- Clang modules support, IN PROGRESS
- and Include scanning support, expected performance improvements from both
- Internal Go rules are Starlarkified IN PROGRESS
- Objective-C rules objc_library, j2objc_library, and objc_import are Starlarkified
- Optionally (if needed): platformization of apple_binary and Android rules
Fall 2021 and beginning 2022
- cc_binary, cc_test and cc_library are Starlarkified
- 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