Bazel Build API 2021 年路线图

上次验证时间:2021 年 4 月 9 日更新历史记录

联系人comius

讨论构建 API 路线图:讨论

范围

Build API 团队将介绍原生规则实现以及向 Starlark 提供的原生 API。

目标

在 Starlark 中实现所有规则,并移交给专门负责特定语言的团队。从 Bazel 核心中移除了语言特定的逻辑。

Java 规则

Java 规则将首先重写到 Starlark,并在大型代码库上进行内部测试。之后,它们就会发布到 Bazel。

2021 年第 1 季度

  • 改进了 Java sandwich,以便重写现有的 Java 规则。完成

2021 年第 2 季度

  • 改进了 Starlark 对 Java 原生库的支持。进行中
  • 改进了对插件和 IDE 的 java_common 支持 - 提议执行 Java 通用重构进行中
  • java_library 规则已经过 Starlarkified。进行中

2021 年年中

  • java_binary 和 java_test 规则已经过 Starlarkified。
  • java_import 和 java_plugin 规则已经过 Starlarkified。

2021 年秋

  • java_*_proto_library 的 Starlarkification
  • 其余 Java 规则已经过 Starlarkified:java_package_configuration, java_runtime, java_toolchain

2022 年

  • java_common 模块的星标化。

C++ 规则

在 Starlark 中重写 C++ 规则之前,需要进行一些内部清理。之后,将使用内置功能将 C++ 规则逐步重写为 Starlark 规则。在 Starlark 也重写了 cc_module 之前,将无法从 .bzl 文件访问 C++ 规则的 API。

2021 年第 1 季度

  • 支持 Clang 模块已舍弃*
  • 包括扫描支持,DROPPED* 实现预期性能提升
  • *我们需要更多数据来评估是否真的需要模块来提升性能。

2021 年第 2 季度

  • 内部 Go 规则正在经过 Starlarkified
  • Objective-C 规则 objc_library 和 objc_import 以及与其相关的原生代码已进行 Starlarkified 正在进行

2021 年秋季和 2022 年开始

  • cc_binary、cc_test 和 cc_library 已经过星化验证

2022 年

  • 对其他 C++ 规则(fdo_profile、cc_import、 cc_toolchain、cc_toolchain_suite、fdo_prefetch_hints、cc_toolchain_alias、cc_libc_top_alias、cc_host_toolchain_alias、+2)的星标化
  • cc_common 模块的星标化

其他

2021 年年中

  • 切面可以传播其他切面 - 提案传播其他切面进行中
  • 改进 Starlark 测试框架