Ce document fournit des listes de contrôle des exigences techniques pour la mise en scène et l'expédition des fonctionnalités WebAssembly dans V8. Ces listes de contrôle sont conçues comme une ligne directrice et peuvent ne pas s'appliquer à toutes les fonctionnalités. Le processus de lancement réel est décrit dans le processus de lancement V8.
Mise en scène
Quand mettre en scène une fonctionnalité WebAssembly
La mise en scène d'une fonctionnalité WebAssembly définit la fin de sa phase de mise en œuvre. La phase de mise en œuvre est terminée lorsque la liste de contrôle suivante est accomplie :
- La mise en œuvre dans V8 est terminée. Cela inclut :
- Mise en œuvre dans TurboFan (si applicable)
- Mise en œuvre dans Liftoff (si applicable)
- Mise en œuvre dans l'interpréteur (si applicable)
- Des tests dans V8 sont disponibles
- Les tests de spécification sont intégrés dans V8 en exécutant
tools/wasm/update-wasm-spec-tests.sh
- Tous les tests de spécification proposés existants réussissent. Les tests de spécification manquants sont regrettables mais ne devraient pas bloquer la mise en scène.
Notez que l'étape de la proposition de fonctionnalité dans le processus de normalisation n'a pas d'importance pour la mise en scène de la fonctionnalité dans V8. La proposition devrait, cependant, être principalement stable.
Comment mettre en scène une fonctionnalité WebAssembly
- Dans
src/wasm/wasm-feature-flags.h
, déplacez le drapeau de fonctionnalité de la liste macroFOREACH_WASM_EXPERIMENTAL_FEATURE_FLAG
vers la liste macroFOREACH_WASM_STAGING_FEATURE_FLAG
. - Dans
tools/wasm/update-wasm-spec-tests.sh
, ajoutez le nom du dépôt de la proposition à la listerepos
des dépôts. - Exécutez
tools/wasm/update-wasm-spec-tests.sh
pour créer et télécharger les tests de spécification de la nouvelle proposition. - Dans
test/wasm-spec-tests/testcfg.py
, ajoutez le nom du dépôt de la proposition et le drapeau de fonctionnalité à la listeproposal_flags
. - Dans
test/wasm-js/testcfg.py
, ajoutez le nom du dépôt de la proposition et le drapeau de fonctionnalité à la listeproposal_flags
.
Voir la mise en scène de la réflexion de type comme référence.
Expédition
Quand une fonctionnalité WebAssembly est-elle prête à être expédiée
- Le processus de lancement V8 est satisfait.
- La mise en œuvre est couverte par un outil de fuzzing (si applicable).
- La fonctionnalité a été mise en scène pendant plusieurs semaines pour obtenir une couverture de fuzzing.
- La proposition de fonctionnalité est au stade 4.
- Tous les tests de spécification réussissent.
- La liste de contrôle des DevTools Chromium pour les nouvelles fonctionnalités WebAssembly est satisfaite.
Comment expédier une fonctionnalité WebAssembly
- Dans
src/wasm/wasm-feature-flags.h
, déplacez le drapeau de fonctionnalité de la liste macroFOREACH_WASM_STAGING_FEATURE_FLAG
vers la liste macroFOREACH_WASM_SHIPPED_FEATURE_FLAG
.- Assurez-vous d'ajouter un bot CQ blink sur le CL pour vérifier les échecs des tests de mise en page blink causés par l'activation de la fonctionnalité (ajoutez cette ligne dans le pied de description du CL :
Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
).
- Assurez-vous d'ajouter un bot CQ blink sur le CL pour vérifier les échecs des tests de mise en page blink causés par l'activation de la fonctionnalité (ajoutez cette ligne dans le pied de description du CL :
- De plus, activez la fonctionnalité par défaut en modifiant le troisième paramètre dans
FOREACH_WASM_SHIPPED_FEATURE_FLAG
àtrue
. - Définissez un rappel pour supprimer le drapeau de fonctionnalité après deux versions.