Primeira versión de wasm3, un intérprete rápido de WebAssembly

Dispoñible primeira edición wasm3, un intérprete de código intermedio de WebAssembly moi rápido destinado principalmente á execución de aplicacións WebAssembly en microcontroladores e plataformas que non teñen unha implementación JIT para WebAssembly, non teñen memoria suficiente para executar JIT ou non poden crear as páxinas de memoria executables necesarias para implementar JIT . O código do proxecto está escrito en C e distribuído por baixo a licenza MIT.

Wasm3 pasa probas compatible coa especificación WebAssembly 1.0 e pódese usar para executar moitas aplicacións WASI, proporcionando un rendemento só 4-5 veces inferior ao dos motores JIT (despegar, grúa elevadora) e 11.5 veces menor que a execución de código nativo. En comparación con outros intérpretes de WebAssembly (wac, vida, wasm-micro-runtime), wasm3 resultou ser 15.8 veces máis rápido.

Para executar wasm3, necesitas 64 Kb de memoria de código e 10 Kb de RAM, o que che permite utilizar o proxecto para executar aplicacións compiladas en WebAssembly en microcontroladores, 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) e ATmega1284, así como en placas e ordenadores baseados en arquitecturas x86, x64, ARM, MIPS, RISC-V e Xtensa. Os sistemas operativos compatibles inclúen Linux (incluíndo os enrutadores baseados en OpenWRT), Windows, macOS, Android e iOS. Tamén é posible compilar wasm3 en código intermedio de WebAssembly para executar o intérprete no navegador ou para a execución aniñada (autoaloxamento).

O alto rendemento conséguese mediante o uso da tecnoloxía no intérprete Massey Meta Machine (M3), que traduce o bytecode en operacións de xeración de código de pseudo-máquina máis eficientes para reducir a sobrecarga de decodificación de bytecode e converte o modelo de execución da máquina virtual baseado en pilas nun enfoque máis eficiente baseado en rexistros. As operacións en M3 son funcións C cuxos argumentos son rexistros de máquinas virtuais que se poden asignar a rexistros da CPU. As secuencias de operacións de optimización que se producen con frecuencia convértense en operacións de resumo.

Ademais, pódese sinalar resultados da investigación difusión
WebAssembly na web. Despois de analizar 948 mil dos sitios máis populares segundo as valoracións de Alexa, os investigadores descubriron que WebAssembly úsase en 1639 sitios (0.17%), é dicir. en 1 de cada 600 sitios. En total, descargáronse nos sitios 1950 módulos de WebAssembly, dos cales 150 eran únicos. Ao considerar o ámbito de uso de WebAssembly, obtivéronse conclusións decepcionantes: en máis do 50% dos casos, WebAssembly utilizouse con fins maliciosos, por exemplo, para minar criptomonedas (55.7%) e ocultar o código de scripts maliciosos (0.2%). . Os usos lexítimos de WebAssembly inclúen a execución de bibliotecas (38.8%), a creación de xogos (3.5%) e a execución de código personalizado non JavaScript (0.9%). No 14.9% dos casos utilizouse WebAssembly para analizar o contorno para a identificación do usuario (pegada dixital).

Primeira versión de wasm3, un intérprete rápido de WebAssembly

Fonte: opennet.ru

Engadir un comentario