Mozilla, Fastly, Intel y Red Hat promueven WebAssembly como plataforma universal

WebAssembly

Mozilla, Fastly, Intel y Red Hat se han unido para desarrollar tecnologías que hacen de WebAssembly una plataforma universal para ejecutar código de forma segura en cualquier infraestructura, sistema operativo y dispositivo. Para el desarrollo conjunto del runtime y compiladores, que permite utilizar WebAssembly no solo en navegadores web, se ha formado la comunidad Bytecode Alliance.

Para crear programas portables entregados en formato WebAssembly que puedan ejecutarse fuera del navegador, se propone utilizar la API WASI (Interfaz del sistema WebAssembly), que proporciona interfaces de programas para la interacción directa con el sistema operativo (API POSIX para trabajar con archivos, sockets, etc.).

Una característica distintiva del modelo de ejecución de aplicaciones que utilizan WASI es el lanzamiento en un entorno de espacio aislado para aislar del sistema principal y el uso de 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.) la aplicación debe tener la autorización correspondiente (solo se proporciona acceso a la funcionalidad declarada).

Uno de los objetivos de la alianza creada es resolver el problema de la difusión de las aplicaciones modulares modernas con una gran cantidad de dependencias. En tales aplicaciones, cada dependencia puede ser una fuente potencial de vulnerabilidades o ataques. Obtener el control de dependencia le permite obtener el control sobre todas las aplicaciones asociadas con él.

Los miembros de Bytecode Alliance tienen la intención de preparar una solución completa para la ejecución segura de aplicaciones WebAssembly que inicialmente no son confiables.

Para la protección, se propone utilizar el concepto de nanoprocesos, en el que cada módulo de dependencia se separa en un módulo WebAssembly aislado por separado, cuya autoridad está configurada para vincularse solo a este módulo (por ejemplo, una biblioteca para procesar cadenas no puede abrir un socket o archivo de red).

A diferencia de la separación de procesos, los manejadores de WebAssembly son livianos y casi no requieren recursos adicionales ademas de que la interacción entre los manejadores no es mucho más lenta que llamar a funciones ordinarias.

Para el desarrollo conjunto, varios proyectos relacionados con WebAssembly, previamente desarrollados por separado por las compañías fundadoras de la alianza, se transfirieron bajo el ala de Bytecode Alliance:

  • Wasmtime: un runtime para ejecutar aplicaciones WebAssembly con extensiones WASI como aplicaciones independientes regulares. Admite el lanzamiento del código de bytes de WebAssembly utilizando una utilidad especial de línea de comandos y el diseño de archivos ejecutables listos para usar (wasmtime está integrado en la aplicación como una biblioteca).
  • Lucet: es un compilador y un runtime para ejecutar programas en formato WebAssembly. Una característica distintiva de Lucet es el uso de una compilación preventiva completa (AOT, por adelantado) en el código de máquina adecuado para la ejecución directa en lugar de JIT. El proyecto fue desarrollado por Fastly y optimizado para consumir recursos mínimos y lanzar rápidamente nuevas instancia.Como parte de un proyecto conjunto, se planea cambiar el compilador Lucet para usar Wasmtime como base.
  • WAMR (WebAssembly Micro Runtime): es otro runtime para ejecutar WebAssembly, desarrollado originalmente por Intel para su uso en dispositivos IoT. WAMR está optimizado para un consumo mínimo de recursos y se puede usar en dispositivos con una pequeña cantidad de RAM. El proyecto incluye un intérprete y una máquina virtual para ejecutar el código de bytes de WebAssembly, una API (un subconjunto de Libc) y herramientas para administrar aplicaciones dinámicamente.
  • Cranelift: es un generador de código que traduce una representación intermedia independiente del hardware en código máquina ejecutable optimizado para plataformas de hardware específicas. Cranelift admite la paralelización de la compilación de funciones para una generación muy rápida de resultados, lo que le permite usarlo para crear compiladores JIT (JIT basado en Cranelift se usa en la máquina virtual Wasmtime).
  • WASI: una implementación independiente de la API WASI (Interfaz de sistema de ensamblaje web) para organizar la interacción con el sistema operativo.
  • cargo-wasi: un módulo para el administrador de paquetes cargo que implementa un comando para compilar código Rust en el código de bytes de WebAssembly utilizando la interfaz WASI para usar WebAssembly fuera del navegador.
  • wat y wasmparser: son analizadores para analizar texto (WAT, WAST) y representaciones binarias del código de bytes de WebAssembly.

Un comentario, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   01101001b dijo

    «A diferencia de la separación de procesos, los manejadores de WebAssembly son livianos y casi no requieren recursos adicionales»…
    Con Mozilla y Red Hat metidos en la masa, esa observación de «livianos y casi no requieren recursos adicionales» va camino a ser un chiste fenomenal xD