API JSPI dans V8 : faire fonctionner WebAssembly dans un contexte asynchrone

Par:
fredericmazue

lun, 23/01/2023 - 18:53

Les développeurs Google de moteur javaScript v8 travaillent à une API, JSPI, qui est au stade expérimental pour le moment et qui permet aux applications WebAssembly qui ont été écrites en supposant que l'accès aux fonctionnalités externes était synchrone de fonctionner sans problème (selon Google) dans un environnement où la plupart des fonctionnalités souhaitées sont asynchrones.

JSPI fonctionne en interceptant la promesse (promise) renvoyée par un appel d'API asynchrone, en suspendant la logique principale de l'application WebAssembly et en renvoyant une promesse à partir de la fonctione exportée qui a été utilisée pour entrer dans le WebAssembly. Lorsque l'API asynchrone se termine, l'application WebAssembly est reprise afin qu'elle puisse traiter les résultats de l'appel d'API.

JSPI est développé sur les architectures Intel x64 et ARM 64. Il est disponible pour Linux, macOS, Windows et ChromeOS. Pour le tester localement, saisissez chrome://flags dans la barre d'URL de Chrome et recherchez "Experimental WebAssembly JavaScript Promise Integration (JSPI)" et cochez la case. Puis relancez le navigateur.

Vous devez utiliser au moins la version 110.0.5473.0 (macOS) / 110.0.5469.0 (Windows, Android) / 110.0.5478.4 (Linux) de Chrome ou ChromeOS pour obtenir la dernière version de l'API. Google recommande d'utiliser le canal Canary pour vous assurer que toutes les mises à jour de stabilité sont appliquées. 

Le fonctionnement de JSPI et sa mise en oeuvre sont décrits dans cette proposition sur GitHub.