Publicada a norma WebAssembly 3.0

O consórcio W3C anunciou a prontidão da especificação que padroniza o código intermediário WebAssembly 3.0 e a API associada, permitindo a criação de aplicações de alto desempenho, portáteis entre navegadores e plataformas de hardware. WebAssembly fornece um código intermediário universal de baixo nível independente do navegador para execução de aplicações compiladas a partir de várias linguagens de programação.

A tecnologia WebAssembly pode ser aplicada para executar no navegador tarefas que exigem alto desempenho, como codificação de vídeo, processamento de áudio, manipulação de gráficos e 3D, desenvolvimento de jogos, operações criptográficas e cálculos matemáticos, organizando a execução no navegador de código escrito em linguagens compiladas, como C/C++. Graças ao uso de JIT para WebAssembly, é possível alcançar um nível de desempenho próximo ao de código nativo.

Entre as principais tarefas do WebAssembly, destaca-se a garantia de portabilidade, previsibilidade de comportamento e identidade na execução de código em diferentes plataformas. O WebAssembly não se limita a navegadores e também é promovido como uma plataforma universal para a execução segura de código em qualquer infraestrutura, sistemas operacionais e dispositivos.

As seguintes especificações estão disponíveis:

  • WebAssembly Core - descreve uma máquina virtual de baixo nível para a execução do código intermediário WebAssembly. Os recursos relacionados ao WebAssembly são fornecidos no formato '.wasm', semelhante aos arquivos '.class' em Java e contendo dados estáticos e segmentos de código para trabalhar com esses dados.
  • WebAssembly JavaScript API - fornece uma API para integração com JavaScript. Permite obter valores e passar parâmetros para funções WebAssembly. A execução do WebAssembly segue a modelo de segurança do JavaScript e toda interação com o sistema principal é realizada de maneira análoga à execução de código JavaScript.
  • WebAssembly Web API - define uma interface de programação baseada no mecanismo Promise para solicitar e executar recursos '.wasm'. O formato dos recursos WebAssembly é otimizado para início de execução sem a necessidade de aguardar o carregamento completo do arquivo, o que melhora a responsividade das aplicações web.
  • WASI API — define um sistema de interface modular para executar WebAssembly fora dos navegadores e fornece acesso a recursos como arquivos, conexões de rede, gerador de números pseudo-aleatórios e relógios do sistema.

Nota-se que na nova versão do padrão, o suporte à compilação de linguagens de alto nível em WebAssembly foi significativamente aprimorado. Por exemplo, agora é possível compilar projetos em WebAssembly nas linguagens Java, OCaml, Scala, Kotlin, Scheme e Dart. As principais mudanças no WebAssembly 3.0, em comparação com a segunda versão do padrão, são:

  • Implementado suporte para espaço de endereço de 64 bits. Agora, o tipo i64 pode ser usado para endereçamento de memória, não apenas o i32, o que amplia o espaço de endereçamento disponível para aplicativos de 4 GB para 16 EB (com uma limitação de 16 GB ao executar no navegador).
  • Possibilitada a utilização simultânea de vários objetos de memória em um módulo WebAssembly e a operação com diferentes espaços de endereçamento. Entre outras coisas, é possível copiar dados entre diferentes instâncias de objetos de memória, alocados em diferentes espaços de endereçamento.
  • Adicionado suporte a coleta de lixo. Além da memória linear anteriormente disponível, foi proposto um tipo de armazenamento separado, gerenciado automaticamente com um coletor de lixo. O compilador agora pode usar estruturas de dados separadas, matrizes e variáveis, para as quais o WebAssembly é responsável pela alocação de memória e gerenciamento de ciclo de vida.
  • Adicionado suporte a referências tipadas, que podem descrever a estrutura exata do valor ao qual a referência aponta, evitando verificações adicionais durante a execução. Suporte a subtipos, recursão de tipos e a possibilidade de uso seguro de referências a funções, que não requerem verificações de tipos e limites durante a execução.
  • Adicionado suporte a chamadas de cauda (Tail call), onde a função atual termina sua execução imediatamente após chamar outra função, sem usar espaço na pilha.
  • Adicionado suporte para tratamento de exceções.
  • Adicionado suporte a instruções SIMD vetoriais ‘relaxadas’ (relaxed), permitindo um desempenho mais alto graças à renúncia à conformidade estrita da semântica em todas as plataformas de hardware.
  • Foi adicionada a suporte para um perfil de execução determinística, que define um comportamento independente da plataforma atual para instruções cujos resultados de execução podem variar entre diferentes plataformas (operações de ponto flutuante, retorno de valor NaN, instruções vetoriais reduzidas). Ao escolher este perfil, o Wasm garante um comportamento determinístico, reprodutibilidade e portabilidade.
  • Foi adicionado um novo sintaxe para criar anotações personalizadas, permitindo anexar informações adicionais ao código WebAssembly. Anteriormente, o suporte a seções personalizadas que permitiam armazenar informações arbitrárias estava presente no formato binário do WebAssembly, mas faltava no formato de texto. Agora é possível adicionar essas informações de forma legível e editável.
  • A API do JavaScript agora inclui funções embutidas para trabalhar com strings. Antes, as strings do JavaScript só podiam ser passadas para o WebAssembly como referências externas, mas agora é possível acessar e manipular strings diretamente dentro do WebAssembly.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster