WebAssembly language support matrix

This support matrix lists the programming languages that can be compiled to WebAssembly.

It also specifies if you can compile the language to run in the browser, in other non-browser environments, or in a WASI environment. Spin, SpinKube, and Akamai Functions require WASI support. Any language supported for WASI should be supported on the Akamai Functions. The Spin SDK indicates that there is additional libraries available for Spin.

👍

For more information about technologies such as WASI, Wagi, and Spin go to the Related standards topic in this guide.

Support details

Review the for descriptions for each of the language support categories.

  • Core. An implementation of WebAssembly 1.0 is available.
  • Browser. At least one browser implementation is available.
  • WASI. The language supports at least Preview 1 of the WASI proposal.
  • Spin SDK. A Spin SDK is available for the language.
  • Anything with WASI or Spin SDK support runs on Spin, and Akamai Functions.
👍

We're often asked which languages are best for production-grade WebAssembly. We suggest Rust, JavaScript/TypeScript, Python, and Go.

WebAssembly support for top 20 languages

Review the Wasm support for the top 20 programming languages as ranked by RedMonk.

LanguageCoreBrowserWASISpin SDK
JavaScript✓✓✓✓
Python✓In progress✓✓
Java✓✓✓In progress
PHP✓✓✓✗
CSSN/AN/AN/AN/A
C# and .NET✓✓✓✓
C++✓✓✓✗
TypeScript✓In progress✗✓
Ruby✓✓✓✗
C✓✓✓✗
Swift✓✓✓In progress
R✗✓✗✗
Objective-C?✗✗✗
ShellN/AN/AN/AN/A
Scala (JVM)✓✓✓In progress
Scala (native)In progress✗✗✗
Go✓✓✓✓
PowerShell✗✗✗✗
Kotlin (JVM)✓✓✓In progress
Kotlin (Wasm)In progress✓✓✗
Rust✓✓✓✓
Dart✓✓ip✗

WebAssembly Specific Languages

LanguageBrowserCLIWASISpin SDK
AssemblyScript✓✓✓✗
Grain✓✓✓✗
Motoko✓✓✓✗

Other notable languages

These languages, though not in the top 20, enjoy broad use and offer some degree of WebAssembly support.

LanguageBrowserCLIWASISpin SDK
Clojure✓✓✓In progress
COBOLIn progress✓In progress✗
Erlang (BEAM)In progressIn progressIn progress✗
Haskell✓✓✓✗
LispIn progressIn progressIn progress✗
Lua✓✗✗✗
Perl✓✗✗✗
Prolog✓✗✗✓
Zig✓✓✓✗

📘

The WebAssembly Language Guide is located in a public GitHub project. If you find errors, want to make additions, or have further corrections for us, the issue queue is a great place to discuss.


Did this page help you?