Está disponible Wasmer 3.0, un conjunto de herramientas para crear aplicaciones basadas en WebAssembly

Se presenta la tercera versión significativa del proyecto Wasmer, que desarrolla un runtime para ejecutar módulos WebAssembly, el cual se puede utilizar para crear aplicaciones universales capaces de ejecutarse en diferentes sistemas operativos, así como para la ejecución aislada de código no confiable. El código del proyecto está escrito en Rust y se distribuye bajo la licencia MIT.

La capacidad de ejecutar una aplicación en diferentes plataformas se logra mediante la compilación del código a un código intermedio de bajo nivel en WebAssembly, que puede ejecutarse en cualquier sistema operativo o integrarse en programas en otros lenguajes de programación. Los programas son contenedores livianos en los que se ejecuta pseudocódigo de WebAssembly. Estos contenedores no están vinculados al sistema operativo y pueden incluir código originalmente escrito en cualquier lenguaje de programación. Se puede utilizar la herramienta Emscripten para la compilación a WebAssembly. Para la traducción de WebAssembly a código máquina de la plataforma actual, se apoya la conexión de diferentes backends de compilación (Singlepass, Cranelift, LLVM) y motores (utilizando JIT o generando código máquina).

Las aplicaciones están aisladas del sistema principal en un entorno sandbox y tienen acceso solo a las funcionalidades declaradas (el mecanismo de seguridad basado en el control de capacidades — para acciones con cada uno de los recursos (archivos, directorios, sockets, llamadas al sistema, etc.) la aplicación debe recibir las correspondientes autorizaciones). El control de acceso y la interacción con el sistema se garantiza mediante la API WASI (Interfaz de Sistema WebAssembly), que proporciona interfaces de programación para trabajar con archivos, sockets y otras funciones que ofrece el sistema operativo.

La plataforma permite lograr un rendimiento de ejecución de aplicaciones cercano al de las compilaciones nativas. Con el Native Object Engine para el módulo WebAssembly, se puede generar código máquina ("wasmer compile —native" para generar archivos objeto .so, .dylib y .dll precompilados), cuyo lanzamiento requiere un runtime mínimo, pero mantiene todas las capacidades de aislamiento sandbox. Es posible suministrar programas precompilados con Wasmer incorporado. Se ofrecen API de Rust y Wasm-C-API para crear extensiones y complementos.

Para ejecutar un contenedor WebAssembly, solo es necesario instalar en el sistema el runtime Wasmer, que se proporciona sin dependencias externas ("curl https://get.wasmer.io -sSfL | sh"), y ejecutar el archivo necesario ("wasmer test.wasm"). Los programas se distribuyen en forma de módulos WebAssembly comunes, cuyo manejo se puede realizar mediante el gestor de paquetes WAPM. Wasmer también está disponible en forma de biblioteca, que se puede usar para integrar código WebAssembly en programas en lenguajes como Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir y Java.

Los principales cambios en Wasmer 3.0:

  • Se ha añadido la posibilidad de crear archivos ejecutables nativos para cualquier plataforma. Se ha reestructurado completamente el comando 'wasmer create-exe', que permite transformar un archivo con código intermedio de WebAssembly en archivos ejecutables autónomos para las plataformas Linux, Windows y macOS, que pueden funcionar sin necesidad de instalar Wasmer.
  • Se ha agregado la posibilidad de ejecutar paquetes WAPM alojados en el directorio wapm.io mediante el comando "wasmer run". Por ejemplo, ejecutar "wasmer run python/python" descargará el paquete python desde el repositorio wapm.io y lo ejecutará.
  • Se ha rediseñado por completo el API de Wasmer Rust, cambiando el estilo de manejo de memoria y permitiendo el almacenamiento seguro de objetos Wasm en la estructura Store. Se ha propuesto una nueva estructura MemoryView, que permite leer y escribir datos en el área de memoria lineal.
  • Se ha implementado un conjunto de componentes wasmer-js para ejecutar Wasmer en el navegador web e interactuar con él desde JavaScript, utilizando la biblioteca wasm-bindgen. En cuanto a sus capacidades, wasmer-js es equivalente a los componentes wasmer-sys, diseñados para ejecutar Wasmer en sistemas operativos convencionales.
  • Se han simplificado los motores. En lugar de motores separados para JIT, enlace dinámico y estático (Universal, Dylib, StaticLib), ahora se ofrece un motor único, gestionando la carga y el almacenamiento de código a nivel de configuración.
  • Para la deserialización de artefactos, se ha utilizado el marco rkyv, que opera en modo zero-copy, es decir, no requiere la asignación de memoria adicional y realiza la deserialización únicamente utilizando el búfer originalmente proporcionado. La aplicación de rkyv ha permitido aumentar significativamente la velocidad de inicio.
  • Se ha mejorado el compilador de una sola pasada Singlepass, que ahora ofrece soporte para funciones con múltiples argumentos (multi-value), aumenta la fiabilidad de funcionamiento y añade soporte para marcos de manejo de excepciones.
  • Se ha mejorado la implementación del API WASI (Interfaz del Sistema WebAssembly). Se han resuelto problemas en la interfaz WASI para trabajar con el sistema de archivos. Los tipos internos se han reestructurado utilizando WAI (Interfaces de WebAssembly), lo que en el futuro permitirá la introducción de una serie de nuevas posibilidades.

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