Qu’est-ce que le WASI ?

L’intégration constitue un défi majeur pour les chefs d’entreprise qui cherchent à rationaliser les opérations sur divers environnements. Lorsque les outils sont isolés, les employés se heurtent à des inefficacités et à des frustrations, ce qui peut entraîner des occasions manquées.

La WebAssembly System Interface (WASI) offre une solution en fournissant des normes communes pour exécuter des modules WebAssembly en dehors des navigateurs web, permettant une intégration plus fluide avec d’autres systèmes et logiciels utilisés par votre entreprise.

Poursuivez votre lecture pour en savoir plus sur WASI, et découvrir comment son adoption peut vous aider à optimiser les processus, à renforcer la productivité des développeurs, et à propulser votre entreprise vers de nouveaux sommets.

Qu’est-ce que le WASI ?

WebAssembly System Interface (WASI) est une initiative conçue pour étendre ce que WebAssembly (Wasm) peut faire en dehors du navigateur. Elle fournit une interface système standardisée (API) pour les modules Wasm, leur permettant d’interagir avec les ressources système de manière sécurisée et efficace sur diverses plateformes, tout en maintenant un comportement cohérent.

Wasm vs WASI

Bien que Wasm et WASI puissent sembler similaires, ils ont des objectifs distincts qui contribuent à l’optimisation des Opérations. Comprendre leurs différences est essentiel pour tirer parti de leurs forces combinées. Regardons cela de plus près :

Wasm

Wasm permet au code de s’exécuter rapidement et efficacement sur n’importe quel CPU, permettant le développement d’application performantes partout. Son objectif principal est d’exécuter des instructions binaires sur divers matériels. 

Les principales caractéristiques comprennent :

  • Utilisation universelle: écrivez une fois et exécutez partout où WebAssembly est pris en charge.

  • Vitesse : Offre des performances quasi natives grâce à son format compact et à sa compilation directe.

  • Sécurité: isole le code dans un espace protégé afin de réduire les vulnérabilités.

  • Modularité : Divise le travail en composants réutilisables.

En substance, WebAssembly fournit une abstraction de la grande variété de CPU utilisés dans l’industrie, permettant au code d’être portable entre ces CPU

Comment le WASI améliore-t-il le Wasm ?

WASI étend les capacités de WebAssembly en permettant au code d’interagir avec les systèmes sous-jacents. Alors que Wasm se concentre sur une exécution rapide sur toutes les plateformes, WASI fournit des fonctionnalité supplémentaires. 

On retrouve parmi ses principaux atouts :

  • Accès au système : Permet de lire et d’écrire des fichiers, d’utiliser le réseau, et plus encore.

  • Standardisation: Des API cohérentes garantissent un comportement uniforme sur l’ensemble des plateformes.

  • sécurité : minimise les risques en n’accordant que les autorisations nécessaires.

  • Flexibilité : Utilise une approche modulaire pour implémenter uniquement les interactions système requises.

Malgré leurs différences, Wasm et WASI sont conçus pour fonctionner ensemble. Wasm gère une exécution universelle efficace, tandis que WASI fournit des capacités au niveau du système, renforçant la fonctionnalité partout où votre code exécute des tâches critiques. Leur utilisation combinée permet de créer des applications puissantes et multiplateformes, adaptées à vos besoins.

Quel est l’objectif de WASI ?

WASI a été développé pour répondre à des défis spécifiques apparus à mesure que WebAssembly (Wasm) gagnait en popularité auprès des entreprises. Bien que Wasm excelle dans l’exécution efficace du code sur différentes plateforme, ses limites entravent une adoption plus large. 

Examinons les restrictions de Wasm :

  • Accès restreint: Wasm fonctionne dans un environnement sécurisé, ce qui est crucial pour la sécurité, en particulier dans les navigateurs. Cependant, cela signifie que Wasm ne peut pas accéder directement aux ressources système telles que les fichiers ou les réseaux. 

  • Interactions natives limitées : conçu principalement pour le Web, Wasm a une interaction minimale avec les fonctions système. Sans accès direct aux API système, les modules Wasm ne peuvent pas effectuer des tâches telles que l’accès au système de fichiers ou la communication réseau en dehors des navigateurs. 

  • Outils fragmentés : L’absence de méthode normalisée permettant à Wasm d’interagir avec les ressources a conduit les développeurs à s’appuyer sur des extensions spécifiques à l’environnement ou sur des solutions personnalisées. Ces approches diverses ont entraîné une fragmentation des outils, faisant varier le comportement des modules Wasm selon l’environnement, et compliquant le développement multiplateforme.

