Bazel 發展藍圖

回報問題 查看來源 。 。 夜間。 。 7.3 。 。 7.2 。 。 7.1 。 。 7.0 。 。 6.5

總覽

隨著 Bazel 專案根據您的需求不斷發展,我們希望 分享我們的 2024 年最新消息

此藍圖說明目前的計畫,以及未來 Bazel 開發作業,讓您能掌握目前的優先順序和後續作業 Google Cloud 的 Resource Manager 工具 經特別設計,能以程式輔助方式協助您管理專案

Bazel 8.0 版本

我們計劃提供 Bazel 8.0 長期支援 (LTS)。 我們計劃實作下列功能。

Bzlmod:外部依附元件管理系統

Bzlmod 會自動解析遞移性 可讓專案調度資源,同時保持快速 節省資源

透過 Bazel 8,我們將預設停用 WORKSPACE 支援 (仍會將 來使用 --enable_workspace 來啟用該功能);支援 Bazel 9 WORKSPACE 支援移除。從 Bazel 7.1 開始 --noenable_workspace即可選擇採用新行為。

Bazel 8.0 包含許多強化項目 Bazel 的外部依附元件管理 功能,包括:

  • 新標記 --enable_workspace 可以設為 false 停用 WORKSPACE 功能。
  • 新增目錄監控 API (請參閱 #21435,可在 Bazel 中傳輸 7.1)。
  • 改善產生標準存放區名稱的配置,以更有效的方式 依附元件版本更新中的動作可快取性。 (#21316,會在 Bazel 中傳輸) 7.1 版)。
  • 改善的共用存放區快取功能 (請參閱 #12227)。
  • 支援供應商與離線模式:允許使用者利用 預先下載的依附元件 (請參閱 #19563)。
  • 減少鎖定檔案中的合併衝突 (#20396)。
  • 分段 MODULE.bazel (#17880)。
  • 允許覆寫模組擴充功能產生的存放區 (#19301)。
  • 更完善的說明文件 (例如 #18030#15821) 及遷移 指南和遷移工具

改善遠端執行效能

  • 新增非同步執行作業的支援功能,可藉由 已透過旗標 --jobs 增加平行處理量。
  • 透過新的精簡執行記錄檔,更輕鬆地偵錯快取失敗的情況。 將大小縮減 100 倍,執行階段負擔大幅增加 (請參閱 #18643)。
  • 實作磁碟快取的垃圾收集機制 (請參閱 #5139)。
  • 實作遠端輸出服務,允許延遲下載任意版本 輸出內容 (請參閱 #20933)。

Android、C++、Java、Python 和 Proto 規則遷移

完成 Android、C++、Java 和 Python 規則集的遷移作業, 並將存放區與 Bazel 版本分離。這樣一來 Bazel 使用者和規則作者

  • 可在 Bazel 之外獨立更新規則。
  • 視需要更新及自訂規則。

規則集的新位置將是 bazelbuild/rules_androidrules_ccrules_javarules_pythongoogle/protobufrules_proto 是 在即將淘汰的平台中

Bazel 8 會提供暫存遷移標記,該標記會自動使用 其存放區先前屬於二進位檔的部分規則集。所有語言 這些規則集的使用者最終應取決於 進行載入和載入作業 Bazel。

Bazel 8 也會改善現有的擴充規則和子規則 API,以及 並標示為非實驗版。

Starlark 改善項目

  • 符號巨集是撰寫巨集的全新方式, BUILD 的使用者、巨集作者和工具。與舊版巨集 Bazel 對於符號式巨集的瞭解有限,可協助使用者避免常見的錯誤 陷阱及執行最佳做法
  • 套件最終化器是提議用於新增一流支援 自訂套件驗證邏輯目的在於協助我們淘汰 native.existing_rules()

可設定性

  • 輸出路徑對應持續穩定:承諾擁有更好的遠端快取 不僅如此,還能為使用轉場功能的規則設計人員改善效能和建構速度。
  • 自動設定適用於指定 --platforms 的建構旗標。
  • 定義專案支援的旗標組合並自動建立目標 而且不必設定 bazelrc
  • 請勿在每次建構標記變更時重新執行建構分析。

專案天空對焦 - 盡量減少保留的資料結構

Bazel 會在 RAM 中保留許多狀態,以便快速漸進式建構。不過 開發人員經常變更一小部分來源檔案 (例如幾乎從未有過 其中一個外部依附元件)。使用天空對焦時 捨棄不必要的漸進狀態並減少 Bazel 記憶體的實驗功能 同時仍提供相同快速的漸進式建構體驗。

初始範圍只是為了改善保留的堆積指標。尖峰堆積 是可能的,但不包含在初始範圍。

其他

  • 行動裝置安裝 v3 這個較簡單的漸進式做法,且易於維護 能夠部署 Android 應用程式
  • 存放區快取和 Bazel install_base 的垃圾收集,
  • 降低沙箱的負擔。

Bazel-JetBrains* IntelliJ IDEA 支援

漸進式 IntelliJ 外掛程式更新,以支援最新的 JetBrains 外掛程式 版本。

這份藍圖快照目標不可視為保證。 相關優先順序可能因開發人員和客戶而異 意見回饋或新市場商機。

如要取得新功能 (包括本藍圖更新) 的通知,請加入 Google 群組社群。

*Copyright © 2022 JetBrains s.r.o.JetBrains 和 IntelliJ 是 JetBrains s.r.o 的註冊商標