Erste Veröffentlichung von wasm3, einem schnellen WebAssembly-Interpreter

Verfügbar erstes Mal wasm3, ein sehr schneller WebAssembly-Zwischencode-Interpreter, der in erster Linie für die Ausführung von WebAssembly-Anwendungen auf Mikrocontrollern und Plattformen gedacht ist, die keine JIT-Implementierung für WebAssembly haben, nicht über genügend Speicher zum Ausführen von JIT verfügen oder nicht die ausführbaren Speicherseiten erstellen können, die für die Implementierung von JIT erforderlich sind . Der Projektcode ist in C geschrieben und vertrieben von unter der MIT-Lizenz.

Wasm3 besteht Tests kompatibel mit der WebAssembly 1.0-Spezifikation und kann zum Ausführen vieler WASI-Anwendungen verwendet werden, wobei die Leistung nur 4–5 Mal geringer ist als bei JIT-Engines (abheben, Kranlift) und 11.5-mal niedriger als die Ausführung nativen Codes. Im Vergleich zu anderen WebAssembly-Interpretern (wac, life, wasm-micro-runtime), erwies sich wasm3 als 15.8-mal schneller.

Um wasm3 auszuführen, benötigen Sie 64 KB Codespeicher und 10 KB RAM, sodass Sie das Projekt zum Ausführen von in WebAssembly kompilierten Anwendungen verwenden können Mikrocontroller, 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 basierend auf x86-, x64-, ARM-, MIPS-, RISC-V- und Xtensa-Architekturen. Zu den unterstützten Betriebssystemen gehören Linux (einschließlich Router auf Basis von OpenWRT), Windows, macOS, Android und iOS. Es ist auch möglich, wasm3 in WebAssembly-Zwischencode zu kompilieren, um den Interpreter im Browser auszuführen oder für eine verschachtelte Ausführung (Selbsthosting).

Durch den Einsatz von Technologie im Dolmetscher wird eine hohe Leistung erreicht Massey Meta-Maschine (M3), das Bytecode in effizientere Operationen zur Generierung von Pseudomaschinencode vorwärtsübersetzt, um den Overhead bei der Bytecode-Dekodierung zu reduzieren, und das stapelbasierte Ausführungsmodell der virtuellen Maschine in einen effizienteren registerbasierten Ansatz umwandelt. Operationen in M3 sind C-Funktionen, deren Argumente virtuelle Maschinenregister sind, die CPU-Registern zugeordnet werden können. Häufig vorkommende Sequenzen von Optimierungsoperationen werden in Zusammenfassungsoperationen umgewandelt.

Darüber hinaus kann darauf hingewiesen werden Forschungsergebnisse Verbreitung
WebAssembly im Web. Nach der Analyse von 948 der laut Alexa-Bewertungen beliebtesten Websites stellten die Forscher fest, dass WebAssembly auf 1639 Websites (0.17 %) verwendet wird, d. h. auf einer von 1 Websites. Insgesamt wurden 600 WebAssembly-Module auf die Websites heruntergeladen, von denen 1950 einzigartig waren. Bei der Betrachtung des Einsatzbereichs von WebAssembly wurden enttäuschende Schlussfolgerungen gezogen – in mehr als 150 % der Fälle wurde WebAssembly für böswillige Zwecke verwendet, beispielsweise zum Mining von Kryptowährungen (50 %) und zum Verstecken des Codes bösartiger Skripte (55.7 %). . Zu den legitimen Verwendungszwecken von WebAssembly gehören das Ausführen von Bibliotheken (0.2 %), das Erstellen von Spielen (38.8 %) und das Ausführen von benutzerdefiniertem Nicht-JavaScript-Code (3.5 %). In 0.9 % der Fälle wurde WebAssembly zur Analyse der Umgebung zur Benutzeridentifizierung (Fingerprinting) eingesetzt.

Erste Veröffentlichung von wasm3, einem schnellen WebAssembly-Interpreter

Source: opennet.ru

Kommentar hinzufügen