Awesome WebAssembly Languages !

This is a fork of appcypher's awesome-wasm-langs.

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:

Legend

:egg: - Work in progress.
:hatching_chick: - Unstable but usable.
:hatched_chick: - Stable for production usage.

Contents

:hatched_chick: .Net
:hatched_chick: AssemblyScript
:egg: ~Astro~ Unmaintained
:egg: Ballerina
:hatched_chick: Brainfuck
:hatched_chick: C
:hatched_chick: C#
:hatched_chick: C++
:hatching_chick: C4wa
:hatched_chick: Clean
:egg: Co
:hatched_chick: COBOL
:egg: Crystal
:hatching_chick: D
:hatching_chick: Eel
:hatching_chick: Elixir
:hatched_chick: F#
:egg: Faust
:egg: Forest
:hatched_chick: Forth
:hatched_chick: Go
:egg: Grain
:egg: Haskell
:hatching_chick: Java
:hatching_chick: JavaScript
:egg: Julia
:hatching_chick: ~Idris~ Unmaintained
:hatching_chick: KCL
:hatching_chick: Kotlin/Native
:egg: Kou
:hatching_chick: Lisp
:hatched_chick: Lobster
:hatched_chick: Lua
:hatching_chick: Lys
:hatched_chick: Never
:egg: Nim
:egg: Ocaml
:hatching_chick: Pascal
:hatching_chick: Perl
:hatching_chick: PHP
:egg: Plorth
:hatching_chick: Poetry
:hatching_chick: Python
:hatching_chick: Prolog
:hatching_chick: Ruby
:hatched_chick: Rust
:hatching_chick: Scheme
:hatching_chick: Scopes
:hatching_chick: ~Speedy.js~ Unmaintained
:hatching_chick: Swift
:hatching_chick: ~Turboscript~ Unmaintained
:hatched_chick: TypeScript
:egg: Wa
:hatched_chick: ~Wah~ Unmaintained
:hatching_chick: ~Walt~ Unmaintained
:hatching_chick: ~Wam~ Unmaintained
:egg: Wase
:hatched_chick: WebAssembly
:egg: ~Wracket~ Unmaintained
:egg: xcc
:hatched_chick: Zig


.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.


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.


Astro top⇈

Astro is a fun safe language for rapid prototyping and high performance applications.


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.


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.


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.


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.


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".


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.


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.


Co top⇈

A programming language similar to Go and TypeScript.


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.


Crystal top⇈

Crystal is a programming language with the following goals:


D top⇈

D is a general-purpose programming language with static typing, systems-level access, and C-like syntax.


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.


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, fault-tolerant applications.


F# top⇈

F# is a mature, open source, cross-platform, functional-first programming language. It empowers users and organizations to tackle complex computing problems with simple, maintainable and robust code. WebAssembly support is achieved through Bolero, a set of free and open-source libraries and tools built on top of Blazor. F# was mainly conceived by Don Syme of Microsoft Research but it's now maintained by the F# Foundation and its community.


Faust top⇈

Faust (Functional Audio Stream) is a functional programming language specifically designed for real-time signal processing and synthesis. A distinctive characteristic of Faust is to be fully compiled.


Forest top⇈

Forest is a functional programming language that compiles to WebAssembly. The main repo contains the compiler and core syntaxes, currently implemented in Haskell.


Forth top⇈

Forth is an interactive, extensible, imperative, untyped, stack-based programming language.


Go top⇈

Go is a statically typed compiled language in the tradition of C, with memory safety, garbage collection, structural typing, and CSP-style concurrent programming features added.


Grain top⇈

Grain is a strongly-typed functional programming language built for the modern web.


Haskell top⇈

Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry.[1] The latest standard of Haskell is Haskell 2010. As of May 2016, a group is working on the next version, Haskell 2020.


Idris top⇈

Idris is a general purpose pure functional programming language with dependent types. Dependent types allow types to be predicated on values, meaning that some aspects of a program’s behaviour can be specified precisely in the type. It is compiled, with eager evaluation. Its features are influenced by Haskell and ML.


Java top⇈

Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. Java was originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++, but it has fewer low-level facilities than either of them.


JavaScript top⇈

JavaScript is a high-level, interpreted programming language that conforms to the ECMAScript specification. It is a language that is also characterized as dynamic, weakly typed, prototype-based and multi-paradigm.


Julia top⇈

Julia was designed from the beginning for high performance. Julia programs compile to efficient native code for multiple platforms via LLVM.


KCL top⇈

KCL is a constraint-based record & functional language mainly used in configuration and policy scenarios.


Kotlin top⇈

Kotlin is a statically-typed programming language that runs on the Java virtual machine and also can be compiled to JavaScript source code or use the LLVM compiler infrastructure. Its primary development is from a team of JetBrains programmers based in Saint Petersburg, Russia. While the syntax is not compatible with Java, Kotlin is designed to interoperate with Java code and is reliant on Java code from the existing Java Class Library, such as the collections framework.


Kou top⇈

A minimal language compiled into wasm bytecode.


Lisp top⇈

Lisp (historically LISP) is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation.


Lobster top⇈

Lobster is a statically typed language with flow-sensitive type inference and specialization, compile time reference counting (lifetime analysis) that looks a bit like Python. It was originally intended specifically for games. Lobster has its own Wasm backend that compiles directly to linkable (with LLD) .wasm files.


Lua top⇈

