Fantastic tail calls, and how to implement them
WebAssembly, like most web technologies, is never going to be compete. Since it’s first release a few years ago it has been continually evolving, with the various proposal tracked in public. A number of these proposals relate to relatively low-level functionality and as a result are not that easy to understand.
LeaningTech have been working on WebAssembly-based technology for a number of years. This blog post does a really good job of explaining tail-calls, which is a pretty deep and technical topic, and what it means for WebAssembly.
Announcing support for WASI on Cloudflare Workers
WebAssembly System Interface (WASI) provides a suite of APIs that allow WebAssembly modules to integrate with ‘external’ services, such as filesystem and networks. It is quite rapidly gaining traction. This post, from Cloudflare, announces there support for WASI, with some great illustrated examples.
This is a really good all-in-one primer on WbeAssembly. It covers what it is, and the features that have contributed to its success (simple runtime, portable, security). From there, it discusses various use cases, many of which are non-browser. There’s an interesting section on companies and projects that use WebAssembly, and why, and finally, what the future might look like.
It is also very balanced, with a small section looking at competing technologies, and a section that discusses what WebAssembly is not good at.
Definitely worth a read.
Zig is becoming more production-worthy
Zig is a relatively new system programming language, with its first release just 6 years ago. That’s a lot younger than C++, which has been around for 37 years and is probably still teh mst widely used system programming language!
Zig has excellent support for WebAssembly, so it is good to see the Zig community highlighting that this language is becoming production-worthy.
WebAssembly backend for Ballerina
On the subject of languages, Ballerina is an open source programming language designed specifically for writing distributed applications. I must admit, I’d not heard of it before. This blog post describes a project to add a WebAssembly back-end to Ballerina, i.e. allowing you to compile Ballerina applications to WebAssembly.
fizzy - Wasm interpreter
Fizzy aims to be a fast, deterministic, and pedantic WebAssembly interpreter written in C++.
I’m not entirely sure what a pedantic interpreter is? But I do like the sound of it!
The WebAssembly Component Model is an in-flight proposal with the goal of making it easier to compose multiple WebAssembly modules, written in different languages, into a single application. Currently so much of what we do is constrained by the languages we use. If you’re a C# developer, and need to do some data science work, why can’t you just use the rich Python data science ecosystem directly in your code?
This project helps you ‘imagine’ the future, it is not complete, nor is the specification, but it is a good way to experience what the future may look like.