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 下載必要的構件,進而防止建構作業在網路頻寬上出現瓶頸,藉此將效能最佳化。遠端建構作業新增的功能包括:

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

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