prima versiune , un interpretator foarte rapid al codului intermediar WebAssembly, destinat în principal utilizării pentru rularea aplicațiilor WebAssembly pe microcontrolere și platforme unde nu există o implementare JIT pentru WebAssembly, unde memoria disponibilă pentru funcționarea JIT este insuficientă sau nu este permisă crearea de pagini executabile necesare pentru implementarea JIT. Codul proiectului este scris în C și sub licența MIT.
Wasm3 trece compatibilitatea cu specificația WebAssembly 1.0 și poate fi utilizat pentru a rula multe aplicații WASI, asigurând o performanță cu doar 4-5 ori mai mică decât motoarele JIT (, ) și cu 11,5 ori mai mică decât execuția codului nativ. Comparând cu alți interpreți WebAssembly (, , ), wasm3 s-a dovedit a fi mai rapid cu 15,8 ori.
Pentru a funcționa, wasm3 necesită 64Kb de memorie pentru cod și 10Kb RAM, ceea ce permite utilizarea proiectului pentru a rula aplicații compilate în WebAssembly pe , cum ar fi 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, precum și pe plăci și computere bazate pe arhitecturi x86, x64, ARM, MIPS, RISC-V și Xtensa. Sistemele de operare acceptate includ Linux (inclusiv routere bazate pe OpenWRT), Windows, macOS, Android și iOS. De asemenea, este posibilă compilarea wasm3 în cod intermediar WebAssembly pentru rularea interpretatorului în browser sau pentru auto-găzduire.
Performanța ridicată este realizată prin utilizarea tehnicii (M3), în care pentru a reduce overhead-ul în decodarea bytecode-ului, se efectuează o traducere anticipată a bytecode-ului în operațiuni mai eficiente, generând cod pseudo-mașină, iar modelul de execuție al mașinii virtuale pe stivă este transformat într-o abordare bazată pe registre mai eficientă. Operațiile din M3 sunt funcții C, a căror argumente sunt registrele mașinii virtuale, care pot fi reflectate asupra registrelor CPU. Secvențele frecvente de operații pentru optimizare sunt transformate în operații rezumative.
apariția distribuției
WebAssembly pe web. După analizarea a 948 de mii dintre cele mai populare site-uri conform clasamentului Alexa, cercetătorii au descoperit că WebAssembly este folosit pe 1639 de site-uri (0.17%), adică pe 1 din fiecare 600 de site-uri. În total, pe site-uri au fost identificate 1950 de module WebAssembly, dintre care 150 sunt unice. În ceea ce privește domeniile de aplicare ale WebAssembly, concluziile au fost dezamăgitoare - în peste 50% din cazuri, WebAssembly a fost utilizat în scopuri dăunătoare, cum ar fi pentru mineritul de criptomonedă (55.7%) și ascunderea codului scripturilor malițioase (0.2%). Printre utilizările legitime ale WebAssembly, s-a remarcat utilizarea bibliotecilor (38.8%), crearea de jocuri (3.5%) și executarea de cod propriu, scris în alt limbaj decât JavaScript (0.9%). În 14.9% din cazuri, WebAssembly a fost folosit pentru analiza mediului pentru identificarea utilizatorului (fingerprinting).

Sursa: opennet.ro
