Bazel ロードマップ

問題を報告する ソースを表示 ナイトリー · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

概要

Bazel プロジェクトはお客様のニーズに応じて進化し続けています。2024 年の最新情報をお知らせします。

このロードマップでは、現在の取り組みと Bazel 開発の将来の予測について説明します。これにより、現在の優先事項と進行中のプロジェクトを把握できます。

Bazel 8.0 リリース

Bazel 8.0 の長期サポート(LTS)は 2024 年後半に提供される予定です。実装予定の機能は次のとおりです。

Bzlmod: 外部依存関係管理システム

Bzlmod は、伝播依存関係を自動的に解決し、高速でリソース効率の高いままプロジェクトをスケーリングできるようにします。

Bazel 8 では、WORKSPACE のサポートがデフォルトで無効になります(--enable_workspace を使用して有効にすることは引き続き可能です)。Bazel 9 では、WORKSPACE のサポートが削除されます。Bazel 7.1 以降では、--noenable_workspace を設定して新しい動作を有効にできます。

Bazel 8.0 では、Bazel の外部依存関係管理機能が次のように強化されます。

  • 新しいフラグ --enable_workspacefalse に設定すると、WORKSPACE 機能を完全に無効にできます。
  • 新しいディレクトリ監視 API(Bazel 7.1 で出荷された #21435 をご覧ください)。
  • 依存関係のバージョン更新全体でアクションのキャッシュ保存性を高めるために、正規リポジトリ名を生成するスキームを改善しました。(#21316、Bazel 7.1 で出荷)
  • 共有リポジトリ キャッシュを改善しました(#12227 を参照)。
  • ベンダー モードとオフライン モードのサポート - ユーザーは、事前にダウンロードされた依存関係を使用してビルドを実行できます(#19563 を参照)。
  • ロックファイルでのマージ競合を軽減しました(#20396)。
  • セグメント化された MODULE.bazel(#17880
  • モジュール拡張機能によって生成されたリポジトリのオーバーライドを許可(#19301
  • ドキュメント(#18030#15821 など)、移行ガイド、移行ツールを改善しました。

リモート実行の改善

  • 非同期実行のサポートを追加し、フラグ --jobs で並列処理を増やしてリモート実行を高速化しました。
  • 新しいコンパクトな実行ログにより、キャッシュミスのデバッグが容易になり、サイズを 100 倍、ランタイム オーバーヘッドを大幅に削減しました(#18643 を参照)。
  • ディスク キャッシュのガベージ コレクションを実装しました(#5139 を参照)。
  • 任意のビルド出力の遅延ダウンロードを可能にするために、リモート出力サービスを実装しました(#20933 を参照)。

Android、C++、Java、Python、Proto のルールの移行

Android、C++、Java、Python のルールセットを専用リポジトリに完全に移行し、Bazel リリースから分離しました。これにより、Bazel ユーザーとルール作成者は、

  • Bazel から独立してルールを更新する。
  • 必要に応じてルールを更新、カスタマイズします。

ルールセットの新しい場所は、bazelbuild/rules_androidrules_ccrules_javarules_pythongoogle/protobuf です。rules_proto は非推奨になります。

Bazel 8 では、以前はリポジトリのバイナリの一部だったルールセットを自動的に使用する一時的な移行フラグが提供されます。これらのルールセットのすべてのユーザーは、最終的にはリポジトリに依存し、Bazel の一部ではなかった他のルールセットと同様にリポジトリを読み込むことが期待されます。

Bazel 8 では、既存の拡張ルールとサブルール API も改善され、試験運用版ではなくなる予定です。

Starlark の改善

  • シンボリック マクロは、BUILD ユーザー、マクロ作成者、ツールに優しい新しいマクロ作成方法です。Bazel でインサイトが限定的な従来のマクロと比較して、記号マクロはユーザーが一般的な落とし穴を回避し、ベスト プラクティスを適用するのに役立ちます。
  • パッケージ ファイナライザは、カスタム パッケージ検証ロジックのファーストクラス サポートを追加するための提案された機能です。native.existing_rules() の非推奨化を支援することを目的としています。

構成の柔軟性

  • 出力パスのマッピングが安定し、遷移を使用するルール デザイナーは、リモート キャッシュのパフォーマンスとビルド速度の向上を期待できます。
  • 特定の --platforms に適したビルドフラグを自動的に設定します。
  • プロジェクトでサポートされているフラグの組み合わせを定義し、bazelrc を設定することなく、デフォルトのフラグを使用してターゲットを自動的にビルドします。
  • ビルドフラグが変更されるたびにビルド分析をやり直さないでください。

Project Skyfocus - 保持されるデータ構造を最小限に抑える

Bazel は、高速な増分ビルドのために多くの状態を RAM に保持します。ただし、開発者は多くの場合、ソースファイルの小さなサブセットを変更します(外部依存関係の 1 つを変更することはほとんどありません)。Skyfocus により、Bazel は、同じ高速な増分ビルド エクスペリエンスを提供しながら、不要な増分状態を破棄し、Bazel のメモリ フットプリントを削減する実験的な方法を提供します。

最初のスコープでは、保持ヒープ指標のみを改善することを目的としています。ピーク ヒープ削減は可能ですが、最初のスコープには含まれません。

その他

  • モバイル インストール v3: Android アプリを段階的にデプロイするための、よりシンプルでメンテナンスしやすいアプローチ。
  • リポジトリ キャッシュと Bazel の install_base のガベージ コレクション。
  • サンドボックス化のオーバーヘッドを削減。

Bazel-JetBrains* IntelliJ IDEA のサポート

最新の JetBrains プラグイン リリースをサポートする IntelliJ プラグインの増分アップデート。

このロードマップはターゲットをスナップショットしたものであり、保証するものではありません。優先順位は、デベロッパーやお客様からのフィードバックや、新しい市場機会に応じて変更される場合があります。

このロードマップの更新など、新機能に関するお知らせを受け取るには、Google グループ コミュニティに参加してください。

*Copyright © 2022 JetBrains s.r.o. JetBrains と IntelliJ は JetBrains s.r.o. の登録商標です。