Qu’est-ce que WASI (WebAssembly System Interface) ?
WASI (WebAssembly System Interface) est une interface système standardisée qui permet aux modules WebAssembly de s’exécuter hors du navigateur, tout en garantissant portabilité, sécurité et comportement uniforme sur différentes plateformes. Il facilite l’intégration des modules Wasm avec les systèmes et logiciels existants, permettant aux développeurs de créer des applications multiplateformes fiables et modulaires. WASI offre un cadre unifié pour interagir avec les ressources système, simplifiant le développement et réduisant les problèmes liés à la fragmentation des outils.
Définition de WASI (WebAssembly System Interface)
WASI fournit une interface système normalisée (API) pour les modules Wasm, leur permettant d’accéder efficacement aux fichiers, au réseau, aux horloges système et à d’autres ressources. L’objectif est de créer un environnement sûr et cohérent, où les modules WebAssembly peuvent s’exécuter hors du navigateur tout en conservant des comportements uniformes et portables.Elle fournit une interface système normalisée (API, ou interface de programmation d’application) pour les modules Wasm, ce qui permet d’interagir avec les ressources système de manière efficace et sécurisée sur différentes plateformes, tout en assurant l’uniformité des comportements.
Wasm vs WASI
Bien que liés, Wasm et WASI ont des objectifs différents mais complémentaires :
Wasm
Utilisation universelle : écrire une fois et exécuter dans tous les environnements prenant WebAssembly en charge.
Vitesse : atteindre des performances quasi natives grâce au format compact et à la compilation directe.
Sécurité : isoler le code dans un espace protégé pour réduire les vulnérabilités.
Modularité : diviser les tâches en composants réutilisables.
WebAssembly offre une abstraction couvrant la grande variété de CPU utilisés dans le secteur, afin d’assurer la portabilité du code sur l’ensemble d’entre eux.
Comment WASI améliore-t-elle Wasm ?
Accès système : permet la lecture et l’écriture de fichiers, la mise en réseau, etc.
Standardisation : garantit l’uniformité des comportements sur toutes les plateformes grâce à des API cohérentes.
Sécurité : réduit les risques en n’accordant que les autorisations nécessaires.
Flexibilité : emploie une approche modulaire pour ne mettre en œuvre que les interactions système nécessaires.
Wasm gère l’exécution universelle, tandis que WASI ajoute les capacités système essentielles à l’échelle.Quel est l’objectif de WASI ?
WASI a été développé pour répondre aux problèmes nés du gain de popularité de Wasm auprès des entreprises. Restriction d’accès : Wasm s’exécute dans un environnement protégé crucial pour la sécurité, particulièrement dans les navigateurs. Cependant, cela signifie que Wasm ne peut pas accéder directement aux ressources système, comme les fichiers ou les réseaux.
Limitation des interactions natives : Étant principalement conçu pour le web, Wasm interagit peu avec les fonctions système. Sans accès direct aux API système, les modules Wasm ne peuvent pas effectuer les tâches d’accès au système de fichiers ou de communication réseau en dehors des navigateurs.
Outils fragmentés : L’absence d’approche standardisée concernant les interactions de Wasm avec les ressources a poussé les développeurs à s’appuyer sur des extensions spécifiques à l’environnement ou à des solutions personnalisées. Cela a entraîné une fragmentation des outils et, avec elle, la dissemblance des comportements de modules Wasm selon l’environnement et la complexification du développement multiplateformes.
L’expansion de Wasm au-delà des navigateurs a mis en évidence un besoin urgent d’interface système uniforme. Cette demande a poussé au développement de WASI, qui s’est avérée indispensable dans plusieurs situations :
Résoudre les problèmes de fragmentation : WASI fournit un ensemble unique d’API utilisables sur différentes plateformes, pour garantir l’homogénéité des comportements des modules Wasm où qu’ils soient exécutés. Cela simplifie le développement et réduit les problèmes de compatibilité, pour vous permettre de créer des applications destinées aux serveurs, appareils à la périphérie, etc.
Améliorer la sécurité et la portabilité : WASI renforce aussi la sécurité en établissant une interface standard pour les interactions système. Elle s’appuie sur un modèle de sécurité basé sur les fonctionnalités afin de n’accorder que les autorisations nécessaires aux modules Wasm et de réduire les risques.
Les API WASI (capacités système)
WASI fournit des API essentielles pour exécuter des applications WebAssembly hors navigateur :
E/S de fichiers : lecture et écriture sur le système hôte.
Mise en réseau : connexions réseau et communication entre modules.
Heure : accès aux horloges système pour journaux, mesures et planifications.
Caractère aléatoire : génération de données aléatoires sécurisées, clés ou identifiants.
Entrée/Sortie de terminal : gestion des flux standard pour la console et autres E/S.
L’avenir de WASI
H3 WASI 0.2 : domaines d’évolution
Sockets et HTTP
Stockage blob et key-value
Composants modulaires et chiffrement
Configuration et messagerie
Compatibilité et portabilité dans le temps
Garantir que les applications existantes continuent de fonctionner lors des mises à jour de WASI.
Permettre l’intégration progressive des nouvelles fonctionnalités.
Fastly et WASI
Fastly contribue significativement au développement et à l’adoption de Wasm et WASI, et continue de collaborer dans le développement de normes et d’applications en open source par le biais du W3C (World Wide Consortium) et de la Bytecode Alliance.
Apprenez-en plus sur les façons dont Fastly prend en charge l’open source et dont Fastly Compute permet aux développeurs de facilement créer des expériences optimisées pour leurs utilisateurs finaux. Lancez votre essai gratuit dès aujourd’hui.