本頁提供有關處理回溯相容性的資訊,包括如何從一個版本遷移至另一個版本,以及如何傳達不相容的變更。
Bazel 持續發展,做為 LTS 主要版本一部分發布的次要版本完全回溯相容。新的主要 LTS 版本可能包含不相容的變更,需要進行遷移。如要進一步瞭解 Bazel 的發布模型,請參閱「發布模型」頁面。
摘要
- 建議使用
--incompatible_*
標記重大變更。 - 每個
--incompatible_*
旗標都會對應一個 GitHub 問題,說明行為的變化,並提供遷移方式。 - 建議將不相容的旗標回溯移植到最新 LTS 版本,但預設不啟用旗標。
- 受
--experimental_*
標記保護的 API 和行為隨時可能變更。 - 請勿使用
--experimental_*
或--incompatible_*
旗標執行正式版建構作業。
如何遵守本政策
什麼是穩定功能?
一般而言,沒有 --experimental_...
標記的 API 或行為,在 Bazel 中都視為穩定且支援的功能。
包括:
- Starlark 語言和 API
- Bazel 隨附的規則
- Bazel API,例如 Remote Execution API 或 Build Event Protocol
- 旗標和語意
不相容的變更和遷移配方
對於新版本中的每個不相容變更,Bazel 團隊都會提供遷移配方,協助您更新程式碼 (BUILD
和 .bzl
檔案,以及指令碼中的任何 Bazel 用法、Bazel API 用法等)。
不相容的變更應有相關聯的 --incompatible_*
標記和對應的 GitHub 問題。
建議將不相容的標記和相關變更回溯移植到最新的 LTS 版本,但預設不啟用標記。這樣一來,使用者就能在下一個 LTS 版本發布前,因應不相容的變更進行遷移。
傳達不相容的變更
如要瞭解不相容的變更,主要資訊來源是標示 「incompatible-change」標籤的 GitHub 問題。
對於每項不相容的變更,問題會指定下列項目:
- 控制不相容變更的旗標名稱
- 變更功能說明
- 遷移食譜
當不相容的變更準備好透過 HEAD 的 Bazel 遷移時 (因此也適用於下一個 Bazel 滾動發布版本),應標示 migration-ready
標籤。當 HEAD 翻轉不相容的標記時,不相容的變更問題就會關閉。