回溯相容性

回報問題 查看原始碼 夜間 7.4 ,直接在 Google Cloud 控制台實際操作。 7.3 7.2 7.1 7.0 6.5

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

Bazel 正不斷進化。LTS 主要版本釋出的次要版本,可完全向後相容。新的主要 LTS 版本可能含有不相容的變更,因此需要經過一些遷移工作。 如要進一步瞭解 Bazel 的版本模型,請參閱「版本模型」頁面。

摘要

  1. 建議您使用 --incompatible_* 旗標進行破壞性變更。
  2. 針對每個 --incompatible_* 旗標,GitHub 問題都會說明 並提供遷移方案
  3. 建議將不相容的旗標回移至最新的 LTS 版本,但不要預設啟用旗標。
  4. --experimental_* 旗標保護的 API 和行為隨時可能變更 讓應用程式從可以最快做出回應的位置 回應使用者要求
  5. 請勿使用 --experimental_*--incompatible_* 旗標執行正式版版本。

如何遵守這項政策

什麼是穩定功能?

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

包括:

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

不相容的變更和遷移方案

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

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

建議將不相容的標記和相關變更回移至最新的 LTS 版本,但不預設啟用標記。這樣一來 以便在下一個 LTS 版本發布前,因應不相容的變更。 廣告。

傳送不相容的變更

如要瞭解不相容的變更,主要資訊來源是標示為 "incompatible-change" 標籤的 GitHub 問題。

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

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

當在 HEAD 要使用 Bazel 遷移不相容的變更時 (因此也適用於下一個 Bazel 滾動式版本),則應以 migration-ready 標籤。不相容的變更問題會在 不相容的標記已於 HEAD 翻轉。