Lua is a lightweight, multi-paradigm programming language designed primarily for embedded systems and clients.[2] Lua is cross-platform, since the interpreter is written in ANSI C, and has a relatively simple C API. Lua was originally designed in 1993 as a language for extending software applications to meet the increasing demand for customization at the time.


Lys top⇈

Lys is a typed functional language that compiles directly to WebAssembly.


Never top⇈

Never is a simple functional programming language. Technically it may be classified as syntactically scoped, strongly typed, call by value, functional programming language.


Nim top⇈

A fringe language with some beautiful design patterns.


Ocaml top⇈

OCaml, originally named Objective Caml, is the main implementation of the programming language Caml, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez and others in 1996. A member of the ML language family, OCaml extends the core Caml language with object-oriented programming constructs.


Pascal top⇈

Pascal is a general purpose imperative, procedural and object-oriented static typing programming language. The Free Pascal compiler targets many processor architectures, including wasm32; operating systems, including WASI; and embedded platforms.


Perl top⇈

Perl is a general-purpose programming language originally developed for text manipulation and now used for a wide range of tasks including system administration, web development, network programming, GUI development, and more.


PHP top⇈

PHP is a general-purpose scripting language that is especially suited to server-side web development, in which case PHP generally runs on a web server. Any PHP code in a requested file is executed by the PHP runtime, usually to create dynamic web page content or dynamic images used on websites or elsewhere.


Plorth top⇈

Plorth is stack based, concatenative, strongly typed functional scripting language which is easy to embed to applications written in C++. It's inspired by Forth and Factor programming languages.


Poetry top⇈

Poetry is a poetically dynamic and simple programming language that compiles to WebAssembly. It has a minimalisting syntax akin to CoffeeScript and gives you full control over wasm imports and exports.


Python top⇈

Python is an open source interpreted high-level programming language for general-purpose programming. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.


Prolog top⇈

Prolog is a general-purpose logic programming language associated with artificial intelligence and computational linguistics. Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily as a declarative programming language: the program logic is expressed in terms of relations, represented as facts and rules. A computation is initiated by running a query over these relations.


Ruby top⇈

Ruby is an open source interpreted high-level programming language for general-purpose programming. Created by Matz. Ruby has a design philosophy that emphasizes code readability, notably using as few sigils (special chars:.{}%[]&=>;) as possible.


Rust top⇈

Rust is a systems programming language sponsored by Mozilla Research, which describes it as a "safe, concurrent, practical language,"supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C++, but its designers intend it to provide better memory safety while maintaining performance.


Scheme top⇈

Scheme is a programming language that supports multiple paradigms, including functional programming and imperative programming, and is one of the two main dialects of Lisp. Unlike Common Lisp, the other main dialect, Scheme follows a minimalist design philosophy specifying a small standard core with powerful tools for language extension..


Scopes top⇈

Scopes is a general purpose programming language and compiler infrastructure specifically suited for short turnaround prototyping and development of high performance applications in need of multi-stage compilation at runtime.


Speedy.js top⇈

Speedy.js is a compiler for a well considered, performance pitfalls free subset of JavaScript targeting WebAssembly. Because WebAssembly is statically-typed, the project uses TypeScript as type-checker and to resolve the types of the program symbols.


Swift top⇈

Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, macOS, watchOS, tvOS, Linux, and z/OS.


TurboScript top⇈

TurboScript is an experimental programming language for parallel programming for web which compiles to JavaScript (asm.js) and WebAssembly (targeting post-MVP). The syntax is similar to TypeScript and the compiler is open source and written in TypeScript. TurboScript has zero dependencies.


TypeScript top⇈

TypeScript is an open-source programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript, and adds optional static typing to the language.


Wa top⇈

Wa is a general-purpose programming language designed for developing robustness and maintainability WebAssembly software. Instead of requiring complex toolchains to set up, you can simply go install it - or run it in a browser. 凹语言™(凹读音“Wa”)是 针对 WASM 平台设计的的通用编程语言,支持 Linux、macOS 和 Windows 等主流操作系统和 Chrome 等浏览器环境,同时也支持作为独立Shell脚本和被嵌入脚本模式执行。


Wah top⇈

Wah is a slightly higher level language that is a superset of WebAssembly. It aims to make WebAssembly's text format slightly more friendly to humans, without introducing new syntax or datatypes.


WAlt top⇈

WAlt is an alternative syntax for WebAssembly text format. It's an experiment for using JavaScript syntax to write to as 'close to the metal' as possible. It's JavaScript with rules. .walt files compile directly to WebAssembly binary format.


Wam top⇈

WebAssembly Macro language: Wam syntax is a near superset of wast syntax that is more convenient for human developers to write directly.


Wase top⇈

WASE: WebAssembly made easy. Wase is a language, which tries to make WASM easy to write. The language maps closely to WebAssembly, and compiles directly to Wasm bytecode. Has strong typing with type inference.


WebAssembly top⇈

Yes, WebAssembly. Wasm3 is the fastest WebAssembly interpreter, that enables WebAssembly self-hosting.


Wracket top⇈

A lisp-like language that compiles to WebAssembly, written in racket


xcc top⇈

Toy C compiler for x86-64 and wasm


Zig top⇈

Zig is a general-purpose programming language designed for robustness, optimality, and maintainability.


Please read the contribution guidelines if you want to contribute.


License

CC0

To the extent possible under law, Steve Akinyemi has waived all copyright and related or neighboring rights to this work.