Wasmer 2.0 ya fue liberado y llega con SIMD, mejoras y mas

junio 19, 2021 , 0 Comments

Después de casi seis meses del lanzamiento de la primera versión, se dio a conocer el lanzamiento de la nueva versión del proyecto Wasmer que está en su segunda versión principal y en la cual se han realizado cambios importantes a tal grado que las API internas en esta segunda versión son incompatibles, aun que tambien se han añadido nuevas características que agregan estabilidad, seguridad y mejoras de rendimiento.

Para quienes desconocen de Wasmer, deben saber que este desarrolla un runtime para ejecutar módulos WebAssembly que se pueden usar para crear aplicaciones universales que pueden ejecutarse en múltiples sistemas operativos y para ejecutar código que no es de confianza de forma aislada.

La portabilidad se proporciona compilando el código de la aplicación en middleware WebAssembly de bajo nivel que puede ejecutarse en cualquier sistema operativo o integrarse en programas en otros lenguajes de programación. Los programas son contenedores ligeros que ejecutan el pseudocódigo de WebAssembly.

Estos contenedores no están vinculados al sistema operativo y pueden incluir código escrito originalmente en cualquier lenguaje de programación. El kit de herramientas de Emscripten se puede utilizar para compilar en WebAssembly. Para traducir WebAssembly al código de máquina de la plataforma actual, se admite la conexión de diferentes backends de compilación (Singlepass, Cranelift, LLVM) y motores (utilizando JIT o generando código de máquina).

El control de acceso y la interacción con el sistema se proporcionan mediante la API WASI (WebAssembly System Interface), que proporciona interfaces de programación para trabajar con archivos, sockets y otras funciones proporcionadas por el sistema operativo.

Las aplicaciones están aisladas del sistema principal y tienen acceso solo a la funcionalidad declarada (mecanismo de seguridad basado en capacidades de gestión para acciones con cada uno de los recursos (archivos, directorios, sockets, llamadas al sistema, etc.).

Principales novedades de Wasmer 2.0

En esta nueva versión presentada, se menciona que el cambio significativo en el número de versión de Wasmer está asociado con la introducción de cambios de incompatibilidad en la API interna, que, según los desarrolladores, no afectarán al 99% de los usuarios de la plataforma de ninguna manera.

También se observa un cambio en el formato de los módulos Wasm serializados entre los cambios importantes en la compatibilidad (los módulos serializados en Wasmer 1.0 no podrán usarse en Wasmer 2.0).

Además, se destaca el soporte para instrucciones SIMD (Single Instruction, Multiple Data) que permiten la paralelización de operaciones de datos. Entre las áreas en las que el uso de SIMD puede aumentar significativamente la productividad, se destacan el aprendizaje automático, la codificación y decodificación de video, el procesamiento de imágenes, la simulación de procesos físicos y la manipulación de gráficos.

Tambien se destaca el soporte para tipos de referencia, permitiendo a los módulos Wasm acceder a información en otros módulos o en el entorno base y se han realizado importantes optimizaciones de rendimiento. La velocidad del tiempo de ejecución de LLVM con números de punto flotante se ha incrementado en aproximadamente un 50%.

Las llamadas a funciones se han acelerado significativamente al reducir las situaciones que requieren llamadas al kernel. El rendimiento del generador de código Cranelift se ha incrementado en un 40%. Reducción del tiempo de deserialización de datos. Para reflejar con mayor precisión la esencia, se han cambiado los nombres de los motores: JIT → Universal, Native → Dylib (Biblioteca dinámica), Archivo de objeto → StaticLib (Biblioteca estática).

Finalmente si estás interesado en conocer más al respecto sobre Wasmer, debes saber que el código del proyecto está escrito en Rust, tiene la licencia MIT y puedes consultar sus detalles en su sitio web oficial en el siguiente enlace.

Instalar el runtime de Wasmer

Por otra parte, para quienes estén interesados en poder ejecutar el contenedor WebAssembly, solo necesita instalar el runtime de Wasmer en su sistema, que viene sin dependencias externas.

Es importante mencionar que se puede ejecutar Wasmer en cualquier plataforma macOS, Linux y Windows, el único requisito es que se instale el runtime de este en tu sistema.

Para ello basta con ejecutar el siguiente comando en una terminal:

curl https://get.wasmer.io -sSfL | sh

Y después de ello, deben de ejecutar el archivo requerido:

wasmer test.wasm

Si necesitas conocer más al respecto sobre el funcionamiento de Wasmer o quieres conocer su código fuente, puedes consultar todo eso en el siguiente enlace.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.