Bazel 發展藍圖

總覽

Bazel 專案會根據您的需求不斷演進:開發各項功能及提供支援,同時在維護、重構及改善核心產品效能的同時提升效能。

為因應這些變動,我們致力讓開放原始碼社群瞭解最新情況,並加入更多內容。這份藍圖說明 Bazel 開發作業的未來計畫和預測結果,您就能掌握目前的優先要務和進行中的專案。

此藍圖快照的目標,不應視為保證。因此優先順序可能會隨開發人員和客戶意見,或新的市場商機而改變。

如要收到新功能 (包括藍圖更新) 的通知,請加入 Google 網路論壇社群。

問題 4 - Bazel 6.0 版本

第 4 季推出 Bazel 6.0 — 新的長期支援 (LTS) 版本。Bazel 6.0 計劃納入功能強大且由社群呼應的全新功能,以便管理依附元件、透過 Android 進行開發等。

Bzlmod:外部依附元件管理系統

Bzlmod 會自動解析遞移依附元件,讓專案可以調度資源,同時維持快速且高效的資源。在 Bazel 5.0 中推出實驗性功能,Bzlmod 將全面開放使用,並針對鑽石依附元件問題提供解決方案。

  • Bzlmod 從「實驗性」轉為「正式發布」
  • 加入對 rules\_jvm\_external 的支援,允許使用者下載 Java 專案的 Maven 依附元件
  • Bzlmod 遷移指南》為有意採用 Bzlmod 的團隊提供工具、指令碼和說明文件
  • Bazel 中央存放區會託管 Bzlmod 所需的核心 Bazel BUILD 規則 (rules\_jvm\_externalrules\_gorules\_pythonrules\_nodejs) 和金鑰依附元件

如要進一步瞭解這項開發成果,請參閱 Bzlmod 社群最新消息或參閱原始設計文件

透過 Bazel 建構 Android 應用程式

Bazel 6.0 納入了改良的工具,以及內建社群功能貢獻。期望進一步採用及持續成長的程式碼集,Bazel 團隊會優先整合 Android 建構工具和 Bazel Android 規則。

  • 將 D8 更新至 3.3.28 版,並將其設為預設 dexer
  • 合併至 5.X 版本新增的主要社群功能貢獻內容,包括:
    • 使用 D8 的永久工作站
    • 使用 D8 脫糖
    • 在 Android 資訊清單中合併「uses-permissions」標記
    • Android 資源處理中的多重工作站

選用工具鍊

我們的開發人員滿意度問卷調查顯示,規則作者希望能協助進一步開發工具鍊。如果其他平台有備用實作項目,Bazel 6.0 可讓作者使用選用性的高效能工具鍊編寫規則。

Bazel-JetBrains* IntelliJ IDEA 支援

JetBrains 與 Bazel 合作,共同維護 Bazel IntelliJ IDEA 外掛程式,以便增加社群管理,並增加功能要求和開發容量。

  • IntelliJ 外掛程式 2022.2 版支援最新的 JetBrains 外掛程式版本
  • 提高與遠端開發的相容性
  • 進一步推動社群導向的開發中功能 (例如 Scala 支援)

如要進一步瞭解這項開發作業,請參閱 Bazel-JetBrains 網誌公告

未來發展

未來 Bazel 團隊已開始開發,或預計在 2023 年及未來會優先處理下列功能。

改善 Bazel 的 Android 建構規則

持續投入 Android 應用程式開發體驗,透過建構、測試和部署,專注在工作流程上。

  • R8 遷移至及支援
  • 更新 Android 規則,包括翻譯為 Starlark 語言
  • 支援應用程式套件
  • 支援近期的 NDK 版本
  • 測試程式碼涵蓋率

OSS 授權法規遵循工具

開發人員申請了完善的授權法規遵循檢查工具,以確保隨附套件的可用性和安全性。這項專案提供一組規則和工具,有助於識別及降低與特定軟體元件相關的法規遵循和授權風險。目標功能包括:

  • 可稽核特定目標使用的套件
  • 能夠建立機構專屬的授權法規遵循檢查。

查看 GitHub 上進行中的 rules_license 實作

Bzlmod:外部依附元件管理系統

發布後,Bzlmod 提升遞移依附元件的擴充性和可靠性。Bzlmod 的目標是在未來三年內取代 WORKSPACE 做為預設的 Bazel 工作區依附元件管理子系統。指定功能包括:

  • 支援密封建物
  • 供應商/離線模式將版本化參照規則固定至本機副本
  • Bazel Central Registry 會定期投入社群貢獻,並採用重要的 Bazel 規則和專案
  • Bzlmod 成為建構 Bazel 專案的預設工具

已簽署的建構作業

Bazel 會針對使用 Google 金鑰簽署的 Windows 和 Mac 提供受信任的二進位檔。這項功能可讓多平台開發人員/開發運作識別 Bazel 二進位檔的來源,避免其系統受到未經驗證的惡意二進位檔。

標準化平台 API

新的 Platforms API 會將多語言和多平台版本的架構設定標準化。透過這項功能,開發人員可以減少大型建構作業的開發時間錯誤和複雜性。

建立分析指標

Bazel 遙測將提供分析階段指標,協助開發人員最佳化自己的建構效能。

使用「Builds without the Bytes」進行遠端執行

不含位元組的建構只會允許 Bazel 下載必要的構件,藉此防止建構作業遭受網路頻寬瓶頸,將效能最佳化。遠端版本新增的功能包括:

  • 使用非同步下載,讓本機和遠端動作在下載相依輸出後立即啟動
  • 新增 Symlinks 支援
  • 建構完成後,從遠端動作擷取中繼輸出內容

*Copyright © 2022 JetBrains s.r.o。JetBrains 和 IntelliJ 是 JetBrains s.r.o 的註冊商標。