Web Programming Languages: How WebAssembly Will Change the Way You Build Web Applications


What if you could write software once and make it work on all phones and computers?

While this dream is still far from being realized, steps are underway to transform the web browser into a universal computing platform, capable of running even the most demanding applications.

WebAssembly, a binary instruction format that allows browsers to run software 10-800% faster than is typically possible with JavaScript, helps realize this vision.

The performance gains made possible by WebAssembly could one day see the heaviest desktop software run in the web browser. WebAssembly is already being used to run the traditionally very demanding AutoCad software as a proof of concept demonstration.

“My dream is for every platform to become the web platform,” said Ashley Williams, systems engineer at Cloudflare and a member of the Rust core team at Qcon London 2019.

“I sincerely believe that the languages ​​that will be successful in the future will be the ones that can successfully target WebAssembly.”

WebAssembly is now supported in Chrome, Firefox, Safari, and Microsoft Edge browsers, as well as the Node.js server-side JavaScript runtime environment. Several groups are also working on a WebAssembly operating system, with Williams highlighting the work done as part of the WASMER project and by Mozilla as part of its Crane Lift initiative.

How to get started with Web Assembly


Ashley Williams, Systems Engineer at Cloudflare.

Image: QCon London

WebAssembly (WASM) is not designed to be a programming language written by humans, although it can be viewed in a human readable format. Rather, it is a compiler-generated language, based on code written by developers in a higher-level programming language.

Williams says that while in theory it is possible to compile code written in any language in WASM, in reality you wouldn’t want to, the best options currently being compiled from C, C ++ programming languages. and Rust, rather than from an interpreted language.

“One thing to note about WebAssembly is that it doesn’t have a GC [garbage collector] and doesn’t have a runtime environment, you have to compile your runtime environment in addition to your program when using an interpreted language, ”she said.

Here are various tools developers can use to get started building and inspecting WebAssembly:


This is a backend for the LLVM compiler which generates WebAssembly from C, C ++, and Rust and which is used by the Unity and Unreal game engines to generate web versions of games.


A compiler for Rust that generates WASM code capable of interacting with JavaScript through JavaScript bindings. It works with JavaScript tools like NPM, webpack, and Greenkeeper.

Williams says the plan is for the Rust toolchain to also generate JavaScript that can wrap the generated WebAssembly module, so that it can be dropped into a browser or Node.js runtime environment just like you would with JavaScript. .

Assembly script

If you want to experiment with WebAssembly but don’t feel like learning Rust, C, or C ++, there are compilers for higher-level languages.

Aimed at JavaScript developers, AssemblyScript is a language that is a subset of the JavaScript derivative of TypeScript, and that compiles into WebAssembly through a toolchain called Binaryen.

“In general, the WebAssembly that this produces isn’t necessarily the fastest or the smallest, but it works great and they are doing a lot of work on it right now,” says Williams.

WebAssembly Studio

WebAssembly.Studio is a fork of Visual Studio Code and runs in the browser, allowing developers to inspect WASM as it is compiled from C, C ++, and Rust.

The state of WebAssembly

WebAssembly is designed to work with HTML, CSS, and JavaScript in the browser, with the WASM module loaded using JavaScript APIs.

Ultimately, the goal of WebAssembly is not to replace JavaScript but to work alongside it, delivering a level of performance JavaScript cannot match and allowing developers to write web applications in languages ​​such as C ++ and Rust, as well as opening the door to large amounts of desktop software to port to the Web.

SEE: Hiring Kit: Python Developer (Tech Pro Research)

However, WebAssembly is not a finished product, with plenty of room for improvement in both its support, functionality, and performance.

“WebAssembly is young, so what has landed in the browser right now is certainly not a fully mature product,” Williams says, giving the example of garbage collection that is not yet implemented in WASM.

“If you’ve started working with WebAssembly now, you’ll immediately wonder, ‘Why is my WASM so big and why isn’t it as fast as I want it to be? “.

“That’s because it’s new technology, but that being said, it’s designed to be faster than JavaScript and it’s often faster, and, just because it’s a game of instructions, your programs are going to be considerably smaller. “

Williams is optimistic about the prospects for WebAssembly, and with many looking to the future of the web as it celebrates its 30th anniversary, she has high hopes for how WebAssembly could transform the platform.

“I think WebAssembly is going to lead to a future where the applications we are going to build are very different from what we see people doing now.”

Also look


Leave A Reply