WebAssembly (abreviado Wasm) es un formato de instrucción binaria para una máquina virtual basada en pila. Wasm está diseñado como un objetivo de compilación portátil para lenguajes de programación, lo que permite el despliegue en la web de aplicaciones de cliente y servidor.
Eficiente y rápida
La máquina de pila WASM está diseñada para ser codificada en un formato binario eficiente en cuanto a tamaño y tiempo de carga. El objetivo de WebAssembly es ejecutarse a velocidad nativa aprovechando las capacidades comunes del hardware disponibles en una amplia gama de plataformas.
Abierta y depurable
WebAssembly está diseñado para ser impreso en un formato textual para depurar, probar, experimentar, optimizar, aprender, enseñar y escribir programas a mano. El formato textual se utilizará cuando se vea el código fuente de los módulos Wasm en la web.
Segura
WebAssembly propone un entorno de ejecución seguro en memoria y en un espacio aislado, que incluso puede implementarse dentro de las máquinas virtuales de JavaScript existentes. Cuando se incrusta en la web, WebAssembly aplicará las políticas de seguridad de origen y permisos del navegador.
Parte de la plataforma web abierta
WebAssembly está diseñado para mantener la naturaleza de la web sin versiones, probada y compatible con versiones anteriores. Los módulos de WebAssembly podrán llamar dentro y fuera del contexto de JavaScript y acceder a la funcionalidad del navegador a través de las mismas API web accesibles desde JavaScript. WebAssembly también admite incrustaciones no web.
Especificaciones de WASM
- Especificación del núcleo: define la semántica de los módulos de WebAssembly independientemente de una incrustación concreta. El núcleo de WebAssembly se especifica en un único documento.
Interfaces de incrustación:- API de JavaScript: define las clases y objetos de JavaScript para acceder a WebAssembly desde JavaScript, incluidos los métodos de validación, compilación e instanciación, y las clases para representar y manipular importaciones y exportaciones como objetos de JavaScript.
- API web: define las extensiones de la API de JavaScript disponibles específicamente en los navegadores web, en particular, una interfaz para la compilación e instanciación en flujo de los tipos de respuesta vinculados al origen.
- API WASI: define una interfaz de sistema modular para ejecutar WebAssembly fuera de la web, proporcionando acceso a cosas como archivos, conexiones de red, relojes y números aleatorios.
- Convenciones de la herramienta: repositorio que describe las convenciones no estándar, útiles para coordinar la interoperabilidad entre las herramientas que trabajan con WebAssembly. Incluye las convenciones para los esquemas de enlace, la información de depuración, las ABI del lenguaje y otras.
- Documentos de diseño originales: documentos que describen el diseño, los objetivos y la visión general de alto nivel de WebAssembly.
Velneo y WebAssembly
Desde la versión 28 ya es posible programar en cualquiera de los navegadores principales con nuestra plataforma de desarrollo, y en los venideros meses podremos también ejecutar nuestros desarrollos en Web. Si quieres más información puedes asistir a cualquiera de nuestros talleres de programación o ponerte en contacto.
Estas son solo algunas de las formas en que WebAssembly ya ha comenzado a tener impacto. Puedes ver más y mantenerte al día con todas las cosas de WASM en https://webassembly.org/.