prvo izdanje , vrlo brzi interpreter srednjeg koda WebAssembly, prvenstveno osmišljen za pokretanje WebAssembly aplikacija na mikrokontrolerima i platformama koje nemaju JIT implementaciju za WebAssembly, nemaju dovoljno memorije za rad JIT-a ili ne dopuštaju izradu izvršnih stranica memorije potrebnih za JIT implementaciju. Kod projekta je napisan u C jeziku i pod MIT licencom.
Wasm3 prolazi na usklađenost sa specifikacijom WebAssembly 1.0 i može se koristiti za pokretanje mnogih WASI aplikacija, pružajući performanse koje su samo 4-5 puta niže od JIT motora (, ) i 11.5 puta niže od izvršavanja nativnog koda. U poređenju sa drugim interpreterima WebAssembly (, , ), wasm3 se pokazao bržim 15.8 puta.
Za rad wasm3 potrebno je 64Kb memorije za kod i 10Kb RAM-a, što omogućava primenu projekta za izvođenje WebAssembly aplikacija na , kao što su Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) i ATmega1284, kao i na pločama i računarima sa arhitekturama x86, x64, ARM, MIPS, RISC-V i Xtensa. Kao operativni sistemi podržani su Linux (uključujući rutere zasnovane na OpenWRT), Windows, macOS, Android i iOS. Takođe je moguća kompilacija wasm3 u srednji kod WebAssembly za izvođenje interpreter u pregledaču ili za ugrađeno pokretanje (self-hosting).
Visoke performanse se postižu primenom tehnike (M3), koja smanjuje troškove dekodiranja bajtkoda unapred prevodeći bajtkod u efikasnije operacije koje generišu pseudo-mašinski kod, dok se model izvršavanja stakaste virtuelne mašine transformiše u efikasniji registrički pristup. Operacije u M3 predstavljaju C funkcije, čiji su argumenti registri virtuelne mašine koji se mogu mapirati na registre CPU-a. Često korišćene sekvence operacija za optimizaciju se transformišu u sažete operacije.
Dodatno se može istaknuti rasprostranjenja
WebAssembly na webu. Analizirajući 948 tisuća najpopularnijih web stranica prema Alexa ljestvici, istraživači su otkrili da se WebAssembly koristi na 1639 stranica (0,17%), što je 1 od svakih 600 stranica. U zbiru, na stranicama je otkriveno 1950 učitavanja WebAssembly modula, od kojih je 150 jedinstvenih. Prilikom razmatranja područja primjene WebAssembly napravljeni su porazni zaključci — u više od 50% slučajeva WebAssembly se koristio u zlonamjerne svrhe, primjerice za rudarenje kriptovaluta (55,7%) i skrivanje koda zlonamjernih skripti (0,2%). Od legitimnih primjena WebAssembly, ističu se izvršavanje biblioteka (38,8%), izrada igara (3,5%) i izvršavanje vlastitog koda napisanog ne na JavaScriptu (0,9%). U 14,9% slučajeva WebAssembly se koristio za analizu okruženja radi identifikacije korisnika (fingerprinting).

Izvor: opennet.ru
