Starlark のロードマップ

最終確認日: 2020-04-21更新履歴

問い合わせ先: laurentlb

目標

Google は、Bazel の拡張性を高めることを目指しています。ユーザーは、独自のルールを簡単に実装し、新しい言語やツールをサポートできるようにする必要があります。Google は、これらのルールの作成と管理のエクスペリエンスを改善したいと考えています。

Google は、次の 2 つの分野に重点を置いています。

  • シンプルでありながら強力な言語と API を提供する。
  • コードの読み取り、書き込み、更新、デバッグ、テストを行うための優れたツールを提供する。

2020 年第 2 四半期

ビルドの健全性とベスト プラクティス:

  • P0. 名前のないマクロの使用を推奨せず、名前が一意の文字列リテラルであることを確認します。この作業は Google のコードベースに重点を置いていますが、一般公開されているツールに影響する可能性があります。
  • P0. Buildozer コマンドの信頼性を高めます(選択と変数に関して)。
  • P1. コメントのために並べ替えないリスト内の重複を Buildifier で削除します。
  • P1. Buildifier リンターを更新して、トリビアルな式をインライン化することをおすすめします。
  • P2. native.existing_rules のユースケースを調査し、代替案を提案します。
  • P2. プレリュード ファイルのユースケースを調査し、代替案を提案します。

パフォーマンス:

  • P1. フラット環境とバイトコード コンパイルを使用して Starlark インタープリタを最適化します。

技術的負債の削減:

  • P0. @bazel_tools の下でネイティブ シンボルを Starlark に移植する機能を追加します。
  • P1. 廃止されたフラグを削除します(一部は Google でまだ使用されているため、まずコードベースをクリーンアップする必要があります)。incompatible_always_check_depset_elementsincompatible_disable_deprecated_attr_paramsincompatible_no_support_tools_in_action_inputsincompatible_new_actions_api
  • P1. 次のフラグを Bazel 4.0 で切り替えられるようにします。incompatible_disable_depset_itemsincompatible_no_implicit_file_exportincompatible_run_shell_command_stringincompatible_restrict_string_escapes
  • P1. lib.syntax の作業を完了します(API のクリーンアップ、Bazel からの分離)。
  • P2. Bazel の Java パッケージに対するトリビアルな編集のビルドとテストのレイテンシを 50% 削減します。

コミュニティ:

  • rules_python はアクティブで、コミュニティによって適切に管理されています。
  • rules_jvm_external の継続的なサポート(未解決のプルリクエストなし、問題のトリアージ、リリースの作成)。
  • Bazel ドキュメント インフラストラクチャを維持します。bazel-website、bazel-blog、docs で CSS スタイルを一元化して正規化します。
  • Bazel ドキュメント: 回帰を防ぐため、e2e ドキュメント サイトのビルドに CI テストを追加します。

2020 年第 1 四半期

ビルドの健全性とベスト プラクティス:

  • ターゲットがマクロ コールスタックを追跡できるようにして、bazel query でエクスポートできるようにします。
  • --incompatible_no_implicit_file_export を実装します。
  • 廃止された depset API を削除します(#5817、#10313、#9017)。
  • Buildifier にクロスファイル アナライザを追加し、廃止された関数のチェックを実装します。

パフォーマンス:

  • Bazel 独自の Java ベースのテストを 2 倍高速化します。
  • Starlark CPU プロファイラを実装します。

技術的負債の削減:

  • 8 個の互換性のないフラグを削除します(切り替え後)。
  • lib.syntax のクリーンアップ作業を完了します(依存関係を解消します)。
  • Starlark の最適化: フラット環境、バイトコード コンパイル
  • 可能であれば、分析フェーズからすべてのシリアル化を削除します。
  • lib.packages の簡素化/最適化の計画を立てます。

コミュニティ:

  • Bazel 固有の用語の定義を含む用語集を公開します。