Wasmer, un conjunto de herramientas para aplicaciones WebAssembly
Después de dos años de desarrollo se dio a conocer la liberación de la primera versión significativa del proyecto Wasmer, el cual desarrolla un runtime para ejecutar módulos WebAssembly.
Las áreas de uso de Wasmer incluyen la creación de aplicaciones universales que pueden ejecutarse en diferentes sistemas operativos, así como la organización de la ejecución aislada de código no confiable. Se admite la inclusión de la creación de aplicaciones de servidor, por ejemplo, se demostró el lanzamiento de un servidor Nginx compilado en WebAssembly.
Sobre Wasmer
La portabilidad se logra 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 aplicaciones escritas originalmente en cualquier lenguaje de programación.
El kit de herramientas de Emscripten se puede utilizar para compilar en WebAssembly, además de que para traducir WebAssembly al código de máquina de la plataforma actual, se conectan varios marcos, como LLVM y el generador de código Cranelift.
Por otra parte, 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.
Además de que las aplicaciones están aisladas del sistema principal en un entorno de sandbox 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.), la aplicación debe recibir el correspondiente potestades).
Los programas se distribuyen en forma de módulos WebAssembly regulares, que se pueden administrar mediante el administrador de paquetes WAPM.
Wasmer también está disponible en forma de biblioteca que se puede utilizar con varios lenguajes de programación. Se admite la incrustación de código WebAssembly en programas en Rust, C/C ++, C #, D, Python, JavaScript, Go, PHP, Ruby, Elixir y Java.
En cuanto a las características de la versión 1.0 de Wasmer se destacan las siguientes:
- Alto rendimiento de aplicaciones en ejecución, cercano a la ejecución de ensamblados nativos y alta velocidad de compilación.
- Arquitectura extensible con capacidad para conectar diferentes backends de compilación ( Singlepass , Cranelift, LLVM) y motores (usando JIT o generando código de máquina).
Native Object Engine, que permite generar código de máquina para un sistema dado para un módulo WebAssembly («compilación wasmer – nativa» para generar archivos de objeto precompilados .so, .dylib y .dll). - El código precompilado requiere un tiempo de ejecución mínimo para ejecutarse, pero se conservan todas las capacidades de aislamiento de espacio aislado.
- Modo sin cabeza para entregar programas precompilados con Wasmer incorporado.
Soporte de compilación cruzada, por ejemplo, para generar código de máquina para la arquitectura Aarch64 en un sistema x86_64. - Una API simple para crear complementos y complementos sin la necesidad de aprender conceptos avanzados de WebAssembly.
- Soporte para WASM-C-API.
- Herramientas para depuración y manejo de errores.
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.