概要
Bazel コミュニティの皆様、新年あけましておめでとうございます。新年には、2023 年のロードマップの詳細をお知らせする予定です。昨年、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 では、開発を Bazel 自体から切り離し、コミュニティの貢献をより有効にするため、Android ルールが Starlark に移行されます。また、これらのルールをコアの Bazel バイナリから独立させたため、より頻繁にリリースできるようになりました。
- Android ルールの Starlark への移行
- R8 のサポート: Android アプリのデベロッパーが R8 の更新された最適化を使用できるようになります。
- モバイル インストール: Android アプリのデベロッパーは、モバイル インストールの更新バージョンを使用して、Android アプリの変更を迅速に開発、テスト、デプロイできます。
ソフトウェア部品構成表(SBOM)のデータ生成と OSS ライセンスのコンプライアンス ツール
Bazel を使用すると、デベロッパーは SBOM の生成に役立つデータを生成できます。このデータはテキスト形式または JSON 形式で出力され、SPDX または CycloneDX の仕様に合わせて簡単にフォーマットできます。また、このプロセスでは、Bazel モジュールが利用可能になるライセンスを宣言するルールと、それらの宣言を中心にプロセスを構築するツールも提供されます。GitHub で進行中の rules_license 実装をご覧ください。
署名付きビルド
Bazel は、Google の鍵で署名された Windows と Mac 用の信頼できるバイナリを提供します。この機能により、マルチプラットフォームのデベロッパーや DevOps は 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 の登録商標です。