WebAssembly and Limboole in the Browser

Imagine running C programs inside your browser. And now picture the same scenario without having to worry about annoying backends or other troubles. This is possible nowadays!

Okay I agree, WebAssembly and its potential don’t sound as amazing as it once did. It became part of the ever-growing toolbox of web engineers to accomplish their tasks. But still – the possibility to run previously solely console applications in the browser remains fascinating. This Sunday I was wondering about ways to use this capability and searched for a small project that can be finished in one day. The project I found (or remembered from my first Computer-Science semester) was limboole, and the one that developed from that is Limboole on the Go.

Example usage of Limboole on the Go for debugging hardware issues (okay, so if it’s neither the GPU, HDD, …, then it must be the CPU!)

This project became possible by changing small parts of limboole to be more suitable for Emscripten. Most notably removing the STDIN reading and replacing it with a simple const char* parameter. After experimenting for a while, it seemed like Emscripten’s standard binding code is not really built for calling the same program again and again with different STDIN arguments, as there were some troubles with that approach. After this change and some other small development areas, the GUI turned out pretty well though. It even automatically generates links to the currently solved problems by changing the hash part of the URL. This makes every problem directly linkable, which makes Limboole on the Go more suited for sharing small snippets of propositional logic.

To sum up, I am quite content with this project, especially as it came from the “Hacking on Sundays” category. Such small closed-off projects are always fun and are a good contrast to long running projects, where you are always wondering when (and if…) they will be done. I hope others can use this project too and wish everybody fun with propositional logic!