WebAssembly Live is an online event, taking place on September 18th, focussed on all things WebAssembly. There is already a fantastic speaker line up, and a panel, including my good self (alongside some much more knowledgeable folks!). This event was originally scheduled for London earlier in the year, however, the organisers have decided to go ahead with a virtual event that the whole community can enjoy. If you’re interested in attending, so use the WASMWEEKLY discount code when signing up. I look forward to seeing you there!
This blog post looks at the creation of Motoko, a new language that is designed to directly support the programming model of the Internet Computer. That sounds pretty funky! I’d not heard of the Internet Computer before, but apparently it is a thing and it runs on WebAssembly. In all seriousness, it looks like the Internet Computer, a project from Dfinity, is a blockchain network that runs smart contracts. The Motoko language is a relatively conventional language (semicolons, curly braces, closures etc.), but with built-in support for actors.
Talking of the actor model, this is another (early stage) project that uses WebAssembly as their back-end runtime. In this instance, rather than creating a new language, Lunatic is a set of APIs that can be used by any language that targets WebAssembly.
Reference types is an important WebAssembly proposal that will significantly increase its capabilities. Currently the WebAssembly runtime only supports numeric types and as a result, it cannot easily handle ‘host’ objects such as DOM nodes, network connections or even strings (without serialising and passing by value). With the reference type proposal WebAssembly modules are able to hold references to objects that are managed by the host, an important development that paves the way for other proposals such as interface. types and eventually garbage collection.
I’ve been working on-and-off on a side project for the past few weeks, implementing an Atari 2600 emulator using AssemblyScript (a TypeScript subset that targets WebAssembly). I got a bit bored of implementing the 6502 processor instructions by hand, so instead looked at whether I could generate the CPU code direct from specification. It worked surprisingly well :-)