Les applications Web d’aujourd’hui sont loin d’être aussi rapides et réactives que les applications de bureau natives, mais si elles pouvaient l’être ? C’est la promesse de WebAssembly.
WebAssembly est un langage de bas niveau de type assembleur avec un format binaire compact qui s’exécute avec des performances quasi natives dans les navigateurs Web. Dans le même temps, WebAssembly fournit une cible de compilation portable pour C/C++, C#, Rust, Go, Kotlin, Swift et d’autres langages de programmation.
Salué comme un moyen à la fois d’améliorer les performances des applications Web et de permettre l’utilisation de langages autres que JavaScript dans le développement d’applications de navigateur, WebAssembly est défendu par Google, Mozilla, Apple et Microsoft, qui prennent tous en charge la technologie dans leurs moteurs de navigateur.
WebAssembly a conduit au développement d’une gamme de nouvelles technologies, y compris de tout nouveaux langages de programmation, qui exploitent sa puissance. Voici 14 projets de langage qui ont fait de gros paris sur WebAssembly.
binaire
Binaryen est une bibliothèque d’infrastructure de chaîne d’outils de compilation pour WebAssembly. Écrit en C++, Binaryen est destiné à rendre la compilation en WebAssembly simple, efficace et rapide. Il a une API C dans un seul en-tête et peut être utilisé à partir de JavaScript. L’entrée est acceptée sous une forme de type WebAssembly, mais un graphe de contrôle général est également accepté pour les compilateurs qui le préfèrent.
L’IR interne (représentation intermédiaire) de Binaryen utilise des structures de données compactes et s’appuie sur tous les cœurs de processeur pour le codegen parallèle et l’optimisation. L’IR se compile également facilement en WebAssembly car il s’agit essentiellement d’un sous-ensemble de WebAssembly. Les optimisations spécifiques à WebAssembly améliorent à la fois la taille et la vitesse du code, ce qui rend Binaryen utile en tant que back-end de compilateur en soi.
Vous pouvez télécharger Binaryen à partir de GitHub.
Blazor WebAssembly
Blazor WebAssembly est une infrastructure permettant de créer des applications Web interactives côté client d’une seule page à l’aide de .NET et d’héberger ces applications dans des navigateurs modernes (y compris des navigateurs mobiles) sur un environnement d’exécution .NET basé sur WebAssembly. Aucun plug-in ou recompilation de code dans d’autres langages n’est requis. Le runtime permet au code .NET d’accéder aux fonctionnalités du navigateur via les API JavaScript de WebAssembly.
Lorsqu’une application Blazor WebAssembly est exécutée dans le navigateur, les fichiers de code C# et les fichiers Razor sont compilés dans des assemblys .NET, qui sont téléchargés sur le navigateur avec le runtime .NET. Et parce que le code .NET est exécuté sur WebAssembly dans le bac à sable JavaScript du navigateur, il est protégé contre les actions malveillantes sur la machine cliente. Les applications Blazor WebAssembly peuvent être déployées de manière autonome ou avec une prise en charge côté serveur.
Les instructions pour démarrer avec Blazor sont disponibles sur dotnet.microsoft.com.
Bravo
Technologies d’apprentissage’ Bravo se positionne comme un compilateur C/C++ de niveau entreprise pour le Web, compilant C et C++, jusqu’à C++ 17, en WebAssembly, JavaScript ou une combinaison des deux. Cheerp est intégré à Infrastructure LLVM/Clang, avec des optimisations personnalisées destinées à améliorer les performances et à minimiser la taille de la sortie compilée. Principalement utilisé pour porter des bibliothèques et des applications C/C++ existantes vers HTML5, Cheerp peut également être utilisé pour écrire des applications Web et des composants WebAssembly. Cheerp est proposé sous des licences open source et commerciales.
Vous pouvez télécharger Cheerp à partir de leaningtech.com.
CheerpJ
Présenté comme “le compilateur Java pour le Web”, ce compilateur basé sur LLVM convertit n’importe quelle application cliente Java en WebAssembly, JavaScript et HTML, permettant aux applications clientes Java de s’exécuter dans les navigateurs modernes. CheerpJ exploite trois composants : un compilateur AOT (ahead-of-time), un runtime dans WebAssembly et JavaScript, et des API d’interopérabilité JavaScript DOM, pour accéder au DOM depuis Java. Avec CheerpJ, les archives JAR peuvent être compilées à l’aide du compilateur AOT. CheerpJ ne nécessite aucun support côté serveur.
Comme Cheerp, CheerpJ vient de Leaning Technologies. Vous pouvez le télécharger depuis leaningtech.com.
Emscripten
Cette chaîne d’outils de compilateur open source compile C et C++, ou tout autre langage utilisant la technologie de compilateur LLVM, dans WebAssembly pour un déploiement sur le Web, Node.js ou un runtime Wasm tel que Wasmer. (Le compilateur Emscripten, emcc, émet également du JavaScript qui fournit un support API au code compilé. Emscripten a été utilisé pour convertir une liste de bases de code du monde réel en WebAssembly, y compris des bases de code commerciales telles que le moteur de jeu Unreal Engine 4 et la plate-forme Unity 3D . Emscripten prend en charge les bibliothèques standard C et C++, les exceptions C++ et les commandes graphiques OpenGL/WebGL. SDK Emscripten utilisé pour installer la chaîne d’outils Emscripten (emcc, LLVM, etc.) peut être utilisé sous Linux, MacOS et Windows.
Vous pouvez télécharger Emscripten à partir de emscripten.org.
Extisme
Encore en début de développement, Extisme est un système de plug-in permettant d’exécuter des extensions WebAssembly dans une application, dans le but de rendre tous les logiciels programmables. Les cas d’utilisation courants d’Extism incluent l’ajout de fonctionnalités aux outils de ligne de commande, la création de fonctions définies par l’utilisateur dans une base de données, la création d’extensions d’application sans code et la création d’extensions pour les systèmes de gestion de contenu. Avec Extism, les développeurs peuvent utiliser des SDK hôtes idiomatiques pour des langages tels que Go, Ruby, Python, Rust et C++. Les développeurs d’Extism disent qu’il est utilisable maintenant mais qu’il a encore quelques aspérités.
Les instructions d’installation d’Extism sont disponibles sur extism.org.
Forêt
Forest est un langage de programmation fonctionnel qui se compile en WebAssembly. L’objectif derrière Forest est de fournir un langage qui facilite la création d’applications Web complexes, interactives et fonctionnelles, mais sans les frais généraux traditionnels de cette approche, a déclaré le développeur Nick Johnstone.
Actuellement décrit comme un “logiciel de recherche conceptuelle pré-alpha, expérimental”, Forest propose un typage statique, une correspondance de modèles, des structures de données immuables, plusieurs syntaxes et un formatage automatique du code. La première syntaxe en développement est inspirée d’Elm et Haskell.
Les principes de conception du langage Forest incluent la facilité de collaboration, des tests aussi simples que possible et un accord sur la structure et la sémantique, tout en acceptant d’être en désaccord sur la syntaxe. Johnstone s’efforce de rendre Forest suffisamment rapide pour créer des jeux complexes afin que les applications Web normales soient «très rapides».
Vous pouvez télécharger Forest à partir de GitHub.
Grain
Le langage Grain apporte des fonctionnalités des langages académiques et fonctionnels au 21e siècle, indique le site Web du projet. Compilation vers WebAssembly via le binaire chaîne d’outils et infrastructure de compilateur, Grain peut s’exécuter dans le navigateur, sur le serveur et potentiellement n’importe où. Il n’y a pas d’erreurs de type d’exécution et pas besoin d’annotations de type. La chaîne d’outils Grain comprend une CLI, un compilateur, un runtime et une bibliothèque standard, livrés sous la forme d’un binaire unique. Les développeurs auront besoin de Node.js et de Yarn pour construire Grain à partir de la source, et des binaires sont disponibles pour Linux, MacOS et Windows.
Vous pouvez trouver des instructions pour démarrer avec Grain sur grain-lang.org.
JWebAssembly
JWebAssembly, de I-Net Software, est un bytecode Java pour le compilateur WebAssembly qui prend les fichiers de classe Java en entrée et génère le format binaire WebAssembly (fichier .wasm) ou le format texte (fichier .wat) en sortie. L’objectif est de s’exécuter nativement dans le navigateur avec WebAssembly. En théorie, JWebAssembly peut compiler n’importe quel langage qui se compile en bytecode Java tel que Clojure, Groovy, JRuby, Kotlin et Scala, en attendant les tests.
JWebAssembly devrait bientôt être prêt pour la production. Tous les jalons nécessaires à la version JWebAssembly 1.0 ont été implémentés et une version candidate a été publiée. La feuille de route de la version 1.0 appelle des fonctionnalités telles qu’un analyseur de bytecode Java, un framework de test et un plug-in Gradle.
Vous pouvez télécharger JWebAssembly à partir de GitHub.
Pyodure
Le projet Pyodide, qui a récemment déménagé de Mozilla va devenir un projet indépendant, compile Python et la pile scientifique Python vers WebAssembly, apportant le runtime Python 3.8, NumPy, SciPy, Matplotlib, Scikit-learn et des dizaines d’autres packages au navigateur. Pyodide fournit une conversion transparente des objets entre JavaScript et Python et donne à Python un accès aux API Web. Pyodide a débuté en 2018 dans le cadre du projet Iodide pour faire de la science des données dans un navigateur. Pyodide peut être essayé à partir d’un REPL dans le navigateur.
Vous pouvez trouver des instructions pour télécharger et utiliser Pyodide sur pyodide.org.
Tournoyer
Spin, du fournisseur de logiciels de cloud computing Fermyon Technologies, est une infrastructure WebAssembly pour les microservices, les applications Web et d’autres applications basées sur un serveur. Les développeurs peuvent utiliser Spin pour écrire WebAssembly pour le cloud. Des interfaces sont fournies pour écrire des modules WebAssembly pour des fonctions telles que la réponse aux requêtes HTTP. Avec Spin, les développeurs peuvent utiliser des langages tels que Rust, Go, Python, Ruby, AssemblyScript, Grain, C/C++ et autres. Spin prend en charge les modules WAGI (WebAssembly Gateway Interface) et le système de packaging Bindle. Maintenant dans une phase de prévisualisation précoce, Spin est considéré comme un code expérimental, avec des changements de rupture attendus avant la première version stable.
Spin est hébergé sur GitHub.
ThéVM
Compilateur d’avant-garde pour le bytecode Java, TeaVM émet WebAssembly et JavaScript à exécuter dans le navigateur. Cependant, notez que la prise en charge de WebAssembly est actuellement expérimentale. Comme son proche cousin GWT (Google Web Toolkit), TeaVM permet aux développeurs d’écrire des applications en Java et de les déployer en JavaScript. Contrairement à GWT, TeaVM fonctionne avec des fichiers de classe compilés, pas avec du code source. De plus, TeaVM s’appuie sur des compilateurs existants tels que javac, kotlinc et scalac, et peut donc compiler du code Kotlin et Scala ainsi que Java. TeaVM est avant tout un outil de développement Web ; il n’est pas conçu pour prendre de grandes bases de code en Java ou Kotlin et produire du JavaScript. Un sous-projet TeaVM, Flavour, sert de cadre pour l’écriture d’applications Web d’une seule page.
Vous pouvez trouver des instructions pour télécharger et utiliser TeaVM sur GitHub.
Plateforme Uno
Une alternative à la plateforme d’applications mobiles Xamarin, Plateforme Uno est une plate-forme d’interface utilisateur permettant aux équipes .NET de créer des applications à base de code unique pour WebAssembly, le Web, Windows, MacOS, Linux, iOS et Android, à l’aide de C# et XAML. Uno exploite le runtime Mono-WASM dans .NET 5 pour exécuter du code C # dans tous les principaux navigateurs Web et sert de pont pour que les applications WinUI et UWP (Universal Windows Platform) s’exécutent en mode natif sur WebAssembly. Pour créer des applications Web avec Uno, les développeurs peuvent utiliser Visual Studio ou Visual Studio Code.
Les instructions pour commencer se trouvent sur le Site Web de la plate-forme Uno.
Wasmcloud
De Cosmonic, Wasmcloud est un environnement d’exécution d’application qui exploite WebAssembly dans le développement d’applications composables et portables qui se connectent à des environnements multi-cloud, de périphérie et de navigateur. La technologie est présentée comme offrant des performances quasi natives, avec une sécurité fournie via un bac à sable WebAssembly et un modèle d’acteur séparant la logique métier des capacités sous-jacentes spécifiques. Les développeurs peuvent écrire des microservices une seule fois dans le langage de leur choix et les déployer partout. Les langages actuellement pris en charge incluent Rust, TinyGo et AssemblyScript. Wasmcloud a été accepté comme projet Sandbox de la Cloud Native Computing Foundation (CNCF).
Les instructions d’installation de wasmCloud sont disponibles sur wasmcloud.dev.
Copyright © 2022 IDG Communications, Inc.
More Stories
Hommage au pionnier de l’informatique Frederick Brooks, Jr.
Les meilleures offres MacBook Pro et MacBook Air pour juin 2022
Disney + avec publicités est là et ne fonctionne pas sur Roku