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

JavaScript Promise Integration (JSPI) è un'API che consente il codice sequenziale sincrono compilato in WebAssembly per accedere alle API web asincrone. Molte API web sono realizzate in termini di promesse JavaScript: anziché eseguire immediatamente l'operazione richiesta, restituiscono una promessa di farlo. Quando l'azione viene finalmente eseguita, l'esecutore dell'attività del browser rivoca eventuali callback con la promessa. JSPI si collega in questa architettura per consentire la sospensione di un'applicazione WebAssembly quando viene restituita la promessa e la 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 Presentazione dell'API WebAssembly JavaScript Promise Integration o nella bozza della specifica.

Per comprendere meglio come utilizzare questa funzionalità, considera il seguente estratto di un programma C che calcola la sequenza di Fibonacci esternalizzando l'aggiunta 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 comando seguente, che richiede l'SDK Emscripten.

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

Per rilevare il supporto di JSPI da JavaScript, procedi nel seguente modo:

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

Una demo di JSPI dell'esempio di codice precedente è disponibile su Glitch e anche incorporata in quanto segue. Se vuoi puoi vedere il codice sorgente generato da Emscripten, ma il codice effettivamente interessante è il programma C originale (fai clic su questo link per scaricare il codice).

Per provare JSPI con utenti reali della tua applicazione, registrati alla prova dell'origine. Se hai bisogno di istruzioni, consulta la Guida introduttiva alle prove dell'origine. Il team JSPI non vede l'ora di ricevere il tuo feedback sulla prova dell'origine (vedi il passaggio 5 nelle istruzioni), in modo che la funzionalità soddisfi le tue esigenze al momento della spedizione.