Bazel 7 リリース

12月 12, 2023

Bazel 7 がリリースされました。Bazel は、高速で正確なビルドを行うための Google のオープンソース ビルドシステムです。クライアント ソフトウェアとサーバー ソフトウェアの両方のビルドがビルトインでサポートされ、Android と iOS の両方のプラットフォーム向けのクライアント アプリのビルドにも対応しています。また、独自のビルドルールを作成できる拡張可能なフレームワークも提供されています。Google 検索、GMail、Google ドキュメントなど、ほぼすべての Google プロダクトは Bazel でビルドされています。

Bazel 7 の新機能

Bazel 7 は、長期サポート(LTS)トラックの最新メジャー リリースで、以下の機能が含まれています。

Bzlmod: Bazel の新しいモジュール式外部依存関係管理システムである Bzlmod がデフォルトで有効になりました(つまり、--enable_bzlmod はデフォルトで true になっています)。プロジェクトに MODULE.bazel ファイルがない場合、空のファイルが作成されます。新しい Bzlmod 管理システムは、古い WORKSPACE メカニズムでも利用できます。Bazel 6 以降に変更された内容と、Bazel 8 と 9 で今後予定されている内容の詳細もご覧ください。

バイトなしビルド(BwoB): リモート実行によるビルドで、バイトなしのビルドがデフォルトで有効になりました(つまり、--remote_download_outputs はデフォルトで toplevel になっています)。Bazel は、リモート サーバーから中間出力をダウンロードするのではなく、要求されたトップレベル ターゲット出力のみをダウンロードしようとします。これにより、リモートビルドのパフォーマンスが大幅に向上します。BwoB の詳細をご覧ください。

分析と実行の統合(Skymeld): プロジェクト Skymeld は、分析フェーズと実行フェーズの境界をなくし、分析の完了直後にターゲットを独立して実行できるようにすることで、マルチターゲット ビルドのパフォーマンスを向上させることを目指しています。

Android および C++ のプラットフォームベースのツールチェーン解決: この変更により、すべてのルールセットでツールチェーン解決 API が効率化され、言語固有のフラグは不要になります。また、Android と C++ のルールで他のルールセットと同じツールチェーン解決ロジックが使われるため、技術的負債がなくなります。Android デベロッパー向けの詳細情報は、Android プラットフォームのお知らせでご確認いただけます。

次のステップ

Bazel 7 の完全版リリースノートを確認し、一緒に Bazel 8 に向けて一緒に取り組んでいきましょう。

質問やフィードバックがある方、作ったものを共有したい方は、ぜひ product@bazel.build までご連絡ください。お待ちしています!