Akbary et son équipe sont réunis au sein d'une entreprise du même nom, Wasmer, et estiment que la raison d'être de leur outil Wasmer est que WebAssembly est en passe de devenir un outil incontournable dans le développement.
WebAssembly (Wasm) est un format d'instruction binaire pour une machine virtuelle basée sur une pile. Wasm est conçu comme une cible de compilation portable pour les langages de programmation, permettant le déploiement sur le Web pour des applications client et serveur. Wasmer quant à lui est un runtime open source permettant d'exécuter WebAssembly sur le serveur. Selon les explications d'Akbary, il permet d'utiliser des conteneurs super-légers basés sur WebAssembly qui peuvent fonctionner n'importe où : du bureau au cloud et aux périphériques IoT, et également intégrés dans n'importe quel langage de programmation.
« Nous pensons que WebAssembly sera un élément crucial pour l'avenir de l'exécution et de la conteneurisation des logiciels (non seulement à l'intérieur du navigateur, mais aussi à l'extérieur) », a expliqué Akbary pour justifier l'utilité de son outil. Selon lui, en exploitant Wasm pour la conteneurisation de logiciels, il crée avec son équipe des binaires universels capables de fonctionner partout sans aucune modification, y compris dans des systèmes d'exploitation comme Linux, macOS, Windows, et aussi dans les navigateurs Web.
Voici, ci-dessous, les nouveautés qu’apporte la version 3.0 de Wasmer :
wasmer est désormais capable d'exécuter des paquets WAPM directement via wasmer run
Il est maintenant possible de passer n'importe quel paquet publié sur wapm.io au cli wasmer. Par exemple, wasmer run python/python téléchargera et exécutera directement le paquet python depuis le registre de paquets de wapm.io.
API et gestion de la mémoire
L'API Rust de Wasmer a été reconstruite de fond en comble. Grâce à la nouvelle API et au nouveau style de gestion de la mémoire, on peut maintenant stocker en toute sécurité les objets Wasmer dans le Store.
Les instructions de stockage sont utilisées pour stocker un nombre en mémoire. Pour les nombres entiers, il est également possible de stocker un nombre de type large comme un nombre plus étroit en mémoire, par exemple, stocker un nombre de 32 bits dans un emplacement de 8 bits (i32.store8). Si le nombre ne rentre pas dans le type de nombre plus étroit, il sera wrappé.
Dans un contexte de programmation, le terme wrapper fait référence à des programmes ou à des codes qui enveloppent littéralement d'autres composants du programme. L'un des principaux changements dans la version 3.0 est que Store possède maintenant tous les objets WebAssembly ; ainsi les exportations comme Memory sont simplement des handles vers l'objet mémoire réel dans le Store. Pour lire/écrire une telle valeur, nous aurons toujours besoin d'une référence Store.
Un nouveau MemoryView (similaire à JS) a également été introduit et wasmer-js (qui exécute Wasmer dans le navigateur avec wasm-bindgen) a été mis au même niveau de fonctionnalités que wasmer-sys (qui exécute Wasmer en natif).
Activation des valeurs multiples dans le compilateur singlepass
Le compilateur singlepass a reçu de nouvelles améliorations :
- prise en charge des fonctions à valeurs multiples ;
- amélioration de la robustesse du compilateur ;
- ajout d'un support pour les frameworks de gestion des exceptions.
Moteurs simplifiés
L’équipe de Akbary a apporté une simplification dans le fonctionnement des moteurs. Maintenant, un seul moteur est nécessaire (bien que le moteur puisse utiliser différents artefacts pour charger/stocker le code).
Akbary a fait simplifier tous les moteurs en un seul pour permettre une réutilisation plus facile du code. Wasmer utilisait auparavant le concept de différents moteurs : dylib, universal, et plus encore.
Prise en charge de la création d'exécutables pour toute plateforme
La sous-commande create-exe de Wasmer a été réorganisé permettant à Wasmer de transformer un fichier WebAssembly en un exécutable natif de Windows, Linux ou Mac OS. Cela permet de distribuer des exécutables aux utilisateurs, sans qu'ils aient à installer Wasmer eux-mêmes. Cette fonctionnalité est implémentée en plus des capacités de compilation croisée de Zig.
Source : Wasmer
Et vous ?
Que pensez-vous de Wasmer ?
Quelle amélioration vous intéresse dans la version 3.0 ?
Quelles sont vos attentes pour un tel runtime ?
Voir aussi :
L'édition 2022 du rapport sur l'état du développement de WebAssembly révèle que Rust est le langage le plus utilisé et le plus recherché et les applications Web sont le cas d'utilisation principal
Wasmer : un runtime open source pour l'exécution de WebAssembly sur un serveur, tout en prenant en charge l'API Wasm-C