Bazel 發展藍圖

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

總覽

為了因應您的需求,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_androidrules_ccrules_javarules_pythongoogle/protobufrules_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. 的註冊商標