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

How CSS Works Under the Hood

Some of the most fundamental concepts which control how CSS is applied to HTML and how conflicts are resolved

JavaScript Package Managers

Package managers are tools that help you manage packages as dependencies and might also provide a global package registry

A complete guide to Webpack

This complete guide explains everything about Webpack, what it is, how it works, how to setup it for both development and production