Bazel 4.0 以降では、長期サポート(LTS)リリースとローリング リリースの 2 つのリリース トラックがサポートされています。このページでは、Bazel のバージョニング、リリースの種類、Bazel ユーザーとコントリビューターにとっての各リリースのメリットについて説明します。
Bazel でのバージョニングについて
Bazel は、major.minor.patch セマンティック バージョニング スキームを使用します。
- メジャー リリースには、以前のリリースと下位互換性がない機能が含まれています。
- マイナー リリースには下位互換性のある機能が含まれています。
- パッチリリースには、マイナーな変更とバグ修正が含まれます。
バージョン 3.5.1 を例にとると、各タイプの新しいリリースの場合、次のバージョン番号になります。
- メジャー: 4.0
- マイナー: 3.6
- パッチ: 3.5.2
Bazel のリリース サイクル
Bazel は、ローリング リリースを継続的に公開しています。すべてのメジャー バージョンは LTS リリースです。リリース サイクルに従って、1 つの LTS リリースから次の LTS リリースにアップデートするか、各マイナー バージョン リリースでアップデートするかを選択できます。
このイメージは、ローリング リリースと LTS リリースの両方、およびそれぞれに想定されるサポートを示しています。
図 1. ローリング リリースと LTS リリース。
リリース ブランチ
各メジャー バージョンは、リリース時に個別の開発ブランチになります。Bazel リリースに最初に更新することなく、そのブランチの重大なバグに対する修正を受け取ることができます。メジャー バージョン ブランチの追加機能はマイナー リリースになり、ブランチの最も高いバージョンがサポート対象バージョンになります。
各 Bazel リリースは、連携して機能する推奨ルール バージョンのリストとペアになっています。各ブランチには厳格な下位互換性があります。
LTS リリース
LTS リリースとは、メジャー バージョン(4.0 など)のことであり、リリース後 3 年間サポートされます。メジャー バージョンは約 9 か月ごとにリリースされます。
リリース ブランチの開発が進行中のため、マイナー バージョンが作成されます。
プロジェクトをメジャー リリースに固定し、任意のタイミングで新しいバージョンに更新できます。これにより、今後の変更を事前にプレビューして、変更することができます。
ローリング リリース
ローリング リリースは、Bazel のメインブランチから定期的にカットされます。このリリース頻度では、Google 内部の Blaze リリースと同期している、Bazel の次期メジャー バージョンのプレビュー リリースを継続的に提供します。
新しいローリング リリースには、以前のリリースと互換性のない互換性を破る変更が含まれる場合があります。
ローリング リリースは、Bazel CI の Bazel テストスイートと Google の内部テストスイートでテストされています。互換性のないフラグを使用すると新機能への移行の負担を軽減できますが、デフォルトの動作はローリング リリースで変更される可能性があります。(ローリング リリースを使用して次の LTS バージョンをプレビューすることもできます。たとえば、5.0.0-pre.20210604.6
は 2021 年 6 月 4 日時点の候補版に基づいており、5.0 LTS リリースへのマイルストーンを表します)。
最新のローリング リリースは GitHub からダウンロードできます。また、Bazelisk v1.9.0 以降で、特定のバージョン名または最新のローリング リリースを使用する「ローリング」識別子を使用するように設定することもできます。詳しくは、Bazelisk のドキュメントをご覧ください。
バージョンの更新
- Bazel のバージョンの更新について詳しくは、Bazel の更新をご覧ください。
- 新しい Bazel リリースへのアップデートの提供について詳しくは、Bazel への貢献についての説明をご覧ください。