總覽
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\_external
、rules\_go
、rules\_python
、rules\_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 的註冊商標。