Wasmer 2.0 est disponible, un ensemble d'outils pour créer des applications basées sur WebAssembly

Le second lancement majeur du projet Wasmer a eu lieu, dĂ©veloppant un runtime pour exĂ©cuter des modules WebAssembly, pouvant ĂȘtre utilisĂ©s pour crĂ©er des applications universelles capables de fonctionner sur diffĂ©rents systĂšmes d'exploitation, ainsi que pour l'exĂ©cution isolĂ©e de code non fiable. Le code du projet est Ă©crit en Rust et distribuĂ© sous la licence MIT.

La portabilitĂ© est assurĂ©e par la compilation du code de l'application en bytecode WebAssembly bas niveau, qui peut ĂȘtre exĂ©cutĂ© sur n'importe quel systĂšme d'exploitation ou intĂ©grĂ© dans des programmes Ă©crits dans d'autres langages de programmation. Les programmes sont des conteneurs lĂ©gers dans lesquels s'exĂ©cute du pseudo-code WebAssembly. Ces conteneurs ne sont pas liĂ©s Ă  un systĂšme d'exploitation et peuvent inclure du code initialement Ă©crit dans n'importe quel langage de programmation. L'outil de compilation Emscripten peut ĂȘtre utilisĂ© pour compiler en WebAssembly. Pour traduire le WebAssembly en code machine de la plateforme actuelle, diffĂ©rents backends de compilation (Singlepass, Cranelift, LLVM) et moteurs (en utilisant JIT ou en gĂ©nĂ©rant du code machine) sont pris en charge.

La gestion des accÚs et l'interaction avec le systÚme sont assurées par l'API WASI (WebAssembly System Interface), fournissant des interfaces pour travailler avec des fichiers, des sockets et d'autres fonctionnalités offertes par le systÚme d'exploitation. Les applications sont isolées du systÚme principal dans un environnement sandbox et n'ont accÚs qu'à la fonctionnalité déclarée (mécanisme de sécurité basé sur la gestion des capacités - pour chaque action sur les ressources (fichiers, répertoires, sockets, appels systÚme, etc.), l'application doit se voir accorder les autorisations correspondantes).

Pour exécuter un conteneur WebAssembly, il suffit d'installer le runtime Wasmer sur le systÚme, fourni sans dépendances externes (« curl https://get.wasmer.io -sSfL | sh »), puis de lancer le fichier nécessaire (« wasmer test.wasm »). Les programmes sont distribués sous forme de modules WebAssembly ordinaires, que l'on peut gérer avec le gestionnaire de paquets WAPM. Wasmer est également disponible sous forme de bibliothÚque, que l'on peut utiliser pour intégrer du code WebAssembly dans des programmes écrits en Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir et Java.

La plateforme permet d'atteindre des performances d'exĂ©cution des applications proches de celles des compilations natives. GrĂące au Native Object Engine pour le module WebAssembly, il est possible de gĂ©nĂ©rer du code machine (« wasmer compile —native » pour gĂ©nĂ©rer des fichiers objets prĂ©compilĂ©s .so, .dylib et .dll), dont l'exĂ©cution nĂ©cessite un runtime minimal tout en conservant toutes les possibilitĂ©s d'isolation sandbox. La fourniture de programmes prĂ©compilĂ©s avec Wasmer intĂ©grĂ© est possible. Pour la crĂ©ation de surcouches et d'extensions, des API Rust et Wasm-C-API sont disponibles.

Le changement significatif de version de Wasmer est liĂ© Ă  l'introduction de modifications de rupture de compatibilitĂ© dans l'API interne, qui, selon les dĂ©veloppeurs, n'affecteront en rien 99 % des utilisateurs de la plateforme. Parmi les modifications de rupture de compatibilitĂ©, on note Ă©galement un changement dans le format des modules Wasm sĂ©rialisĂ©s (les modules sĂ©rialisĂ©s dans Wasmer 1.0 ne pourront pas ĂȘtre utilisĂ©s dans Wasmer 2.0). D'autres changements :

  • Support des instructions SIMD (Single Instruction, Multiple Data), permettant de parallĂ©liser les opĂ©rations sur les donnĂ©es. Parmi les domaines oĂč l'utilisation de SIMD peut sensiblement amĂ©liorer les performances, on note l'apprentissage machine, l'encodage et le dĂ©codage vidĂ©o, le traitement d'images, la simulation de processus physiques et les manipulations graphiques.
  • Support des types de rĂ©fĂ©rence, permettant aux modules Wasm d'accĂ©der Ă  des informations dans d'autres modules ou dans l'environnement de base.
  • Une optimisation significative des performances a Ă©tĂ© rĂ©alisĂ©e. La vitesse d'exĂ©cution du runtime LLVM avec des nombres Ă  virgule flottante a Ă©tĂ© augmentĂ©e d'environ 50 %. L'appel de fonctions a Ă©tĂ© considĂ©rablement accĂ©lĂ©rĂ© grĂące Ă  la rĂ©duction des situations nĂ©cessitant un accĂšs au noyau. La performance du gĂ©nĂ©rateur de code Cranelift a Ă©tĂ© augmentĂ©e de 40 %. Le temps de dĂ©sĂ©rialisation des donnĂ©es a Ă©tĂ© rĂ©duit.
    Wasmer 2.0 est disponible, un ensemble d'outils pour créer des applications basées sur WebAssembly
    Wasmer 2.0 est disponible, un ensemble d'outils pour créer des applications basées sur WebAssembly
  • Pour reflĂ©ter plus prĂ©cisĂ©ment l'essence, les noms des moteurs ont Ă©tĂ© modifiĂ©s : JIT → Universal, Native → Dylib (BibliothĂšque Dynamique), Object File → StaticLib (BibliothĂšque Statique).

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster