This is a post from the team at Leaning Technologies who have built a number of impressive products on top of WebAssembly, including CheerpX (a wasm CM for running x86 binaries), and CheerpJ (that runs Java apps in the browser). While they have had great success in with their products, as a WebAssembly early-adopter they have struggled with some of the limited features.
This blog post talks about tail-calls, an optimisation that many languages use to ‘unwind’ stack calls when functions are called recursively. In order for the WebAssembly tail-call proposal to progress, more browser vendors need to adopt this feature. Unfortunately non-browser implementations do not count, a W3C rule that needs to change in my opinion.
It’s a while since I last used Swift - but I must admit, I have very fond memories of that language. This project is a SwiftUI-compatible framework for building browser apps with WebAssembly. This basically allows you to build browser apps using Apple’s new SwiftUI framework. Neat.
WebAssembly is becoming increasingly important outside of the browser. This blog post gives a gentle introduction to the topic, exploring the different wasm VMs, and ultimately building a simple example using the Rust toolchain. What I find most interesting here is that rather than executing the standalone wasm binary, this example shows you how to instantiate a hosed wasm VM within a Rust application, allowing you to effectively run a wasm module as a plugin.
Most WebAssembly articles focus on C++, Rust or C#, so it’s good to hear some more from the Go community. This is a neat example that converts images into ASCII art via client-side Go.
And Finally …
Do you want to help drive WebAssembly forwards? If so, why not lend a hand with the garbage collection proposal?