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
- Aspect can propagate other aspects - proposal Aspects Propagating Other Aspects. IN PROGRESS
- Improve Starlark testing framework