Primo rilascio di wasm3, un veloce interprete WebAssembly

A disposizione prima edizione wasm3, un interprete di codice intermedio WebAssembly molto veloce destinato principalmente all'uso nell'esecuzione di applicazioni WebAssembly su microcontrollori e piattaforme che non dispongono di un'implementazione JIT per WebAssembly, non dispongono di memoria sufficiente per eseguire JIT o non possono creare le pagine di memoria eseguibili necessarie per implementare JIT . Il codice del progetto è scritto in C e distribuito da con licenza MIT.

Wasm3 passa test compatibile con la specifica WebAssembly 1.0 e può essere utilizzato per eseguire molte applicazioni WASI, fornendo prestazioni solo 4-5 volte inferiori rispetto ai motori JIT (decollo, gru) e 11.5 volte inferiore rispetto all'esecuzione del codice nativo. Rispetto ad altri interpreti WebAssembly (WAC, life, wasm-micro-runtime), wasm3 si è rivelato 15.8 volte più veloce.

Per eseguire wasm3 sono necessari 64 KB di memoria di codice e 10 KB di RAM, che consentono di utilizzare il progetto per eseguire applicazioni compilate in WebAssembly su microcontrollori, come 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, nonché su schede e computer basati su architetture x86, x64, ARM, MIPS, RISC-V e Xtensa. I sistemi operativi supportati includono Linux (compresi i router basati su OpenWRT), Windows, macOS, Android e iOS. È anche possibile compilare wasm3 nel codice intermedio WebAssembly per eseguire l'interprete nel browser o per l'esecuzione annidata (self-hosting).

Le prestazioni elevate si ottengono attraverso l'uso della tecnologia nell'interprete Massey Meta Macchina (M3), che traduce il bytecode in operazioni di generazione di codice pseudo-macchina più efficienti per ridurre il sovraccarico di decodifica del bytecode e converte il modello di esecuzione della macchina virtuale basato su stack in un approccio più efficiente basato su registri. Le operazioni in M3 sono funzioni C i cui argomenti sono registri della macchina virtuale che possono essere mappati sui registri della CPU. Le sequenze di operazioni di ottimizzazione che si verificano frequentemente vengono convertite in operazioni di riepilogo.

Inoltre si può notare risultati della ricerca diffusione
WebAssembly sul Web. Dopo aver analizzato 948mila siti più popolari secondo le valutazioni di Alexa, i ricercatori hanno scoperto che WebAssembly viene utilizzato su 1639 siti (0.17%), vale a dire su 1 su 600 siti. In totale, sui siti sono stati scaricati 1950 moduli WebAssembly, di cui 150 unici. Considerando l'ambito di utilizzo di WebAssembly, sono state tratte conclusioni deludenti: in oltre il 50% dei casi WebAssembly è stato utilizzato per scopi dannosi, ad esempio per estrarre criptovaluta (55.7%) e nascondere il codice di script dannosi (0.2%) . Gli usi legittimi di WebAssembly includono l'esecuzione di librerie (38.8%), la creazione di giochi (3.5%) e l'esecuzione di codice personalizzato non JavaScript (0.9%). Nel 14.9% dei casi WebAssembly è stato utilizzato per analizzare l'ambiente per l'identificazione dell'utente (fingerprinting).

Primo rilascio di wasm3, un veloce interprete WebAssembly

Fonte: opennet.ru

Aggiungi un commento