Pre-lanzamento estándar WebAssembly 2.0 dispoñible

O W3C publicou un borrador dunha nova especificación que estandariza o middleware WebAssembly 2.0 e a súa API asociada, permitindo a creación de aplicacións de alto rendemento que sexan portátiles en navegadores e plataformas de hardware. WebAssembly ofrece código intermedio de baixo nivel, independente do navegador e universal para executar aplicacións compiladas desde varias linguaxes de programación. Usando JIT para WebAssembly, pode alcanzar niveis de rendemento próximos ao código nativo.

A tecnoloxía WebAssembly pódese usar para realizar tarefas de alto rendemento no navegador, como codificación de vídeo, procesamento de audio, gráficos e manipulación 3D, desenvolvemento de xogos, operacións criptográficas e cálculos matemáticos, permitindo que se escriba código en linguaxes compilados como C/C++. .

Entre os principais obxectivos de WebAssembly está garantir a portabilidade, o comportamento previsible e a execución de código idéntico en diferentes plataformas. Recentemente, WebAssembly tamén foi promovido como unha plataforma universal para executar código de forma segura en calquera infraestrutura, sistema operativo e dispositivo, sen limitarse aos navegadores.

O W3C publicou tres borradores de especificacións para WebAssembly 2.0:

  • WebAssembly Core: describe unha máquina virtual de baixo nivel para executar código intermedio de WebAssembly. Os recursos asociados con WebAssembly entréganse nun formato ".wasm", similar aos ficheiros ".class" en Java, que conteñen datos estáticos e segmentos de código para traballar con eses datos.
  • WebAssembly JavaScript Interface - Ofrece unha API para a integración con JavaScript. Permítelle obter valores e pasar parámetros ás funcións de WebAssembly. A execución de WebAssembly segue o modelo de seguridade de JavaScript e toda a interacción co sistema principal realízase do mesmo xeito que a execución do código JavaScript.
  • API Web de WebAssembly - Define unha interface de programación baseada no mecanismo Promise para solicitar e executar recursos ".wasm". O formato de recurso WebAssembly está optimizado para comezar a execución sen esperar a que o ficheiro se cargue completamente, o que mellora a capacidade de resposta das aplicacións web.

Os principais cambios en WebAssembly 2.0 en comparación coa primeira versión do estándar:

  • Soporte para o tipo de vector v128 e instrucións vectoriais relacionadas que lle permiten realizar accións sobre varios valores numéricos en paralelo (SIMD, datos múltiples de instrución única).
  • Capacidade de importar e exportar variables globais mutables, permitindo a vinculación global de valores como os punteiros de pila en C++.
  • Novas instrucións de conversión de float a int que, en lugar de lanzar unha excepción cando o resultado se desborda, devolven o valor mínimo ou máximo posible (necesario para SIMD).
  • Instrucións para a expansión do signo de números enteiros (aumentando a profundidade de bits dun número mantendo o signo e o valor).
  • Soporte para bloques e funcións que devolven varios valores (ademais de pasar varios parámetros ás funcións).
  • Implementación das funcións JavaScript BigInt64Array e BigUint64Array para converter entre o tipo JavaScript BigInt e a representación WebAssembly de enteiros de 64 bits.
  • Soporte para tipos de referencia (funcref e externref) e as súas instrucións asociadas (select, ref.null, ref.func e ref.is_null).
  • Memory.copy, memory.fill, memory.init e data.drop instrucións para copiar datos entre rexións de memoria e borrar rexións de memoria.
  • Instrucións para acceder e modificar directamente táboas (table.set, table.get, table.size, table.grow). Capacidade de crear, importar e exportar varias táboas nun módulo. Funcións para copiar/encher táboas en modo batch (table.copy, table.init e elem.drop).

Fonte: opennet.ru

Engadir un comentario