Bazel 發展藍圖

回報問題 查看來源

總覽

歡慶 Bazel 社群新年。隨著新的一年開始,我們預計在 2023 年規劃藍圖中加入更多細節。去年,我們發布了 2022 年 Google Bazel 6.0 計畫的藍圖,希望發展藍圖能滿足您的建構工具需求。隨著 Bazel 專案根據您的需求不斷發展,我們想分享我們 2023 年的更新內容。

我們希望透過這些異動,讓開放原始碼社群能掌握最新資訊並受到支援。這份藍圖說明 Bazel 開發作業目前的計畫和預測結果,讓您瞭解目前的優先目標和進行中的專案。

Bazel 7.0 版本

我們計劃在 2023 年底為您提供 Bazel 7.0 長期支援 (LTS),我們的目標是透過 Bazel 7.0 提供許多正在進行的項目,並持續改進使用者一直要求的功能。

改善跨平台快取共用功能

讓不同的本機 (Mac) 和遠端 (Linux) 建構平台共用快取成果,而這些平台主要適用於 Java/Kotlin 和 Android 開發作業,進而改善效能及有效使用快取。

使用 Bazel 建構 Android 應用程式

資訊清單與資源合併工具更新至 30.1.3 版,讓 Android 應用程式開發人員可使用新版資訊清單合併功能,例如 tools:node="merge"。

改善遠端執行效能

Bazel 7.0 支援非同步執行,可運用標記 --jobs 增加平行處理,加快遠端執行的速度。

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

Bzlmod 會自動解析遞移依附元件,讓專案擴充規模,同時維持快速且資源效率。Bazel 7.0 包含許多 Bazel 外部依附元件管理功能的強化項目,包括:

  • 根據預設,在 Bazel 中管理外部依附元件時,系統會開啟 Bzlmod
  • 支援鎖定檔案 — 使用 Bzlmod 啟用密封建構
  • 支援供應商/離線模式:允許使用者執行含有預先下載的依附元件的建構作業
  • 完整支援存放區快取功能 (快取不僅下載構件,以及最終存放區內容)
  • Bazel Central Registry 包括定期社群貢獻及採用關鍵 Bazel 規則和專案

建立分析指標

Bazel 7.0 提供分析階段時間指標,可讓開發人員最佳化自己的建構效能。

預設不啟用位元組的建構作業

沒有位元組的建構可最佳化效能,避免下載中繼構件,並防止建構作業在網路頻寬上出現瓶頸。新增的功能包括:

運用 Skymeld 提升工作效率

Bazel 7.0 導入了 Skymeld,這是一種評估模式,可減少多目標建構作業的實際運作時間。Skymeld 可以消除分析與執行階段之間的障礙,以加快建構速度,尤其是對於具有多個頂層目標的建構作業。不過,如果是單一目標版本,就不會出現顯著差異。

Bazel 生態系統與工具

使用 Bazel 建構 Android 應用程式

  • 將 Android 原生規則遷移至 Starlark:對於 Bazel 7.0,Android 規則會遷移至 Starlark 來中斷開發作業,使其與 Bazel 本身分離,進而更完善地啟用社群貢獻功能。此外,我們推出這些規則與核心 Bazel 二進位檔無關,因此提高發布頻率。
  • 將 Android 規則遷移至 Starlark
  • R8 支援:允許 Android 應用程式開發人員使用新版 R8 最佳化功能。
  • 行動安裝:可讓 Android 應用程式開發人員透過新版行動應用程式安裝快速開發、測試與部署 Android 應用程式變更。

軟體物料清單 (SBOM) 和 OSS 授權法規遵循工具

開發人員可透過 Bazel 產生資料,以便產生 SBOM。這項資料會以文字或 JSON 格式輸出,並且可輕鬆格式化以符合 SPDXCycloneDX 規格。此外,此程序提供了宣告授權 Bazel 模組的規則,並提供相關工具用於建構這些宣告的相關程序。查看 GitHub 上進行中的 rules_license 實作

已簽署的版本

Bazel 會針對以 Google 金鑰簽署的 Windows 和 Mac 提供信任的二進位檔。這項功能讓多平台開發人員/開發營運能識別 Bazel 二進位檔的來源,保護他們的系統不受可能未經驗證的惡意二進位檔影響。

將 Java、C++ 和 Python 規則遷移至 Starlark

完成 Java、C++ 和 Python 規則集到 Starlark 的遷移。這可讓 Bazel 使用者只建立規則集的分支,而不會使用 Bazel 二進位檔程式碼集,

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

Bazel-JetBrains* IntelliJ IDEA 支援

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

這份藍圖快照目標不可視為保證。隨著開發人員和客戶的意見回饋或新市場商機,相關優先順序可能會有所變動。

如要接收新功能通知 (包括本藍圖的更新通知),請加入 Google 網路論壇社群。

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