Ajouter un commentaire

Google Chrome et WebAssembly : JavaScript Promise Integration entre en phase d'essai

Par:
fredericmazue

mer, 03/04/2024 - 11:50

JavaScript Promise Integration (JSPI) est une API qui permet au code séquentiel synchrone compilé sur WebAssembly d'accéder aux API Web asynchrones. De nombreuses API Web sont conçues en termes de promesses JavaScript : au lieu d'effectuer 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. JSPI s'intègre à cette architecture pour permettre à une application WebAssembly d'être suspendue lorsque la promesse est renvoyée et de reprendre lorsque la promesse est résolue.

De Chrome 123 - version du navigateur au moment où nous écrivons ces lignes - à Chrome 128, JSPI est disponible en version d'essai.

L'extrait de code ci-dessous, qui est un programme C qui calcule la séquence de Fibonacci en externalisant l'ajout d'une fonction JavaScript, illustre comment utiliser cette fonctionnalité.

// 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);
});

JSPI est spécifié ici

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 PPPP   III   QQQ     QQQ    U   U 
P P I Q Q Q Q U U
PPPP I Q Q Q Q U U
P I Q QQ Q QQ U U
P III QQQQ QQQQ UUU
Q Q