Vista previa estándar de WebAssembly 2.0 disponible

El W3C ha publicado un borrador de una nueva especificación que estandariza el middleware WebAssembly 2.0 y su API asociada, permitiendo la creación de aplicaciones de alto rendimiento que son portátiles a través de navegadores y plataformas de hardware. WebAssembly proporciona código intermedio de bajo nivel, universal y independiente del navegador para ejecutar aplicaciones compiladas a partir de varios lenguajes de programación. Al utilizar JIT para WebAssembly, puede lograr niveles de rendimiento cercanos al código nativo.

La tecnología WebAssembly se puede utilizar para realizar tareas de alto rendimiento en el navegador, como codificación de vídeo, procesamiento de audio, manipulación de gráficos y 3D, desarrollo de juegos, operaciones criptográficas y cálculos matemáticos al permitir que el código se escriba en lenguajes compilados como C/C++. .

Entre los principales objetivos de WebAssembly está garantizar la portabilidad, el comportamiento predecible y la ejecución de código idéntico en diferentes plataformas. Recientemente, WebAssembly también se ha promocionado como una plataforma universal para ejecutar código de forma segura en cualquier infraestructura, sistema operativo y dispositivo, sin limitarse a los navegadores.

El W3C ha publicado tres borradores de especificaciones para WebAssembly 2.0:

  • WebAssembly Core: describe una máquina virtual de bajo nivel para ejecutar código intermedio de WebAssembly. Los recursos asociados con WebAssembly se entregan en formato ".wasm", similar a los archivos ".class" en Java, que contienen datos estáticos y segmentos de código para trabajar con esos datos.
  • Interfaz JavaScript WebAssembly: proporciona una API para la integración con JavaScript. Le permite obtener valores y pasar parámetros a funciones de WebAssembly. La ejecución de WebAssembly sigue el modelo de seguridad de JavaScript y toda interacción con el sistema principal se lleva a cabo de la misma manera que se ejecuta el código JavaScript.
  • WebAssembly Web API: define una interfaz de programación basada en el mecanismo Promise para solicitar y ejecutar recursos ".wasm". El formato de recursos WebAssembly está optimizado para comenzar la ejecución sin esperar a que el archivo se cargue por completo, lo que mejora la capacidad de respuesta de las aplicaciones web.

Los principales cambios en WebAssembly 2.0 respecto a la primera versión del estándar:

  • Soporte para el tipo de vector v128 e instrucciones vectoriales relacionadas que le permiten realizar acciones en múltiples valores numéricos en paralelo (SIMD, instrucción única de datos múltiples).
  • Capacidad para importar y exportar variables globales mutables, lo que permite aplicar enlaces globales a valores como punteros de pila en C++.
  • Nuevas instrucciones de conversión de float a int que, en lugar de generar una excepción cuando el resultado se desborda, devuelven el valor mínimo o máximo posible (necesario para SIMD).
  • Instrucciones para la expansión de signos de números enteros (aumentar la profundidad de bits de un número manteniendo el signo y el valor).
  • Soporte para bloques y funciones que devuelven múltiples valores (además de pasar múltiples parámetros a funciones).
  • Implementación de las funciones JavaScript BigInt64Array y BigUint64Array para convertir entre el tipo JavaScript BigInt y la representación WebAssembly de enteros de 64 bits.
  • Soporte para tipos de referencia (funcref y externref) e instrucciones asociadas (select, ref.null, ref.func y ref.is_null).
  • Instrucciones Memory.copy, Memory.fill, Memory.init y data.drop para copiar datos entre regiones de memoria y borrar regiones de memoria.
  • Instrucciones para acceder y modificar tablas directamente (table.set, table.get, table.size, table.grow). Capacidad para crear, importar y exportar múltiples tablas en un módulo. Funciones para copiar/rellenar tablas en modo por lotes (table.copy, table.init y elem.drop).

Fuente: opennet.ru

Añadir un comentario