Llegamos a ustedes gracias a:



Reportajes y análisis

8 nuevas herramientas de WebAssembly que debería conocer

[11/01/2019] WebAssembly, también conocido como Wasm, le permite ejecutar código en un navegador, admitir otros lenguajes además de JavaScript en la web, y acelerar las aplicaciones. Un ecosistema de herramientas está creciendo alrededor de la tecnología, que está respaldada por los fabricantes de navegadores Apple, Google, Microsoft y Mozilla.

Las herramientas existentes de WebAssembly incluyen Rust-wasm, que proporciona un intérprete de WebAssembly, y Wasmlib, una biblioteca de C# para leer y escribir archivos binarios de WebAssembly. Pero más herramientas se están uniendo al ecosistema de WebAssembly. A continuación, ocho de ellas.

Life

El proyecto Life en el mercado de la nube Perlin consiste en una máquina virtual multiplataforma escrita en el lenguaje Go de Google. Descrito como seguro, rápido y modular, Life ejecuta códigos de cómputo pesado en múltiples dispositivos. Originalmente pensado como el ambiente de ejecución para tareas computacionales en Perlin, Life se creó a partir del manual de referencia de WebAssembly, y utiliza una gama de técnicas de optimización. Es independiente de las dependencias nativas y se puede compilar de manera múltiple para ejecutarse en plataformas como Windows, Linux, MacOS, Android e iOS. Por seguridad, el código de usuario se encuentra en un espacio aislado.

Puede descargar Life desde un repositorio de Perlin GitHub.

Nebulet

Este microkernel en desarrollo consiste en ejecutar módulos de ensamblaje web en anillo 0 y un único espacio de direcciones para mejorar el rendimiento. La intención es que Nebulet tenga un rendimiento significativamente mejor en algunas cargas de trabajo, que probablemente estén relacionadas con el servidor. El fundador, Lachlan Sneff, reconoce que los módulos que se ejecutan en el anillo 0 pueden aumentar los indicadores de seguridad, con preocupaciones sobre Specter, Meltdown y otros errores de ejecución especulativos; actualmente, no está claro qué tan grande será este problema.

Nebulet, en proyecto del Google Summer of Code del 2018, permite una sobrecarga de conmutación de bajo contexto, llamadas al sistema como llamadas a funciones y optimizaciones que no son posibles en sistemas operativos convencionales.

El generador de código de Cranelift compila WebAssembly al código de máquina nativo. Después de la compilación, no hay interacciones complejas entre la aplicación y el tiempo de ejecución. El kernel de Nebulet está escrito en Rust.

Puede descargar Nebulet desde GitHub.

Wasabi

Wasabi, que significa "análisis de WebAssembly utilizando instrumentos binarios, es un marco de trabajo de análisis dinámico. Wasabi observa las propiedades de un programa mientras el programa se está ejecutando. El análisis dinámico se utiliza para corregir errores e identificar embudos de rendimiento y problemas de seguridad.

Wasabi implementa de forma estática un binario de WebAssembly, como program.wasm, insertando instrucciones en las instrucciones originales del programa. Bytecode se modifica para ser independiente del código fuente. Para realizar un análisis dinámico, el programa se ejecuta abriendo la página web con el ahora instrumentado program.wasm. Para que las funciones de análisis escritas por el usuario sean conocidas en el programa WebAssembly, el script wasabi.js es agregado a la página junto con analysis.js. Wasabi fue escrito en Rust con algún código JavaScript.

Puede descargar Wasabi desde el repositorio GitHub del proyecto.

Wasmjit

El runtime Wasmjit WebAssembly incorporable, con un núcleo escrito en C90, se dirige principalmente a un módulo del kernel de Linux que puede alojar módulos de WebAssembly generados por Emscripten. En esta configuración, se ejecuta en el anillo 0, con acceso a las llamadas del sistema como llamadas de función normales. Su desarrollador, Ryan Hunter, espera tenerlo incluido en el kernel de Linux. Hace poco, Hunter hizo que Wasmjit se ejecutara en un servidor web Nginx.

Al igual que Nebulet, ha habido preguntas de seguridad sobre Wasmjit, con inquietudes sobre la posible vulnerabilidad frente a Specter y Meltdown. Wasmjit es vulnerable a Spectre, pero se están haciendo mitigaciones.

Puede descargar Wasmjit desde la página GitHub del proyecto.

WAVM

WAVM, la máquina virtual de WebAssembly, es una máquina virtual independiente para WebAssembly. Puede cargar tanto el formato binario estándar como el formato de texto definido por el intérprete de referencia de WebAssembly. Con el formato de texto, WAVM puede cargar la sintaxis de la máquina stack estándar y la sintaxis AST utilizada por el intérprete de referencia, así como todos los comandos de prueba.

La creación de WAVM requiere el software de compilación CMake y el compilador LLVM 6.0. WAVM se ha probado en Windows con C++, Linux con GCC y Clang, y MacOS con Xcode/Clang.

Puede descargar WAVM desde GitHub.

WebAssembly Binary Toolkit (WABT)

Pronunciado como "wabbit, el kit de herramientas de WABT inspecciona un archivo de WebAssembly o lo convierte de un formato a otro. Sus herramientas incluyen:

  • WABT, para traducir desde el formato de texto del WebAssembly al formato binario.
  • Wasm2wat, el inverso de WABT.
  • Wasm-objdump, para imprimir información sobre un binario de WebAssembly.
  • Wasm-interp, para decodificar y ejecutar un binario de WebAssembly utilizando un intérprete basado en el stack.
  • Wat-desugar, para analizar .wat, el formulario de texto.
  • Wasm2c, para convertir un archivo binario de WebAssembly en una fuente C y un encabezado.

Utilizado en la Mozilla Developer Network, WABT se encuentra en una forma estable. Se planifican nuevas funciones para WABT, incluido el soporte para SIMD (instrucción única, datos múltiples) y subprocesos, a medida que se agregan al mismo WebAssembly.

Puede descargar WABT desde GitHub.

WebAssembly Studio

El IDE en línea de WebAssembly Studio, actualmente en versión beta y desarrollado por Mozilla, es una colección de herramientas para trabajar con WebAssembly que también sirve como herramienta de enseñanza. Se proporcionan capacidades básicas para abrir, descargar, editar y eliminar archivos. Los desarrolladores también pueden subir archivos y directorios. Para compartirse con otros, los proyectos pueden ser bifurcados. Se pueden editar módulos binarios para WebAssembly, así como archivos de texto. WebAssembly Studio admite los lenguajes C, C ++ y Rust. Algunas funciones requieren servicios de back end alojados, como la compilación, pero otras se ejecutan en el navegador.

Puede probar el IDE de WebAssembly Studio en línea.

WebAssembly Toolkit for VS Code

Una extensión del editor de código de fuente abierta de Microsoft, Visual Studio Code, el kit de herramientas de WebAssembly puede obtener una vista previa de los archivos binarios de WebAssembly y resaltar la sintaxis para la representación textual. El objetivo principal de la extensión es ayudar a los desarrolladores a aprender WebAssembly. Los planes requieren mejorar la depuración de errores y el resaltado de sintaxis en la extensión. La extensión es del desarrollador Dmitry Tsvettsikh.

Puede descargar el WebAssembly Toolkit for VS Code desde Visual Studio Marketplace.

Puede ver también