Bazel 發展藍圖

回報問題 查看來源

總覽

加入 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 格式輸出,且可輕鬆格式化,以符合 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 的註冊商標