Bazel Build API 2021 年路线图

上次验证时间:2021-04-09更新历史记录

联系人comius

讨论制定 API 路线图:讨论

范围

Build API 团队负责原生规则实现和向 Starlark 公开的原生 API。

目标

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

Java 规则

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

2021 年第 1 季度

  • 改进了 Java sandwich,使其能够重写现有的 Java 规则。完成

2021 年第 2 季度

  • 改进了对 Java 中原生库的 Starlark 支持。 正在处理
  • 改进了对插件和 IDE 的 java_common 支持 - 提案 Java 通用重构正在处理
  • java_library 规则已 Starlark 化。IN PROGRESS

2021 年年中

  • java_binary 和 java_test 规则已 Starlark 化。
  • java_import 和 java_plugin 规则已 Starlark 化。

2021 年秋季

  • java_*_proto_library 的 Starlark 化
  • 其余 Java 规则已转换为 Starlark:java_package_configuration、java_runtime、java_toolchain

2022

  • java_common 模块进行了 Starlark 化。

C++ 规则

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

2021 年第 1 季度

  • Clang 模块支持,已弃用*
  • 包含扫描支持,预计性能将从 DROPPED*
  • *我们需要更多数据来评估模块是否确实是提升性能所需的。

2021 年第 2 季度

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

2021 年秋季和 2022 年初

  • cc_binary、cc_test 和 cc_library 已 Starlark 化

2022

  • 其他 C++ 规则的 Starlark 化(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 模块的 Starlark 化

其他

2021 年年中