Bazel 發展藍圖

回報問題 查看原始碼 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

總覽

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\_externalrules\_gorules\_pythonrules\_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.的註冊商標。