總覽
祝 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 群組社群。
*著作權 © 2022 JetBrains s.r.o. JetBrains 和 IntelliJ 是 JetBrains s.r.o 的註冊商標