WebAssembly機能のステージングと出荷のためのチェックリスト
このドキュメントは、V8でWebAssembly機能をステージングおよび出荷するためのエンジニアリング要件のチェックリストを提供します。これらのチェックリストはガイドラインとしてのものであり、すべての機能に適用できるわけではありません。実際の出荷プロセスは、V8出荷プロセスに記載されています。
ステージング #
WebAssembly機能をいつステージングするか #
WebAssembly機能のステージングは、実装フェーズの終了を定義します。実装フェーズは、以下のチェックリストが完了したときに終了します。
- V8での実装が完了している。これには以下が含まれます。
- TurboFanでの実装(該当する場合)
- Liftoffでの実装(該当する場合)
- インタープリターでの実装(該当する場合)
- V8でのテストが利用可能である
tools/wasm/update-wasm-spec-tests.sh
を実行することにより、仕様テストがV8にロールインされている- 既存のすべての提案仕様テストに合格する。仕様テストが不足していることは残念ですが、ステージングをブロックすべきではありません。
標準化プロセスにおける機能提案の段階は、V8での機能のステージングとは関係がないことに注意してください。ただし、提案はほぼ安定している必要があります。
WebAssembly機能をステージングする方法 #
src/wasm/wasm-feature-flags.h
で、機能フラグをFOREACH_WASM_EXPERIMENTAL_FEATURE_FLAG
マクロリストからFOREACH_WASM_STAGING_FEATURE_FLAG
マクロリストに移動します。tools/wasm/update-wasm-spec-tests.sh
で、提案リポジトリ名をリポジトリのrepos
リストに追加します。tools/wasm/update-wasm-spec-tests.sh
を実行して、新しい提案の仕様テストを作成およびアップロードします。test/wasm-spec-tests/testcfg.py
で、提案リポジトリ名と機能フラグをproposal_flags
リストに追加します。test/wasm-js/testcfg.py
で、提案リポジトリ名と機能フラグをproposal_flags
リストに追加します。
参考として、型リフレクションのステージングを参照してください。
出荷 #
WebAssembly機能はいつ出荷準備が整うか #
- V8出荷プロセスが満たされている。
- 実装はファザーによってカバーされている(該当する場合)。
- ファザーカバレッジを得るために、機能は数週間ステージングされている。
- 機能提案はステージ4である。
- すべての仕様テストに合格する。
- 新しいWebAssembly機能のためのChromium DevToolsチェックリストが満たされている。
WebAssembly機能を出荷する方法 #
src/wasm/wasm-feature-flags.h
で、機能フラグをFOREACH_WASM_STAGING_FEATURE_FLAG
マクロリストからFOREACH_WASM_SHIPPED_FEATURE_FLAG
マクロリストに移動します。- 機能を有効にすることによって引き起こされるblink webテストの失敗をチェックするために、CLにblink CQボットを追加してください(CL説明のフッターに次の行を追加します:
Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
)。
- 機能を有効にすることによって引き起こされるblink webテストの失敗をチェックするために、CLにblink CQボットを追加してください(CL説明のフッターに次の行を追加します:
- さらに、
FOREACH_WASM_SHIPPED_FEATURE_FLAG
の3番目のパラメータをtrue
に変更して、デフォルトで機能を有効にします。 - 2つのマイルストーン後に機能フラグを削除することをリマインダーに設定します。