Starlark のロードマップ

問題を報告する ソースを表示

最終確認日: 2020 年 4 月 21 日更新履歴

連絡先: laurentlb

目標

Google の目標は、Bazel を拡張可能にすることです。ユーザーが独自のルールを簡単に実装し、新しい言語とツールに対応できるようにする必要があります。これらのルールの記述と保守のエクスペリエンスを改善したいと考えています。

Google は以下の 2 つの分野に焦点を当てています。

  • 言語と API はシンプルかつパワフルにします。
  • コードの読み取り、書き込み、更新、デバッグ、テストを行うためのより適切なツールを提供する。

2020 年第 2 四半期

健康とベスト プラクティスを構築:

  • P0:マクロに名前を付けないようにし、名前が一意の文字列リテラルになるようにします。これは Google のコードベースに重点を置いていますが、一般公開されているツールに影響する可能性があります。
  • P0:選択と変数に関して Buildozer コマンドの信頼性を高めました。
  • P1. コメントで並べ替えが行われないリストの重複を Buildifier で削除します。
  • P1. 簡単な式をインライン化するように Buildifier linter を更新しました。
  • P2. native.existing_rule のユースケースを調査して、代替策を提案してください。
  • 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 の継続的なサポート(未処理の pull リクエスト、問題のトリアージ、リリースの作成)
  • Bazel のドキュメント インフラストラクチャの維持: bazel-website、bazel-blog、docs の CSS スタイルを一元化して正規化
  • Bazel ドキュメント: 回帰を防ぐため、e2e ドキュメントのサイトビルドの CI テストを追加しました。

2020 Q1

健康とベスト プラクティスを構築:

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

パフォーマンス:

  • Bazel 独自の Java ベースのテストを 2 倍高速化。
  • Starlark CPU Profiler を実装します。

技術的負担の軽減:

  • 互換性のない 8 つのフラグを反転させます。
  • lib.syntax のクリーンアップ処理を完了します(依存関係の破損)。
  • Starlark の最適化: フラット環境、バイトコードのコンパイル
  • 可能であれば、分析フェーズからすべてのシリアル化を削除する
  • lib.packages の簡素化と最適化を計画する

コミュニティ:

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