Bazel ロードマップ

問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

概要

皆様のニーズに応じて Bazel プロジェクトが進化し続ける中、Google は、 2024 年の最新情報を共有します。

このロードマップでは、Google Cloud の現行の取り組みと、 Bazel 開発により、現在の優先事項と進行中の取り組みを可視化 できます。

Bazel 8.0 リリース

Bazel 8.0 への長期サポートの導入を予定しています (LTS)をご覧ください。 実装が予定されている機能は以下のとおりです。

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

Bzlmod は推移的表現を自動的に解決します。 スピードとアジリティを維持しながらプロジェクトをスケールできます。 リソース効率が向上します。

Bazel 8 では、デフォルトで WORKSPACE のサポートが無効化されます( --enable_workspace を使用して有効化できます)。Bazel 9 搭載 WORKSPACE 削除されます。Bazel 7.1 以降では、次のように設定できます。 --noenable_workspace: 新しい動作を有効にします。

Bazel 8.0 では、いくつかの機能強化が加えられ、 Bazel の外部依存関係の管理 次の機能が含まれます。

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

リモート実行の改善

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

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

Android、C++、Java、Python のルールセットを Bazel リリースから切り離すことができます。この取り組みにより Bazel ユーザーとルール作成者は、

  • ルールを Bazel とは独立して更新します。
  • 必要に応じてルールの更新とカスタマイズを行います。

ルールセットの新しい場所は bazelbuild/rules_android です。 rules_ccrules_javarules_pythongoogle/protobufrules_proto は サポート終了となります

Bazel 8 では、一時的な移行フラグが用意されており、 以前はリポジトリのバイナリに含まれていたルールセットを 削除していましたすべて ルールセットのユーザーは、最終的にルールセットに ルールセットに含まれていなかった他のルールセットと同様に、 Bazel。

Bazel 8 では、既存の拡張ルールとサブルール API も改善されており、 非試験運用版としてマークします

Starlark の改善

  • シンボリック マクロは、マクロを記述する新しい方法です。 BUILD ユーザー、マクロ作成者、ツール。従来のマクロと Bazel で得られる分析情報は限られています。シンボリック マクロを使用すると、 ベストプラクティスを適用するのに役立ちます
  • パッケージ ファイナライザは、パッケージ ファイナライザの優れたサポートを カスタムパッケージ検証ロジックもサポートします。これらは Google の native.existing_rules()

構成の柔軟性

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

Project Skyfocus - 保持データ構造の最小化

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

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

その他

  • モバイル インストール v3 は、より簡単で優れたメンテナンス アプローチで、 Android アプリケーションをデプロイします。
  • リポジトリ キャッシュと Bazel の install_base のガベージ コレクション。
  • サンドボックスのオーバーヘッドを削減。

Bazel-JetBrains* IntelliJ IDEA サポート

最新の JetBrains プラグインをサポートするための増分 IntelliJ プラグイン アップデート なります。

このロードマップのスナップショットは、あくまで対象であり、保証するものではありません。 優先度はデベロッパーやお客様の状況に応じて変わることがある

このロードマップのアップデートを含め、新機能に関する通知を受け取るには、 Google グループ コミュニティ。

*著作権 © 2022 JetBrains s.r.o.JetBrains および IntelliJ は JetBrains s.r.o の登録商標です。