概要
Bazel コミュニティの皆様、新年あけましておめでとうございます。新年を迎え、2023 年のロードマップの詳細をお知らせする予定です。昨年、Google は Bazel 6.0 の計画とともに 2022 年のロードマップを公開しました。このロードマップが、ビルドツールのニーズを把握するうえで役立つことを願っています。Bazel プロジェクトは、皆様のニーズに合わせて進化を続けています。そこで、2023 年の最新情報をお知らせします。
これらの変更により、オープンソース コミュニティに最新情報を提供し、コミュニティを巻き込んでいきたいと考えています。このロードマップでは、現在の取り組みと Bazel 開発の将来の予測について説明し、現在の優先事項と進行中のプロジェクトを可視化します。
Bazel 7.0 のリリース
2023 年後半に Bazel 7.0 の長期サポート(LTS)を提供する予定です。Bazel 7.0 では、進行中の項目の多くを提供し、ユーザーから要望のあった機能の改善に取り組んでいきます。
クロスプラットフォーム キャッシュ共有の改善
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 では分析フェーズの時間の指標が提供されるため、デベロッパーは独自のビルド パフォーマンスを最適化できます。
デフォルトで Bytes を有効にしないビルド
Bytes を使用しないビルドでは、中間アーティファクトのダウンロードを回避し、ネットワーク帯域幅でのビルドのボトルネックを防ぐことで、パフォーマンスを最適化します。追加された機能は次のとおりです。
リースサービスによるリモート キャッシュの削除をサポート。アーティファクトが早期に削除された場合にエラーが発生しないようにする
シンボリック リンクのサポートにおける機能のギャップに対処する
リモート アクションから中間出力を取得するオプションを提供する
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 の登録商標です。