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

Le troisiĂšme lancement significatif du projet Wasmer a Ă©tĂ© prĂ©sentĂ©, dĂ©veloppant un runtime pour l'exĂ©cution de modules WebAssembly, qui peut ĂȘtre utilisĂ© 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 est distribuĂ© sous la licence MIT.

La possibilitĂ© d'exĂ©cuter une application sur diffĂ©rentes plateformes est assurĂ©e par la compilation du code en un code intermĂ©diaire bas niveau WebAssembly, qui peut ĂȘtre exĂ©cutĂ© sur n'importe quel OS ou intĂ©grĂ© dans des programmes d'autres langages de programmation. Les programmes sont des conteneurs lĂ©gers dans lesquels un pseudo-code WebAssembly est exĂ©cutĂ©. Ces conteneurs ne sont pas liĂ©s au systĂšme d'exploitation et peuvent inclure du code initialement Ă©crit dans n'importe quel langage de programmation. L'outil Emscripten peut ĂȘtre utilisĂ© pour la compilation en WebAssembly. Pour la traduction de WebAssembly en code machine de la plateforme actuelle, le support de diffĂ©rents backends de compilation (Singlepass, Cranelift, LLVM) et moteurs (exĂ©cution JIT ou gĂ©nĂ©ration de code machine) est prĂ©vu.

Les applications sont isolĂ©es du systĂšme principal dans un environnement sandbox et n'ont accĂšs qu'aux fonctionnalitĂ©s dĂ©clarĂ©es (un mĂ©canisme de sĂ©curitĂ© basĂ© sur le contrĂŽle des capacitĂ©s — pour les actions sur chaque ressource (fichiers, rĂ©pertoires, sockets, appels systĂšme, etc.), l'application doit se voir accorder les autorisations appropriĂ©es). La gestion des accĂšs et l'interaction avec le systĂšme sont assurĂ©es par l'API WASI (WebAssembly System Interface), qui fournit des interfaces logicielles pour travailler avec des fichiers, des sockets et d'autres fonctions fournies par le systĂšme d'exploitation.

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.

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.

Les principales modifications dans Wasmer 3.0 :

  • Ajout de la possibilitĂ© de crĂ©er des exĂ©cutables natifs pour toutes les plateformes. La commande « wasmer create-exe » a Ă©tĂ© entiĂšrement repensĂ©e, permettant de transformer un fichier avec du code intermĂ©diaire WebAssembly en exĂ©cutables autonomes pour les plateformes Linux, Windows et macOS, pouvant fonctionner sans installation de Wasmer.
  • Il est dĂ©sormais possible de lancer des paquets WAPM, hĂ©bergĂ©s dans le rĂ©pertoire wapm.io, Ă  l'aide de la commande « wasmer run ». Par exemple, l'exĂ©cution de « wasmer run python/python » chargera le paquet python depuis le dĂ©pĂŽt wapm.io et l'exĂ©cutera.
  • L'API Wasmer Rust a Ă©tĂ© entiĂšrement repensĂ©e, avec un nouveau style de gestion de la mĂ©moire et la possibilitĂ© de stocker en toute sĂ©curitĂ© des objets Wasm dans la structure Store. Une nouvelle structure MemoryView a Ă©tĂ© proposĂ©e, permettant de lire et d'Ă©crire des donnĂ©es dans une zone mĂ©moire linĂ©aire.
  • Un ensemble de composants wasmer-js a Ă©tĂ© rĂ©alisĂ© pour exĂ©cuter Wasmer dans un navigateur web et interagir avec lui depuis JavaScript, en utilisant la bibliothĂšque wasm-bindgen. En termes de fonctionnalitĂ©s, wasmer-js est Ă©quivalent aux composants wasmer-sys, destinĂ©s Ă  exĂ©cuter Wasmer sur des systĂšmes d'exploitation traditionnels.
  • Les moteurs ont Ă©tĂ© simplifiĂ©s. Au lieu de moteurs distincts pour JIT, liaison dynamique et liaison statique (Universal, Dylib, StaticLib), un moteur commun est dĂ©sormais proposĂ©, avec le chargement et la sauvegarde du code gĂ©rĂ©s Ă  un niveau de paramĂ©trage.
  • Pour la dĂ©sĂ©rialisation des artefacts, le framework rkyv est utilisĂ©, offrant un fonctionnement en mode zero-copy, c’est-Ă -dire sans nĂ©cessitĂ© d’allocation de mĂ©moire supplĂ©mentaire, et dĂ©sĂ©rialisant uniquement Ă  l'aide du tampon initialement fourni. L'utilisation de rkyv a considĂ©rablement accru la rapiditĂ© de dĂ©marrage.
  • Le compilateur Ă  passage unique Singlepass a Ă©tĂ© amĂ©liorĂ©, avec la prise en charge des fonctions Ă  plusieurs arguments (multi-value), une meilleure fiabilitĂ© et l'ajout de la gestion des exceptions.
  • La mise en Ɠuvre de l'API WASI (WebAssembly System Interface) a Ă©tĂ© amĂ©liorĂ©e. Des problĂšmes dans l'interface WASI pour le travail sur le systĂšme de fichiers ont Ă©tĂ© rĂ©solus. Les types internes ont Ă©tĂ© retravaillĂ©s Ă  l'aide de WAI (WebAssembly Interfaces), ce qui permettra d'implĂ©menter une sĂ©rie de nouvelles fonctionnalitĂ©s Ă  l'avenir.

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