eerste uitgave , een uiterst snelle interpreter van tussenliggende WebAssembly-code, voornamelijk ontworpen voor gebruik bij het uitvoeren van WebAssembly-applicaties op microcontrollers en platforms waarvoor geen JIT-implementatie voor WebAssembly beschikbaar is, of waarvoor onvoldoende geheugen is om JIT te laten functioneren, of waarbij het creƫren van uitvoeringspagina's voor geheugen, die nodig zijn voor de implementatie van JIT, niet is toegestaan. De code van het project is geschreven in C en valt onder de MIT-licentie.
Wasm3 ondergaat op compatibiliteit met de WebAssembly 1.0 specificatie en kan worden gebruikt voor het uitvoeren van veel WASI-applicaties, met een performance die slechts 4-5 keer lager ligt dan die van JIT-engines (, ) en 11,5 keer lager dan de uitvoering van native code. In vergelijking met andere WebAssembly-interpreters (, , ) bleek wasm3 15,8 keer sneller te zijn.
Voor wasm3 is 64Kb geheugen voor code en 10Kb RAM nodig, wat het mogelijk maakt om het project uit te voeren voor gecompileerde WebAssembly-applicaties op , zoals Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) en ATmega1284, evenals op borden en computers gebaseerd op x86-architecturen, x64, ARM, MIPS, RISC-V en Xtensa. Ondersteunde besturingssystemen zijn Linux (inclusief routers gebaseerd op OpenWRT), Windows, macOS, Android en iOS. Compilatie van wasm3 naar tussenliggende WebAssembly-code voor uitvoering in de browser of voor genestde uitvoering (self-hosting) is ook mogelijk.
Hoge prestaties worden bereikt door het gebruik van technieken in de interpreter zoals (M3), waarin het dekoden van bytecode wordt versneld door voorspellende vertaling van bytecode naar efficiƫntere operaties die pseudo-machinecode genereren, en het uitvoeringsmodel van de stack-gebaseerde virtual machine wordt omgevormd naar een efficiƫntere register-gebaseerde aanpak. De operaties in M3 zijn C-functies, waarbij de argumenten de registers van de virtuele machine zijn die kunnen worden weergegeven in de CPU-registers. Vaak voorkomende reeksen van operaties voor optimalisatie worden omgevormd tot samengevoegde operaties.
Daarnaast kan worden vermeld verspreiding
WebAssembly in het web. Na het analyseren van 948.000 van de populairste websites volgens de Alexa-ranglijst, ontdekten onderzoekers dat WebAssembly wordt gebruikt op 1.639 websites (0,17%), oftewel op 1 van elke 600 websites. In totaal werden er 1.950 WebAssembly-modules op websites gedetecteerd, waarvan 150 uniek zijn. Bij het bekijken van de toepassingen van WebAssembly werden teleurstellende conclusies getrokken ā in meer dan 50% van de gevallen werd WebAssembly gebruikt voor kwaadaardige doeleinden, bijvoorbeeld voor het minen van cryptocurrency (55,7%) en het verbergen van de code van kwaadwillende scripts (0,2%). Van de legitieme toepassingen van WebAssembly werd het uitvoeren van bibliotheken opgemerkt (38,8%), het creĆ«ren van games (3,5%) en het uitvoeren van eigen code die niet in JavaScript is geschreven (0,9%). In 14,9% van de gevallen werd WebAssembly gebruikt voor omgevingsanalyse ter identificatie van de gebruiker (fingerprinting).

Bron: opennet.ru
