Theseus: Translating Win32 to WASM
Theseus has been updated to translate Win32 applications into WebAssembly, enabling .exe files to run on the web. The project faced challenges, particularly regarding how to manage blocking operations in a web environment. Ultimately, the emulator uses web workers to handle asynchronous tasks while maintaining performance and a good debugging experience.
- ▪Theseus can now produce WebAssembly output from Win32 applications.
- ▪The emulator's design allows it to run in a non-blocking manner suitable for web environments.
- ▪Web workers are utilized to manage asynchronous tasks while emulating Windows API calls.
Opening excerpt (first ~120 words) tap to expand
Theseus: translating win32 to wasm May 24, 2026 This post is part of a series on Theseus, my win32/x86 emulator. Theseus now can produce WebAssembly output, allowing it to translate a .exe file into something that runs on the web. Try it out here, but note it is full of bugs (e.g. Minesweeper crashes if you win). This was pretty straightforward to get working, with the exception of one major detail that this post will go into. The x86 emulation part of this is just recompiling the existing Theseus output with a different CPU target. This is one of the main benefits of this binary translation approach. The translated code is almost (with the exception of how main gets invoked) wholly agnostic to the environment it eventually runs in.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at Neugierig.