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 Fermyon Cloud, Spin, and Fermyon Platform.
👍

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
PythonIn progress
JavaIn progress
PHP
CSSN/AN/AN/AN/A
C# and .NET
C++
TypeScriptIn progress
Ruby
C
SwiftIn 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
Dartip

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
ClojureIn progress
COBOLIn progressIn 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.