概要
明けましておめでとうございます。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 アプリのビルド
マニフェストと Resource Merger が v30.1.3 にアップデートされ、tools:node="merge" などの新しいマニフェスト マージ機能を Android アプリ デベロッパーが使用できるようになりました。
リモート実行の改善
Bazel 7.0 では非同期実行がサポートされ、フラグ --jobs による並列処理の増加により、リモート実行が高速化されます。
Bzlmod: 外部依存関係管理システム
Bzlmod は、推移的依存関係を自動的に解決するため、プロジェクトを迅速にスケールでき、リソースの効率性を維持できます。Bazel 7.0 では、次のような Bazel の外部依存関係管理機能が強化されています。
- Bazel での外部依存関係の管理で Bzlmod がデフォルトで有効
- ロックファイルのサポート - Bzlmod で密閉型のビルドを実行
- ベンダー/オフライン モードのサポート - ユーザーはダウンロードした依存関係を含むビルドを実行できます。
- リポジトリ キャッシュの完全なサポート(キャッシュは、アーティファクトのダウンロードだけでなく、最終的なリポジトリのコンテンツも可能)
- Bazel セントラル レジストリには、コミュニティの定期的な投稿と、Bazel の主なルールとプロジェクトの導入が含まれています。
分析指標の構築
Bazel 7.0 では、分析フェーズの時間指標が提供されるため、デベロッパーは独自のビルド パフォーマンスを最適化できます。
デフォルトで有効化されたバイト数なしでビルド
Bytes を使用しないビルドでは、中間アーティファクトのダウンロードが回避され、ビルドがネットワーク帯域幅のボトルネックにならないようにすることで、パフォーマンスが最適化されます。追加された機能は以下のとおりです。
リース サービスでのリモート キャッシュのエビクションをサポートし、アーティファクトが早期に排除された場合にユーザーにエラーが発生しないようにします
シンボリック リンクのサポートにおける機能ギャップに対応
リモート アクションから中間出力を取得するオプションを提供する
Skymeld で生産性を向上
Bazel 7.0 では Skymeld が導入されています。Skymeld はマルチターゲット ビルドの実時間が短縮される評価モードです。Skymeld は分析フェーズと実行フェーズ間の障壁を取り除き、特に複数のトップレベル ターゲットを持つビルドにおいて、ビルド速度を向上させました。ただし、単一ターゲット ビルドの場合、大きな違いはありません。
Bazel エコシステムとツール
Bazel を使用した Android アプリのビルド
- Android ネイティブ ルールを Starlark に移行: Bazel 7.0 では、Android ルールを Starlark に移行して開発を Bazel 自体から分離し、コミュニティに貢献しやすくしました。また、これらのルールをコア Bazel バイナリから独立させ、より頻繁にリリースできるようにしました。
- Starlark への Android ルールの移行
- 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 グループ コミュニティにご参加ください。
*著作権 © 2022 JetBrains s.r.o. JetBrains および IntelliJ は、JetBrains s.r.o の登録商標です。