A WebAssembly Powered Augmented Reality Sudoku Solver

SCOTTLOGIC.COM

OK, I’ll come clean … this is another of my blog posts, but I am particularly pleased with how this one went! Over the Christmas holidays I wanted to create a fun WebAssembly application, after a few false-starts I settled on the idea of writing an Augmented Reality Sudoku solver, where you hold a puzzle up to your phone camera or webcam and it renders the solution directly on the image.

The finished project makes use of the WebAssembly build of OpenCV (a C++ computer vision library), Tensorflow (a machine learning library) and a solver written in Rust. It neatly demonstrates how WebAssembly allows you to write performance-critical web-based applications in a wide range of languages.

Passing High-Level Data Types between AssemblyScript and JavaScript: Announcing as-bind

MEDIUM.COM

One of the biggest sources of friction with WebAssembly at the moment is the interface between wasm modules and their JavaScript host. WebAssembly only supports numeric types, as a result passing more high-level types (strings, arrays, structs) across this boundary requires complex serialisation / deserialisation, and a load of ‘glue code’. This blog post announces the release of as-bind, a tool for AssemblyScript developers that handles this process at runtime, making it much easier to interface with wasm modules.

Fuzzing JavaScript WebAssembly APIs using Dharma/Domato

WEBASSEMBLY-SECURITY.COM

WebAssembly is a runtime for the web, therefore security is of critical importance. This blog post explores the use of fuzzing, a technique that generates random, yet syntactically correct, programs in order to test APIs and runtimes. In this post the author uses fuzzing to explore the robustness of the WebAssembly JavaScript APIs.

And Finally …

The research study that pointed to the malicious use of WebAssembly from a number of months ago just keeps coming back! People love a negative news story 🙄