The WebAssembly runtime is simple and secure, with wasm modules executing within a sandboxed environment that is separate from the host (and other wasm modules). This security model, that is vital for the success of this technology within the web, has also found success elsewhere including Blockchain, Serverless and IoT. This blog post explores another interesting application of the WebAssembly sandbox, but with a twist! WasmBoxC takes ‘unsafe’ C code, compiles it to WebAssembly, then compiles it back to C again using wasm2c - a compile-time sandboxing, rather than the typical runtime approach. A fascinating idea!
The Game of Life is a simple simulation that was invented by John Horton Conway (who sadly passed away this year) over 50 years ago. It has become something of a ‘hello world’ application, a popular choice for exercising programming skills and learning new languages. I’ve implemented it myself in various different languages, including WebAssembly in its native WAT format. This blog post looks at implementing Life using C# and Blazor.
Talking of ‘hello world’ applications, Boids is another simple, yet pleasing, simulation - this time creating a flock of ‘birds’. This blog post uses Boids as an introduction to using Go for developing WebAssembly applications.
Threads is a relatively new WebAssembly capability, which provides atomic operations and shared memory between wasm modules. However, some of these capabilities have been hampered due to the Spectre / Meltdown attacks. This blog post gives a really useful practical example of how WebAssembly threads can be used via Emscripten / pthreads.
And Finally …
macintosh.js is an awesome project that is a fully functional Mac OS8 emulator - all it needs is re-writing to target WebAssembly :-)