lanzamiento , un intérprete de código intermedio WebAssembly muy rápido, principalmente diseñado para ejecutar aplicaciones WebAssembly en microcontroladores y plataformas donde no hay implementación JIT para WebAssembly, donde hay memoria insuficiente para ejecutar JIT, o donde no se permite crear páginas de memoria ejecutables necesarias para implementar JIT. El código del proyecto está escrito en C y bajo licencia MIT.
Wasm3 pasa de compatibilidad con la especificación WebAssembly 1.0 y se puede utilizar para ejecutar muchas aplicaciones WASI, ofreciendo un rendimiento solo 4-5 veces inferior al de motores JIT (, ) y 11.5 veces más lento que la ejecución de código nativo. En comparación con otros intérpretes de WebAssembly (, , ), wasm3 demostró ser 15.8 veces más rápido.
Para ejecutar wasm3 se requieren 64Kb de memoria para el código y 10Kb de RAM, lo que permite usar el proyecto para ejecutar aplicaciones compiladas en WebAssembly en , como Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) y ATmega1284, así como en placas y computadoras basadas en arquitecturas x86, x64, ARM, MIPS, RISC-V y Xtensa. Se admiten sistemas operativos como Linux (incluidos enrutadores basados en OpenWRT), Windows, macOS, Android e iOS. También se puede compilar wasm3 a código intermedio de WebAssembly para ejecutar el intérprete en el navegador o para ejecución embebida (self-hosting).
El alto rendimiento se logra gracias al uso en el intérprete de la técnica (M3), en la que se realiza una traducción anticipada del bytecode en operaciones más eficientes que generan código máquina pseudo, y el modelo de ejecución de la máquina virtual de pila se transforma en un enfoque más eficiente basado en registros. Las operaciones en M3 son funciones de C, cuyos argumentos son registros de la máquina virtual que pueden reflejarse en los registros de la CPU. Las secuencias de operaciones que ocurren con frecuencia se optimizan convirtiéndolas en operaciones resumidas.
También se puede destacar distribución
WebAssembly en la web. Después de analizar 948 mil de los sitios más populares según el ranking de Alexa, los investigadores descubrieron que WebAssembly se utiliza en 1639 sitios (0.17%), es decir, en 1 de cada 600 sitios. En total, se identificaron 1950 módulos de WebAssembly en los sitios, de los cuales 150 son únicos. Al considerar el ámbito de aplicación de WebAssembly, se llegaron a conclusiones preocupantes: en más del 50% de los casos, WebAssembly se utilizó con fines maliciosos, como el minado de criptomonedas (55.7%) y la ocultación de código de scripts maliciosos (0.2%). Entre las aplicaciones legítimas de WebAssembly se mencionan la ejecución de bibliotecas (38.8%), la creación de juegos (3.5%) y la ejecución de código propio, escrito fuera de JavaScript (0.9%). En el 14.9% de los casos, WebAssembly se utilizó para el análisis del entorno con el fin de identificar al usuario (fingerprinting).

Fuente: opennet.ru
