wasm3, un interpréteur WebAssembly sort sa première version

W3

Récemment, la première version de wasm3 est sortie, qui est un interprète très rapide de code intermédiaire par WebAssemblyIl est principalement conçu pour exécuter des applications WebAssembly sur des microcontrôleurs et des plates-formes pour lesquels il n'y a pas d'implémentation JIT pour WebAssembly, il n'y a pas assez de mémoire pour que JIT fonctionne ou la création de pages de mémoire exécutables requises pour l'implémentation JIT.

Pour ceux qui ne connaissent pas WebAssembly, sachez que c'est un langage de bas niveau, initialement conçu comme format cible lors de la compilation à partir de C et C ++, bien qu'il prenne également en charge le code source pour d'autres langages, tels que Rust et Go. Ce format de code binaire portable est utilisé pour l'exécution complète des scripts à partir du navigateur côté client.

À propos de wasm3

Wasm3 passe les tests de compatibilité avec la spécification WebAssembly 1.0 et peut être utilisé pour exécuter de nombreuses applications WASI, fournissant seulement 4 à 5 fois moins de performances que les moteurs JIT et 11.5 fois moins que l'exécution de code natif.

Comparé à d'autres artistes depuis WebAssembly (wac, life, wasm-micro-runtime), wasm3 était 15.8 fois plus rapide.

Wasm3 a commencé comme un projet de recherche et continue de l'être par de nombreux moyens. L'évaluation du moteur dans différents environnements fait partie de l'enquête. Puisque nous avons Lua, JS, Python, Lisp, (…) fonctionnant sur MCU, WebAssembly est en fait une alternative prometteuse. Il fournit un environnement complètement isolé, bien défini et prévisible. Parmi les cas d'utilisation pratiques, nous pouvons lister l'informatique de pointe, les scripts, l'exécution de règles IoT, les contrats blockchain, etc.

wasm3 nécessite 64 Ko de mémoire pour le code et 10 Ko de RAM, qu'est-ce que tu permet d'utiliser le projet pour exécuter des applications compilées dans WebAssembly dans des microcontrôleurs comme Arduino MKR *, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166), Maix (K210), HiFive1 (E310), AT40ga5 (ICE1284) , ainsi que sur des cartes et des ordinateurs basés sur des architectures x86, x64, ARM, MIPS, RISC-V et Xtens.

La haute performance est obtenue en utilisant la technique Massey Meta Machine (M3) dans l'interpréteur, dans lequel, pour réduire la surcharge de décodage du bytecode, le bytecode est traduit de manière proactive dans des opérations plus efficaces qui génèrent du code pseudo-machine et le modèle d'exécution de la machine virtuelle empilée devient une approche de registre plus efficace les opérations dans M3 sont des fonctions C, dont les arguments sont les registres de la machine virtuelle, qui peuvent être reflétés dans les registres CPU.

Les flux de travail fréquents pour l'optimisation se transforment en opérations récapitulatives.

En outre, Les résultats de l'étude peuvent être observés sur WebAssembly sur le Web, après avoir analysé 948 des sites les plus populaires notés par Alexa, les chercheurs ont constaté que WebAssembly est utilisé par 1639 0.17 sites (1%), soit 600 site sur XNUMX.

Au total, les sites Web ont révélé la charge de 1950 modules WebAssembly, dont 150 sont uniques.

En considérant la portée de WebAssembly, des conclusions décevantes ont été tirées: dans plus de 50% des cas, WebAssembly a été utilisé à des fins malveillantes, par exemple pour extraire des crypto-monnaies (55,7%) et pour cacher du code aux scripts malveillants (0,2 , XNUMX%).

Des systèmes d'exploitation pris en charge pour Wasm3, on peut trouver Linux y compris les routeurs basés sur OpenWRT, Windows, macOS, Android et iOS. Il était également possible de compiler wasm3 dans le code WebAssembly intermédiaire pour exécuter l'interpréteur dans un navigateur ou pour l'auto-hébergement.

Parmi les utilisations légitimes de WebAssembly, l'exécution de bibliothèques (38.8%), la création de jeux (3.5%) et l'exécution de code natif non JavaScript (0.9%) ont été observées. Dans 14,9% des cas, WebAssembly a été utilisé pour analyser l'environnement d'identification des utilisateurs (empreintes digitales).

Essayez wasm3

Pour ceux qui souhaitent pouvoir utiliser cet interpréteur dans leur système, peut consulter la documentation ainsi que le code du projet qui est écrit en C et distribué sous licence MIT, dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.