Bazel 發展藍圖

總覽

祝 Bazel 社群新年快樂!我們預計在 2023 年初公布詳細的發展藍圖。去年,我們發布了 2022 年的發展藍圖,其中包含 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 的註冊商標