最終確認日: 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_elements
、incompatible_disable_deprecated_attr_params
、incompatible_no_support_tools_in_action_inputs
、incompatible_new_actions_api
。 - P1. Bazel 4.0 で
incompatible_disable_depset_items
、incompatible_no_implicit_file_export
、incompatible_run_shell_command_string
、incompatible_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 固有の用語の定義を含む用語集を公開します