La phase d'évaluation de l'intégration de WebAssembly JavaScript Promise (JSPI)

JavaScript Promise Integration (JSPI) est une API qui permet à un code séquentiel synchrone compilé dans WebAssembly d'accéder aux API Web asynchrones. De nombreuses API Web sont conçues en termes de promesses JavaScript : au lieu d'exécuter immédiatement l'opération demandée, elles renvoient une promesse de le faire. Lorsque l'action est finalement exécutée, l'exécuteur de tâches du navigateur appelle tous les rappels avec la promesse. La page JSPI s'associe à cette architecture pour permettre la suspension d'une application WebAssembly lorsque la promesse est renvoyée et la reprise de celle-ci lorsque la promesse est résolue.

De Chrome 123 à Chrome 128, JSPI est disponible en phase d'évaluation. Pour en savoir plus sur la technologie JSPI, consultez l'article de blog Présentation de l'API d'intégration JavaScript Promise de WebAssembly ou le brouillon de la spécification.

Pour mieux comprendre comment utiliser cette fonctionnalité, consultez l'extrait suivant d'un programme C qui calcule la séquence de Fibonacci en externalisant l'addition à une fonction JavaScript.

// This is C code.
long promiseFib(long x) {
  if (x == 0)
    return 0;
  if (x == 1)
    return 1;
  // This is where the C code calls asynchronous JavaScript.
  return promiseAdd(promiseFib(x - 1), promiseFib(x - 2));
}

// Addition artificially wrapped in a Promise.
EM_ASYNC_JS(long, promiseAdd, (long x, long y), {
  // This is asynchronous JavaScript code.
  return Promise.resolve(x+y);
});

Pour compiler ce programme C dans WebAssembly, utilisez la commande suivante, qui nécessite le SDK Emscripten.

emcc -O3 badfib.c -o index.html -s ASYNCIFY=2

Pour détecter la compatibilité des fonctionnalités JSPI à partir de JavaScript, procédez comme suit:

if ('Suspender' in WebAssembly) {
  // JSPI is supported.
}

Une version de démonstration de la page JSP à partir de l'exemple de code précédent est disponible dans Glitch et est également intégrée dans l'exemple ci-dessous. Vous pouvez voir le code source généré par Emscripten si vous le souhaitez, mais le code le plus intéressant est le programme C d'origine (le fait de cliquer sur ce lien vous permet de télécharger le code).

Pour tester la technologie JSP auprès de vrais utilisateurs de votre application, inscrivez-vous à la phase d'évaluation. Si vous avez besoin d'instructions, consultez la section Premiers pas avec les phases d'évaluation. L'équipe RSSI attend avec impatience de recevoir vos commentaires sur la version d'évaluation (voir l'étape 5 dans les instructions) afin que la fonctionnalité réponde à vos besoins lors de son expédition.