Starlark のロードマップ

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

連絡先: laurentlb

目標

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

Google は 2 つの分野を重視しています。

  • この言語と API をシンプルかつ強力にします。
  • コードの読み取り、書き込み、更新、デバッグ、テストのための優れたツールを提供する。

2020 年第 2 四半期

健全化とベストプラクティスの構築:

  • P0:名前のないマクロの使用は避け、名前を一意の文字列リテラルにします。このプロジェクトは Google コードベースに焦点を当てていますが、一般公開されているツールに影響する可能性があります。
  • P0:選択と変数に関して Buildozer コマンドの信頼性を高めました。
  • P1. コメントが原因で並べ替えを行わないリスト内の重複を Buildifier が削除する。
  • P1. 自明式のインライン化を推奨するように Buildifier リンターを更新しました。
  • P2. native.exist_rules のユースケースを調べて、代替案を提案する。
  • P2. プレリュード ファイルのユースケースを調べて、代替案を提案する。

パフォーマンス:

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

技術的負債の削減:

  • P0:@bazel_tools の下に、ネイティブ シンボルを Starlark に移行する機能を追加しました。
  • P1. 古いフラグ(incompatible_always_check_depset_elementsincompatible_disable_deprecated_attr_paramsincompatible_no_support_tools_in_action_inputsincompatible_new_actions_api)を削除します(一部は Google でまだ使用されているため、最初にコードベースをクリーンアップする必要があります)。
  • 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、ドキュメント全体で 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 固有のすべての用語の定義を含む用語集を公開します