WebAssembly JavaScript Promise Integration (JSPI) entra no teste de origem

A JavaScript Commit Integration (JSPI) é uma API que permite código sequencial compilado para o WebAssembly para acessar APIs assíncronas da Web. Muitas As APIs da Web são desenvolvidas em termos de JavaScript promessas: em vez de executar imediatamente a operação solicitada, eles retornam uma promessa para fazer isso. Quando a ação for finalmente realizada, o executor de tarefas do navegador invoca todos os callbacks com a promessa. O VASTI se encaixa nessa arquitetura para permitir que um aplicativo WebAssembly seja suspenso quando a promessa for retornada; e ser retomado quando a promessa for resolvida.

Do Chrome 123 ao Chrome 128, O JSPI está disponível como um teste de origem. Saiba mais sobre a JSPI na postagem do blog Introdução à API de integração de promessas JavaScript do WebAssembly ou no rascunho de especificação.

Para entender melhor como usar esse recurso, considere o seguinte excerto de um programa C que calcula a sequência de Fibonacci terceirizando a adição para uma função 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);
});

Para compilar esse programa C para o WebAssembly, use o comando a seguir, que requer o SDK Emscripten.

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

Para detectar recursos de suporte a JSPI no JavaScript, faça o seguinte:

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

Uma demonstração do JSPI do exemplo de código anterior está disponível no Glitch e também incorporada no seguinte. Você pode conferir o código-fonte gerado pelo Emscripten, mas o código realmente interessante é o programa C original. Clique neste link para fazer o download do código.

Para testar o VAST com usuários reais do seu aplicativo, Inscreva-se no teste de origem. Leia Introdução aos testes de origem se você precisam de instruções. A equipe da APIII está ansiosa para saber sua origem feedback do teste (consulte a Etapa 5 no instruções) para que o recurso atenda às suas necessidades quando for enviado!