Pierwsze wydanie wasm3, szybkiego interpretera WebAssembly

Dostępny pierwsza wersja wasm3, bardzo szybkiego interpretera pośredniego kodu WebAssembly, przeznaczonego głównie do uruchamiania aplikacji WebAssembly na mikrokontrolerach i platformach, które nie mają implementacji JIT dla WebAssembly, mają zbyt mało pamięci do działania JIT lub nie dopuszczają tworzenia stron pamięci wykonawczej potrzebnych do realizacji JIT. Kod projektu jest napisany w języku C i rozpowszechniany na licencji MIT.

Wasm3 jest zgodny testy z specyfikacją WebAssembly 1.0 i może być używany do uruchamiania wielu aplikacji WASI, zapewniając wydajność tylko 4-5 razy niższą niż silniki JIT (liftoff, cranelift) i 11.5 razy niższą w porównaniu do wykonania kodu natywnego. W porównaniu do innych interpreterów WebAssembly (wac, life, wasm-micro-runtime), wasm3 okazał się 15.8 razy szybszy.

Aby działać, wasm3 wymaga 64KB pamięci na kod i 10KB RAM-u, co pozwala na wykorzystanie projektu do uruchamiania aplikacji skompilowanych w WebAssembly na mikrokontrolerach, takich jak 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, a także na płytach i komputerach opartych na architekturach x86, x64, ARM, MIPS, RISC-V i Xtensa. Wsparcie oferują systemy operacyjne takie jak Linux (w tym routery oparte na OpenWRT), Windows, macOS, Android i iOS. Możliwa jest również kompilacja wasm3 do pośredniego kodu WebAssembly w celu uruchomienia interpretera w przeglądarce lub do lokalnego uruchamiania (self-hosting).

Wysoka wydajność osiągana jest dzięki zastosowaniu w interpreterze techniki Massey Meta Machine (M3), w której w celu zmniejszenia narzutu na dekodowanie bajtkodów wykonywana jest wstępna translacja bajtkodów na bardziej efektywne operacje, generujące pseudomaszynowy kod, natomiast model wykonawczy stosowej maszyny wirtualnej jest przekształcany w bardziej efektywny model rejestrowy. Operacje w M3 są funkcjami C, których argumentami są rejestry wirtualnej maszyny, które mogą być odwzorowane na rejestry CPU. Często występujące sekwencje operacji optymalizowane są do złożonych operacji.

Dodatkowo można zaznaczyć wyniki badania rozpowszechnienia
WebAssembly w sieci. Analizując 948 tysięcy najpopularniejszych stron w rankingu Alexa, badacze odkryli, że WebAssembly jest używane na 1639 stronach (0,17%), co oznacza 1 na każdą 600 stron. Na stronach zidentyfikowano 1950 modułów WebAssembly, z których 150 jest unikalnych. Przy rozważaniu zastosowania WebAssembly, wyniki były niepokojące — w ponad 50% przypadków WebAssembly było stosowane w celach złośliwych, na przykład do kopania kryptowalut (55,7%) i ukrywania kodu złośliwych skryptów (0,2%). Z legalnych zastosowań WebAssembly odnotowano wykonywanie bibliotek (38,8%), tworzenie gier (3,5%) i wykonanie własnego kodu, napisanego w innym języku niż JavaScript (0,9%). W 14,9% przypadków WebAssembly było stosowane do analizy otoczenia w celu identyfikacji użytkownika (fingerprinting).

Pierwsze wydanie wasm3, szybkiego interpretera WebAssembly

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster