24 points par GN⁺ 2023-11-17 | 1 commentaires | Partager sur WhatsApp

Introduction à WebAssembly (Wasm)

  • WebAssembly (Wasm) est un bytecode bas niveau à usage général exécuté sur le web
  • Il sert de cible de compilation pour divers langages comme Rust, AssemblyScript (similaire à Typescript), Emscripten (C/C++), TinyGo (Go), etc.
  • Il est actuellement disponible dans tous les principaux navigateurs et dispose de runtimes pour une exécution côté serveur ou pour interagir avec le système via WASI
  • Wasm propose un format binaire compact, ainsi que des performances prévisibles et une bonne portabilité, et peut s'exécuter aux côtés de JavaScript et d'autres langages hôtes

Qu'est-ce que 'Wasm By Example' ?

  • 'Wasm By Example' offre une introduction concise et pratique à WebAssembly à l'aide d'exemples de programmes WebAssembly accompagnés d'extraits de code et de commentaires
  • Il comprend des exemples expliquant les concepts de base de WebAssembly, ainsi que d'autres montrant comment construire des fonctionnalités courantes d'applications plus vastes à partir de ces concepts

Exemples des concepts clés de WebAssembly (Wasm)

  • Des exemples illustrant les principaux concepts fondamentaux de WebAssembly sont proposés.
  • Ces exemples ne constituent pas forcément la manière la plus pratique ou la plus productive de construire un projet en WebAssembly, mais ils conviennent bien à l'apprentissage ou au développement de parties simples ou bas niveau d'une application.
    • Hello World
    • Exports
    • WebAssembly Linear Memory
    • Importing Javascript Functions Into WebAssembly

Exemples appliquant les concepts

  • Ils prolongent les exemples conceptuels pour montrer comment ces exemples simples peuvent servir à construire des fonctionnalités courantes dans des applications plus larges
    • Reading and Writing Graphics
    • Reading and Writing Audio

Exemples d'outils de l'écosystème et de fonctionnalités du langage

  • Des exemples mettant en avant les outils, bibliothèques et fonctionnalités du langage de programmation choisi sont fournis
    • Passing High Level Data Types with wasm-bindgen
  • Ces composants de l'écosystème peuvent grandement aider à construire des applications puissantes.

Exemples de WebAssembly en dehors du navigateur web

  • Des exemples sont fournis pour mettre en avant WebAssembly System Interface (WASI), les runtimes WebAssembly autonomes, les outils pour les applications utilisant WASI, ainsi que des cas d'usage comme le cloud computing et les appareils de l'internet des objets (IoT)
  • WebAssembly possède des fonctionnalités majeures adaptées au web dans le navigateur, et ces mêmes caractéristiques en font aussi un choix populaire en dehors du navigateur
    • WASI Introduction
    • WASI Hello World

L'avis de GN⁺

Le point le plus important de cet article est que WebAssembly (Wasm) est une cible de compilation pour divers langages de programmation et qu'il possède une grande polyvalence, lui permettant d'être utilisé non seulement dans les navigateurs web, mais aussi sur les serveurs et dans divers systèmes. 'Wasm By Example' montre bien pourquoi cette technologie est intéressante et attrayante en proposant des exemples pratiques qui permettent aux ingénieurs logiciel débutants de comprendre facilement WebAssembly et de l'appliquer concrètement. La portabilité et les performances de WebAssembly sont des éléments importants du développement web moderne, et cet article fournit des informations utiles à celles et ceux qui souhaitent apprendre cette technologie.

1 commentaires

 
GN⁺ 2023-11-17
Avis sur Hacker News
  • C’est un cas intéressant d’utiliser WASM pour créer des bibliothèques écrites dans différents langages, puis de les importer et de les utiliser depuis d’autres langages.
  • Le jeu d’instructions WASM, pris en charge par tous les principaux navigateurs, est séduisant, mais cela soulève des questions quand même une simple démo hello_world génère des pages de plusieurs mégaoctets.
  • Certains estiment qu’il faudrait fournir une vue d’ensemble et une explication de la structure et de l’usage de WASM, avec des exemples. Il est aussi mentionné que les workers Cloudflare peuvent exécuter WASM sur des serveurs edge, et que la communauté Swift prend également en charge la compilation vers WASM.
  • Il est suggéré qu’ajouter une catégorie dédiée serait utile pour mieux comprendre la syntaxe S-expr de WebAssembly.
  • Quelqu’un a rédigé un guide expliquant comment faire fonctionner le débogage WASM dans VSCode, en utilisant la nouvelle extension de débogage WASM DWARF.
  • Un livre en cours, WASM from the Ground Up, propose d’apprendre WASM en construisant soi-même un compilateur, et il fournirait jusqu’ici des informations utiles.
  • Certains se demandent si WASM finira un jour par remplacer JavaScript dans le navigateur.
  • Une démo Unity exécutée avec WASM et WebGPU a été publiée sur Hacker News.
  • Quelqu’un dit avoir du mal à trouver des informations sur un compilateur assembleur WASM.
  • Quelqu’un exprime sa surprise de voir qu’un simple exemple add, écrit dans un langage autre que JavaScript avec WASM, possède une fonctionnalité interactive permettant de recevoir des paramètres à l’exécution.