Primo rilascio di wasm3, un veloce interprete WebAssembly

Disponibile il primo rilascio wasm3, un interprete molto veloce per il codice intermedio WebAssembly, progettato principalmente per eseguire applicazioni WebAssembly su microcontrollori e piattaforme che non hanno una implementazione JIT di WebAssembly, hanno memoria insufficiente per il funzionamento del JIT o non consentono la creazione di pagine di memoria eseguibili necessarie per implementare il JIT. Il codice del progetto è scritto in C e distribuito sotto licenza MIT.

Wasm3 garantisce test la compatibilità con la specifica WebAssembly 1.0 e può essere utilizzato per eseguire molte applicazioni WASI, offrendo 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 funzionare, wasm3 richiede 64Kb di memoria per il codice e 10Kb di RAM, il che consente di applicare il progetto per l'esecuzione di 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, oltre che su schede e computer basati su architetture x86, x64, ARM, MIPS, RISC-V e Xtensa. Le seguenti versioni di sistemi operativi sono supportate: Linux (compresi i router basati su OpenWRT), Windows, macOS, Android e iOS. È anche possibile compilare wasm3 in codice intermedio WebAssembly per eseguire l'interprete in un browser o per un'auto-esecuzione (self-hosting).

Le alte prestazioni sono ottenute grazie all'uso della tecnica nell'interprete Massey Meta Machine (M3), dove la traduzione anticipata del bytecode in operazioni più efficienti che generano codice pseudo-macchina è eseguita per ridurre l'overhead della decodifica. Il modello di esecuzione della macchina virtuale a stack viene convertito in un approccio basato su registri più efficiente. Le operazioni in M3 sono funzioni C, i cui argomenti sono i registri della macchina virtuale, riflettibili ai registri della CPU. Sequenze frequenti di operazioni vengono ottimizzate in operazioni aggregate.

Inoltre, si può notare i risultati di uno studio distribuzione
WebAssembly nel Web. Analizzando 948 mila dei siti più popolari secondo il ranking Alexa, i ricercatori hanno scoperto che WebAssembly è utilizzato su 1639 siti (0.17%), ovvero 1 su ogni 600 siti. In totale, nei siti è stata rilevata il caricamento di 1950 moduli WebAssembly, dei quali 150 unici. Analizzando l'area di applicazione di WebAssembly, sono state fatte conclusioni poco confortanti: in oltre il 50% dei casi, WebAssembly è stato utilizzato per scopi malevoli, ad esempio per il mining di criptovalute (55.7%) e per nascondere il codice di script dannosi (0.2%). Tra gli usi legittimi, sono state registrate l'esecuzione di librerie (38.8%), la creazione di giochi (3.5%) e l'esecuzione di codice personalizzato non scritto in JavaScript (0.9%). Nel 14.9% dei casi, WebAssembly è stato utilizzato per l'analisi dell'ambiente per identificare l'utente (fingerprinting).

Primo rilascio di wasm3, un veloce interprete WebAssembly

Fonte: opennet.ru

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