Bazel Build API 2021 發展藍圖

回報問題 查看原始碼 Nightly · 8.2 · 8.1 · 8.0 · 7.6 · 7.5 · 8.0 · 7.6 · 7.5

上次驗證時間:2021 年 4 月 9 日 (更新記錄)

聯絡窗口: comius

討論: Build API 路線圖:討論

範圍

Build API 團隊負責處理原生規則實作項目,以及公開給 Starlark 的原生 API。

目標

將所有規則實作至 Starlark,並交由專精於特定語言的團隊處理。從 Bazel 核心中移除語言專屬邏輯。

Java 規則

系統會先將 Java 規則改寫為 Starlark,然後在大型程式碼集合上進行內部測試。之後,這些檔案就會發布至 Bazel。

2021 年第 1 季

  • 改善 Java 三明治,讓您可以重新撰寫現有的 Java 規則。完成

2021 年第 2 季

  • 改善 Starlark 對 Java 中原生程式庫的支援。IN PROGRESS
  • 改善 java_common 對外掛程式和 IDE 的支援 - Java 常見重構提案。IN PROGRESS
  • java_library 規則已轉換為 Starlark 格式。進行中

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 模組支援功能,已淘汰*
  • 和「Include scanning」支援功能,預期可透過這兩項功能提升效能 已刪除*
  • *我們需要更多資料,才能評估模組是否確實有助於提升效能。

2021 年第 2 季

  • 內部 Go 規則已轉換為 Starlark 規則 進行中
  • Objective-C 規則 objc_library 和 objc_import 以及相關的原生程式碼已轉換為 Starlark 程式碼 進行中

2021 年秋季和 2022 年初

  • cc_binary、cc_test 和 cc_library 已轉換為 Starlark 格式

2022

  • 其他 C++ 規則的 Starlarkification (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 模組的 Starlarkification

其他

2021 年中

  • 可傳播其他層面的影響因子 - 提案「傳播其他層面的影響因子」IN PROGRESS
  • 改善 Starlark 測試架構