Starlark 發展藍圖

回報問題 查看原始碼 。 。 。 。 夜間。 。 7.3 。 。 7.2 。 。 7.1 。 。 7.0 。 。 6.5

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

聯絡窗口: laurentlb

目標

我們的目標是讓 Bazel 能更擴充。使用者可以輕鬆使用 並支援新的語言和工具。我們希望 提升撰寫及維護規則的體驗

我們會著重在兩個領域:

  • 確保用語和 API 既簡單又強大。
  • 提供更優質的程式碼讀取、寫入、更新、偵錯和測試工具。

2020 年第 2 季

建立健康與最佳做法:

  • 第 0 頁:不建議在沒有名稱的情況下使用巨集,且名稱不得重複 字串常值。這項工作著重於 Google 程式碼集,但可能會影響 這些可公開取得的工具
  • 第 0 頁:針對選取和變數,確保 Buildozer 指令可靠。
  • 第 1 頁:「讓建構工具」移除未排序的重複項目 留言。
  • 第 1 頁:更新建構工具 Linter,建議內嵌一般運算式。
  • 第 2 頁:瞭解 native.existing_rules 的用途,並提出替代方案。
  • 第 2 頁:瞭解 Prede 檔案的應用實例,並提出替代方案。

成效:

  • 第 1 頁:使用平面環境和位元碼最佳化 Starlark 解譯器 編譯。

減少技術債:

  • 第 0 頁:新增將原生符號移植到 @bazel_tools 底下的 Starlark 功能。
  • 第 1 頁:刪除過時的標記 (部分標記仍在 Google 仍在使用,因此我們 請先清理程式碼集):incompatible_always_check_depset_elementsincompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputsincompatible_new_actions_api
  • 第 1 頁:確保可以在 Bazel 4.0 中翻轉下列標記: incompatible_disable_depset_itemsincompatible_no_implicit_file_exportincompatible_run_shell_command_string, incompatible_restrict_string_escapes
  • 第 1 頁:完成 lib.syntax 工作 (API 清理、與 Bazel 分離)。
  • 第 2 頁:將 Bazel 的 Java 套件簡易編輯作業的建構與測試延遲時間縮短了 50%。

社群:

  • rules_python 相當積極,而且由社群維護。
  • 持續為 Rules_jvm_external 提供支援 (沒有待處理的提取要求,問題 分類、發布影片)。
  • 維護 Bazel 說明文件基礎架構:集中及標準化 CSS bazel-website、bazel-blog、文件的樣式
  • 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 專用字詞定義的詞彙表