What’s this? WasmWeekly on a Thursday?! Today’s issue is either six days late, or one day early. You decide. I’ve been a bit busy recently, so have struggled to stick to the weekly cadence of this newsletter. Don’t worry, it’ll keep going, I’ve not fallen out of love with wasm (in fact I’m itching to try out some hand-crafted SIMD 😄) - however, this newsletter might not follow a regular publication cycle for a little while - Colin E. (editor in chief)
Regular readers will know that I love WebAssembly demos where people create funky graphics or games within very small wasm modules. This one is great, if a little random, dancing multi-coloured hoops with a musical accompaniment. It looks like the demo renders using WebGL, which is interesting, as most other wasm demos I’ve seen use Canvas.
WebAssembly only has four numeric types. What this means is that in order to support strings, objects, arrays etc … the compiler and runtime have to construct these concepts via linear memory. This blog post does a great job of describing how strings work in WebAssembly and the tooling that the Rust community have built to make this (and many other integration issues) easier.
I always love to see WebAssembly being used in production applications, in this case MediaPipe is a framework for building cross-platform applied machine learning pipelines. MediaPipe uses C++ code compiled to WebAssembly via Emscripten, however, they also move some of their operations to the GPU using WebGL.
WebAssembly continues to evolve and mature. Chrome has added support for threads, reference types (I think!), and in this latest update have added support for SIMD. This is all relatively low-level stuff, but all adds up to a much more capable runtime.
The first wasm conference, WebAssembly Summit, kicks off in San Francisco (CA) next week. Hot on its heals is WebAssembly.Live which is March 20th in London (UK) and they already have a fantastic line up.
And Finally …
Can I run BBC BASIC on WebAssembly? Sure, Jeremy managed to find an interpreter written in C, compile it to wasm and run a BASIC application, in just 10 minutes!