Die erste Ausgabe von wasm3, einem schnellen WebAssembly-Interpreter

Verfügbar erste Ausgabe wasm3, einem sehr schnellen Interpreter für intermediären WebAssembly-Code, der hauptsächlich für die Ausführung von WebAssembly-Anwendungen auf Mikrocontrollern und Plattformen konzipiert ist, für die es keine JIT-Implementierung für WebAssembly gibt, nicht genügend Speicher für JIT-Betrieb vorhanden ist oder die Erstellung ausführbarer Speicherseiten, die für die JIT-Implementierung erforderlich sind, nicht zulässig ist. Der Quellcode des Projekts ist in C geschrieben und wird verbreitet unterliegt der MIT-Lizenz.

wird Tests auf Kompatibilität mit der WebAssembly 1.0-Spezifikation durchgeführt und kann für die Ausführung vieler WASI-Anwendungen verwendet werden, mit einer Leistung, die nur 4-5 Mal langsamer ist als JIT-Engines (liftoff, cranelift) und 11,5 Mal langsamer als die Ausführung von nativen Code. Im Vergleich zu anderen WebAssembly-Interpretern (wac, life, wasm-micro-runtime) hat sich wasm3 als 15,8 Mal schneller erwiesen.

Für den Betrieb von wasm3 sind 64 kb Speicher für Code und 10 kb RAM erforderlich, was es ermöglicht, das Projekt für die Ausführung von in WebAssembly kompilierten Anwendungen auf Mikrocontrollern, wie Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) und ATmega1284 sowie auf Boards und Computern, die auf den Architekturen x86, x64, ARM, MIPS, RISC-V und Xtensa basieren. Unterstützte Betriebssysteme sind Linux (einschließlich Router auf Basis von OpenWRT), Windows, macOS, Android und iOS. Auch die Kompilierung von wasm3 in intermediären WebAssembly-Code zur Ausführung des Interpreters im Browser oder zur selbstständigen Ausführung (self-hosting) ist möglich.

Die hohe Leistung wird durch die Anwendung der Technik Massey Meta Machine (M3) erreicht, bei der zur Reduzierung der Dekodierungskosten von Bytecode eine vorausschauende Übersetzung von Bytecode in effizientere Operationen erfolgt, die Pseudo-Maschinencode generieren, während das Ausführungsmodell der Stack-basierten virtuellen Maschine in einen effizienteren Registeransatz umgewandelt wird. Die Operationen in M3 stellen C-Funktionen dar, deren Argumente Register der virtuellen Maschine sind, die in CPU-Register abgebildet werden können. Häufig vorkommende Folgeoperationen zur Optimierung werden in zusammengefasste Operationen umgewandelt.

Zusätzlich kann vermerkt werden Ergebnisse der Untersuchung der Verbreitung
WebAssembly im Web. Nach der Analyse von 948.000 der beliebtesten Websites im Alexa-Ranking haben Forscher herausgefunden, dass WebAssembly auf 1639 Websites (0,17 %) verwendet wird, d.h. auf 1 von 600 Websites. Insgesamt wurden auf diesen Websites 1950 WebAssembly-Module geladen, von denen 150 einzigartig sind. Bei der Betrachtung der Anwendungsbereiche von WebAssembly wurden ernüchternde Schlussfolgerungen gezogen – in über 50 % der Fälle wurde WebAssembly zu schädlichen Zwecken eingesetzt, beispielsweise um Kryptowährungen zu schürfen (55,7 %) und um den Code schädlicher Skripte zu verbergen (0,2 %). Zu den legitimen Anwendungen von WebAssembly gehören das Ausführen von Bibliotheken (38,8 %), das Erstellen von Spielen (3,5 %) und das Ausführen eigener, nicht in JavaScript geschriebener Codes (0,9 %). In 14,9 % der Fälle wurde WebAssembly zur Analyse der Umgebung zur Identifizierung von Benutzerprofilen (Fingerprinting) eingesetzt.

Die erste Ausgabe von wasm3, einem schnellen WebAssembly-Interpreter

Quelle: opennet.ru

60GB SSD 8Gb DDR4