回溯相容性

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

Bazel 持續發展。做為 LTS 主要版本一部分發布的次要版本完全回溯相容。主要 LTS 版本之間的變更可能包含不相容的變更,需要進行一些遷移作業。如要進一步瞭解 Bazel 的發布頻率,請參閱「Announcing Bazel Long Term Support (LTS) releases」。

摘要

  1. 建議使用 --incompatible_* 標記重大變更。
  2. 每個 --incompatible_* 旗標都會有 GitHub 問題說明行為變更,並提供遷移方式。
  3. --experimental_* 標記保護的 API 和行為隨時可能變更。
  4. 請勿使用 --experimental_*--incompatible_* 旗標執行正式版建構作業。

如何遵守本政策

什麼是穩定功能?

一般而言,沒有 --experimental_... 標記的 API 或行為,在 Bazel 中都視為穩定且支援的功能。

包括:

  • Starlark 語言和 API
  • Bazel 隨附的規則
  • Bazel API,例如 Remote Execution API 或 Build Event Protocol
  • 旗標和語意

不相容的變更和遷移配方

對於新版本中的每個不相容變更,Bazel 團隊都會提供遷移配方,協助您更新程式碼 (BUILD.bzl 檔案,以及指令碼中的任何 Bazel 用法、Bazel API 用法等)。

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

傳達不相容的變更

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

對於每項不相容的變更,問題會指定下列項目:

  • 控制不相容變更的旗標名稱
  • 變更功能說明
  • 遷移食譜

當不相容的變更準備好透過 Bazel at HEAD 進行遷移時 (因此也適用於下一個 Bazel 滾動發布版本),應標示 migration-ready 標籤。當 HEAD 翻轉不相容的標記時,不相容的變更問題就會關閉。