Première version de wasm3, un interpréteur WebAssembly rapide

Disponible première édition wasm3, un interpréteur de code intermédiaire WebAssembly très rapide principalement destiné à être utilisé pour exécuter des applications WebAssembly sur des microcontrôleurs et des plates-formes qui n'ont pas d'implémentation JIT pour WebAssembly, n'ont pas suffisamment de mémoire pour exécuter JIT ou ne peuvent pas créer les pages de mémoire exécutables nécessaires à l'implémentation de JIT. . Le code du projet est écrit en C et distribué par sous licence MIT.

Wasm3 passe Tests compatible avec la spécification WebAssembly 1.0 et peut être utilisé pour exécuter de nombreuses applications WASI, offrant des performances seulement 4 à 5 fois inférieures à celles des moteurs JIT (décollage, grue) et 11.5 fois inférieur à l'exécution de code natif. Par rapport aux autres interpréteurs WebAssembly (wac, life, wasm-micro-runtime), wasm3 s'est avéré 15.8 fois plus rapide.

Pour exécuter wasm3, vous avez besoin de 64 Ko de mémoire de code et de 10 Ko de RAM, ce qui vous permet d'utiliser le projet pour exécuter des applications compilées dans WebAssembly sur microcontrôleurs, tels que Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) et ATmega1284, ainsi que sur des cartes et ordinateurs basés sur les architectures x86, x64, ARM, MIPS, RISC-V et Xtensa. Les systèmes d'exploitation pris en charge incluent Linux (y compris les routeurs basés sur OpenWRT), Windows, macOS, Android et iOS. Il est également possible de compiler wasm3 en code intermédiaire WebAssembly pour exécuter l'interpréteur dans le navigateur ou pour une exécution imbriquée (auto-hébergement).

Des performances élevées sont obtenues grâce à l'utilisation de la technologie dans l'interprète Métamachine Massey (M3), qui traduit le bytecode en opérations de génération de code pseudo-machine plus efficaces pour réduire la surcharge de décodage du bytecode, et convertit le modèle d'exécution de machine virtuelle basé sur la pile en une approche plus efficace basée sur les registres. Les opérations dans M3 sont des fonctions C dont les arguments sont des registres de machine virtuelle qui peuvent être mappés sur des registres CPU. Des séquences fréquentes d'opérations d'optimisation sont converties en opérations récapitulatives.

De plus, on peut noter Résultats de recherche diffusion
WebAssembly sur le Web. Après avoir analysé 948 1639 sites parmi les plus populaires selon les évaluations Alexa, les chercheurs ont découvert que WebAssembly est utilisé sur 0.17 1 sites (600 %), soit sur 1950 site sur 150. Au total, 50 modules WebAssembly ont été téléchargés sur les sites, dont 55.7 uniques. Lorsque l'on considère le champ d'application de WebAssembly, des conclusions décevantes ont été tirées - dans plus de 0.2 % des cas, WebAssembly a été utilisé à des fins malveillantes, par exemple pour extraire de la crypto-monnaie (38.8 %) et cacher le code de scripts malveillants (3.5 %). . Les utilisations légitimes de WebAssembly incluent l'exécution de bibliothèques (0.9 %), la création de jeux (14.9 %) et l'exécution de code personnalisé non JavaScript (XNUMX %). Dans XNUMX % des cas, WebAssembly a été utilisé pour analyser l'environnement pour l'identification des utilisateurs (empreintes digitales).

Première version de wasm3, un interpréteur WebAssembly rapide

Source: opennet.ru

Ajouter un commentaire