À mesure que Wasm s’est étendu au-delà des navigateurs, la demande pour une interface système uniforme est devenue critique. Cette demande a conduit au développement de WASI, qui est essentiel aux fins suivantes :

  • Résoudre la fragmentation : WASI fournit un ensemble unique d’API utilisable sur toutes les plateformes, garantissant que les modules Wasm se comportent de la même manière partout où ils s’exécutent. Cela simplifie le développement et réduit les problèmes de compatibilité, vous permettant de créer des applications pour les serveurs, les dispositifs de périphérie, et plus encore.

  • Renforcement de la sécurité et de la portabilité : Cela renforce également la sécurité en définissant une interface standard pour les interactions système. Il suit un modèle de sécurité basé sur les capacités, accordant aux modules Wasm uniquement les autorisations nécessaires et réduisant les risques. 

Les API de WASI

WASI se compose de plusieurs éléments essentiels qui fonctionnent ensemble pour fournir un environnement puissant pour l’exécution de vos applications WebAssembly. Ces composants améliorent la fonctionnalité, la sécurité, et la flexibilité de WebAssembly, ce qui le rend adapté à de nombreux usages au-delà des navigateurs. Voici ses principaux composants :

API

L’interface WASI fournit des API qui permettent à vos module WebAssembly d’interagir avec les systèmes sous-jacents. Ces API servent d’interface par laquelle les module effectuent diverses tâches, en veillant à ce qu’ils disposent des outils nécessaires pour fonctionner efficacement dans leur environnement. Les principales API incluent :

  • E/S de fichier : WASI permet aux modules de lire et d’écrire des fichiers sur le système hôte. Cette capacité permet à vos modules de gérer le stockage des données, les fichiers de configuration, et le contenu créé par les utilisateurs, ce qui est essentiel pour les applications qui reposent sur des données persistantes.

  • Réseau : L’interface inclut des API réseau, permettant aux modules d’établir et de gérer des connexions réseau. Cette capacité est cruciale pour les applications qui doivent communiquer sur Internet ou sur des réseaux locaux, en prenant en charge des tâches allant de simples requêtes HTTP à des opérations réseau plus complexes.

  • Temps : Cette interface fournit aux modules WebAssembly la capacité d’interagir avec les horloges système pour récupérer l’heure actuelle ou mesurer des intervalles de temps. Cette API est essentielle pour des tâches telles que la journalisation des événements, la planification des tâches, ou la mesure de la durée des opérations. 

  • Caractère aléatoire : cette interface est idéale pour les tâches qui nécessitent un caractère aléatoire de haute qualité, comme générer des clés de chiffrement, créer des identifiants uniques, ou mettre en œuvre des protocoles sécurisés.

  • Entrée/sortie du terminal : ces API gèrent les flux d’entrée, de sortie et d’erreur standard, permettant l’interaction avec la console ou d’autres flux d’E/S.

Perspectives d’avenir de WASI

WASI 0.2 continue d’évoluer, avec des efforts continus pour introduire de nouvelles fonctionnalités et des capacités comme les sockets, HTTP, le stockage clé-valeur et de blobs, la configuration, la messagerie, la cryptographie, et un modèle de composants. De nombreux secteurs et organisations adoptent WASI pour simplifier le développement multiplateforme et renforcer la sécurité et les performances des application métier.

À l’avenir, les principes fondamentaux de compatibilité et de combinabilité guideront la transition de WASI entre les versions. Ces principes garantissent que vos application WebAssembly nécessitant un accès au système restent fonctionnelles à mesure que WASI progresse. Créer des application dès maintenant avec les API WASI actuelles permettra également de garder des options ouvertes pour intégrer les fonctionnalités à venir.

Fastly et WASI

Fastly a largement contribué au développement et à l’adoption de Wasm et de WASI, et continue de contribuer aux normes et aux implémentations open source au sein du World Wide Consortium (W3C) et de la Bytecode Alliance

Découvrez comment Fastly prend en charge l’open source et comment Fastly Compute permet aux développeurs de créer facilement les meilleures expériences pour l’utilisateur final. Commencez un essai gratuit dès aujourd’hui.

Prêt à commencer ?

Contactez-nous dès aujourd’hui