Prima release di wasm3, un interprete WebAssembly veloce

È disponibile primo rilascio wasm3, un interprete molto veloce di codice intermedio WebAssembly, principalmente progettato per l'esecuzione di applicazioni WebAssembly su microcontrollori e piattaforme prive di implementazione JIT per WebAssembly, con memoria insufficiente per eseguire JIT o che non consentono la creazione di pagine di memoria eseguibili necessarie per l'implementazione di JIT. Il codice del progetto è scritto in linguaggio C e è distribuito sotto licenza MIT.

Wasm3 supera test per la compatibilità con le specifiche WebAssembly 1.0 e può essere utilizzato per eseguire molte applicazioni WASI, garantendo prestazioni solo 4-5 volte inferiori ai motori JIT (liftoff, cranelift) e 11,5 volte inferiori all'esecuzione di codice nativo. Rispetto ad altri interpreti WebAssembly (wac, life, wasm-micro-runtime), wasm3 si è rivelato più veloce di 15,8 volte.

Per eseguire wasm3 sono necessari 64Kb di memoria per il codice e 10Kb di RAM, consentendo l'esecuzione di applicazioni compile 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, oltre che su schede e computer basati su architetture x86, x64, ARM, MIPS, RISC-V e Xtensa. Sono supportati Linux (inclusi i router basati su OpenWRT), Windows, macOS, Android e iOS. È anche possibile compilare wasm3 in codice intermedio WebAssembly per eseguire l'interprete nel browser o per l'esecuzione incorporata (self-hosting).

Alte prestazioni sono raggiunte grazie all'uso nella tecnica dell'interprete Massey Meta Machine (M3), in cui per ridurre il sovraccarico della decodifica del bytecode viene eseguita una traduzione anticipata del bytecode in operazioni più efficienti, generando codice pseudo-macchina, mentre il modello di esecuzione della macchina virtuale a stack viene trasformato in un approccio basato su registri più efficiente. Le operazioni in M3 sono funzioni C, i cui argomenti sono i registri della macchina virtuale, che possono essere riflessi nei registri della CPU. Sequenze di operazioni comuni per l'ottimizzazione vengono trasformate in operazioni aggregate.

In aggiunta, si può notare risultati della ricerca distribuzione
WebAssembly nel Web. Analizzando 948 mila dei siti più popolari secondo il ranking di Alexa, i ricercatori hanno scoperto che WebAssembly è utilizzato su 1639 siti (0,17%), ovvero su 1 ogni 600 siti. In totale, sui siti sono state rilevate 1950 istanze di moduli WebAssembly, di cui 150 unici. Nella considerazione delle applicazioni di WebAssembly sono state tratte conclusioni poco incoraggianti: in oltre il 50% dei casi, WebAssembly è stato utilizzato a fini dannosi, ad esempio per il mining di criptovalute (55,7%) e per nascondere il codice di script dannosi (0,2%). Tra le applicazioni legittime di WebAssembly risultano l'esecuzione di librerie (38,8%), la creazione di giochi (3,5%) e l'esecuzione di codice personalizzato, scritto in linguaggi diversi da JavaScript (0,9%). In 14,9% dei casi, WebAssembly è stato usato per analizzare l'ambiente al fine di identificare l'utente (fingerprinting).

Prima release di wasm3, un interprete WebAssembly veloce

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster