What languages support WebAssembly?

Mar 02, 2020 • ☕️ 2 min read

WebAssembly (Wasm) is the next big thing when it open the gate the web platform to all high-level programming languages beside the exclusive JavaScript.

WebAssembly is a low-level bytecode format that runs in the browser. It is designed to be faster to parse, as well as faster to execute which makes it a suitable compilation target for new and existing languages.

So currently which languages can be compiled to WebAssembly? Language conformance is largely determined by individual compiler support, there have been around 40 programming languages reported to support Wasm as a compilation target.

You can find all languages and tools that work with WebAssembly here. Notable languages are C/C++, C#/.NET, Rust, Java, Python, Elixir, Go. Take a took at several tools/frameworks related to WebAssembly:

Blazor is a .NET web framework using C#/Razor and HTML that runs in the browser with WebAssembly.

JWebAssembly is a Java bytecode to WebAssembly compiler. It uses Java class files as input. That it can compile any language that compile to Java bytecode like Clojure, Groovy, JRuby, Jython, Kotlin and Scala. As output it generates the binary format (.wasm file) or the text format (.wat file). The target is to run Java natively in the browser with WebAssembly.

Pyodide is a Python scientific stack brings the Python runtime to the browser via WebAssembly, along with the Python scientific stack including NumPy, Pandas, Matplotlib, parts of SciPy, and NetworkX.

ElixirScript is a compiler to convert a subset (or full set) of Elixir code to JavaScript, providing the ability to write JavaScript in Elixir. This is done by taking the Elixir AST and converting it into JavaScript AST and then to JavaScript code. This is done using the Elixir-ESTree library.

Yew is a modern Rust framework for creating multi-threaded front-end web apps with WebAssembly. It features a component-based framework, has great performance by minimizing DOM API calls, and supports JavaScript interoperability.

WebAssembly support seems pretty early days and often self-labeled as experimental, I am hoping that the community continues to investigate and embrace WebAssembly.

Reading More

JavaScript Code Linters

Linters are tools that analyze source code to detect problems based on formatting rules and code quality rules then output as warnings or errors

My Top 10 Favorite React Open Source Libraries

Create React App, Styled Components, Material UI, Next.js, Gatsby, Typography.js, React Admin, Formik, Enzyme, React Markdown

Web Security Common Threats

Common security threats to know before deploying a serious web app

AssemblyScript - TypeScript to Wasm Compiler

A tool that makes WebAssembly more accessible to JavaScript developers by compiling a strict subset of Typescript to Wasm using Binaryen