WebAssembly, ou wasm en abrégé, est un format de bytecode de bas niveau qui s'exécute dans le navigateur, tout comme JavaScript. Il est conçu pour être plus rapide à analyser que JavaScript, ainsi qu'à s'exécuter, ce qui en fait une cible de compilation appropriée pour les langages nouveaux et existants.
Ce dépôt contient une liste de langages qui compilent actuellement ou ont leurs machines virtuelles dans WebAssembly (wasm)
? - En production.
? - Stable pour une utilisation en production.
? - Instable mais utilisable.
? - Travaux en cours.
☠️ - Non maintenu ou obsolète
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
.NET Framework est un framework logiciel développé par Microsoft qui s'exécute principalement sur Microsoft Windows. Il comprend une grande bibliothèque de classes nommée Framework Class Library (FCL) et assure l'interopérabilité des langages (chaque langage peut utiliser du code écrit dans d'autres langages) dans plusieurs langages de programmation.
Ada est un langage de programmation de haut niveau structuré, typé statiquement, impératif et orienté objet, inspiré de Pascal et d'autres langages. Il prend en charge le langage intégré pour la conception par contrat (DbC), le typage extrêmement fort, la concurrence explicite, les tâches, la transmission de messages synchrones, les objets protégés et le non-déterminisme. Ada améliore la sécurité et la maintenabilité du code en utilisant le compilateur pour rechercher les erreurs en faveur des erreurs d'exécution.
AssemblyScript est un nouveau compilateur ciblant WebAssembly tout en utilisant la syntaxe de TypeScript et l'écosystème dynamique du nœud. Au lieu de nécessiter la configuration de chaînes d'outils complexes, vous pouvez simplement l'installer par npm - ou l'exécuter dans un navigateur.
Astro est un langage sûr et amusant pour le prototypage rapide et les applications hautes performances.
Unmaintained
Ballerina est un langage de programmation open source pour le cloud qui facilite l'utilisation, la combinaison et la création de services réseau. Le compilateur WebAssembly est implémenté pour le compilateur natif Ballerina nBallerina.
BASIC (acronyme de "Beginners' All-Purpose Symbolic Instruction Code") est un des premiers langages de programmation à usage général et de haut niveau. C’est toujours l’une des langues les plus simples et faciles à apprendre.
basic2wasm
qui compile BASIC en WebAssembly à l'aide de binaires.Brainfuck est un langage de programmation ésotérique créé en 1993 par Urban Müller et remarquable par son extrême minimalisme. Le langage se compose de seulement huit commandes simples et d'un pointeur d'instruction. Bien qu'il soit entièrement Turing-complet, il n'est pas destiné à un usage pratique, mais à défier et amuser les programmeurs.
C est un langage de programmation informatique impératif à usage général, prenant en charge la programmation structurée, la portée des variables lexicales et la récursivité, tandis qu'un système de types statiques empêche de nombreuses opérations involontaires. C a été initialement développé par Dennis Ritchie entre 1969 et 1973 aux Bell Labs[6] et utilisé pour réimplémenter le système d'exploitation Unix.
C# est un langage de programmation multi-paradigmes englobant des disciplines de programmation à typage fort, impérative, déclarative, fonctionnelle, générique, orientée objet (basée sur les classes) et orientée composants. Son équipe de développement est dirigée par Anders Hejlsberg. La prise en charge de WebAssembly est obtenue via Blazor.
C++ est un langage de programmation à usage général. Il possède des fonctionnalités de programmation impératives, orientées objet et génériques, tout en fournissant également des fonctionnalités de manipulation de mémoire de bas niveau. Il a été conçu avec un penchant pour la programmation système et les grands systèmes embarqués, aux ressources limitées, avec comme points forts sa conception en termes de performances, d'efficacité et de flexibilité d'utilisation. Le développement du langage a été lancé en 1979 par Bjarne Stroustrup sous le nom de "C with Classes".
C4wa (« C pour Web Assembly ») est un sous-ensemble du standard C spécifiquement destiné à la compilation simple et efficace de Web Assembly. Les fichiers WASM générés n'incluent aucune surcharge, sont prêts à l'emploi compatibles avec n'importe quel environnement d'exécution Web Assembly et prennent en charge l'importation de fonctions à arguments variables (telles que
printf
). Il existe également une option pour créer des fichiers WAT bien formatés et lisibles.
Clean est un langage de programmation fonctionnel à usage général, de pointe, pur et paresseux, conçu pour créer des applications du monde réel. Certaines de ses fonctionnalités linguistiques les plus remarquables sont le typage unique, le typage dynamique et les fonctions génériques.
Un langage de programmation similaire à Go et TypeScript.
COBOL est un langage de programmation compilé de type anglais conçu pour un usage professionnel. C’est impératif, procédural et orienté objet. COBOL est principalement utilisé dans les systèmes commerciaux, financiers et administratifs.
Crystal est un langage de programmation avec les objectifs suivants :
- Avoir une syntaxe similaire à Ruby (mais la compatibilité avec celle-ci n'est pas un objectif)
- Vérification de type statique mais sans avoir à spécifier le type de variables ou d'arguments de méthode.
- Être capable d'appeler du code C en y écrivant des liaisons dans Crystal.
- Avoir une évaluation au moment de la compilation et une génération de code, pour éviter le code passe-partout.
- Compilez en code natif efficace.
Scripts rapides, efficaces et simultanés. Types dynamiques et graduels ; Concurrence avec les fibres ; Multithread ; Mémoire sécurisée ; FFI et intégrable.
D est un langage de programmation à usage général avec un typage statique, un accès au niveau système et une syntaxe de type C.
Un langage accessible, portable et productif pour des applications de haute qualité sur n'importe quelle plateforme
Eclair est une implémentation Datalog minimale et rapide qui se compile en LLVM IR et WASM.
Eel est un petit langage utilisé, entre autres, pour écrire des « préréglages » de visualiseur pour Milkdrop, le programme de visualisation musicale fourni avec Winamp.
Elixir est un langage dynamique et fonctionnel conçu pour créer des applications évolutives et maintenables. Elixir s'appuie sur Erlang et partage les mêmes abstractions pour créer des applications distribuées et tolérantes aux pannes.
F# est un langage de programmation mature, open source, multiplateforme et axé sur la fonctionnalité. Il permet aux utilisateurs et aux organisations de résoudre des problèmes informatiques complexes avec un code simple, maintenable et robuste. La prise en charge de WebAssembly est obtenue via Bolero, un ensemble de bibliothèques et d'outils gratuits et open source construits sur Blazor. F# a été principalement conçu par Don Syme de Microsoft Research mais il est désormais maintenu par la Fondation F# et sa communauté.
Faust (Functional Audio Stream) est un langage de programmation fonctionnel spécialement conçu pour le traitement et la synthèse du signal en temps réel. Une caractéristique distinctive de Faust est d'être entièrement compilé.
Forest est un langage de programmation fonctionnel qui compile en WebAssembly. Le dépôt principal contient le compilateur et les syntaxes de base, actuellement implémentées dans Haskell.
Forth est un langage de programmation interactif, extensible, impératif, non typé et basé sur une pile.
Go est un langage compilé à typage statique dans la tradition du C, avec des fonctionnalités de sécurité de la mémoire, de garbage collection, de typage structurel et de programmation simultanée de style CSP ajoutées.
Grain est un langage de programmation fonctionnel fortement typé conçu pour le Web moderne.
Haskell est un langage de programmation standardisé, purement fonctionnel, à usage général, avec une sémantique non stricte et un typage statique fort. Il porte le nom du logicien Haskell Curry.[1] La dernière norme de Haskell est Haskell 2010. Depuis mai 2016, un groupe travaille sur la prochaine version, Haskell 2020.
Idris est un langage de programmation fonctionnel pur à usage général avec des types dépendants. Les types dépendants permettent de prédire les types sur des valeurs, ce qui signifie que certains aspects du comportement d'un programme peuvent être spécifiés précisément dans le type. Il est compilé, avec une évaluation minutieuse. Ses fonctionnalités sont influencées par Haskell et ML.
Unmaintained
Janet crée un bon langage de script système ou un langage à intégrer dans d'autres programmes. C'est comme un "Lisp moderne", doté d'une interopérabilité C simple et efficace et d'une variété de types de données tels que des tableaux, des structures, des tables, etc.
Java est un langage de programmation informatique à usage général, concurrent, basé sur les classes, orienté objet et spécialement conçu pour avoir le moins de dépendances d'implémentation possible. Il est destiné à permettre aux développeurs d'applications « d'écrire une fois, d'exécuter n'importe où » (WORA), ce qui signifie que le code Java compilé peut s'exécuter sur toutes les plates-formes prenant en charge Java sans avoir besoin d'une recompilation. Java a été initialement développé par James Gosling chez Sun Microsystems et publié en 1995 en tant que composant central de la plate-forme Java de Sun Microsystems. Le langage dérive une grande partie de sa syntaxe du C et du C++, mais il possède moins de fonctionnalités de bas niveau que l’un ou l’autre.
JavaScript est un langage de programmation interprété de haut niveau conforme à la spécification ECMAScript. C'est un langage qui se caractérise également comme dynamique, faiblement typé, basé sur des prototypes et multi-paradigme.
Julia a été conçue dès le début pour des performances élevées. Les programmes Julia se compilent en code natif efficace pour plusieurs plates-formes via LLVM.
Unmaintained
KCL est un langage d'enregistrement et fonctionnel basé sur des contraintes, principalement utilisé dans les scénarios de configuration et de politique.
Kotlin est un langage de programmation moderne mais déjà mature destiné à rendre les développeurs plus heureux. Il est concis, sûr, interopérable avec Java et d'autres langages, et offre de nombreuses façons de réutiliser le code entre plusieurs plates-formes pour une programmation productive.
Kotlin/Wasm est la nouvelle cible et la nouvelle chaîne d'outils de la famille Kotlin. Il possède quelques propriétés particulières :
- Il se compile directement vers Wasm sans aucune couche supplémentaire, pour compiler le plus rapidement possible, y compris de manière incrémentielle dans le futur.
- Il utilise des propositions expérimentales/nouvelles telles que GC, les références de fonctions typées, la gestion des exceptions et Stringref.
Un langage minimal compilé en bytecode wasm.
LabVIEW est un environnement de développement pour le langage de programmation graphique G dataflow utilisé pour l'acquisition de données, le contrôle d'instruments et l'automatisation industrielle.
Lisp (historiquement LISP) est une famille de langages de programmation avec une longue histoire et une notation de préfixe distinctive entièrement entre parenthèses.
Lobster est un langage typé statiquement avec une inférence et une spécialisation de type sensibles au flux, un comptage de références au moment de la compilation (analyse de la durée de vie) qui ressemble un peu à Python. Il était initialement destiné spécifiquement aux jeux. Lobster possède son propre backend Wasm qui se compile directement en fichiers .wasm pouvant être liés (avec LLD).
Lox est un langage créé par Bob Nystrom, utilisé pour enseigner les compilateurs dans le livre Crafting Interpreters. Il est typé dynamiquement et prend en charge les classes, les fermetures et les fonctions de première classe.
Lua est un langage de programmation léger et multi-paradigmes conçu principalement pour les systèmes embarqués et les clients.[2] Lua est multiplateforme, puisque l'interpréteur est écrit en ANSI C et possède une API C relativement simple. Lua a été initialement conçu en 1993 comme un langage permettant d'étendre des applications logicielles afin de répondre à la demande croissante de personnalisation de l'époque.
Lys est un langage fonctionnel typé qui se compile directement en WebAssembly.
MoonBit est une chaîne d'outils de langage de programmation de bout en bout pour le cloud et le edge computing utilisant WebAssembly. Le langage est comme Rust avec le support GC. Le compilateur rapide est optimisé pour produire des binaires WASM très compacts.
Langage de programmation système minimal, simple, efficace, typé statiquement, compilé, métaprogrammable, sûr et extensible avec une saveur Lua.
NerdLang est un sous-trait de JS avec quelques ajouts, axé sur l'efficacité. Nerd est un compilateur natif JavaScript visant à rendre JavaScript universel. Nerd est capable de compiler des applications natives pour Windows, Mac, Linux, iOS, Android, Raspberry, STM32, Arduino, Web (y compris WASM), et plus encore.
Never n’est pas un simple langage de programmation fonctionnel. Techniquement, il peut être classé comme un langage de programmation fonctionnel à portée syntaxique, fortement typé, appelé par valeur.
Un langage marginal avec de beaux motifs de conception.
OCaml, initialement nommé Objective Caml, est la principale implémentation du langage de programmation Caml, créé par Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez et d'autres en 1996. Membre de la famille des langages ML, OCaml étend le noyau Langage Caml avec des constructions de programmation orientées objet.
Pascal est un langage de programmation à typage statique impératif, procédural et orienté objet à usage général. Le compilateur Free Pascal cible de nombreuses architectures de processeur, notamment wasm32 ; les systèmes d'exploitation, y compris WASI ; et plateformes embarquées.
Perl est un langage de programmation à usage général développé à l'origine pour la manipulation de texte et maintenant utilisé pour un large éventail de tâches, notamment l'administration système, le développement Web, la programmation réseau, le développement d'interfaces graphiques, etc.
PHP est un langage de script à usage général particulièrement adapté au développement Web côté serveur, auquel cas PHP s'exécute généralement sur un serveur Web. Tout code PHP dans un fichier demandé est exécuté par le runtime PHP, généralement pour créer du contenu de page Web dynamique ou des images dynamiques utilisées sur des sites Web ou ailleurs.
Plorth est un langage de script fonctionnel concaténatif, fortement typé, basé sur une pile, facile à intégrer aux applications écrites en C++. Il est inspiré des langages de programmation Forth et Factor.
Poetry est un langage de programmation poétiquement dynamique et simple qui se compile en WebAssembly. Il a une syntaxe minimaliste semblable à CoffeeScript et vous donne un contrôle total sur les importations et exportations wasm.
Python est un langage de programmation de haut niveau interprété open source pour la programmation à usage général. Créé par Guido van Rossum et publié pour la première fois en 1991, Python a une philosophie de conception qui met l'accent sur la lisibilité du code, notamment en utilisant des espaces importants. Il fournit des constructions qui permettent une programmation claire à petite et à grande échelle.
Prolog est un langage de programmation logique à usage général associé à l'intelligence artificielle et à la linguistique informatique. Prolog a ses racines dans la logique du premier ordre, une logique formelle, et contrairement à de nombreux autres langages de programmation, Prolog se veut avant tout un langage de programmation déclaratif : la logique du programme est exprimée en termes de relations, représentées sous forme de faits et de règles. Un calcul est lancé en exécutant une requête sur ces relations.
R est un langage et un environnement pour le calcul statistique et les graphiques.
Open Policy Agent (OPA) est un moteur de stratégie open source à usage général qui unifie l'application des stratégies sur l'ensemble de la pile. Rego est un langage de politique déclaratif de haut niveau spécialement conçu pour exprimer des politiques sur des structures de données hiérarchiques complexes.
Ring est un langage multi-paradigme pratique, simple, petit et flexible. Les paradigmes de programmation pris en charge sont les suivants : programmation impérative, procédurale, orientée objet, fonctionnelle, métaprogrammation, programmation déclarative utilisant des structures imbriquées et programmation naturelle. Le langage est portable (MS-DOS, Windows, Linux, macOS, Android, WebAssembly, etc.) et peut être utilisé pour créer des applications console, GUI, Web, jeux et mobiles.
Un langage rapide, convivial et fonctionnel. Compile en code machine ou WASM. Roc est un descendant direct du langage de programmation Elm.
Ruby est un langage de programmation de haut niveau interprété open source pour la programmation à usage général. Créé par Matz. Ruby a une philosophie de conception qui met l'accent sur la lisibilité du code, notamment en utilisant le moins de sigils (caractères spéciaux
:.{}%[]&=>;
) possible.
Rust est un langage de programmation système sponsorisé par Mozilla Research, qui le décrit comme un « langage sûr, simultané et pratique », prenant en charge les paradigmes fonctionnels et procéduraux impératifs. Rust est syntaxiquement similaire au C++, mais ses concepteurs souhaitent qu'il offre une meilleure sécurité de la mémoire tout en maintenant les performances.
wasm32-unknown-unknown
target - Backend du compilateur Rust pour WebAssembly (sans avoir besoin d'Emscripten).Scheme est un langage de programmation qui prend en charge plusieurs paradigmes, notamment la programmation fonctionnelle et la programmation impérative, et constitue l'un des deux principaux dialectes de Lisp. Contrairement au Common Lisp, l'autre dialecte principal, Scheme suit une philosophie de conception minimaliste spécifiant un petit noyau standard avec de puissants outils d'extension du langage.
Scopes est un langage de programmation à usage général et une infrastructure de compilateur spécifiquement adaptés au prototypage à court délai et au développement d'applications hautes performances nécessitant une compilation en plusieurs étapes au moment de l'exécution.
Speedy.js est un compilateur pour un sous-ensemble JavaScript bien pensé et sans pièges de performances ciblant WebAssembly. Étant donné que WebAssembly est typé statiquement, le projet utilise TypeScript comme vérificateur de type et pour résoudre les types des symboles du programme.
Unmaintained
Swift est un langage de programmation compilé à usage général, multi-paradigmes, développé par Apple Inc. pour iOS, macOS, watchOS, tvOS, Linux et z/OS.
Tcl (Tool Command Language) est un langage de programmation dynamique très puissant mais facile à apprendre, mature mais évolutif, hautement extensible et adapté à un très large éventail d'utilisations.
Theta est un langage de programmation fonctionnel moderne, à usage général, doté d'un système de types puissant et d'une syntaxe expressive. Il présente une conception modulaire et prend en charge la correspondance de modèles, la surcharge de fonctions et d'autres avantages.
TurboScript est un langage de programmation expérimental pour la programmation parallèle pour le Web qui se compile en JavaScript (asm.js) et WebAssembly (ciblant le post-MVP). La syntaxe est similaire à TypeScript et le compilateur est open source et écrit en TypeScript. TurboScript n'a aucune dépendance.
TypeScript est un langage de programmation open source développé et maintenu par Microsoft. Il s'agit d'un sur-ensemble syntaxique strict de JavaScript et ajoute un typage statique facultatif au langage.
V est un langage de programmation compilé statiquement typé conçu pour construire des logiciels maintenables.
Un langage de programmation de systèmes collectif et léger et léger et collecté à ordures. Son compilateur produit des exécutables natifs optimisés et autonomes, des modules WebAssembly ou des pots pour le JVM.
WA est un langage de programmation à usage général conçu pour développer une robustesse et un logiciel WebAssembly. Au lieu de nécessiter des chaînes d'outils complexes à configurer, vous pouvez simplement aller l'installer - ou l'exécuter dans un navigateur.
凹语言 ™ (凹读音 凹读音 凹读音 凹读音 凹读音 凹读音 wa ") 是 针对 wasm 平台设计的的通用编程语言 , 支持 Linux 、 macOS 和 Windows等主流操作系统和 Chrome 等浏览器环境 , 同时也支持作为独立 Shell 脚本和被嵌入脚本模式执行。
WAH est un langage de niveau légèrement supérieur qui est un superset de WebAssembly. Il vise à rendre le format de texte de WebAssembly légèrement plus amical avec les humains, sans introduire de nouvelles syntaxes ou de données.
Unmaintained
Walt est une syntaxe alternative pour le format de texte WebAssembly. C'est une expérience d'utilisation de la syntaxe JavaScript pour écrire aussi «proche du métal» que possible. C'est JavaScript avec des règles. .Walt Files compile directement au format binaire WebAssembly.
Unmaintained
WEBAssembly Macro Language: la syntaxe WAM est un superset proche de la syntaxe de déchet qui est plus pratique pour les développeurs humains à écrire directement.
Unmaintained
WASE: WebAssembly s'est rendu facile. Wase est une langue, qui essaie de rendre Wasm facile à écrire. La langue mappe étroitement à WebAssembly et compile directement à WasM Bytecode. A une forte typage avec l'inférence de type.
Oui, WebAssembly.
Wasm3
est l'interprète WebAssembly le plus rapide, qui permet l'auto-hébergement WebAssembly.
Wonkey est un langage de programmation facile à apprendre, orienté objet, moderne et multiplateforme pour la création de jeux vidéo multiplateforme, hautement inspirés par la gamme de langues "Blitzbasic".
Un langage en forme de lisp qui compile vers WebAssembly, écrit en raquette
Unmaintained
Compilateur de jouets C pour x86-64 et wasm
Zig est un langage de programmation à usage général conçu pour la robustesse, l'optimalité et la maintenabilité.
Veuillez lire les directives de contribution si vous souhaitez contribuer.
Dans la mesure du possible en vertu de la loi, Steve Akinyemi a renoncé à tous les droits d'auteur et aux droits connexes ou voisins de ce travail.