blob: 316200b36281389d95192652c85cfeb96728276a [file] [log] [blame] [view]
Project: /_project.yaml
Book: /_book.yaml
<style>
.padbottom { padding-bottom: 10px; }
.etabox {
background: #EFEFEF;
color: #38761D;
font-size: 15px;
font-weight: bold;
display: inline;
padding: 6px;
margin-right: 10px;
}
.donestatus {
color: #00D000;
font-weight: bold;
padding-left: 10px;
}
.droppedstatus {
color: #D00000;
font-weight: bold;
padding-left: 10px;
}
.inprogressstatus {
color: #D0D000;
font-weight: bold;
padding-left: 10px;
}
</style>
# Bazel Build API 2021 Roadmap
*Last verified: 2021-04-09*
([update history](https://github.com/bazelbuild/bazel-website/commits/master/roadmaps/build-api.md))
*Point of contact:* [comius](https://github.com/comius)
*Discuss:*
[Build API roadmap: discussion](https://github.com/bazelbuild/bazel/issues/13008)
## 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 Bazels 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.
<div class="padbottom"></div>
<span class="etabox">Q1 2021</span>
* Improve the **Java sandwich**, making it possible to rewrite existing Java
rules. <span class="donestatus">DONE</span>
<div class="padbottom"></div>
<span class="etabox">Q2 2021</span>
* Improve Starlark support for **native libraries** in Java.
<span class="inprogressstatus">IN PROGRESS</span>
* Improve <code>java_common</code> support for plugins and IDEs - proposal
[Java common refactoring](https://docs.google.com/document/d/10isTEK5W9iCPp4BIyGBrLY5iti3Waaam6EeGVSjq3r8/edit).
<span class="inprogressstatus">IN PROGRESS</span>
* **java_library** rule is Starlarkified. <span class="inprogressstatus">IN
PROGRESS</span>
<div class="padbottom"></div>
<span class="etabox">Mid 2021</span>
* **java_binary and java_test** rules are Starlarkified.
* **java_import and java_plugin** rules are Starlarkified.
<div class="padbottom"></div>
<span class="etabox">Fall 2021</span>
* Starlarkification of **java_\*_proto_library**
* Remaining java rules are Starlarkified: **java_package_configuration,
java_runtime, java_toolchain**.
<div class="padbottom"></div>
<span class="etabox">2022</span>
* 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.
<div class="padbottom"></div>
<span class="etabox">Q1 2021</span>
* **Clang modules** support, <span class="droppedstatus">DROPPED*</span>
* and **Include scanning** support, expected performance improvements from
both <span class="droppedstatus">DROPPED*</span>
* *We need more data to evaluate whether modules are really what is needed to
improve performance.
<div class="padbottom"></div>
<span class="etabox">Q2 2021</span>
* Internal **Go rules** are Starlarkified <span class="inprogressstatus">IN
PROGRESS</span>
* Objective-C rules **objc_library and objc_import** and native code related
to them are Starlarkified <span class="inprogressstatus">IN PROGRESS</span>
<div class="padbottom"></div>
<span class="etabox">Fall 2021 and beginning 2022</span>
* **cc_binary, cc_test and cc_library** are Starlarkified
<div class="padbottom"></div>
<span class="etabox">2022</span>
* 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
<div class="padbottom"></div>
<span class="etabox">Mid 2021</span>
* Aspect can propagate other aspects - proposal
[Aspects Propagating Other Aspects](https://docs.google.com/document/d/1fVNyskIgMoiNeOOGt57LdDmEkAShkYUKYQTkf5yD1fA/edit).
<span class="inprogressstatus">IN PROGRESS</span>
* Improve Starlark testing framework