Micrio, is a really cool tool for allowing users to explore ‘ultra resolution’ images via a web browser, it’s a popular tool for bringing the content within museums to life. The team behind this tool published a really cool blog post a couple of years ago, describing how they use WebAssembly on the client for image manipulation, via AssemblyScript.
With this latest post they share how their use of WebAssembly has moved to the Edge …
These ultra resolution images are stored as tiles of varying resolution, with retrieval making use of the IIIF image standard. Previously Micrio had used a C#/.NET server to process requests, render tiles, and return to the client. There was a desire to move this processing closer to the user (onto the Edge), but this approach was too heavyweight.
This post shares how they were able to use Cloudflare workers, which support WebAssembly, to create “a CDN with built-in IIIF image processing”.
Wasm Builders is a new community site for WebAssembly enthusiasts. I’m already seeing a few names I recognise publishing to this site, which is powered by Forem, an open source community site ‘engine’.
As an aside, the
builders TLD is a new one by me!
I’m starting to see WebAssembly cropping up within my npm dependencies more and more often, sometimes allowing the use of C++ codebases, or other times making use of specific wasm features (e.g. I used a
BigInt polyfill a while back that was implemented via
This blog post does a great job of describing the various options and compromises, it also considers the case when your code is running outside of the browser, in Cloudflare workers for example.
Reactr is a “fast, performant function scheduling library” - it looks to be reasonably mature, definitely worth a look.
WAGI is a super simple WebAssembly server built around the same principles as the Common Gateway Interface (CGI), i.e. HTTP requests are fed to your modules via environment input, and responses are written via standard output. This is a very simple and effective model - I’ve given WAGI a go, both with C++ and AssemblyScript and it really is as simple as it sounds!