總覽
加入 Bazel 社群,祝賀新年快樂。新的一年,我們計畫詳細說明 2023 年藍圖。去年,我們配合 Bazel 6.0 計畫發布了 2022 年藍圖,希望本計畫已充分說明您的建構工具需求。Bazel 專案會依據您的需求持續發展,我們想與您分享 2023 年的最新異動。
為因應這些變動,我們致力讓開放原始碼社群瞭解最新情況,並加入更多內容。這份藍圖說明 Bazel 開發作業的未來計畫和預測結果,您就能掌握目前的優先要務和進行中的專案。
Bazel 7.0 版本
我們預計在 2023 年底推出 Bazel 7.0 長期支援 (LTS)。Bazel 7.0 致力提供許多進行中的項目,並持續改進使用者一直以來要求的功能。
改善跨平台快取共用機制
啟用快取構件,在主要用於 Java/Kotlin 和 Android 開發作業的不同建構本機 (Mac) 和遠端 (Linux) 建構平台之間共用,藉此提升效能和有效率的快取用量。
透過 Bazel 建構 Android 應用程式
更新資訊清單和資源合併工具至 v30.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 的註冊商標