À propos du projet
Wasmtime est un runtime autonome pour WebAssembly, développé dans le cadre d'un projet de la Bytecode Alliance. Il est conçu pour être rapide, sécurisé, configurable et conforme aux normes, et peut être utilisé à la fois comme outil en ligne de commande et comme runtime intégré dans d'autres applications.
Installation
Le CLI peut être installé sur Linux et macOS à l'aide d'un script shell qui installe dans $WASMTIME_HOME (par défaut $HOME/.wasmtime), plaçant l'exécutable dans $WASMTIME_HOME/bin. Les utilisateurs de Windows et autres peuvent télécharger des installateurs et des binaires depuis la page GitHub Releases. D'autres options d'installation sont documentées dans le livre en ligne.
Exemple d'utilisation
Avec le compilateur Rust installé, un programme Rust peut être compilé en un composant WebAssembly en utilisant la cible wasm32-wasip2, puis exécuté avec la commande wasmtime. Le README montre un exemple hello-world qui affiche « Hello, world! » lors de l'exécution.
Caractéristiques principales
- Rapide : construit sur le générateur de code optimisant Cranelift, qui peut produire du code machine soit à l'exécution, soit à l'avance. Il est optimisé pour une instanciation efficace, des appels à faible surcoût entre l'hôte et wasm, et l'évolutivité des instances concurrentes.
- Sécurisé : le développement met l'accent sur la correction et la sécurité, en s'appuyant sur les garanties de sécurité à l'exécution de Rust. Les fonctionnalités passent par un processus RFC, un fuzzing continu via l'OSS Fuzz de Google, une politique de version et une politique de sécurité définie. Le projet intègre également des défenses contre des problèmes tels que Spectre et collabore avec des chercheurs académiques sur la vérification formelle de parties critiques de Wasmtime et Cranelift.
- Configurable : des valeurs par défaut sensées sont fournies, mais la configuration permet un contrôle fin de la consommation de CPU et de mémoire, des environnements minuscules aux grands serveurs avec de nombreuses instances concurrentes.
- WASI : prend en charge un ensemble riche d'API pour interagir avec l'environnement hôte via la norme WASI.
- Conforme aux normes : réussit la suite de tests officielle de WebAssembly, implémente l'API C officielle de wasm et implémente les futures propositions WebAssembly. Les développeurs sont engagés dans le processus de normalisation WebAssembly.
Langages supportés
Wasmtime peut être intégré depuis plusieurs langages. Les langages supportés par la Bytecode Alliance incluent Rust (la crate wasmtime), C (les en-têtes wasm.h, wasi.h et wasmtime.h, avec CMake), C++ (l'en-tête wasmtime.hh), Python (le package PyPI wasmtime), .NET (le package NuGet Wasmtime), Go (le dépôt wasmtime-go) et Ruby (le gem wasmtime). Les langages supportés par la communauté incluent Elixir (le package hex wasmex) et Perl (le module Wasm::Wasmtime dans le package Wasm Perl).
Documentation
Le guide Wasmtime est le point de départ recommandé pour apprendre ce que Wasmtime peut faire, répondre aux questions et contribuer au projet.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.