總覽
Bazel 專案會持續因應您的需求而演進,開發功能並提供支援,同時維護、重構及改善核心產品的效能。
我們希望透過這些異動,讓開放原始碼社群持續掌握最新資訊,並參與相關討論。這份路線圖說明瞭目前的 Bazel 開發計畫和未來預測,讓您瞭解目前的優先事項和進行中的專案。
這份路線圖僅為目標快照,不應視為保證。我們會根據開發人員和客戶的意見回饋,或新的市場商機,調整優先順序。
如要接收新功能的通知 (包括這份路線圖的更新),請加入 Google 網路論壇社群。
第 4 季 - Bazel 6.0 版本
第四季推出 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 團隊將優先將 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 並支援 R8
- Android 規則更新,包括翻譯為 Starlark 語言
- 支援應用程式套件
- 支援近期的 NDK 版本
- 測試程式碼涵蓋率
開放原始碼授權法規遵循工具
開發人員要求提供可靠的授權證照相容性檢查工具,以確保所附套件的可用性和安全性。這個專案提供一組規則和工具,協助您找出並減輕特定軟體元件相關的遵循規定和授權風險。目標功能包括:
- 能夠稽核特定目標使用的套件
- 建立機構專屬授權法規遵循檢查功能。
請參閱 GitHub 上正在進行的 rules_license 實作。
Bzlmod:外部依附元件管理系統
在推出時,Bzlmod 會改善傳遞式依附元件的可擴充性和可靠性。在未來三年內,Bzlmod 的目標是取代 WORKSPACE
,成為預設的 Bazel 工作區依附元件管理子系統。指定的功能包括:
- 支援密封式建構
- 供應商/離線模式將版本參照規則釘選至本機副本
- Bazel 中央註冊中心會定期提供社群貢獻,並採用主要的 Bazel 規則和專案
- Bzlmod 成為建構 Bazel 專案的預設工具
已簽署的版本
Bazel 會為 Windows 和 Mac 提供使用 Google 金鑰簽署的安全二進位檔。這項功能可讓多平台開發人員/開發人員作業系統識別 Bazel 二進位檔的來源,並保護系統免受惡意未經驗證的二進位檔侵害。
標準化平台 API
新的 Platforms API 會為多語言、多平台版本的架構設定建立標準。有了這項功能,開發人員就能減少大型版本的開發時間錯誤和複雜度。
建立分析指標
Bazel 遙測會提供分析階段時間指標,讓開發人員改善建構效能。
使用「不含位元組的建構」進行遠端執行
不含 Bytes 的建構作業會只允許 Bazel 下載所需的構件,藉此提升效能,避免建構作業因網路頻寬而出現瓶頸。為遠端建構作業新增的功能包括:
- 使用非同步下載功能,讓本機和遠端動作在下載相關輸出內容後立即啟動
- 新增符號連結支援
- 在建構作業完成後,從遠端動作擷取中繼輸出內容
*Copyright © 2022 JetBrains s.r.o. JetBrains 和 IntelliJ 為 JetBrains s.r.o.的註冊商標。