總覽
為因應您的需求,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\_external
、rules\_go
、rules\_python
、rules\_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.的註冊商標。