概要
Bazel コミュニティの皆様、新年おめでとうございます。2023 年のロードマップの詳細については、年明けに発表する予定です。昨年、Google は Bazel 6.0 の計画を含む 2022 年のロードマップを公開しました。このロードマップが、ビルドツールのニーズに役立つことを願っています。Bazel プロジェクトは、お客様のニーズに応じて進化し続けています。2023 年の最新情報をお知らせします。
これらの変更は、オープンソース コミュニティへの情報提供と参加を促進することを目的としています。このロードマップでは、現在のイニシアチブと Bazel 開発の将来の予測について説明します。これにより、現在の優先事項と進行中のプロジェクトを把握できます。
Bazel 7.0 リリース
Bazel 7.0 の長期サポート(LTS)は 2023 年後半に提供される予定です。Bazel 7.0 では、進行中の多くの項目をリリースし、ユーザーからの要望に応じた機能の改善に引き続き取り組むことを目指しています。
クロス プラットフォーム キャッシュ共有の改善
主に Java/Kotlin と Android の開発向けに、さまざまなビルドのローカル(Mac)とリモート(Linux)のビルド プラットフォーム間でキャッシュに保存されたアーティファクトを共有できるようにします。これにより、パフォーマンスが向上し、キャッシュの使用が効率化されます。
Bazel を使用した Android アプリのビルド
マニフェストとリソースの統合ツールが v30.1.3 に更新され、Android アプリ デベロッパーは tools:node="merge" などの新しいマニフェスト統合機能を使用できるようになりました。
リモート実行の改善
Bazel 7.0 では、非同期実行がサポートされ、フラグ --jobs による並列処理の増加によりリモート実行が高速化されます。
Bzlmod: 外部依存関係管理システム
Bzlmod は、伝播依存関係を自動的に解決するため、高速でリソース効率の高いままプロジェクトをスケーリングできます。Bazel 7.0 では、Bazel の外部依存関係管理機能が次のように強化されています。
- Bazel で外部依存関係管理用に Bzlmod がデフォルトでオンに
- ロックファイルのサポート - Bzlmod による完全なビルドを可能にします
- ベンダー/オフライン モードのサポート - 事前にダウンロードされた依存関係を使用してビルドを実行できます。
- 完全なリポジトリ キャッシュのサポート(アーティファクトのダウンロードだけでなく、最終的なリポジトリ コンテンツもキャッシュに保存)
- Bazel Central Registry には、コミュニティによる定期的な貢献と、主要な Bazel ルールとプロジェクトの採用が含まれています。
分析指標を作成する
Bazel 7.0 では、分析フェーズの時間指標が提供され、デベロッパーは独自のビルド パフォーマンスを最適化できます。
デフォルトでバイトを有効にせずにビルドする
バイトなしビルドは、中間アーティファクトのダウンロードを回避し、ビルドがネットワーク帯域幅でボトルネックになるのを防ぐことで、パフォーマンスを最適化します。追加された機能は次のとおりです。
リース サービスによるリモート キャッシュの強制排除のサポート: アーティファクトが早期に強制排除されたときにエラーが発生しないようにします。
シンボリック リンクのサポートにおける機能のギャップを解決
リモート アクションから中間出力を取得するオプションを提供する
Skymeld で生産性を高める
Bazel 7.0 では、マルチターゲット ビルドの実行時間を短縮する評価モードである Skymeld が導入されています。Skymeld は、分析フェーズと実行フェーズ間の障壁を排除し、ビルド速度を向上させます。特に、複数のトップレベル ターゲットを含むビルドで効果的です。ただし、単一ターゲット ビルドの場合は、大きな違いは見込まれません。
Bazel エコシステムとツール
Bazel を使用した Android アプリのビルド
- Android ネイティブ ルールを Starlark に移行: Bazel 7.0 では、Android ルールを Starlark に移行し、開発を Bazel 自体から分離し、コミュニティの貢献をより有効にします。また、これらのルールをコア Bazel バイナリから独立させ、より頻繁にリリースできるようにしました。
- Android ルールの Starlark への移行
- R8 のサポート: Android アプリのデベロッパーは、R8 の更新された最適化を使用できます。
- モバイル インストール: Android アプリのデベロッパーは、更新されたバージョンの モバイル インストールを使用して、Android アプリの変更を迅速に開発、テスト、デプロイできます。
ソフトウェア部品構成表(SBOM)データ生成ツールと OSS ライセンス コンプライアンス ツール
Bazel を使用すると、デベロッパーは SBOM の生成に役立つデータを生成できます。このデータはテキスト形式または JSON 形式で出力され、SPDX または CycloneDX の仕様に準拠するように簡単にフォーマットできます。また、このプロセスでは、Bazel モジュールが利用可能になるライセンスを宣言するルールと、それらの宣言に基づいてプロセスを構築するツールが用意されています。GitHub で進行中の rules_license の実装をご覧ください。
署名付きビルド
Bazel は、Google 鍵で署名された Windows と Mac 用の信頼できるバイナリを提供します。この機能により、マルチプラットフォームのデベロッパーやデベロッパー オペレーションは、Bazel バイナリのソースを特定し、不正な可能性のある未検証のバイナリからシステムを保護できます。
Java、C++、Python ルールの Starlark への移行
Java、C++、Python のルールセットを Starlark に完全に移行しました。これにより、Bazel ユーザーは Bazel バイナリ コードベースではなくルールセットのみをフォークできるため、ユーザーは次のことができます。
- 必要に応じてルールを更新、カスタマイズする
- Bazel から独立してルールを更新する
Bazel-JetBrains* IntelliJ IDEA のサポート
最新の JetBrains プラグイン リリースをサポートする IntelliJ プラグインの増分アップデート。
このロードマップはターゲットをスナップショットしたものであり、保証するものではありません。優先順位は、デベロッパーやお客様からのフィードバックや、新しい市場機会に応じて変更される場合があります。
このロードマップの更新など、新機能に関するお知らせを受け取るには、Google グループ コミュニティに参加してください。
*Copyright © 2022 JetBrains s.r.o. JetBrains と IntelliJ は JetBrains s.r.o. の登録商標です。