Syrus Akbary, un développeur open source, et son équipe ont publié ce mois la version 1.0 de Wasmer, un runtime WebAssembly (Wasm) côté serveur capable d'exécuter Nginx. Cette version de l'outil, en développement depuis 2018, comprend de nouvelles fonctionnalités, notamment : une meilleure gestion des erreurs, une API plus puissante, la compilation croisée, et bien plus encore. 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.Qu'est-ce que Wasmer et quel est son utilité pour les développeurs ?
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.
Il poursuit en disant que Wasm met automatiquement les applications en bac à sable par défaut pour une exécution sécurisée, protégeant ainsi l'environnement hôte contre les codes malveillants, les bogues et les vulnérabilités des logiciels qu'il exécute. Wasm fournit également un environnement d'exécution allégé permettant aux conteneurs Wasmer de fonctionner dans des endroits où les conteneurs Docker sont trop lourds pour fonctionner. Après deux ans de développement, la première version stable de l'outil est disponible, Wasmer 1.0, avec en vedette les améliorations, changements et apports suivants :
- une performance prête à la production ;
- une infrastructure enfichable ;
- Native Object Engine ;
- Headless Wasmer (idéal pour l'IdO) ;
- la compilation croisée ;
- une API super facile à utiliser et extensible ;
- la prise en charge de Wasm-C-API ;
- le traitement des erreurs et débogage.
Benchmark de performance
Selon Akbary, le benchmark de performance de Wasmer 1.0 nécessite un poste autonome. Une analyse complète de Wasmer par rapport aux autres exécutions de Wasm est en cours pour vous permettre de comparer et de choisir ce qui convient le mieux à votre projet. Néanmoins, pour vous donner un aperçu, Akbary a partagé certains chiffres recensés lors de son analyse. Il estime que Wasmer 1.0 propose des vitesses de compilation jusqu'à 9x plus rapide que les versions précédentes. « Tous nos compilateurs compilent maintenant les fonctions en parallèle », a-t-il déclaré.
« Grâce à cette nouvelle stratégie, nous avons réussi à accélérer jusqu'à 9 fois les temps de compilation de tous nos compilateurs ». Ces chiffres sont beaucoup plus faciles à comprendre si l'on compare avec des exemples réels. Voici les temps de compilation de clang.wasm dans Wasmer 0.17.1 par rapport à Wasmer 1.0 :
- Singlepass : de 18 à 2s (9x plus rapide) ;
- Cranelift : de 27 à 9s (3x plus rapide) ;
- LLVM : de 1140 à 117s (9x plus rapide).
Akbary note que, lorsque l'on utilise...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.
, mais à part ça, la création d'une VM Open Source et Libre, basé sur des standards eux aussi Libre ne peut que me réjouir.