Wasmer 2.0, un conjunto de herramientas para crear aplicaciones basadas en WebAssembly, está disponible

El proyecto Wasmer ha lanzado su segunda versión importante, desarrollando un tiempo de ejecución para ejecutar módulos WebAssembly que pueden usarse para crear aplicaciones universales que pueden ejecutarse en diferentes sistemas operativos, así como para ejecutar código que no es de confianza de forma aislada. El código del proyecto está escrito en Rust y se distribuye bajo la licencia MIT.

La portabilidad se garantiza compilando el código de la aplicación en código intermedio 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 livianos que ejecutan pseudocódigo 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 Emscripten se puede utilizar para compilar en WebAssembly. Para traducir WebAssembly al código de máquina de la plataforma actual, admite la conexión de varios backends de compilación (Singlepass, Cranelift, LLVM) y motores (utilizando JIT o generación de 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 en un entorno sandbox y tienen acceso solo a la funcionalidad declarada (un mecanismo de seguridad basado en la gestión de capacidades - para acciones con cada uno de los recursos (archivos, directorios, sockets, llamadas al sistema, etc.), el la solicitud debe recibir los poderes adecuados).

Para lanzar un contenedor WebAssembly, basta con instalar Wasmer runtime en el sistema, que viene sin dependencias externas ("curl https://get.wasmer.io -sSfL | sh"), y ejecutar el archivo necesario ("wasmer test .era m"). Los programas se distribuyen en forma de módulos WebAssembly ordinarios, que se pueden administrar mediante el administrador de paquetes WAPM. Wasmer también está disponible como una biblioteca que se puede usar para incrustar código WebAssembly en programas Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir y Java.

La plataforma le permite lograr un rendimiento de ejecución de aplicaciones cercano al de los ensamblados nativos. Con el motor de objetos nativos para un módulo WebAssembly, puede generar código nativo ("wasmer compile -native" para generar archivos de objetos .so, .dylib y .dll precompilados), que requiere un tiempo de ejecución mínimo para ejecutarse, pero conserva todas las características de aislamiento de caja de arena. Es posible suministrar programas precompilados con Wasmer incorporado. Rust API y Wasm-C-API se ofrecen para crear complementos y complementos.

Un cambio significativo en el número de versión de Wasmer está asociado con la introducción de cambios incompatibles en la API interna que, según los desarrolladores, no afectarán al 99% de los usuarios de la plataforma. Entre los cambios que rompen la compatibilidad, también hay un cambio en el formato de los módulos Wasm serializados (los módulos serializados en Wasmer 1.0 no podrán usarse en Wasmer 2.0). Otros cambios:

  • Soporte para instrucciones SIMD (Instrucción única, datos múltiples), lo que permite la paralelización de operaciones de datos. Las áreas en las que el uso de SIMD puede mejorar significativamente el rendimiento incluyen el aprendizaje automático, la codificación y decodificación de vídeo, el procesamiento de imágenes, la simulación de procesos físicos y la manipulación de gráficos.
  • Soporte para tipos de referencia, lo que permite que los módulos Wasm accedan a información en otros módulos o en el entorno subyacente.
  • 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 acceso al kernel. El rendimiento del generador de códigos Cranelift se ha incrementado en un 40%. Reducción del tiempo de deserialización de datos.
    Wasmer 2.0, un conjunto de herramientas para crear aplicaciones basadas en WebAssembly, está disponible
    Wasmer 2.0, un conjunto de herramientas para crear aplicaciones basadas en WebAssembly, está disponible
  • 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).

Fuente: opennet.ru

Añadir un comentario