Этот документ предоставляет контрольные списки инженерных требований для постановки и выпуска функций WebAssembly в V8. Эти контрольные списки предназначены в качестве руководства и могут быть неприменимы ко всем функциям. Фактический процесс запуска описан в V8 Launch process.
Постановка
Когда ставить функцию WebAssembly
Постановка функции WebAssembly определяет конец её фазы реализации. Фаза реализации завершается, когда выполнено следующее:
- Реализация в V8 завершена. Это включает:
- Реализацию в TurboFan (если применимо)
- Реализацию в Liftoff (если применимо)
- Реализацию в интерпретаторе (если применимо)
- Тесты в V8 доступны
- Тесты спецификации перенесены в V8 с помощью запуска
tools/wasm/update-wasm-spec-tests.sh
- Все существующие тесты спецификации предложения проходят. Отсутствие тестов спецификации нежелательно, но не должно блокировать постановку.
Обратите внимание, что этап предложения функции в процессе стандартизации не важен для постановки функции в 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 Launch process.
- Реализация покрыта тестировщиком (если применимо).
- Функция была поставлена на несколько недель для получения покрытия тестировщиком.
- Предложение функции находится на этапе 4.
- Все тесты спецификации проходят.
- Выполнен контрольный список Chromium DevTools для новых функций WebAssembly.
Как выпустить функцию WebAssembly
- В
src/wasm/wasm-feature-flags.h
переместите флаг функции из списка макросовFOREACH_WASM_STAGING_FEATURE_FLAG
в список макросовFOREACH_WASM_SHIPPED_FEATURE_FLAG
.- Убедитесь, что на CL добавлен бот для CQ для проверки тестов web blink, которые могут быть вызваны включением функции (добавьте эту строку в нижний колонтитул описания CL:
Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
).
- Убедитесь, что на CL добавлен бот для CQ для проверки тестов web blink, которые могут быть вызваны включением функции (добавьте эту строку в нижний колонтитул описания CL:
- Кроме того, включите функцию по умолчанию, изменив третий параметр в
FOREACH_WASM_SHIPPED_FEATURE_FLAG
наtrue
. - Установите напоминание о необходимости удалить флаг функции через два выпуска.