最終確認日: 2020 年 4 月 21 日 (更新履歴)
連絡先: laurentlb
目標
Google の目標は、Bazel の拡張性を高めることです。ユーザーは簡単に操作できる 独自のルールを実装し、新しい言語とツールをサポートしています。目標 ルールの作成と維持の効率が向上します。
次の 2 つの領域に重点を置いています。
- シンプルかつパワフルな言語と API にしましょう。
- コードの読み取り、書き込み、更新、デバッグ、テストを行うための優れたツールを提供する。
2020 年第 2 四半期
ビルドの健全性とベスト プラクティス:
- P0.名前のないマクロは使用しないで、名前が一意であることを確認してください 文字列リテラル。本作業は Google コードベースに焦点を当てていますが、 公開されています。
- P0.選択と変数に関して Buildozer コマンドの信頼性を高める。
- P1. 並べ替えの対象から外れた重複を Buildifier で削除 できます。
- P1. Buildifier リンターを更新して、簡単な式のインライン化を推奨するようにしました。
- 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 ドキュメント インフラストラクチャのメンテナンス: CSS の一元化と正規化 bazel-website、bazel-blog、ドキュメントのスタイル
- 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 固有のすべての用語の定義を含む用語集を公開する