What languages can be compiled to WebAssembly (Wasm)? [closed]

WebAssembly support is ever evolving. Right now it is supported by the following languages:

  • C / C++ – has very good (production ready) support via EmScripten, or other minimal LLVM-based toolchains

  • Rust – WebAssembly is an officially supported target, with a highly active community around it.

  • Go – has now supports WebAssembly as an official, yet experimental, target

  • C# – has experimental support via Blazor, however this currently requires embedding a .NET runtime into Wasm. Blazor was officially adopted by Microsoft as an experimental technology, with a recent preview release.

  • D – the “betterC” subset of D can be compiled to WebAssembly through LDC (LLVM compiler).

  • TypeScript – via AssemblyScript, highly experimental, but gaining momentum.

  • Java – via TeaVM or Bytecoder

  • Haxe – just announced support

  • Kotlin – Kotlin/Native 0.4 gained experimental support of WebAssembly and via TeaVM

  • Python – Pyodide is a port of Python to WebAssembly that includes the core packages of the scientific Python stack (Numpy, Pandas, matplotlib).

  • PHP – Experimental, but with a working prototype

  • Perl – WebPerl is a port of the Perl binary to WebAssembly, allowing you to run Perl scripts on the web.

  • Scala – using the Emscripten compiler, and TeaVM

  • Ruby – via the run.rb project

  • Swift – using SwiftWasm

There are commercial solutions also:

  • RemObjects – Which has announced support for C#, Java, Swift and Oxygene

Regarding JavaScript, it is unlikely to gain support as WebAssembly is a statically typed assembly language.

There are also various more obscure / hobbyist languages that support WebAssembly. Further details can be found on the more exhaustive Awesome WebAssembly Languages list.

Leave a Comment

tech