Checklist for staging and shipping of WebAssembly features
This document provides checklists of engineering requirements for staging and shipping WebAssembly features in V8. These checklists are meant as a guideline and may not be applicable to all features. The actual launch process is described in the V8 Launch process.
Staging #
When to stage a WebAssembly feature #
The staging of a WebAssembly feature defines the end of its implementation phase. The implementation phase is finished when the following checklist is done:
- The implementation in V8 is complete. This includes:
- Implementation in TurboFan (if applicable)
- Implementation in Liftoff (if applicable)
- Implementation in the interpreter (if applicable)
- Tests in V8 are available
- Spec tests are rolled into V8 by running
tools/wasm/update-wasm-spec-tests.sh
- All existing proposal spec tests pass. Missing spec tests are unfortunate but should not block staging.
Note that the stage of the feature proposal in the standardization process does not matter for staging the feature in V8. The proposal should, however, be mostly stable.
How to stage a WebAssembly feature #
- In
src/wasm/wasm-feature-flags.h
, move the feature flag from theFOREACH_WASM_EXPERIMENTAL_FEATURE_FLAG
macro list to theFOREACH_WASM_STAGING_FEATURE_FLAG
macro list. - In
tools/wasm/update-wasm-spec-tests.sh
, add the proposal repository name to therepos
list of repositories. - Run
tools/wasm/update-wasm-spec-tests.sh
to create and upload the spec tests of the new proposal. - In
test/wasm-spec-tests/testcfg.py
, add the proposal repository name and the feature flag to theproposal_flags
list. - In
test/wasm-js/testcfg.py
, add the proposal repository name and the feature flag to theproposal_flags
list.
See the staging of type reflection as a reference.
Shipping #
When is a WebAssembly feature ready to be shipped #
- The V8 Launch process is satisfied.
- The implementation is covered by a fuzzer (if applicable).
- The feature has been staged for several weeks to get fuzzer coverage.
- The feature proposal is stage 4.
- All spec tests pass.
- The Chromium DevTools checklist for new WebAssembly features is satisfied.
How to ship a WebAssembly Feature #
- In
src/wasm/wasm-feature-flags.h
, move the feature flag from theFOREACH_WASM_STAGING_FEATURE_FLAG
macro list to theFOREACH_WASM_SHIPPED_FEATURE_FLAG
macro list.- Ensure to add a blink CQ bot on the CL to check for blink web test failures caused by enabling the feature (add this line to the footer of the CL description:
Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
).
- Ensure to add a blink CQ bot on the CL to check for blink web test failures caused by enabling the feature (add this line to the footer of the CL description:
- Additionally, enable the feature by default by changing the third parameter in
FOREACH_WASM_SHIPPED_FEATURE_FLAG
totrue
. - Set a reminder to remove the feature flag after two milestones.