Hola a todos! Conectamos TestMace y seguimos familiarizándote con las últimas noticias del mundo de JavaScript. El siguiente paso es la traducción de un artículo sobre WASI, una tecnología que permite usar WebAssembly fuera de los navegadores.

Mozilla introdujo un proyecto llamado WASI (Interfaz del sistema WebAssembly) esta semana para estandarizar cómo el código de WebAssembly interactúa con el sistema operativo. Si el proyecto tiene éxito, realizará las mismas funciones que la máquina virtual Oracle Java, pero de manera mucho más eficiente y con funcionalidad avanzada.
WebAssembly (WASM) es un formato de instrucciones binarias para una máquina virtual que puede ejecutarse en varias arquitecturas de hardware. El código escrito en muchos lenguajes como C / C ++, Go, Rust puede compilarse en código WASM.
Muchos navegadores web han introducido soporte para WebAssembly, pero hasta este punto no había un estándar para trabajar con él fuera del navegador. Y ahora estaba WASI.
"Debe haber una forma de que el código interactúe con el sistema fuera del navegador, es decir, una interfaz del sistema", dijo el desarrollador de Mozilla, Lin Clark, en esta publicación de blog de Mozilla Hacks. "La plataforma WebAssembly todavía no tiene dicho método".
WASM + WASI
Usando WASI, el código WASM puede ejecutarse en un navegador o en cualquier otro entorno compatible, lo que proporciona un desarrollo multiplataforma independiente del lenguaje. Si bien la interfaz del sistema operativo portátil (POSIX) tiene como objetivo garantizar la portabilidad del código fuente del programa entre sistemas operativos tipo UNIX, WASI está diseñado para admitir la compatibilidad de archivos binarios compilados en diferentes dispositivos y sistemas operativos. El estándar proporciona un tiempo de ejecución universal, cuya velocidad es cercana a la nativa.
La máquina virtual Java (JVM) hace lo mismo, pero se requiere un complemento para ejecutar el código Java en el navegador. Aunque la flexibilidad del lenguaje, como la plataforma WebAssembly propuesta, se puede lograr en Java usando GraalVM , el ecosistema de Java todavía está en segundo plano debido a eventos relacionados con las reclamaciones de Oracle de infracción de su propiedad intelectual.
El formato WASM, que proporciona un acceso seguro a la memoria y una validación conveniente, tiene una ventaja sobre los applets de Java en términos de seguridad, aunque puede atacarse para cambiar el flujo de control inicial del programa . También se lleva bien con C / C ++ y Rust.
El líder del equipo de WebAssembly de Mozilla, Till Schneider, explica la diferencia entre WebAssembly y Java en Twitter de la siguiente manera: "WebAssembly fue diseñado para escalar desde dispositivos en miniatura a grandes grupos de servidores o CDN. El formato es mucho más independiente del lenguaje que Java, y la implementación requiere mucho menos recursos ".
Si las ventajas potenciales de WASI aún no son obvias para usted, esto es lo que uno de los creadores de Docker Solomon Hykes dijo sobre él: “Si WASM + WASI existiera en 2008, no se nos habría ocurrido crear Docker. WebAssembly del lado del servidor es el futuro para eso Computación. Nos faltaba una interfaz de sistema estandarizada. ¡Espero que WASI resuelva este problema! "
En esta ola de optimismo, Fastly lanzó el jueves Lucet , el compilador nativo y el entorno para ejecutar el código WASM de WebAssembly en entornos de nube. Complementa Mozilla Wasmtime, un entorno de tiempo de ejecución de código WASM fuera del navegador.
Por supuesto, WASI aún está lejos de ser ideal. WebAssembly también sería bueno para refinar aún más, por ejemplo, agregar la capacidad de acceder al navegador DOM . Aunque los desarrolladores ya han hecho un excelente trabajo al proporcionar un único formato binario independiente de la plataforma. Mientras tanto, le deseo una experiencia exitosa con Java.