Bazel 發展藍圖

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

總覽

祝 Bazel 社群新年快樂!我們預計在新的一年,提供 2023 年路線圖的詳細資訊。我們在去年發布了 2022 年發展藍圖,並說明 Bazel 6.0 的相關計畫。希望這份發展藍圖能協助您瞭解建構工具的需求。為了滿足您的需求,Bazel 專案會持續演進,因此我們想分享 2023 年的更新內容。

我們希望透過這些異動,讓開放原始碼社群持續掌握最新資訊,並參與相關討論。這份路線圖說明瞭目前的 Bazel 開發計畫和未來預測,讓您瞭解目前的優先事項和進行中的專案。

Bazel 7.0 版本

我們預計在 2023 年底推出 Bazel 7.0 長期支援 (LTS) 版本。我們希望透過 Bazel 7.0 提供許多正在開發的項目,並持續改善使用者要求的功能。

改善跨平台快取共用

這項功能可讓快取構件在不同的建構本機 (Mac) 和遠端 (Linux) 建構平台之間共用,主要用於 Java/Kotlin 和 Android 開發,進而提升效能並有效使用快取。

使用 Bazel 建構 Android 應用程式

資訊清單和資源合併工具已更新至 30.1.3 版,讓 Android 應用程式開發人員可以使用較新的資訊清單合併功能,例如 tools:node="merge"。

遠端執行作業改善

Bazel 7.0 支援非同步執行作業,可透過 --jobs 標記增加平行作業,加快遠端執行作業。

Bzlmod:外部依附元件管理系統

Bzlmod 會自動解析傳遞式依附元件,讓專案可擴大規模,同時保持快速且節省資源。Bazel 7.0 包含許多 Bazel 的外部依附元件管理功能的強化功能,包括:

  • 根據預設,Bzlmod 會為 Bazel 中的外部依附元件管理功能啟用
  • 鎖定檔案支援功能:使用 Bzlmod 啟用密封式建構
  • 供應商/離線模式支援功能:允許使用者執行含有預先下載依附元件的建構作業
  • 完整的存放區快取支援功能 (不僅快取下載的構件,也快取最終存放區內容)
  • Bazel 中央登錄表:定期接受社群貢獻內容,並採用主要的 Bazel 規則和專案

建立分析指標

Bazel 7.0 提供分析階段時間指標,讓開發人員改善建構效能。

建構作業不預設啟用 Bytes

不含 Bytes 的版本可避免下載中繼構件,並防止版本在網路頻寬上發生瓶頸,進而提升效能。新增功能包括:

運用 Skymeld 提升工作效率

Bazel 7.0 推出 Skymeld,這是一種評估模式,可縮短多目標建構作業的實際時間。Skymeld 可消除分析和執行階段之間的障礙,提升建構速度,特別是針對包含多個頂層目標的建構作業。不過,對於單一目標版本,則不會有顯著差異。

Bazel 生態系統和工具

使用 Bazel 建構 Android 應用程式

  • 將 Android 原生規則遷移至 Starlark:在 Bazel 7.0 中,Android 規則會遷移至 Starlark,以便將開發工作與 Bazel 分開,並更有效地接受社群貢獻。此外,我們已將這些規則與核心 Bazel 二進位檔分開,以便更頻繁地發布。
  • 將 Android 規則遷移至 Starlark
  • R8 支援:允許 Android 應用程式開發人員使用 R8 更新的最佳化功能。
  • 行動安裝:允許 Android 應用程式開發人員透過更新版 行動安裝,快速開發、測試及部署任何 Android 應用程式變更。

軟體物料清單資料產生工具 (SBOM) 和 OSS 授權法規遵循工具

開發人員可以使用 Bazel 產生資料,協助產生 SBOM。這項資料會以文字或 JSON 格式輸出,而且可以輕鬆轉換格式,符合 SPDXCycloneDX 規格。此外,這個程序還提供規則,用於宣告 Bazel 模組可使用的授權,以及用於圍繞這些宣告建構程序的工具。請參閱 GitHub 上正在進行的 rules_license 實作

已簽署的版本

Bazel 為 Windows 和 Mac 提供使用 Google 金鑰簽署的安全二進位檔。這項功能可讓多平台開發人員/開發人員作業識別 Bazel 二進位檔的來源,並保護系統免於遭到潛在惡意未經驗證的二進位檔攻擊。

將 Java、C++ 和 Python 規則遷移至 Starlark

將 Java、C++ 和 Python 規則集遷移至 Starlark。這項計畫可讓 Bazel 使用者只分支規則集,而非 Bazel 二進位程式碼集,讓使用者可以

  • 視需要更新及自訂規則
  • 不必使用 Bazel 即可更新規則

Bazel-JetBrains* IntelliJ IDEA 支援

增量 IntelliJ 外掛程式更新,支援最新的 JetBrains 外掛程式版本。

這份路線圖僅為目標快照,不應視為保證。我們會根據開發人員和客戶的意見回饋,或新市場商機,調整優先順序。

如要接收新功能的通知 (包括這份藍圖的更新),請加入 Google 網路論壇社群。

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