Pré-visualização padrão do WebAssembly 2.0 disponível

O W3C publicou um rascunho de uma nova especificação que padroniza o middleware WebAssembly 2.0 e sua API associada, permitindo a criação de aplicativos de alto desempenho que são portáveis ​​entre navegadores e plataformas de hardware. WebAssembly fornece código intermediário de baixo nível, universal e independente do navegador para executar aplicativos compilados a partir de várias linguagens de programação. Ao usar JIT para WebAssembly, você pode atingir níveis de desempenho próximos ao código nativo.

A tecnologia WebAssembly pode ser usada para realizar tarefas de alto desempenho no navegador, como codificação de vídeo, processamento de áudio, manipulação gráfica e 3D, desenvolvimento de jogos, operações criptográficas e cálculos matemáticos, permitindo código escrito em linguagens compiladas como C/C++ .

Entre os principais objetivos do WebAssembly está garantir portabilidade, comportamento previsível e execução idêntica de código em diferentes plataformas. Recentemente, o WebAssembly também foi promovido como uma plataforma universal para execução segura de código em qualquer infraestrutura, sistema operacional e dispositivo, não limitado a navegadores.

O W3C publicou três rascunhos de especificações para WebAssembly 2.0:

  • WebAssembly Core – Descreve uma máquina virtual de baixo nível para executar código intermediário WebAssembly. Os recursos associados ao WebAssembly são entregues em formato ".wasm", semelhante aos arquivos ".class" em Java, contendo dados estáticos e segmentos de código para trabalhar com esses dados.
  • Interface WebAssembly JavaScript - Fornece uma API para integração com JavaScript. Permite receber valores e passar parâmetros para funções do WebAssembly. A execução do WebAssembly segue o modelo de segurança JavaScript e toda a interação com o sistema principal é realizada da mesma forma que a execução do código JavaScript.
  • API WebAssembly - Define uma interface de programação baseada no mecanismo Promise para solicitar e executar recursos ".wasm". O formato de recurso WebAssembly é otimizado para iniciar a execução sem esperar o carregamento completo do arquivo, o que melhora a capacidade de resposta dos aplicativos da web.

As principais mudanças no WebAssembly 2.0 em relação à primeira versão do padrão:

  • Suporte para o tipo de vetor v128 e instruções de vetor relacionadas que permitem executar ações em vários valores numéricos em paralelo (SIMD, dados múltiplos de instrução única).
  • Capacidade de importar e exportar variáveis ​​globais mutáveis, permitindo vinculação global para valores como ponteiros de pilha em C++.
  • Novas instruções de conversão de float para int que, em vez de lançar uma exceção quando o resultado estourar, retornam o valor mínimo ou máximo possível (necessário para SIMD).
  • Instruções para expansão de sinal de inteiros (aumentando a profundidade de bits de um número enquanto mantém o sinal e o valor).
  • Suporte a blocos e funções retornando múltiplos valores (além de passar múltiplos parâmetros para funções).
  • Implementação das funções JavaScript BigInt64Array e BigUint64Array para converter entre o tipo JavaScript BigInt e a representação WebAssembly de inteiros de 64 bits.
  • Suporte para tipos de referência (funcref e externref) e instruções associadas (select, ref.null, ref.func e ref.is_null).
  • Instruções Memory.copy, memory.fill, memory.init e data.drop para copiar dados entre regiões de memória e limpar regiões de memória.
  • Instruções para acessar e modificar diretamente tabelas (table.set, table.get, table.size, table.grow). Capacidade de criar, importar e exportar múltiplas tabelas em um módulo. Funções para copiar/preencher tabelas em modo batch (table.copy, table.init e elem.drop).

Fonte: opennet.ru

Adicionar um comentário