Starlark 藍圖

回報問題 查看原始碼

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

聯絡窗口:laurentlb

目標

我們的目標是讓 Bazel 更靈活地運用。使用者必須能夠輕鬆實作自己的規則,並支援新的語言和工具。我們希望改善撰寫和維護這些規則的體驗。

我們將重點放在兩個領域:

  • 讓語言和 API 保持精簡,但功能強大。
  • 提供更完善的工具,讓您讀取、寫入、更新、偵錯及測試程式碼。

2020 年第 2 季

打造健全及最佳做法:

  • 0. 不建議使用名稱以外的巨集,並確保名稱是不重複的字串常值。本工作著重於 Google 程式碼集,但可能會影響公開使用的工具。
  • 0. 讓 Buildozer 指令對於選取項目和變數保持可靠性。
  • P1. 使建構工具移除因沒有註解而未排序的重複項目。
  • P1. 更新建構工具 Linter,以建議內嵌細微運算式。
  • P2. 研究 native.existing_rules 的用途並提出替代方案。
  • P2. 研究準備檔案的用途,並提出替代方案。

效能:

  • P1. 使用平面環境和位元碼編譯將 Starlark 解譯器最佳化。

技術債減少:

  • 0. 新增將原生符號移植至 Starlark @bazel_tools 的功能。
  • 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.yntax 工作 (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)。
  • 在建構工具中新增跨檔案分析工具,針對已淘汰的函式實作檢查。

效能:

  • 將 Bazel 本身的 Java 測試速度提高至原先的 2 倍。
  • 實作 Starlark CPU 分析器。

技術債減少:

  • 移除 8 個不相容的標記 (翻轉後)。
  • 完成 lib.yntax 清理作業 (中斷依附元件)。
  • Starlark 最佳化:平坦的環境、位元碼編譯
  • 如果可以,請刪除分析階段中的所有序列化作業
  • 規劃簡化/最佳化 lib.packages 的計畫

社群:

  • 發布詞彙表,內含所有 Bazel 專屬字詞的定義