Wasmer 2.0, une boîte à outils pour créer des applications basées sur WebAssembly, est disponible

Le projet Wasmer a publié sa deuxième version majeure, développant un environnement d'exécution pour l'exécution de modules WebAssembly pouvant être utilisés pour créer des applications universelles pouvant s'exécuter sur différents systèmes d'exploitation, ainsi que pour exécuter du code non fiable de manière isolée. Le code du projet est écrit en Rust et est distribué sous licence MIT.

La portabilité est obtenue en compilant le code de l'application dans un code intermédiaire WebAssembly de bas niveau, qui peut s'exécuter sur n'importe quel système d'exploitation ou être intégré dans des programmes dans d'autres langages de programmation. Les programmes sont des conteneurs légers qui exécutent le pseudocode WebAssembly. Ces conteneurs ne sont pas liés au système d'exploitation et peuvent inclure du code écrit à l'origine dans n'importe quel langage de programmation. La boîte à outils Emscripten peut être utilisée pour compiler vers WebAssembly. Pour traduire WebAssembly en code machine de la plateforme actuelle, il prend en charge la connexion de divers backends de compilation (Singlepass, Cranelift, LLVM) et moteurs (utilisant JIT ou génération de code machine).

Le contrôle d'accès et l'interaction avec le système sont assurés à l'aide de l'API WASI (WebAssembly System Interface), qui fournit des interfaces de programmation pour travailler avec des fichiers, des sockets et d'autres fonctions fournies 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'aux fonctionnalités déclarées (un mécanisme de sécurité basé sur la gestion des capacités - pour les actions avec chacune des ressources (fichiers, répertoires, sockets, appels système, etc.), le la demande doit être dotée des pouvoirs appropriés).

Pour lancer un conteneur WebAssembly, installez simplement Wasmer dans le système d'exécution, qui est livré sans dépendances externes (« curl https://get.wasmer.io -sSfL | sh »), et exécutez le fichier nécessaire (« wasmer test.wasm » ). Les programmes sont distribués sous la forme de modules WebAssembly classiques, qui peuvent être gérés à l'aide du gestionnaire de packages WAPM. Wasmer est également disponible sous forme de bibliothèque pouvant être utilisée pour intégrer du code WebAssembly dans des programmes Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir et Java.

La plateforme permet d'atteindre des performances d'exécution d'applications proches des assemblys natifs. À l'aide du moteur d'objets natif pour le module WebAssembly, vous pouvez générer du code machine (« wasmer compile -native » pour générer des fichiers objets .so, .dylib et .dll précompilés), qui nécessite un temps d'exécution minimal pour s'exécuter, mais conserve toute l'isolation du bac à sable. caractéristiques. Il est possible de fournir des programmes précompilés avec Wasmer intégré. L'API Rust et Wasm-C-API sont proposées pour créer des modules complémentaires et des extensions.

Un changement important dans le numéro de version de Wasmer est associé à l'introduction de modifications incompatibles dans l'API interne, qui, selon les développeurs, n'affecteront pas 99 % des utilisateurs de la plateforme. Parmi les changements qui rompent la compatibilité, il y a aussi 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). Autres changements :

  • Prise en charge des instructions SIMD (Single Instruction, Multiple Data), permettant la parallélisation des opérations sur les données. Les domaines dans lesquels l'utilisation de SIMD peut améliorer considérablement les performances comprennent l'apprentissage automatique, l'encodage et le décodage vidéo, le traitement d'images, la simulation de processus physiques et la manipulation graphique.
  • Prise en charge des types de référence, permettant aux modules Wasm d'accéder aux informations dans d'autres modules ou dans l'environnement sous-jacent.
  • Des optimisations significatives des performances ont été apportées. La vitesse d'exécution de LLVM avec des nombres à virgule flottante a été augmentée d'environ 50 %. Les appels de fonctions ont été considérablement accélérés en réduisant les situations nécessitant un accès au noyau. Les performances du générateur de code Cranelift ont été augmentées de 40 %. Temps de désérialisation des données réduit.
    Wasmer 2.0, une boîte à outils pour créer des applications basées sur WebAssembly, est disponible
    Wasmer 2.0, une boîte à outils pour créer des applications basées sur WebAssembly, est disponible
  • Pour refléter plus précisément l'essence, les noms des moteurs ont été modifiés : JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Source: opennet.ru

Ajouter un commentaire