回溯相容性

回報問題 查看來源 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

本頁提供有關處理回溯相容性的資訊,包括如何從一個版本遷移至另一個版本,以及如何傳達不相容的變更。

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 Protocol
  • 旗標和語意

不相容的變更和遷移配方

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

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

建議將不相容的標記和相關變更回溯移植到最新的 LTS 版本,但預設不啟用標記。這樣一來,使用者就能在下一個 LTS 版本發布前,因應不相容的變更進行遷移。

傳達不相容的變更

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

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

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

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