Starlark 發展藍圖

回報問題 查看原始碼 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

聯絡窗口: laurentlb

目標

我們的目標是讓 Bazel 更具延展性。使用者應能輕鬆實作自己的規則,並支援新的語言和工具。我們希望改善撰寫及維護這些規則的體驗。

我們著重於兩個領域:

  • 讓語言和 API 簡單易用,但功能強大。
  • 提供更優質的工具,用於讀取、寫入、更新、偵錯及測試程式碼。

2020 年第 2 季

應用程式健康和最佳做法:

  • P0。請勿使用沒有名稱的巨集,並確保名稱為不重複的字串文字。這項工作著重於 Google 程式碼庫,但可能會影響公開提供的工具。
  • P0。讓 Buildozer 指令可靠地處理選取項目和變數。
  • P1. 讓 Buildifier 移除因註解而未排序的清單中重複的項目。
  • P1. 更新 Buildifier 的 Linter,建議內嵌簡單的運算式。
  • P2. 研究 native.existing_rule 的用途,並提出替代做法。
  • P2. 研究前奏檔案的用途,並提出替代方案。

成效:

  • P1. 使用平面環境和位元碼編譯功能,對 Starlark 轉譯器進行最佳化。

減少技術債:

  • P0。新增將原生符號移植至 @bazel_tools 底下的 Starlark 的功能。
  • P1. 刪除已淘汰的標記 (其中部分標記仍在 Google 中使用,因此我們需要先清理程式碼庫):incompatible_always_check_depset_elementsincompatible_disable_deprecated_attr_paramsincompatible_no_support_tools_in_action_inputsincompatible_new_actions_api
  • P1. 請確認以下標記可在 Bazel 4.0 中切換:incompatible_disable_depset_itemsincompatible_no_implicit_file_exportincompatible_run_shell_command_stringincompatible_restrict_string_escapes
  • P1. 完成 lib.syntax 工作 (API 清理、與 Bazel 分離)。
  • P2. 針對 Bazel 的 Java 套件,將簡單編輯的建構 + 測試延遲時間縮短 50%。

社群:

  • rules_python 是活躍的社群,且由社群成員妥善維護。
  • 持續支援 rules_jvm_external (沒有待處理的提取要求、問題分類,以及發布版本)。
  • 維護 Bazel 說明文件基礎架構:在 bazel-website、bazel-blog 和說明文件中集中化及標準化 CSS 樣式
  • Bazel 文件:為 e2e 文件網站建構作業新增持續整合測試,以防發生迴歸現象。

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 專屬術語的定義