最終確認日: 2020 年 4 月 21 日 (更新履歴)
連絡先: laurentlb
目標
Google の目標は、Bazel の拡張性を高めることです。ユーザーは独自のルールを簡単に実装し、新しい言語やツールをサポートできる必要があります。Google は、これらのルールの作成と維持のエクスペリエンスを改善したいと考えています。
Google は、次の 2 つの分野に注力しています。
- 言語と API をシンプルかつ強力にする。
- コードの読み取り、書き込み、更新、デバッグ、テストを行うための優れたツールを提供します。
2020 年第 2 四半期
ビルドの健全性とベスト プラクティス:
- P0。名前のないマクロを禁止し、名前が一意の文字列リテラルであることを確認します。この作業は Google のコードベースに重点を置いていますが、一般公開されているツールに影響を与える可能性があります。
- P0。選択と変数に関して Buildozer コマンドの信頼性を高めます。
- P1. コメントのために並べ替えないリスト内の重複を Buildifier で削除します。
- P1. Buildifier リンターを更新して、単純な式をインライン化することを推奨します。
- P2. native.existing_rules のユースケースを調査し、代替案を提案します。
- P2. prelude ファイルのユースケースを調査し、代替案を提案します。
パフォーマンス:
- 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 の継続的なサポート(未解決のプルリクエストなし、問題のトリアージ、リリースの作成)。
- 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 固有の用語の定義を含む用語集を公開する