Starlark のロードマップ

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

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

連絡先: laurentlb

目標

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

2 つの分野に焦点を当てています。

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

2020 年第 2 四半期

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

  • P0. 名前のないマクロは使用しないでください。また、名前が一意の文字列リテラルであることを確認してください。この作業は Google のコードベースに重点を置いていますが、一般公開されているツールに影響する可能性があります。
  • P0. 選択と変数に関して Buildozer コマンドを信頼できるようにします。
  • P1. コメントが原因で並べ替えられないリスト内の重複を Buildifier が削除するようにしました。
  • P1. 単純な式のインライン化を推奨するように Buildifier lint を更新。
  • 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 Q1

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

  • ターゲットがマクロ呼び出しスタックをトラッキングできるようにし、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 固有のすべての用語の定義を含む用語集を公開する