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 阶段。
- 所有 规范测试 都通过。
- 满足 Chromium DevTools 新 WebAssembly 功能清单。
如何发布 WebAssembly 功能 #
- 在
src/wasm/wasm-feature-flags.h
中,将功能标志从FOREACH_WASM_STAGING_FEATURE_FLAG
宏列表移动到FOREACH_WASM_SHIPPED_FEATURE_FLAG
宏列表。- 确保在 CL 上添加一个 blink CQ 机器人,以检查启用该功能导致的 blink 网页测试 失败(在 CL 描述的页脚添加以下行:
Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
)。
- 确保在 CL 上添加一个 blink CQ 机器人,以检查启用该功能导致的 blink 网页测试 失败(在 CL 描述的页脚添加以下行:
- 此外,通过将
FOREACH_WASM_SHIPPED_FEATURE_FLAG
中的第三个参数更改为true
,默认情况下启用该功能。 - 设置一个提醒,在两个里程碑后删除功能标志。