When WebAssembly was released a couple of years ago it was an MVP (Minimal Viable Product), one significant feature that was missing from the MVP was threads. The WebAssembly threads proposal is now quite mature and available in both the tooling and Chrome. This blog post explores the internals of this feature, the new instruction set, and how it supports multi-threaded applications.
CHIP-8 was a virtual machine, invented in the 1970s, to allow video games to run across multiple microcomputers. It has a very simple architecture and instruction set, making it an ideal machine for having a go at writing an emulator. This one is written in C, and compiled to WebAssembly with Emscripten - the sourcecode is all on GitHub.
Reliable performance measurements are tricky - it’s all too easy to make measurements based on an overly simplistic or specific algorithm. This scientific paper presents a thorough study of WebAssembly performance using the SPEC CPU test suite. And this findings? As the name suggests, WebAssembly is “not so fast” when compared to native. Personally, I don’t see that as a big issues - there are other, much more compelling reasons for using WebAssembly than just performance.
And Finally …
A great Twitter thread that asks “What’s the difference between WebAssembly and the JVM / Dart?”.