回溯相容性

回報問題 查看原始碼 夜間 7.2 7.1 7.0 6.5 6.4

本頁說明如何處理回溯相容性問題。 包括從一個版本遷移至另一個版本,以及如何 不相容的變更。

Bazel 正不斷進化。發布的子版本 LTS 主要版本完全回溯相容。 主要 LTS 版本的變更可能包含不相容的變更, 一些遷移工作進一步瞭解 Bazel 發布頻率 可以,請參閱 宣布 Bazel 長期支援 (LTS) 版本

摘要

  1. 建議您使用 --incompatible_* 旗標進行破壞性變更。
  2. 針對每個 --incompatible_* 標記,有一個 GitHub 問題會說明 變更行為,並致力提供遷移方案。
  3. --experimental_* 旗標保護的 API 和行為隨時可能變更。
  4. 切勿執行具有 --experimental_*--incompatible_* 旗標的實際工作環境版本。

如何遵守這項政策

什麼是穩定功能?

一般來說,系統會將不含 --experimental_... 旗標的 API 或行為納入考量 Bazel 支援的穩定功能

包括:

  • Starlark 語言與 API
  • Bazel 附帶的規則
  • Bazel API,例如 Remote Execution API 或 Build Event 通訊協定
  • 旗標及其語意

不相容的變更和遷移方案

Bazel 團隊希望藉由提供 遷移方案:協助您更新程式碼 (BUILD.bzl 檔案以及指令碼中的任何 Bazel 用量), 例如 Bazel API 的使用情形等等

不相容的變更應具備關聯的 --incompatible_* 標記和 以及對應的 GitHub 問題。

傳送不相容的變更

不相容變更資訊的主要來源為 GitHub 問題 帶有「不相容的變更」標籤

每個不相容的變更都會指出以下項目:

  • 控制不相容變更的旗標名稱
  • 功能異動說明
  • 遷移方案

當 Bazel 在 HEAD 元素 (也包含下一個 Bazel 滾動版本) 可遷移不相容的變更時,則應加上 migration-ready 標籤。如果在 HEAD 上翻轉了不相容的標記,就會關閉不相容的變更問題。