總覽
隨著 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_android
。
rules_cc
、rules_java
、rules_python
和google/protobuf
。rules_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 的註冊商標