Bazel Build API 2021 發展藍圖

上次驗證時間:2021-04-09 (更新記錄)

聯絡窗口: comius

討論: 建構 API 藍圖:討論

範圍

建構 API 團隊將涵蓋原生規則實作,以及向 Starlark 公開的原生 API。

目標

在 Starlark 中實作所有規則,並轉交給使用特定語言專門的團隊。從 Bazel 的核心中移除語言專屬的邏輯。

Java 規則

Java 規則會先重寫為 Starlark,並以大型程式碼集在內部測試。之後就會發布到 Bazel。

2021 年第 1 季

  • 改善 Java sandwich,以便重新編寫現有的 Java 規則。完成

2021 年第 2 季

  • 改善對 Java 中原生程式庫的 Starlark 支援。處理中
  • 改善外掛程式和 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 規則是 Starlarked
  • Objective-C 規則 objc_library 和 objc_import 以及與這些規則相關的原生程式碼為 Starlarkified IN PROGRESS

2021 年秋季和 2022 年底

  • cc_binary、cc_test 和 cc_library 皆為 Starlarkified

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 測試架構