1259 lines
56 KiB
HTML
1259 lines
56 KiB
HTML
<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="#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="#c4wa">C4wa</a></li>
|
||
<li><a href="#crystal">Crystal</a></li>
|
||
<li><a href="#d">D</a></li>
|
||
<li><a href="#dart">Dart</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="#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="#ring">Ring</a></li>
|
||
<li><a href="#ruby">Ruby</a></br></li>
|
||
<li><a href="#scheme">Scheme</a></li>
|
||
<li><a href="#scopes">Scopes</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="#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="#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 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 <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 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. * <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.
|
||
It’s 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="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/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> > 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. * <a
|
||
href="https://gitlab.com/clean-and-itasks/abc-interpreter">ABC
|
||
interpreter</a> - interpreter for Clean’s 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/lumen/lumen">Lumen</a> - An alternative BEAM
|
||
implementation (with AOT compiler) designed for WebAssembly. * ~<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 it’s 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 & 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> > 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 * <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. * ~<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 program’s 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="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, that’s
|
||
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
|
||
that’s 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.</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 & 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></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 & 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. It’s 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. It’s 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> -
|
||
Pluto’s 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="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++. It’s 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 (PyPy’s
|
||
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="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>:.{}%[]&=>;</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&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="scopes-top"><a name="scopes"></a>Scopes <sup><a
|
||
href="#contents">top⇈</a></sup></h3>
|
||
<blockquote>
|
||
<p>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. * <a
|
||
href="https://hg.sr.ht/~duangle/scopes">Scopes</a> - main repository</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="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 WebAssembly’s 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. 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. * ~<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>
|