Bazel 發展藍圖

回報問題 查看來源 Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

總覽

為因應您的需求,Bazel 專案會不斷演進,開發功能及提供支援,同時維護、重構及提升核心產品的效能。

我們希望透過這些異動,讓開放原始碼社群掌握最新資訊並參與其中。這份藍圖說明目前的計畫,以及對 Bazel 開發未來發展的預測,讓您瞭解目前的優先事項和進行中的專案。

這份藍圖快照僅供參考,不應視為保證。優先順序可能會因應開發人員和顧客的意見回饋,或新的市場商機而有所變動。

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

第 4 季 - 發布 Bazel 6.0

第 4 季將推出 Bazel 6.0,這是新的長期支援 (LTS) 版本。Bazel 6.0 預計會納入多項強大功能,以及社群要求的功能,方便您管理依附元件、使用 Android 開發等。

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

Bzlmod 會自動解析遞移依附元件,讓專案在擴大規模的同時,仍能維持速度和資源效率。Bzlmod 已在 Bazel 5.0 中以實驗功能的形式推出,正式發布後將可解決菱形依附元件問題

  • Bzlmod 從「實驗功能」變成「正式發布」
  • 支援 rules\_jvm\_external,讓使用者下載 Java 專案的 Maven 依附元件
  • Bzlmod 遷移指南提供工具、指令碼和文件,協助團隊採用 Bzlmod
  • Bazel 中央存放區會代管核心 Bazel BUILD 規則 (rules\_jvm\_externalrules\_gorules\_pythonrules\_nodejs),以及 Bzlmod 必要的金鑰依附元件

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

使用 Bazel 建構 Android 應用程式

Bazel 6.0 將包含改良的工具,以及合併的社群功能貢獻。預期會有更多人採用 Bazel,程式碼集也會隨之擴大,因此 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 下載必要構件,可避免建構作業因網路頻寬而受到限制,進而提升效能。為遠端建構新增的功能包括:

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

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