總覽
為了因應您的需求,Bazel 專案會持續發展,因此我們想分享 2024 年的更新資訊。
這份路線圖說明瞭目前的計畫和 Bazel 開發的未來預測,讓您瞭解目前的優先事項和持續進行的專案。
Bazel 8.0 版本
我們預計在 2024 年底推出 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_android
、rules_cc
、rules_java
、rules_python
和 google/protobuf
。rules_proto
即將淘汰。
Bazel 8 會提供暫時遷移標記,自動使用先前從各自存放區的二進位檔取得的 rulesets。這些規則集的所有使用者都應最終依賴其存放區,並以與其他從未納入 Bazel 的規則集類似的方式載入。
Bazel 8 也會改善現有的擴充規則和子規則 API,並將其標示為非實驗性。
Starlark 改善項目
- 符號化巨集是一種新的巨集編寫方式,可讓
BUILD
使用者、巨集作者和工具更容易使用。與 Bazel 僅能提供有限洞察資料的舊版巨集相比,符號巨集可協助使用者避免常見陷阱並強制執行最佳做法。 - 套件終結器是建議的功能,可為自訂套件驗證邏輯新增第一級支援。這些變更旨在協助我們淘汰
native.existing_rules()
。
可設定性
- 輸出路徑對應功能持續穩定:對於使用轉場效果的規則設計人員,可提供更佳的遠端快取效能和建構速度。
- 自動設定適合特定
--platforms
的建構標記。 - 定義專案支援的標記組合,並使用預設標記自動建構目標,無須設定 bazelrc。
- 請勿在每次變更建構標記時重做建構分析。
Project Skyfocus - minimize retained data structures
Bazel 會在 RAM 中保留大量狀態,以便快速進行漸進式建構作業。不過,開發人員通常只會變更少數幾個原始碼檔案 (例如幾乎不會變更任何外部依附元件)。透過 Skyfocus,Bazel 將提供實驗性方法,以便捨棄不必要的增量狀態,並減少 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. 的註冊商標