Files
awesome-awesomeness/html/wasmlangs.html
2025-07-18 23:13:11 +02:00

1355 lines
61 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-webassembly-languages-awesome">Awesome WebAssembly
Languages <img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></h1>
<p>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.</p>
<p>This repo contains a list of languages that currently compile to or
have their VMs in WebAssembly(wasm) :octocat:</p>
<h2 id="contents">Contents</h2>
<ul>
<li>:chicken: - In Production.
<ul>
<li><a href="#c">C</a></li>
<li><a href="#cpp">C++</a></li>
<li><a href="#rust">Rust</a></li>
<li><a href="#go">Go</a></li>
</ul></li>
<li>:hatched_chick: - Stable for production usage.
<ul>
<li><a href="#dotnet">.Net</a></li>
<li><a href="#assemblyscript">AssemblyScript</a></li>
<li><a href="#brainfuck">Brainfuck</a></li>
<li><a href="#csharp">C#</a></li>
<li><a href="#clean">Clean</a></li>
<li><a href="#cyber">Cyber</a></li>
<li><a href="#cobol">COBOL</a></li>
<li><a href="#dart">Dart</a></li>
<li><a href="#fsharp">F#</a></li>
<li><a href="#forth">Forth</a></li>
<li><a href="#grain">Grain</a></li>
<li><a href="#labview">LabVIEW</a></li>
<li><a href="#lobster">Lobster</a></li>
<li><a href="#lox">Lox</a></li>
<li><a href="#lua">Lua</a></li>
<li><a href="#nelua">Nelua</a></li>
<li><a href="#never">Never</a></li>
<li><a href="#rego">Rego</a></br></li>
<li><a href="#typescript">TypeScript</a></li>
<li><a href="#webassembly">WebAssembly</a></li>
<li><a href="#zig">Zig</a></br></li>
</ul></li>
<li>:hatching_chick: - Unstable but usable.
<ul>
<li><a href="#ada">Ada</a></li>
<li><a href="#berry">Berry</a></li>
<li><a href="#c4wa">C4wa</a></li>
<li><a href="#crystal">Crystal</a></li>
<li><a href="#d">D</a></li>
<li><a href="#eclair">Eclair</a></li>
<li><a href="#eel">Eel</a></li>
<li><a href="#elixir">Elixir</a></li>
<li><a href="#janet">Janet</a></li>
<li><a href="#java">Java</a></li>
<li><a href="#javascript">JavaScript</a></li>
<li><a href="#kcl">KCL</a></li>
<li><a href="#kotlin">Kotlin/Wasm</a></li>
<li><a href="#lisp">Lisp</a></li>
<li><a href="#lys">Lys</a></li>
<li><a href="#pascal">Pascal</a></li>
<li><a href="#perl">Perl</a></li>
<li><a href="#php">PHP</a></li>
<li><a href="#poetry">Poetry</a></li>
<li><a href="#python">Python</a></li>
<li><a href="#prolog">Prolog</a></li>
<li><a href="#r">R</a></li>
<li><a href="#rebol">Rebol</a></li>
<li><a href="#ring">Ring</a></li>
<li><a href="#ruby">Ruby</a></br></li>
<li><a href="#scheme">Scheme</a></li>
<li><a href="#swift">Swift</a></li>
<li><a href="#tcl">Tcl</a></li>
<li><a href="#v">V</a></li>
<li><a href="#virgil">Virgil</a></li>
<li><a href="#wa">Wa</a></li>
<li><a href="#wonkey">Wonkey</a></li>
</ul></li>
<li>:egg: - Work in progress.
<ul>
<li><a href="#ballerina">Ballerina</a></li>
<li><a href="#basic">BASIC</a></li>
<li><a href="#co">Co</a></li>
<li><a href="#faust">Faust</a></li>
<li><a href="#forest">Forest</a></li>
<li><a href="#haskell">Haskell</a></li>
<li><a href="#julia">Julia</a></li>
<li><a href="#kou">Kou</a></li>
<li><a href="#moonbit">MoonBit</a></li>
<li><a href="#nerd">Nerd</a></li>
<li><a href="#nim">Nim</a></li>
<li><a href="#ocaml">Ocaml</a></li>
<li><a href="#plorth">Plorth</a></li>
<li><a href="#roc">Roc</a></li>
<li><a href="#theta">Theta</a></li>
<li><a href="#wase">Wase</a></li>
<li><a href="#xcc">xcc</a></br></li>
</ul></li>
<li>:skull_and_crossbones: - Unmaintained or Deprecated
<ul>
<li><sub><a href="#astro">Astro</a></sub> <code>Unmaintained</code></li>
<li><sub><a href="#idris">Idris</a></sub> <code>Unmaintained</code></li>
<li><sub><a href="#speedyjs">Speedy.js</a></sub>
<code>Unmaintained</code></li>
<li><sub><a href="#turboscript">Turboscript</a></sub>
<code>Unmaintained</code></li>
<li><sub><a href="#wah">Wah</a></sub> <code>Unmaintained</code></li>
<li><sub><a href="#walt">Walt</a></sub> <code>Unmaintained</code></li>
<li><sub><a href="#wam">Wam</a></sub> <code>Unmaintained</code></li>
<li><sub><a href="#wracket">Wracket</a></sub>
<code>Unmaintained</code></li>
</ul></li>
</ul>
<hr />
<h3 id="net-top"><a name="dotnet"></a>.Net <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>.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. * <a
href="https://github.com/mono/mono/tree/master/sdks/wasm">Mono</a> - an
open source implementation of Microsofts .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 <a
href="https://github.com/nventive/calculator">Windows 10 calculator</a>.
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 <a
href="https://platform.uno/a-piece-of-windows-10-is-now-running-on-webassembly-natively-on-ios-and-android/">Uno
Platform</a>. * <a
href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor">Blazor</a>
- a web UI framework using C#/Razor and HTML, running client-side via
WebAssembly. Source is maintained on <a
href="https://github.com/dotnet/aspnetcore">ASP.Net Core</a> repo. * <a
href="https://fsbolero.io/">Bolero</a> - 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. * <a
href="https://github.com/dotnet/runtimelab/tree/feature/NativeAOT-LLVM">NativeAOT-LLVM</a>
- an experimental fork of the CoreCLR .NET runtime that compiles .NET
applications into single-file executables, with the primary target being
WASM</p>
</blockquote>
<hr />
<h3 id="ada-top"><a name="ada"></a>Ada <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/godunko/adawebpack">adawebpack</a> - GNAT-LLVM
compiler for WebAssembly target, GNAT Run Time Library and AdaWebPack
bindings for Web API. * <a
href="https://github.com/godunko/adagl">adagl</a> - Multiplatform
Ada/OpenGL bindings (ported to native/OpenGL, A2JS/WebGL and
WASM/WebGL). * <a
href="https://github.com/godunko/adawebui">adawebui</a> - GUI based on
adawebpack.<br />
</p>
</blockquote>
<hr />
<h3 id="assemblyscript-top"><a name="assemblyscript"></a>AssemblyScript
<sup><a href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>AssemblyScript is a new compiler targeting WebAssembly while
utilizing TypeScripts syntax and nodes vibrant ecosystem. Instead of
requiring complex toolchains to set up, you can simply npm install it -
or run it in a browser. * <a
href="https://github.com/AssemblyScript/assemblyscript">AssemblyScript</a>
- main repository.</p>
</blockquote>
<hr />
<h3 id="astro-top"><a name="astro"></a>Astro <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Astro is a fun safe language for rapid prototyping and high
performance applications. * ~<a
href="https://github.com/astrolang/astro">Astro</a> - main repository.~
<code>Unmaintained</code></p>
</blockquote>
<hr />
<h3 id="ballerina-top"><a name="ballerina"></a>Ballerina <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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 <a
href="https://github.com/ballerina-platform/nballerina">nBallerina</a>.
* <a
href="https://github.com/ballerina-platform/nballerina/tree/wasm">Main
repository</a> - Ballerina-to-wasm compiler</p>
</blockquote>
<hr />
<h3 id="basic-top"><a name="basic"></a>BASIC <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>BASIC (acronym for “Beginners All-purpose Symbolic Instruction
Code”) is an early general-purpose and high-level programming language.
Its still one of the simplest and easy to learn languages. * <a
href="https://github.com/yiransheng/basic_rs">basic_rs</a> - a BASIC
Interpreter/Compiler for the Original Dartmouth Version written in Rust.
Also provides <code>basic2wasm</code> tool which compiles BASIC to
WebAssembly using binaryen. * <a
href="https://github.com/navionguy/basicwasm">basicwasm</a> - a GWBasic
interpreter compiled to WASM with a Web UI. * <a
href="https://github.com/endbasic/endbasic">EndBASIC</a> - BASIC
environment with a REPL, a web interface, a graphical console, and RPi
support written in Rust. You can try it out <a
href="https://repl.endbasic.dev/">here</a>. * <a
href="https://github.com/skx/gobasic">gobasic</a> - a BASIC interpreter
written in Golang.</p>
</blockquote>
<hr />
<h3 id="berry-top"><a name="berry"></a>Berry <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Berry is an ultra-lightweight dynamically typed embedded scripting
language. Its designed for lower-performance embedded devices, fast,
multi-paradigm, simple, flexible, and has very small RAM footprint. * <a
href="https://github.com/berry-lang/berry">berry</a> - main repo. * <a
href="https://github.com/berry-lang/berry_web/">berry_web</a> - Berry
web playground. The project contains port of the Berry to Emscripten
platform.</p>
</blockquote>
<hr />
<h3 id="brainfuck-top"><a name="brainfuck"></a>Brainfuck <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/serprex/brainwebfuckassembly">BrainfuckWebassembly</a>
- a simple Brainfuck-to-wasm compiler in one function. * <a
href="https://github.com/verdie-g/brainfuck2wasm">Brainfuck2Wasm</a> - a
Brainfuck-to-wasm compiler and playground. * <a
href="https://github.com/shritesh/brainfuck-rs-wasm">BrainfuckRsWasm</a>
- a Brainfuck interpreter written in Rust and compiled to WebAssembly. *
<a
href="https://github.com/wa-lang/wa/tree/master/waroot/examples/brainfuck">Brainfuck
Wa-lang</a> - a Brainfuck interpreter written in <a
href="https://github.com/wa-lang/wa">凹语言/Wa-lang</a> and compiled to
WebAssembly. * <a href="https://github.com/surma/bfwasm">bfwasm</a> - A
non-optimizing Brainf_ck to WebAssembly compiler with WASI support.</p>
</blockquote>
<hr />
<h3 id="c-top"><a name="c"></a>C <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/kripken/emscripten">Emscripten</a> - 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. * <a
href="https://github.com/leaningtech/cheerp-meta">Cheerp</a> - an
open-source, enterprise-grade C/C++ compiler for Web applications.
Cheerp can compile virtually any C/C++ code to WebAssembly and/or
JavaScript.</p>
</blockquote>
<hr />
<h3 id="c-top-1"><a name="csharp"></a>C# <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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 <a
href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor">Blazor</a>.
* See <a href="#dotnet">.Net</a></p>
</blockquote>
<hr />
<h3 id="c-top-2"><a name="cpp"></a>C++ <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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 <a
href="#c">C</a>.</p>
</blockquote>
<hr />
<h3 id="c4wa-top"><a name="c4wa"></a>c4wa <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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
<code>printf</code>). There is also an option to create well-formatted
and readable WAT files. * <a
href="https://github.com/kign/c4wa">c4wa</a> - main repository.</p>
</blockquote>
<table style="width:29%;">
<colgroup>
<col style="width: 29%" />
</colgroup>
<tbody>
<tr class="odd">
<td>### <a name="clean"></a>Clean <sup><a
href="#contents">top⇈</a></sup> &gt; Clean is a general purpose,
state-of-the-art, pure and lazy functional programming language designed
for making real-world applications. &gt; Some of its most notable
language features are uniqueness typing, dynamic typing, and generic
functions. * <a
href="https://gitlab.com/clean-and-itasks/abc-interpreter">ABC
interpreter</a> - interpreter for Cleans intermediate language ABC,
with a WebAssembly version. * <a
href="https://gitlab.com/clean-and-itasks/itasks-sdk">iTasks</a> -
integration of the above ABC interpreter with browser applications.</td>
</tr>
</tbody>
</table>
<h3 id="co-top"><a name="co"></a>Co <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>A programming language similar to Go and TypeScript. * <a
href="https://github.com/rsms/co">Co</a> - main repository</p>
</blockquote>
<hr />
<h3 id="cobol-top"><a name="cobol"></a>COBOL <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/cloudflare/cobaul">Cobaul</a> - toolchain used
to <a
href="https://blog.cloudflare.com/cloudflare-workers-now-support-cobol/">support
COBOL in CloudFlare workers</a></p>
</blockquote>
<hr />
<h3 id="crystal-top"><a name="crystal"></a>Crystal <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Crystal is a programming language with the following goals:</p>
<ul>
<li>Have a syntax similar to Ruby (but compatibility with it is not a
goal)</li>
<li>Statically type-checked but without having to specify the type of
variables or method arguments.</li>
<li>Be able to call C code by writing bindings to it in Crystal.</li>
<li>Have compile-time evaluation and generation of code, to avoid
boilerplate code.</li>
<li>Compile to efficient native code.</li>
</ul>
</blockquote>
<ul>
<li><a href="https://github.com/crystal-lang/crystal">Crystal</a> - main
repository</li>
<li><a href="https://github.com/crystal-lang/crystal/pull/10870">POC
PR</a> - PR adding initial support for WebAssembly</li>
</ul>
<hr />
<h3 id="cyber-top"><a name="cyber"></a>Cyber <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Fast, efficient, and concurrent scripting. Dynamic and gradual types;
Concurrency with fibers; Multithreaded; Memory safe; FFI and Embeddable.
* <a href="https://github.com/fubark/cyber">Cyber</a> - project
repository</p>
</blockquote>
<hr />
<h3 id="d-top"><a name="d"></a>D <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>D is a general-purpose programming language with static typing,
systems-level access, and C-like syntax. * <a
href="https://github.com/ldc-developers/ldc">LDC</a> - LLVM-based D
compiler, which can generate WASM since version 1.11.0.</p>
</blockquote>
<hr />
<h3 id="dart-top"><a name="dart"></a>Dart <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>An approachable, portable, and productive language for high-quality
apps on any platform * <a
href="https://github.com/dart-lang/sdk">sdk</a> - The Dart SDK,
including the VM, dart2js, core libraries, and more. * <a
href="https://github.com/dart-lang/language">language</a> - Design of
the Dart language * <a href="https://flutter.dev/wasm">Use via
Flutter</a> - How to compile Dart to WebAssembly for a Flutter Web
application</p>
</blockquote>
<hr />
<h3 id="eclair-top"><a name="eclair"></a>Eclair <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Eclair is a minimal, fast Datalog implementation that compiles to
LLVM IR and WASM. * <a
href="https://github.com/luc-tielen/eclair-lang">eclair-lang</a> - The
Eclair compiler, which can compile Eclair code to LLVM IR and WASM.</p>
</blockquote>
<hr />
<h3 id="eel-top"><a name="eel"></a>Eel <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Eel is a small language used for, among other things, writing
visualizer “presets” for <a
href="http://www.geisswerks.com/milkdrop/">Milkdrop</a>, the music
visualization program which came with <a
href="https://en.wikipedia.org/wiki/Winamp">Winamp</a>. * <a
href="https://github.com/captbaritone/eel-wasm">eel-wasm</a> - Compiles
Milkdrop flavored Eel to Wasm in the browser. Intended to become a
component of <a
href="https://github.com/jberg/butterchurn">Butterchurn</a>, a WebGL
implementation of the Milkdrop Visualizer.</p>
</blockquote>
<hr />
<h3 id="elixir-top"><a name="elixir"></a>Elixir <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * ~<a
href="https://github.com/GetFirefly/firefly">Firefly</a> - An
alternative BEAM implementation (with AOT compiler) designed for
WebAssembly. [Unmaintained]~ * ~<a
href="https://github.com/jamen/elixir-wasm">ElixirWasm</a> - an elixir
compiler for wasm. [Unmaintained]~</p>
</blockquote>
<hr />
<h3 id="f-top"><a name="fsharp"></a>F# <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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 <a
href="https://fsbolero.io/">Bolero</a>, a set of free and open-source
libraries and tools built on top of <a
href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor">Blazor</a>.
F# was mainly conceived by Don Syme of Microsoft Research but its now
maintained by the <a href="http://foundation.fsharp.org/">F#
Foundation</a> and its community. * See <a href="#dotnet">.Net</a></p>
</blockquote>
<hr />
<h3 id="faust-top"><a name="faust"></a>Faust <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/grame-cncm/faust">Faust</a> - main
repository.</p>
</blockquote>
<hr />
<h3 id="forest-top"><a name="forest"></a>Forest <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Forest is a functional programming language that compiles to
WebAssembly. The main repo contains the compiler and core syntaxes,
currently implemented in Haskell. * <a
href="https://github.com/forest-lang/core">ForestLang</a> - main
repository.</p>
</blockquote>
<hr />
<h3 id="forth-top"><a name="forth"></a>Forth <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Forth is an interactive, extensible, imperative, untyped, stack-based
programming language. * <a
href="https://github.com/stefano/wasm-forth">WASM Forth</a> - Forth
implementation for wasm. * <a
href="https://github.com/remko/waforth">WAForth</a> - Bootstrapping
Dynamic Forth Interpreter/Compiler for &amp; in WebAssembly.</p>
</blockquote>
<hr />
<h3 id="go-top"><a name="go"></a>Go <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/golang/go">Go</a> - main repository. * <a
href="https://github.com/aykevl/tinygo">TinyGo</a> - a subset of Go
targeted to embedded devices and WebAssembly.</p>
</blockquote>
<table style="width:29%;">
<colgroup>
<col style="width: 29%" />
</colgroup>
<tbody>
<tr class="odd">
<td>### <a name="grain"></a>Grain <sup><a
href="#contents">top⇈</a></sup> &gt; Grain is a strongly-typed
functional programming language built for the modern web. * <a
href="https://github.com/grain-lang/grain">Grain</a> - main repository.
* <a href="https://grain-lang.org/">GrainWeb</a> - Web page.</td>
</tr>
</tbody>
</table>
<h3 id="haskell-top"><a name="haskell"></a>Haskell <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * ~<a
href="https://github.com/tweag/asterius">Asterius</a> - a Haskell to
WebAssembly compiler. [Unmaintained]~ * ~<a
href="https://github.com/dfinity/dhc">DHC</a> - a Haskell compiler that
accepts only a tiny subset of the language and produces WebAssembly
binaries. [Unmaintained]~ * <a
href="https://gitlab.haskell.org/haskell-wasm/ghc-wasm-meta">GHC
WASM</a> - GHCs wasm backend. * ~<a
href="https://github.com/haskell-wasm/wasm">HaskellWasm</a> - a Haskell
compiler infrastructure for generating WebAssembly. [Unmaintained]~ * <a
href="https://github.com/SPY/haskell-wasm">haskell-wasm</a> - Haskell
WebAssembly Toolkit. It includes Language helpers and a fully
spec-compatible WASM interpreter. * <a
href="https://github.com/WebGHC/wasm-cross">wasm-cross</a> - A toolchain
for cross compiling C and Haskell to WebAssembly, using the WebGHC and
LLVM.</p>
</blockquote>
<hr />
<h3 id="idris-top"><a name="idris"></a>Idris <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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 programs behaviour can be specified
precisely in the type. It is compiled, with eager evaluation. Its
features are influenced by Haskell and ML. * ~<a
href="https://github.com/SPY/idris-codegen-wasm">Idris-codegen-WASM</a>
- WASM codegen repository.~ <code>Unmaintained</code></p>
</blockquote>
<hr />
<h3 id="janet-top"><a name="janet"></a>Janet <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Janet makes a good system scripting language, or a language to embed
in other programs. Its like a “modern Lisp”, featuring great and easy C
interop and a variety of data types like arrays, structs, tables, etc. *
<a href="https://github.com/janet-lang/janet">Janet</a> - main
repository. You can try it out <a
href="https://janet-lang.org/#Try-It">here</a>.</p>
</blockquote>
<hr />
<h3 id="java-top"><a name="java"></a>Java <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/konsoletyper/teavm">TeaVM</a> - an
ahead-of-time translating compiler (transpiler) of Java bytecode, thats
capable of emitting JavaScript and WebAssembly. * <a
href="https://github.com/i-net-software/JWebAssembly">JWebAssembly</a> -
A Java bytecode to WebAssembly compiler. It can generate the WebAssembly
binary or text format. It is written in Java itself and can be
integrated with other Java build tools. * <a
href="https://github.com/mirkosertic/Bytecoder">Bytecoder</a> - A Rich
Domain Model for Java Bytecode and Framework to interpret and transpile
it to other languages such as JavaScript, OpenCL or WebAssembly. * <a
href="https://github.com/leaningtech/cheerpj-meta">CheerpJ</a> - A Java
compiler for the web that converts any Java client application into
standard HTML5/WebAssembly/JavaScript. * <a
href="https://github.com/AmazingRise/rise-jvm">Rise JVM</a> - Rise JVM
is a minimal Java VM based on WASM. You can try it out <a
href="https://risehere.net/rise-jvm">here</a>.</p>
</blockquote>
<hr />
<h3 id="javascript-top"><a name="javascript"></a>JavaScript <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/svaarala/duktape">Duktape</a> - an embeddable
Javascript engine, with a focus on portability and compact footprint
thats capable of being run in the browser via WebAssembly. * <a
href="https://github.com/bytecodealliance/javy">Javy</a> - a JavaScript
to WebAssembly toolchain, capable of generating WASI-compatible modules
from JS by embedding the QuickJS engine. * <a
href="https://github.com/bytecodealliance/spidermonkey-wasm-rs">SpiderMonkey</a>
- experimental Rust bindings and generic builtins for SpiderMonkey for
building WASI-compatible modules from JavaScript. * <a
href="https://github.com/justjake/quickjs-emscripten">quickjs-emscripten</a>
- Safely execute untrusted Javascript in your JS/TS, and execute
synchronous code that uses async functions. * <a
href="https://github.com/second-state/wasmedge-quickjs">wasmedge-quickjs</a>
- A high-performance, secure, extensible, and OCI-complaint JavaScript
runtime for WasmEdge. Features TCP/UDP support via WasmEdge Sockets. *
<a href="https://github.com/boa-dev/boa">Boa</a> - an embeddable and
experimental Javascript engine written in Rust. You can try it out <a
href="https://boajs.dev/boa/playground/">here</a>. * <a
href="https://github.com/dop251/goja">goja</a> - an implementation of
ECMAScript 5.1 in pure Go with emphasis on standard compliance and
performance. * <a href="https://github.com/robertkrimen/otto">otto</a> -
a JavaScript parser and interpreter written natively in Go. * <a
href="https://github.com/facebook/hermes">hermes</a> - Hermes is a
JavaScript engine optimized for fast start-up of React Native apps. It
features ahead-of-time static optimization and compact bytecode. <a
href="https://github.com/facebook/hermes/blob/main/doc/Emscripten.md">Emscripten</a>
and <a
href="https://github.com/guest271314/hermes/blob/shermes-wasm/doc/WASI.md">WASI</a>
support. * <a href="https://github.com/sebastienros/jint">Jint</a> - an
embeddable Javascript interpreter for .NET which can run on any modern
.NET platform as it supports .NET Standard 2.0 and .NET 4.6.2 targets
(and later). * <a
href="https://github.com/CanadaHonk/porffor">Porffor</a> - a
from-scratch experimental AOT optimizing JS/TS -&gt; Wasm/C
engine/compiler/runtime. You can try it out <a
href="https://porffor.dev/">here</a>. * <a
href="https://github.com/sebastianwessel/quickjs">sebastianwessel-quickjs</a>
- a typescript package to execute JavaScript and TypeScript code in a
webassembly quickjs sandbox. You can try it out <a
href="https://sebastianwessel.github.io/quickjs/playground.html">here</a>.</p>
</blockquote>
<hr />
<h3 id="julia-top"><a name="julia"></a>Julia <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Julia was designed from the beginning for high performance. Julia
programs compile to efficient native code for multiple platforms via
LLVM. * <a href="https://github.com/Keno/julia-wasm">julia-wasm</a> -
Emscripten &amp; LLVM Julia to WASM compiler. * ~<a
href="https://github.com/MikeInnes/Charlotte.jl">Charlotte.jl</a> - a
Julia to WebAssembly/Javascript compiler~ <code>Unmaintained</code> * <a
href="https://tshort.github.io/WebAssemblyCompiler.jl/stable/">WebAssemblyCompiler.jl</a>
- Julia to Wasm GC compiler via Binaryen</p>
</blockquote>
<hr />
<h3 id="kcl-top"><a name="kcl"></a>KCL <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>KCL is a constraint-based record &amp; functional language mainly
used in configuration and policy scenarios. * <a
href="https://github.com/KusionStack/KCLVM">KCLVM</a> - LLVM-based KCL
compiler, which can generate WASM.</p>
</blockquote>
<hr />
<h3 id="kotlin-top"><a name="kotlin"></a>Kotlin <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Kotlin is a modern but already mature programming language aimed to
make developers happier. Its concise, safe, interoperable with Java and
other languages, and provides many ways to reuse code between multiple
platforms for productive programming.</p>
<p>Kotlin/Wasm is the new target and toolchain in the Kotlin family. It
has a few special properties: - It compiles to Wasm directly without any
additional layers, to compile as fast as possible, including
incrementally in the future. - It uses experimental/fresh proposals like
GC, Typed Function References, Exception Handling, and Stringref. * <a
href="https://kotl.in/wasm">Kotlin/Wasm (Kotlin WebAssembly)</a> * <a
href="https://github.com/Kotlin/kotlin-wasm-examples">Kotlin/Wasm
examples</a></p>
</blockquote>
<hr />
<h3 id="kou-top"><a name="kou"></a>Kou <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>A minimal language compiled into wasm bytecode. * <a
href="https://github.com/utatti/kou">Kou</a> - main repository.</p>
</blockquote>
<hr />
<h3 id="labview-top"><a name="labview"></a>LabVIEW <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>LabVIEW is a development environment for the G dataflow graphical
programming language used for data acquisition, instrument control, and
industrial automation. * <a
href="https://www.ni.com/en/shop/electronic-test-instrumentation/programming-environments-for-electronic-test-and-instrumentation/what-is-g-web-development-software.html">G
Web Development Software</a> - A standalone development environment
implementing a subset of the G dataflow graphical programming language
to create web-based user interfaces for test and measurement
applications. * <a href="https://github.com/ni/vireosdk">Vireo</a> - An
open-source runtime capable of running the virtual instrument assembly
representation of the G dataflow graphical programming language created
by G Web Development Software.</p>
</blockquote>
<hr />
<h3 id="lisp-top"><a name="lisp"></a>Lisp <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Lisp (historically LISP) is a family of programming languages with a
long history and a distinctive, fully parenthesized prefix notation. *
<a href="https://github.com/FemtoEmacs/wasCm">Femto Emacs</a> -
translates Low Level Lisp into WebAssembly. * <a
href="https://github.com/mbrock/wisp">Wisp</a> - Wisp is a Lisp system
for WebAssembly and native execution.</p>
</blockquote>
<hr />
<h3 id="lobster-top"><a name="lobster"></a>Lobster <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="http://strlen.com/lobster/">Lobster home</a>. * <a
href="http://aardappel.github.io/lobster/README_FIRST.html">Lobster
docs</a> * <a href="https://github.com/aardappel/lobster">Lobster
github</a> * <a
href="http://aardappel.github.io/lobster/implementation.html">Compile to
Wasm</a> - how to compile. * <a
href="http://aardappel.github.io/lobster/implementation_wasm.html">Wasm
backend details</a> - how it is implemented, useful for other language
implementors.</p>
</blockquote>
<hr />
<h3 id="lox-top"><a name="lox"></a>Lox <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Lox is a language created by Bob Nystrom, used to teach compilers in
the book Crafting Interpreters. It is dynamically typed, and supports
classes, closures, and first-class functions. * <a
href="https://github.com/ajeetdsouza/loxcraft">loxcraft</a> uses
WebAssembly for its <a
href="https://ajeetdsouza.github.io/loxcraft/">online
playground</a>.</p>
</blockquote>
<hr />
<h3 id="lua-top"><a name="lua"></a>Lua <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a href="https://github.com/vvanders/wasm_lua">WasmLua</a> -
a Lua VM running in the browser. * <a
href="https://github.com/serprex/luwa">Luwa</a> - a Lua-to-wasm JIT
compiler. * <a href="https://github.com/ceifa/wasmoon">Wasmoon</a> - a
high level Lua VM with JS bindings. * <a
href="https://github.com/SwadicalRag/wasm2lua">Wasm2Lua</a> - can
compile WebAssembly modules to pure Lua (or with FFI LuaJIT for extra
speed). * <a href="https://github.com/milochristiansen/lua">DCLua</a> -
a Lua 5.3 VM and compiler written in Go. Its intended to allow easy
embedding into Go programs, with minimal fuss and bother. * <a
href="https://github.com/erdian718/lua">erdian718/lua</a> (aka
ofunc/lua) - a fork of DCLua, featuring IO capabilities, HTTP client,
IoC, and more. * <a
href="https://github.com/yuin/gopher-lua">GopherLua</a> - a Lua5.1(+
goto statement in Lua5.2) VM and compiler written in Go. It provides Go
APIs that allow you to easily embed a scripting language to your Go host
programs. * <a href="https://github.com/PlutoLang/Pluto">Pluto</a> - a
superset of Lua 5.4 with a focus on general-purpose programming. You can
try it out <a href="https://pluto-lang.org/web/">here</a>. * <a
href="https://github.com/PlutoLang/PlutoScript">PlutoScript</a> -
Plutos extension aimed for web scripting. Provides JS interop and
ability to use Pluto anywhere JavaScript works.</p>
</blockquote>
<hr />
<h3 id="lys-top"><a name="lys"></a>Lys <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Lys is a typed functional language that compiles directly to
WebAssembly.</p>
</blockquote>
<ul>
<li><a href="https://github.com/lys-lang/lys">Lys</a> - main
repository.</li>
</ul>
<hr />
<h3 id="moonbit-top"><a name="moonbit"></a>MoonBit <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>MoonBit is an end-to-end programming language toolchain for cloud and
edge computing using WebAssembly. The language is like Rust with GC
support. The fast compiler is optimized to produce very compact WASM
binaries.</p>
</blockquote>
<ul>
<li><a href="https://www.moonbitlang.com">MoonBit</a> - main website.
You can try the language out <a
href="https://try.moonbitlang.com/">here</a>.</li>
<li><a href="https://github.com/moonbitlang/core">Core library</a> -
open-sourced standard library. Compiler source code is not available
yet.</li>
</ul>
<hr />
<h3 id="nelua-top"><a name="nelua"></a>Nelua <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Minimal, simple, efficient, statically typed, compiled,
metaprogrammable, safe, and extensible systems programming language with
a Lua flavor. * <a
href="https://github.com/edubart/nelua-lang/">Nelua</a> - project
repository * <a
href="https://github.com/edubart/nelua-lang/discussions/11">Nelua on the
Web</a> - Nelua-wasm discussion</p>
</blockquote>
<hr />
<h3 id="nerd-top"><a name="nerd"></a>Nerd <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>NerdLang is a substract of JS with some additions, focus on
efficiency. Nerd is a JavaScript native compiler aiming to make
JavaScript universal, Nerd is able to compile native apps for Windows,
Mac, Linux, iOS, Android, Raspberry, STM32, Arduino, Web (including
WASM), and more. * <a href="https://github.com/NerdLang/nerd">Nerd</a> -
main repository.</p>
</blockquote>
<hr />
<h3 id="never-top"><a name="never"></a>Never <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Never is a simple functional programming language. Technically it may
be classified as syntactically scoped, strongly typed, call by value,
functional programming language. * <a
href="https://github.com/never-lang/never">Never</a> - project
repository * <a
href="https://never-lang.readthedocs.io/en/latest/never-web/">Never on
the Web</a> - Never language demo</p>
</blockquote>
<hr />
<h3 id="nim-top"><a name="nim"></a>Nim <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>A fringe language with some beautiful design patterns. * <a
href="https://github.com/arnetheduck/nlvm">nlvm</a> - LLVM-based
compiler for Nim with a WebAssembly target supported out of the box * <a
href="https://github.com/stisa/nwasm">nwasm</a> - a webassembly backend
for nim. * <a href="https://github.com/Feneric/nim-wasm-helpers">Nim
wasm helpers</a> - a helper to set up a VM configured to build
WebAssembly code using Nim.</p>
</blockquote>
<hr />
<h3 id="ocaml-top"><a name="ocaml"></a>Ocaml <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/SanderSpies/ocaml/tree/wasm/wasmcomp">Ocaml</a>
- a fork of main repo containing work on OCaml to wasm compilation. *
~<a href="https://github.com/sebmarkbage/ocamlrun-wasm">OcamlRun</a> - a
build script for compiling OCaml bytecode interpreter to wasm using
emscripten [Unmaintained]~</p>
</blockquote>
<hr />
<h3 id="pascal-top"><a name="pascal"></a>Pascal <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://wiki.freepascal.org/WebAssembly">Free Pascal</a> - Free
Pascal compilation target and Pascal-to-Javascript runtime.</p>
</blockquote>
<hr />
<h3 id="perl-top"><a name="perl"></a>Perl <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/haukex/webperl">WebPerl</a> - Perl 5 in the
browser.</p>
</blockquote>
<hr />
<h3 id="php-top"><a name="php"></a>PHP <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/oraoto/pib">PIB</a> - a PHP runtime in the
browser. * <a href="https://github.com/soyuka/php-wasm">PHP WASM</a> -
maintained fork of PIB with PHP 8 support based on the work of <a
href="https://github.com/seanmorris/php-wasm">seanmorris</a>. * <a
href="https://github.com/vmware-labs/webassembly-language-runtimes">WebAssembly
Language Runtimes</a> - up-to-date PHP (including php-cgi) prebuilt for
WASI</p>
</blockquote>
<hr />
<h3 id="plorth-top"><a name="plorth"></a>Plorth <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Plorth is stack based, concatenative, strongly typed functional
scripting language which is easy to embed to applications written in
C++. Its inspired by Forth and Factor programming languages. * <a
href="https://github.com/RauliL/plorth-webassembly">Plorth</a> - main
repository.</p>
</blockquote>
<hr />
<h3 id="poetry-top"><a name="poetry"></a>Poetry <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. *
<a href="https://github.com/FantasyInternet/poetry">Poetry</a> - main
repository.</p>
</blockquote>
<hr />
<h3 id="python-top"><a name="python"></a>Python <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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.
* <a href="https://github.com/iodide-project/pyodide">Pyodide</a> - a
port of Python to WebAssembly that includes the core packages of the
scientific Python stack (Numpy, Pandas, matplotlib). Objects
transparently convert and share between Python and Javascript. * <a
href="https://github.com/micropython/micropython/tree/master/ports/webassembly">MicroPython</a>
- a lean and efficient Python implementation for microcontrollers and
constrained systems. * <a
href="https://github.com/RustPython/RustPython">RustPython</a> - A
Python 3 interpreter written in Rust. Check the demo <a
href="https://rustpython.github.io/demo/">here</a> * <a
href="https://github.com/soIu/rpython">RPython</a> - A RPython (PyPys
Restricted Python) to WebAssembly compiler * <a
href="https://github.com/soIu/tpython">TPython</a> - Pythonic++ (a
“dialect” of C++) to WebAssembly compiler * <a
href="https://github.com/rafi16jan/micropython-wasm">micropython-wasm</a>
- MicroPython build which features wide JS interop, e.g. waiting for JS
promises. * <a
href="https://github.com/vmware-labs/webassembly-language-runtimes">WebAssembly
Language Runtimes</a> - up-to-date CPython prebuilt for WASI</p>
</blockquote>
<hr />
<h3 id="prolog-top"><a name="prolog"></a>Prolog <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/SWI-Prolog/swipl-wasm">SWI-Prolog port to
WebAssembly</a> - a port of SWI-Prolog to WebAssembly. SWI-Prolog is a
free implementation of the programming language Prolog commonly used for
teaching and semantic web applications. * <a
href="https://github.com/ciao-lang/ciao">Ciao Prolog</a> - includes a
WebAssembly compilation target based on Emscripten. Ciao Prolog is a
modern Prolog implementation designed to be portable, extensible and
modular. Check the playground <a
href="https://ciao-lang.org/playground">here</a>.</p>
</blockquote>
<hr />
<h3 id="r-top"><a name="r"></a>R <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>R is a language and environment for statistical computing and
graphics.</p>
</blockquote>
<ul>
<li><a href="https://github.com/georgestagg/webR">WebR</a> - R in the
Browser. You can try it out <a
href="https://webr.r-wasm.org/latest/">here</a></li>
</ul>
<hr />
<h3 id="rebol-top"><a name="rebol"></a>Rebol <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Homoiconic (“data is code” and vice-versa) dynamic programming
language and data-format (representing data and metadata) language.</p>
<p>By its author, “Rebol rebels against the idea that modern software
must be large and complex”.</p>
</blockquote>
<ul>
<li><a href="https://github.com/metaeducation/ren-c">Ren-C</a> - Ren-C
is a deeply redesigned derivative of the Rebol 3 codebase. Features
“user-friendly” API for C and JavaScript. It has WASM-powered <a
href="https://github.com/hostilefork/replpad-js">Ren-Cs replpad-js</a>
- interactive Web Console for Rebol language (Ren-C branch).</li>
<li><a href="https://github.com/refaktor/rye">Rye</a> - Rye is a high
level, dynamic programming language based on ideas from Rebol, flavored
by Factor, *nix shells and Golang. Implemented in Golang. You can try it
out <a href="https://ryelang.org/">here</a>.</li>
</ul>
<hr />
<h3 id="rego-top"><a name="rego"></a>Rego <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Open Policy Agent (OPA) is an open source, general-purpose policy
engine that unifies policy enforcement across the stack. Rego is a
high-level declarative policy language purpose-built for expressing
policies over complex hierarchical data structures.</p>
</blockquote>
<ul>
<li><a
href="https://github.com/open-policy-agent/opa/tree/main/wasm">OPA-Wasm</a>
- Compilation and evaluation of Rego policies using Wasm.</li>
<li><a
href="https://github.com/open-policy-agent/npm-opa-wasm">npm-opa-wasm</a>
- NPM module providing an SDK for using Wasm compiled OPA policies.</li>
<li><a
href="https://github.com/matrix-org/rust-opa-wasm">rust-opa-wasm</a> - A
crate to use OPA policies compiled to Wasm.</li>
<li><a
href="https://github.com/christophwille/dotnet-opa-wasm">dotnet-opa-wasm</a>
- Call OPA policies in Wasm from C# .NET Core.</li>
<li><a
href="https://github.com/a2d24/python-opa-wasm">python-opa-wasm</a> -
OPA Wasm SDK for Python.</li>
<li><a
href="https://github.com/sangkeon/java-opa-wasm">java-opa-wasm</a> - OPA
Wasm SDK for Java.</li>
</ul>
<hr />
<h3 id="ring-top"><a name="ring"></a>Ring <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Ring is a Simple, Small, and Flexible practical general-purpose
multi-paradigm language. The supported programming paradigms are
Imperative, Procedural, Object-Oriented, Functional, Metaprogramming,
Declarative programming using nested structures, and Natural
programming. The language is portable (MS-DOS, Windows, Linux, macOS,
Android, WebAssembly, etc.) and can be used to create Console, GUI, Web,
Games, and Mobile applications. * <a
href="https://github.com/ring-lang/ring">Ring</a> - main repository. You
can try it out <a href="https://tio.run/#ring">here</a>. * <a
href="https://ring-lang.github.io/doc1.19/qtwebassembly.html#online-applications">WASM
apps in Ring</a> - list of demo web applications implemented in
Ring.</p>
</blockquote>
<hr />
<h3 id="roc-top"><a name="roc"></a>Roc <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>A fast, friendly, functional language. Compiles to machine code or
WASM. Roc is a direct descendant of the Elm programming language.</p>
</blockquote>
<ul>
<li><a href="https://github.com/roc-lang/roc">roc</a> - main repository.
You can try it out <a
href="https://www.roc-lang.org/#try-roc">here</a>.</li>
<li><a href="https://github.com/roc-lang/basic-cli">basic-cli</a> - a
Roc <a
href="https://github.com/roc-lang/roc/wiki/Roc-concepts-explained#platform">platform</a>
to work with files, commands, HTTP, TCP, command line arguments,
etc.</li>
<li><a
href="https://github.com/roc-lang/basic-webserver">basic-webserver</a> -
a basic Web Server for Roc.</li>
</ul>
<hr />
<h3 id="ruby-top"><a name="ruby"></a>Ruby <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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<code>:.{}%[]&amp;=&gt;;</code>) as possible. * <a
href="https://github.com/pannous/wruby">Wruby</a> Web ruby - a port of
minimal ruby (mruby). * <a
href="https://github.com/jasoncharnes/run.rb">run.rb</a> run.rb - allows
you to run Ruby code in the browser * <a
href="https://github.com/artichoke/artichoke/blob/f8e9881403a50c3ba7e2b1ffc16f205c0b5e0255/VISION.md#design-and-goals">Artichoke</a>
- a Ruby implementation written in Rust and Ruby. You can try it out
here: https://artichoke.run * <a
href="https://github.com/ruby/ruby.wasm/">ruby.wasm</a> - a collection
of “official” WebAssembly ports of the CRuby. You can try it out <a
href="https://try.ruby-lang.org/playground/#code=puts+RUBY_DESCRIPTION&amp;engine=cruby-3.2.0">here</a>
* <a href="https://github.com/ljulliar/rlang">rlang</a> Rlang - a
(subset of) Ruby to WebAssembly compiler * <a
href="https://github.com/kojix2/cry-wasm">cry-wasm</a> - speeds up Ruby
code using Crystal. By applying simple type restrictions to Ruby code,
convert it to Crystal code, compile it to WebAssembly, and call it with
Wasmer or Wasmtime. * <a href="https://github.com/Shopify/ruvy">Ruvy</a>
- toolchain for bundling ruby.wasm pre-initialized and bundled with Ruby
code * <a
href="https://github.com/vmware-labs/webassembly-language-runtimes">WebAssembly
Language Runtimes</a> - up-to-date MRI Ruby prebuilt for WASI</p>
</blockquote>
<hr />
<h3 id="rust-top"><a name="rust"></a>Rust <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://www.hellorust.com/setup/wasm-target/">Rust
<code>wasm32-unknown-unknown</code> target</a> - Rust compiler backend
for WebAssembly (without the need for Emscripten). * <a
href="https://github.com/lord/wargo">Wargo</a> - a simple npm package
that makes compiling Rust to WebAssembly easy on macOS or Linux. * <a
href="https://github.com/ianjsikes/rust-wasm-loader">RustWasmLoader</a>
- A simple Webpack loader that shells out to cargo to build a Rust
project targeting WebAssembly. * <a
href="https://github.com/koute/cargo-web">CargoWeb</a> - This cargo
subcommand aims to make it easy and convenient to build, develop and
deploy client-side Web applications written in Rust. * <a
href="https://github.com/rustwasm/wasm-bindgen">Wasm-Bindgen</a> - A
library and a CLI for Rust that facilitate high-level interactions
between wasm modules and JavaScript. * <a
href="https://github.com/alexkehayias/woz">Woz</a> - Woz is a
WebAssembly progressive web app (PWA) toolchain for building and
deploying performant mobile apps with Rust. Distributing your app is as
simple as sharing a hyperlink.</p>
</blockquote>
<hr />
<h3 id="scheme-top"><a name="scheme"></a>Scheme <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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.. * <a
href="https://github.com/schism-lang/schism">Schism</a> - Schism is an
experimental self-hosting compiler from a subset of R6RS Scheme to
WebAssembly. Development so far has focused on features necessary for
self-hosting. The compiler itself is written in, and compiles, a very
small subset of Scheme. * <a
href="https://github.com/pollrobots/scheme">scheme.wasm</a> - An R7RS
Scheme implemented in WebAssembly. You can try it out <a
href="https://pollrobots.com/scheme/">here</a>. * <a
href="https://gitlab.com/spritely/guile-hoot">Guile Hoot</a> - a Scheme
to WebAssembly compiler backend for GNU Guile and a general purpose WASM
toolchain.</p>
</blockquote>
<hr />
<h3 id="speedy.js-top"><a name="speedyjs"></a>Speedy.js <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * ~<a
href="https://github.com/MichaReiser/speedy.js">Speedy.js</a> - main
repository.~ <code>Unmaintained</code></p>
</blockquote>
<hr />
<h3 id="swift-top"><a name="swift"></a>Swift <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Swift is a general-purpose, multi-paradigm, compiled programming
language developed by Apple Inc. for iOS, macOS, watchOS, tvOS, Linux,
and z/OS. * <a href="https://github.com/swiftwasm">SwiftWasm</a> -
GitHub organization.</p>
</blockquote>
<hr />
<h3 id="tcl-top"><a name="tcl"></a>Tcl <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Tcl (Tool Command Language) is a very powerful but easy to learn
dynamic programming language, mature but evolving, highly extensible and
suitable for a very wide range of uses. * <a
href="https://github.com/ecky-l/wacl">Wacl</a> - A Tcl distibution for
WebAssembly or Javascript. Features JS/DOM bindings. You can try it out
<a href="https://ecky-l.github.io/wacl/">here</a>.</p>
</blockquote>
<hr />
<h3 id="theta-top"><a name="theta"></a>Theta <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Theta is a modern, general purpose, functional programming language
with a strong type system and expressive syntax. It features a modular
design and supports pattern matching, function overloading, and other
goodies. * <a
href="https://github.com/alexdovzhanyn/ThetaLang">ThetaLang</a> - main
repository.</p>
</blockquote>
<hr />
<h3 id="turboscript-top"><a name="turboscript"></a>TurboScript <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a
href="https://github.com/01alchemist/TurboScript">TurboScript</a> - main
repository.</p>
</blockquote>
<hr />
<h3 id="typescript-top"><a name="typescript"></a>TypeScript <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * See <a
href="#assemblyscript">AssemblyScript</a></p>
</blockquote>
<hr />
<h3 id="v-top"><a name="v"></a>V <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>V is a statically typed compiled programming language designed for
building maintainable software.</p>
</blockquote>
<ul>
<li><a href="https://github.com/vlang/v">V</a> - main repository. You
can try it out <a href="https://play.vlang.io/">here</a></li>
</ul>
<hr />
<h3 id="virgil-top"><a name="virgil"></a>Virgil <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>A fast and lightweight safe, garbage-collected systems programming
language. Its compiler produces optimized, standalone native
executables, WebAssembly modules, or JARs for the JVM.</p>
</blockquote>
<ul>
<li><a href="https://github.com/titzer/virgil">Virgil</a> - main
repository.</li>
</ul>
<hr />
<h3 id="wa-top"><a name="wa"></a>Wa <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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.</p>
</blockquote>
<blockquote>
<p>凹语言™凹读音“Wa”是 针对 WASM 平台设计的的通用编程语言,支持
Linux、macOS 和 Windows 等主流操作系统和 Chrome
等浏览器环境同时也支持作为独立Shell脚本和被嵌入脚本模式执行。</p>
</blockquote>
<ul>
<li><a href="https://wa-lang.github.io/">Wa/凹语言(English)</a> - Design
for WebAssembly.</li>
<li><a href="https://wa-lang.org/">Wa/凹语言(简体中文)</a> - 凹语言 - 为
WebAssembly 而生.</li>
<li><a href="https://github.com/wa-lang/wa">Wa/凹语言(仓库)</a> - main
repository.</li>
</ul>
<hr />
<h3 id="wah-top"><a name="wah"></a>Wah <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Wah is a slightly higher level language that is a superset of
WebAssembly. It aims to make WebAssemblys text format slightly more
friendly to humans, without introducing new syntax or datatypes. * ~<a
href="https://github.com/tmcw/wah">Wah</a> - main repository.~
<code>Unmaintained</code></p>
</blockquote>
<hr />
<h3 id="walt-top"><a name="walt"></a>WAlt <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>WAlt is an alternative syntax for WebAssembly text format. Its an
experiment for using JavaScript syntax to write to as close to the
metal as possible. Its JavaScript with rules. .walt files compile
directly to WebAssembly binary format. * ~<a
href="https://github.com/ballercat/walt">Walt</a> - main repository.~
<code>Unmaintained</code></p>
</blockquote>
<hr />
<h3 id="wam-top"><a name="wam"></a>Wam <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>WebAssembly Macro language: Wam syntax is a near superset of wast
syntax that is more convenient for human developers to write directly. *
~<a href="https://github.com/kanaka/wam">Wam</a> - main repository.~
<code>Unmaintained</code></p>
</blockquote>
<hr />
<h3 id="wase-top"><a name="wase"></a>Wase <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>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. * <a href="https://github.com/area9innovation/wase">Wase</a>
- main repository.</p>
</blockquote>
<hr />
<h3 id="webassembly-top"><a name="webassembly"></a>WebAssembly <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Yes, WebAssembly. <code>Wasm3</code> is the fastest WebAssembly
interpreter, that enables WebAssembly self-hosting. * <a
href="https://github.com/wasm3/wasm3">Wasm3</a> - main repository. * <a
href="https://wapm.io/package/vshymanskyy/wasm3">Wasm3 on WAPM</a> -
WAPM package.</p>
</blockquote>
<hr />
<h3 id="wonkey-top"><a name="wonkey"></a>Wonkey <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Wonkey is an easy to learn, object-oriented, modern and
cross-platform programming language for creating cross-platform video
games, highly inspired by the “BlitzBasic” range of languages. * <a
href="https://github.com/wonkey-coders/wonkey">Wonkey</a> - main
repository. Check the demo games <a
href="https://wonkey-coders.github.io/examples/">here</a>.</p>
</blockquote>
<hr />
<h3 id="wracket-top"><a name="wracket"></a>Wracket <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>A lisp-like language that compiles to WebAssembly, written in racket
* ~<a href="https://github.com/sschauss/wracket">Wracket</a> - main
repository.~ <code>Unmaintained</code></p>
</blockquote>
<hr />
<h3 id="xcc-top"><a name="xcc"></a>xcc <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Toy C compiler for x86-64 and wasm * <a
href="https://github.com/tyfkda/xcc">xcc</a> - main repository. * <a
href="https://tyfkda.github.io/xcc/">Online demo</a>.</p>
</blockquote>
<hr />
<h3 id="zig-top"><a name="zig"></a>Zig <sup><a
href="#contents">top⇈</a></sup></h3>
<blockquote>
<p>Zig is a general-purpose programming language designed for
robustness, optimality, and maintainability. * <a
href="https://ziglang.org/documentation/master/#WebAssembly">Zig
WebAssembly</a> - documentation on WebAssembly</p>
</blockquote>
<hr />
<p>Please read the <a href="CONTRIBUTING.md">contribution guidelines</a>
if you want to contribute.</p>
<hr />
<h3 id="license">License</h3>
<p><a href="https://creativecommons.org/publicdomain/zero/1.0/"><img
src="http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg"
alt="CC0" /></a></p>
<p>To the extent possible under law, <a
href="https://github.com/appcypher">Steve Akinyemi</a> has waived all
copyright and related or neighboring rights to this work.</p>
<p><a
href="https://github.com/appcypher/awesome-wasm-langs">wasmlangs.md
Github</a></p>