Prima versione di wasm3, un interprete veloce di WebAssembly

Dispunibule prima edizione wasm3, un interprete di codice intermediu WebAssembly assai veloce destinatu principalmente à l'usu in l'esecuzione di applicazioni WebAssembly in microcontrollers è piattaforme chì ùn anu micca implementazione JIT per WebAssembly, ùn anu micca abbastanza memoria per eseguisce JIT, o ùn ponu micca creà e pagine di memoria eseguibile necessarie per implementà JIT. . U codice di u prugettu hè scrittu in C è distribuitu da sottu a licenza MIT.

Wasm3 passa testi cumpatibile cù a specificazione WebAssembly 1.0 è pò esse aduprata per eseguisce parechje applicazioni WASI, chì furnisce un rendimentu solu 4-5 volte più bassu di i motori JIT (liftoff, gru) è 11.5 volte più bassu di l'esekzione di codice nativu. Comparatu cù altri interpreti WebAssembly (wac, a vita, wasm-micro-runtime), wasm3 hè diventatu 15.8 volte più veloce.

Per eseguisce wasm3, avete bisognu di 64Kb di memoria di codice è 10Kb di RAM, chì vi permette di utilizà u prugettu per eseguisce applicazioni compilate in WebAssembly on microcontrollers, cum'è Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) è ATmega1284, è ancu nantu à schede è computer basati in architetture x86, x64, ARM, MIPS, RISC-V è Xtensa. I sistemi operativi supportati includenu Linux (inclusi i router basati in OpenWRT), Windows, macOS, Android è iOS. Hè ancu pussibule di cumpilà wasm3 in u codice intermediu WebAssembly per eseguisce l'interprete in u navigatore o per l'esekzione nidificata (self-hosting).

L'alta prestazione hè ottenuta per mezu di l'usu di a tecnulugia in l'interprete Massey Meta Machine (M3), chì traduce in avanti bytecode in operazioni di generazione di codice pseudo-macchina più efficaci per riduce l'overhead di decodificazione di bytecode, è cunverte u mudellu di esecuzione di macchina virtuale basata in stack in un approcciu più efficiente basatu in registru. L'operazioni in M3 sò funzioni C chì l'argumenti sò registri di macchina virtuale chì ponu esse mappati à i registri CPU. Sequenze frequenti di operazioni di ottimisazione sò cunvertite in operazioni di sintesi.

Inoltre, pò esse nutatu risultati di ricerca distribuzione
WebAssembly nantu à u Web. Dopu à analizà 948 mila di i siti più pupulari sicondu Alexa ratings, circadori trovu chì WebAssembly hè usatu nant'à 1639 siti (0.17%), i.e. nantu à 1 di ogni 600 siti. In totale, i moduli WebAssembly 1950 sò stati scaricati nantu à i siti, di quale 150 eranu unichi. Quandu si cunsidereghja u scopu di l'usu di WebAssembly, cunclusioni disappointing sò stati fatti - in più di 50% di i casi, WebAssembly hè stata utilizata per scopi maliziusi, per esempiu, per a minazione di criptocurrency (55.7%) è ammuccià u codice di scripts maliziusi (0.2%). . L'usi legittimi di WebAssembly includenu l'esecuzione di biblioteche (38.8%), a creazione di ghjochi (3.5%) è l'esecuzione di codice persunalizatu micca JavaScript (0.9%). In 14.9% di i casi, WebAssembly hè stata utilizata per analizà l'ambiente per l'identificazione di l'utilizatori (fingerprinting).

Prima versione di wasm3, un interprete veloce di WebAssembly

Source: opennet.ru

Add a comment