總覽
祝 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 格式輸出,且可輕鬆格式化,以符合 SPDX 或 CycloneDX 規格。此外,這個程序還提供規則,可宣告 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 的註冊商標