Está disponible una versión preliminar del estándar WebAssembly 2.0

El consorcio W3C ha publicado una versión preliminar de una nueva especificación que estandariza el código intermedio WebAssembly 2.0 y la API asociada, permitiendo crear aplicaciones de alto rendimiento que son portátiles entre navegadores y plataformas de hardware. WebAssembly proporciona un código intermedio universal de bajo nivel que es independiente del navegador para ejecutar aplicaciones compiladas en varios lenguajes de programación. Gracias al uso de JIT para WebAssembly, se puede lograr un nivel de rendimiento cercano al código nativo.

La tecnología WebAssembly se puede utilizar para ejecutar en el navegador tareas que requieren un alto rendimiento, como codificación de video, procesamiento de sonido, manipulación gráfica y 3D, desarrollo de juegos, operaciones criptográficas y cálculos matemáticos mediante la organización de la ejecución en el navegador de código escrito en lenguajes compilables como C/C++.

Entre las principales tareas de WebAssembly se destacan asegurar la portabilidad, la previsibilidad del comportamiento y la identidad de la ejecución del código en diferentes plataformas. Recientemente, WebAssembly también se ha promovido como una plataforma universal para la ejecución segura de código en cualquier infraestructura, sistema operativo y dispositivo, sin limitaciones a navegadores.

W3C ha publicado tres especificaciones preliminares de WebAssembly 2.0:

  • WebAssembly Core — describe una máquina virtual de bajo nivel para ejecutar código intermedio de WebAssembly. Los recursos relacionados con WebAssembly se entregan en formato «.wasm», similar a los archivos «.class» en Java y que contienen datos estáticos y segmentos de código para trabajar con estos datos.
  • Interfaz de JavaScript de WebAssembly — proporciona una API para la integración con JavaScript. Permite obtener valores y pasar parámetros a funciones de WebAssembly. La ejecución de WebAssembly se ajusta al modelo de seguridad de JavaScript y toda interacción con el sistema principal se realiza de manera similar a la ejecución de código JavaScript.
  • WebAssembly Web API — define una interfaz de programación basada en el mecanismo de Promesas para solicitar y ejecutar recursos «.wasm». El formato de los recursos de WebAssembly está optimizado para iniciar la ejecución sin esperar a que se complete la carga del archivo, lo que mejora la capacidad de respuesta de las aplicaciones web.

Los principales cambios en WebAssembly 2.0, en comparación con la primera versión del estándar:

  • Soporte para el tipo vectorial v128 y sus instrucciones vectoriales asociadas, que permiten ejecutar acciones en paralelo sobre múltiples valores numéricos (SIMD, single instruction multiple data).
  • Posibilidad de importar y exportar variables globales modificables (mutable), que permiten aplicar enlace global a valores como punteros de pila en C++.
  • Nuevas instrucciones para convertir tipos float a int, que en lugar de generar una excepción al desbordar el resultado, devuelven el valor mínimo o máximo posible (necesario para SIMD).
  • Instrucciones para extender el signo de enteros (aumentar la precisión del número manteniendo el signo y el valor).
  • Soporte para devolver múltiples valores en bloques y funciones (además de pasar varios parámetros a las funciones).
  • Implementación de las funciones de JavaScript BigInt64Array y BigUint64Array para convertir entre el tipo BigInt de JavaScript y la representación de enteros de 64 bits en WebAssembly.
  • Soporte para tipos de referencia (funcref y externref) y las instrucciones relacionadas (select, ref.null, ref.func y ref.is_null).
  • Instrucciones memory.copy, memory.fill, memory.init y data.drop para copiar datos entre áreas de memoria y limpiar regiones de memoria.
  • Instrucciones para acceso directo y modificación de tablas (table.set, table.get, table.size, table.grow). Posibilidad de crear, importar y exportar múltiples tablas en un solo módulo. Funciones de copia/relleno de tablas en modo por lotes (table.copy, table.init y elem.drop).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster