Awesome WebAssembly Languages
WebAssembly, or wasm for short, is a low-level bytecode format that runs in the browser just like JavaScript. It is designed to be faster to parse than JavaScript, as well as faster to execute which makes it a suitable compilation target for new and existing languages.
This repo contains a list of languages that currently compile to or have their VMs in WebAssembly(wasm) :octocat:
Contents
-
:chicken: - In Production.
-
:hatched_chick: - Stable for production usage.
-
:hatching_chick: - Unstable but usable.
-
:egg: - Work in progress.
-
:skull_and_crossbones: - Unmaintained or Deprecated
.Net top⇈
.NET Framework is a software framework developed by Microsoft that runs primarily on Microsoft Windows. It includes a large class library named Framework Class Library (FCL) and provides language interoperability (each language can use code written in other languages) across several programming languages.
- Mono - an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. For a real-work example, see this repository which contains the Windows 10 calculator. The application is built using standard C++ 11 and C++/CX, with a calculation engine that dates back from 1995. Made by possible with mono via Uno Platform.
- Blazor - a web UI framework using C#/Razor and HTML, running client-side via WebAssembly. Source is maintained on ASP.Net Core repo.
- Bolero - Bolero brings Blazor to F# developers with an easy to use Model-View-Update architecture, HTML combinators, hot reloaded templates, type-safe endpoints, advanced routing and remoting capabilities, and more.
- NativeAOT-LLVM - an experimental fork of the CoreCLR .NET runtime that compiles .NET applications into single-file executables, with the primary target being WASM
Ada top⇈
Ada is a structured, statically typed, imperative, and object-oriented high-level programming language, inspired by Pascal and other languages. It has built-in language support for design by contract (DbC), extremely strong typing, explicit concurrency, tasks, synchronous message passing, protected objects, and non-determinism. Ada improves code safety and maintainability by using the compiler to find errors in favor of runtime errors.
- adawebpack - GNAT-LLVM compiler for WebAssembly target, GNAT Run Time Library and AdaWebPack bindings for Web API.
- adagl - Multiplatform Ada/OpenGL bindings (ported to native/OpenGL, A2JS/WebGL and WASM/WebGL).
- adawebui - GUI based on adawebpack.\
AssemblyScript top⇈
AssemblyScript is a new compiler targeting WebAssembly while utilizing TypeScript's syntax and node's vibrant ecosystem. Instead of requiring complex toolchains to set up, you can simply npm install it - or run it in a browser.
- AssemblyScript - main repository.
Astro top⇈
Astro is a fun safe language for rapid prototyping and high performance applications.
Astro - main repository.Unmaintained
Ballerina top⇈
Ballerina is an open-source programming language for the cloud that makes it easier to use, combine, and create network services. The WebAssembly compiler is implemented for the native Ballerina compiler nBallerina.
- Main repository - Ballerina-to-wasm compiler
BASIC top⇈
BASIC (acronym for "Beginners' All-purpose Symbolic Instruction Code") is an early general-purpose and high-level programming language. It's still one of the simplest and easy to learn languages.
- basic_rs - a BASIC Interpreter/Compiler for the Original Dartmouth Version written in Rust. Also provides
basic2wasm
tool which compiles BASIC to WebAssembly using binaryen. - basicwasm - a GWBasic interpreter compiled to WASM with a Web UI.
- EndBASIC - BASIC environment with a REPL, a web interface, a graphical console, and RPi support written in Rust. You can try it out here.
- gobasic - a BASIC interpreter written in Golang.
Brainfuck top⇈
Brainfuck is an esoteric programming language created in 1993 by Urban Müller, and notable for its extreme minimalism. The language consists of only eight simple commands and an instruction pointer. While it is fully Turing-complete, it is not intended for practical use, but to challenge and amuse programmers.
- BrainfuckWebassembly - a simple Brainfuck-to-wasm compiler in one function.
- Brainfuck2Wasm - a Brainfuck-to-wasm compiler and playground.
- BrainfuckRsWasm - a Brainfuck interpreter written in Rust and compiled to WebAssembly.
- bfwasm - A non-optimizing Brainf_ck to WebAssembly compiler with WASI support.
C top⇈
C is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations. C was originally developed by Dennis Ritchie between 1969 and 1973 at Bell Labs,[6] and used to re-implement the Unix operating system.
- Emscripten - an LLVM-to-JavaScript/Webassembly compiler. It takes LLVM bitcode - which can be generated from C/C++, using llvm-gcc (DragonEgg) or clang, or any other language that can be converted into LLVM - and compiles that into JavaScript or wasm.
- Cheerp - an open-source, enterprise-grade C/C++ compiler for Web applications. Cheerp can compile virtually any C/C++ code to WebAssembly and/or JavaScript.
C# top⇈
C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines. Its development team is led by Anders Hejlsberg. WebAssembly support is achieved through Blazor.
- See .Net
C++ top⇈
C++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation. It was designed with a bias toward system programming and embedded, resource-constrained and large systems, with performance, efficiency and flexibility of use as its design highlights. The development of the language was started in 1979 by Bjarne Stroustrup as a "C with Classes".
- See C.
c4wa top⇈
C4wa ("C for Web Assembly") is a subset of Standard C specifically targeted for simple and efficient Web Assembly compilation. Generated WASM files include no overhead, out of the box compatible with any Web Assembly runtime, support import of variable-argument functions (such as
printf
). There is also an option to create well-formatted and readable WAT files.
- c4wa - main repository.
Clean top⇈
Clean is a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications. Some of its most notable language features are uniqueness typing, dynamic typing, and generic functions.
- ABC interpreter - interpreter for Clean's intermediate language ABC, with a WebAssembly version.
- iTasks - integration of the above ABC interpreter with browser applications.
Co top⇈
A programming language similar to Go and TypeScript.
- Co - main repository
COBOL top⇈
COBOL is a compiled English-like programming language designed for business use. It is imperative, procedural, and object-oriented. COBOL is primarily used in business, finance, and administrative systems.
- Cobaul - toolchain used to support COBOL in CloudFlare workers
Crystal top⇈
Crystal is a programming language with the following goals:
- Have a syntax similar to Ruby (but compatibility with it is not a goal)
- Statically type-checked but without having to specify the type of variables or method arguments.
- Be able to call C code by writing bindings to it in Crystal.
- Have compile-time evaluation and generation of code, to avoid boilerplate code.
- Compile to efficient native code.
Cyber top⇈
Fast, efficient, and concurrent scripting. Dynamic and gradual types; Concurrency with fibers; Multithreaded; Memory safe; FFI and Embeddable.
- Cyber - project repository
D top⇈
D is a general-purpose programming language with static typing, systems-level access, and C-like syntax.
- LDC - LLVM-based D compiler, which can generate WASM since version 1.11.0.
Dart top⇈
An approachable, portable, and productive language for high-quality apps on any platform
- sdk - The Dart SDK, including the VM, dart2js, core libraries, and more.
- language - Design of the Dart language
- Use via Flutter - How to compile Dart to WebAssembly for a Flutter Web application
Eclair top⇈
Eclair is a minimal, fast Datalog implementation that compiles to LLVM IR and WASM.
- eclair-lang - The Eclair compiler, which can compile Eclair code to LLVM IR and WASM.
Eel top⇈
Eel is a small language used for, among other things, writing visualizer "presets" for Milkdrop, the music visualization program which came with Winamp.
- eel-wasm - Compiles Milkdrop flavored Eel to Wasm in the browser. Intended to become a component of Butterchurn, a WebGL implementation of the Milkdrop Visualizer.
Elixir top⇈
Elixir is a dynamic, functional language designed for building scalable and maintainable applications. Elixir builds on top of Erlang and shares the same abstractions for building distributed,