Pierwsze wydanie wasm3, szybkiego interpretera WebAssembly

Do dyspozycji pierwsza edycja wasm3, bardzo szybki pośredni interpreter kodu WebAssembly, przeznaczony głównie do uruchamiania aplikacji WebAssembly na mikrokontrolerach i platformach, które nie mają implementacji JIT dla WebAssembly, nie mają wystarczającej ilości pamięci do uruchomienia JIT lub nie mogą utworzyć wykonywalnych stron pamięci potrzebnych do implementacji JIT . Kod projektu jest napisany w języku C i dystrybuowane przez na licencji MIT.

Wasm3 przechodzi testy kompatybilny ze 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 (start, dźwig) i 11.5 razy niższe niż wykonanie kodu natywnego. W porównaniu z innymi interpreterami WebAssembly (wac, życie, wasm-micro-runtime), wasm3 okazał się 15.8 razy szybszy.

Do uruchomienia wasm3 potrzebne są 64Kb pamięci kodowej i 10Kb RAM-u, co pozwala na wykorzystanie projektu do uruchamiania aplikacji skompilowanych w WebAssembly na mikrokontrolery, takie 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. Obsługiwane systemy operacyjne obejmują Linux (w tym routery oparte na OpenWRT), Windows, macOS, Android i iOS. Możliwe jest również skompilowanie wasm3 do kodu pośredniego WebAssembly w celu uruchomienia interpretera w przeglądarce lub do wykonania zagnieżdżonego (samodzielny hosting).

Wysoka wydajność została osiągnięta dzięki zastosowaniu technologii w tłumaczu Meta-maszyna Massey (M3), który tłumaczy kod bajtowy w przód na bardziej wydajne operacje generowania kodu pseudomaszynowego, aby zmniejszyć narzut związany z dekodowaniem kodu bajtowego, i konwertuje model wykonania maszyny wirtualnej oparty na stosie na bardziej wydajne podejście oparte na rejestrach. Operacje w M3 to funkcje C, których argumentami są rejestry maszyny wirtualnej, które można odwzorować na rejestry procesora. Często występujące sekwencje operacji optymalizacyjnych są przekształcane w operacje podsumowujące.

Dodatkowo można to zauważyć winiki wyszukiwania rozpościerający się
Zespół WebAssembly w sieci Web. Po przeanalizowaniu 948 tys. najpopularniejszych witryn według ocen Alexa badacze ustalili, że WebAssembly jest wykorzystywane w 1639 witrynach (0.17%), tj. w 1 na 600 witryn. W sumie na stronach pobrano 1950 modułów WebAssembly, z czego 150 było unikalnych. Rozważając zakres wykorzystania WebAssembly wyciągnięto rozczarowujące wnioski – w ponad 50% przypadków WebAssembly zostało wykorzystane do szkodliwych celów, np. do wydobywania kryptowaluty (55.7%) i ukrywania kodu złośliwych skryptów (0.2%) . Do legalnych zastosowań WebAssembly zalicza się uruchamianie bibliotek (38.8%), tworzenie gier (3.5%) i uruchamianie niestandardowego kodu innego niż JavaScript (0.9%). W 14.9% przypadków do analizy środowiska pod kątem identyfikacji użytkownika (odcisków palców) wykorzystano WebAssembly.

Pierwsze wydanie wasm3, szybkiego interpretera WebAssembly

Źródło: opennet.ru

Dodaj komentarz