このページでは、下位互換性に対処する方法について説明します。 リリース間の移行や、コミュニケーション方法についても おすすめします。
Bazel は進化を続けています。LTS メジャーの一部としてリリースされたマイナー バージョン バージョンには完全な下位互換性があります。新しいメジャー LTS いくつかの移行作業を必要とする互換性のない変更がリリースに含まれる場合があります。 Bazel のリリースモデルについて詳しくは、リリース モデルのページです。
概要
- 互換性を破る変更には、
--incompatible_*
フラグを使用することをおすすめします。 --incompatible_*
フラグごとに、GitHub の問題で 移行レシピを提供することを目的としています。- 互換性のないフラグは、最新の LTS にバックポートすることが推奨されます。 リリースされています。
--experimental_*
フラグで保護される API と動作は、随時変更される可能性があります。 あります。--experimental_*
または--incompatible_*
を使用して製品版ビルドを実行しない 使用できます。
このポリシーに準拠する方法
安定版の機能とは何ですか?
一般に、--experimental_...
フラグのない API または動作が考慮されます。
Bazel でサポートされている機能が含まれています。
以下が該当します。
- Starlark の言語と API
- Bazel にバンドルされたルール
- Remote Execution API や Build Event Protocol などの Bazel API
- フラグとそのセマンティクス
互換性のない変更と移行方法
新しいリリースで互換性のない変更が行われるたびに、Bazel チームは以下を提供することを目的としています。
移行レシピ。コード(BUILD
ファイルと .bzl
ファイル、
スクリプトでの Bazel の使用状況、Bazel API の使用状況など)が含まれます。
互換性のない変更には、関連する --incompatible_*
フラグと
対応する GitHub の問題です
互換性のないフラグと関連する変更は、 最新の LTS リリースを使用する必要があります。これによりユーザーは 次の LTS リリースまでに、互換性のない変更に対応するために できます。
互換性のない変更の伝達
互換性のない変更に関する主な情報源は GitHub の問題 「互換性のない変更」とマークされる label に移動できます。
互換性のない変更が行われるたびに、問題により次のことが明らかになります。
- 互換性のない変更を制御するフラグの名前
- 変更された機能の説明
- 移行レシピ
互換性のない変更が Bazel で移行できる状態になったとき(HEAD の場合)
(つまり、次の Bazel ローリング リリースでも)このアイコンに
migration-ready
ラベル。互換性のない変更の問題は、
互換性のないフラグが HEAD で反転されます。