WebAssembly (WASM)

WebAssembly, a.k.a. WASM, is... how best to describe it... a virtual machine hosting a low-level programming language (WASM) which many other programming languages can be compiled to. Wasm has been described as "neither web, nor assembly" and, though it is primarily a web-based platform, numerous efforts are underway to make Wasm more widely applicable. Imagine desktop applications written in 5 different programming languages, all of which interact seamlessly by virtue of having been compiled into a common low-level language.

Sidebar: Wasm is conceptually akin to the CIL/CLR Microsoft introduced with their DotNet platform in the early 2000s, the main difference being that MS never managed to gain a widespread critical mass of support for that technology whereas Wasm is at that point now. (That always seemed strange to me, as CIL stood to change the software landscape in ways Wasm is now doing. Presumably its lack of traction was largely due to CIL originating from a company which was, at the time, outright hostile to FOSS development and infamous for its vendor lock-in tactics. Much as changed at Microsoft since then, but that history still haunts them to this day.)

Some links...

And some evangelism/hype...

My first experience with Wasm was not until mid-2022, when the opportunity came up to do a proof-of-concept application for the sqlite project. It very quickly became clear that the ease with which C code can be compiled and run in a web page was going to impact my development for the foreseeable future. Though my record for predicting tech trends has historically been exceptionally poor, it seems safe to predict that Wasm is going to change the way software is targeted over the next decade.

Wasm's ease of use and utility took me completely by surprise. (Getting sqlite3's shell app built and running in Wasm was my first-ever Wasm task and it took all of about 27 minutes, most of that time being spent figuring out how to install and use Emscripten.) i'd heard whispers of it for years but never paid any attention until the notion of the sqlite proof-of-concept project came up. Though i have a strong allergy against hype, i'm thoroughly convinced that Wasm is worth every bit of hype for several reasons:

Wasm still has some maturing to do, certainly, but its 1.0 version is already plenty usable for a wide range of cases and provides a solid target for "replatforming" non-web code into web environments. A movement is underway to provide the same capability to non-web targets, as well as to provide a portable basis for applications to be unaware of whether they're running inside or outside of a browser but, as of this writing, the WASI efforts aren't quite up to the task, primarily in the realm of filesystem-related APIs. It's still (as of mid-2022) effectively impossible to get any code C which uses filesystem APIs to build for a web target unless it uses the Emscripten toolchain, as that one provides its own compatibility layer for such APIs.

×