上次驗證日期:2020 年 4 月 21 日 (更新記錄)
聯絡窗口: laurentlb
目標
我們的目標是讓 Bazel 更具擴充性。使用者應能輕鬆實作自己的規則,並支援新語言和工具。我們希望改善撰寫及維護這些規則的體驗。
我們著重於兩大領域:
- 讓語言和 API 簡單易用,但功能強大。
- 提供更完善的工具,方便讀取、編寫、更新、偵錯及測試程式碼。
2020 年第 2 季
建構健康狀態和最佳做法:
- P0. 避免使用沒有名稱的巨集,並確保名稱是唯一的字串常值。這項工作以 Google 程式碼集為重點,但可能會影響公開提供的工具。
- P0. 確保 Buildozer 指令在選取項目和變數方面可靠無虞。
- P1. 讓 Buildifier 移除清單中重複的項目,因為註解的關係,我們不會排序這些項目。
- P1. 更新 Buildifier 檢查工具,建議內嵌微不足道的運算式。
- P2. 研究 native.existing_rules 的應用實例,並提出替代方案。
- P2. 研究前奏檔案的用途,並提出替代方案。
成效:
- P1. 使用扁平環境和位元組碼編譯,最佳化 Starlark 解譯器。
減少技術債:
- P0. 新增功能,可將原生符號移植到 @bazel_tools 底下的 Starlark。
- P1. 刪除過時的旗標 (部分旗標仍會在 Google 使用,因此我們需要先清理程式碼集):
incompatible_always_check_depset_elements、incompatible_disable_deprecated_attr_params、incompatible_no_support_tools_in_action_inputs、incompatible_new_actions_api。 - P1. 請確保下列標記可在 Bazel 4.0 中翻轉:
incompatible_disable_depset_items、incompatible_no_implicit_file_export、incompatible_run_shell_command_string、incompatible_restrict_string_escapes。 - P1. 完成 lib.syntax 工作 (API 清理、與 Bazel 分離)。
- P2. 將 Bazel Java 套件的微小編輯建構 + 測試延遲時間減少 50%。
社群:
rules_python是由社群維護的活躍論壇。- 持續支援 rules_jvm_external (沒有待處理的提取要求、問題分類、發布版本)。
- 維護 Bazel 說明文件基礎架構:集中管理並標準化 bazel-website、bazel-blog、docs 的 CSS 樣式
- Bazel 文件:為 e2e 文件網站建構作業新增 CI 測試,避免發生迴歸。
2020 年第 1 季
建構健康狀態和最佳做法:
- 允許目標追蹤巨集呼叫堆疊,以便透過
bazel query匯出 - 實作
--incompatible_no_implicit_file_export - 移除已淘汰的 depset API (#5817、#10313、#9017)。
- 在 Buildifier 中新增跨檔案分析器,實作已淘汰函式的檢查。
成效:
- 讓 Bazel 自己的 Java 測試速度提升 2 倍。
- 導入 Starlark CPU 分析器。
減少技術債:
- 移除 8 個不相容的標記 (翻轉後)。
- 完成 lib.syntax 清理作業 (中斷依附元件)。
- Starlark 最佳化:扁平環境、位元組碼編譯
- 盡可能刪除分析階段的所有序列化
- 制定簡化/最佳化 lib.packages 的計畫
社群:
- 發布詞彙表,其中包含所有 Bazel 專屬詞彙的定義