Viene avviata la prova dell'origine di WebAssembly JavaScript Promise Integration (JSPI)

JSPI (JavaScript Promise Integration) è un'API che consente al codice sequenziale sincrono compilato in WebAssembly di accedere alle API web asincrone. Molte API web sono progettate in termini di promise JavaScript: invece di eseguire immediatamente l'operazione richiesta, restituiscono una promessa per farlo. Quando l'azione viene finalmente eseguita, il task runner del browser invoca eventuali callback con la promessa. JSPI si inserisce in questa architettura per consentire la sospensione di un'applicazione WebAssembly quando viene restituita la promessa e la sua ripresa quando la promessa viene risolta.

Da Chrome 123 a Chrome 128, JSPI è disponibile come prova dell'origine. Scopri di più su JSPI nel post del blog Introduzione all'API di integrazione delle promesse JavaScript WebAssembly o dalla bozza della specifica.

Per comprendere meglio come utilizzare questa funzionalità, considera il seguente excerpt di un programma C che calcola la sequenza di Fibonacci esternalizzando la somma a una funzione 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);
});

Per compilare questo programma C in WebAssembly, utilizza il seguente comando, che richiede l'SDK Emscripten.

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

Puoi rilevare il supporto JSPI da JavaScript nel seguente modo:

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

Una demo di JSPI dall'esempio di codice precedente è disponibile su Glitch ed è incorporata anche nel seguente. Se vuoi, puoi visualizzare il codice sorgente generato da Emscripten, ma il codice effettivamente interessante è il programma C originale (facendo clic su questo link verrà scaricato il codice).

Per provare JSPI con utenti reali della tua applicazione, registrati per la prova dell'origine. Leggi l'articolo Iniziare a utilizzare le prove delle origini se hai bisogno di istruzioni. Il team JSPI è ansioso di ricevere il tuo feedback sulla prova iniziale (vedi Passaggio 5 nelle istruzioni) in modo che la funzionalità soddisfi le tue esigenze al momento del lancio.