Epsilon: A WASM virtual machine written in Go
by ziggy42 on 12/1/2025, 1:12:03 AM
https://github.com/ziggy42/epsilon
Comments
by: hardwaresofton
Congratulations on the progress and getting the engine out there!<p>One nice thing about interpreters versus JIT compilers is that they can be used in places like iOS without too much fuss (AFAIK you have to bundle all the WASM you will run though, or something like that).<p>I'm biased since I work on it, but any considerations around adding support for the Component Model? It's more complex than the base spec of course but incredibly robust -- really the present/future of "modern" WebAssembly across languages.
12/9/2025, 10:41:49 AM
by: shevy-java
WASM seems to be rather poorly documented in general. I used to think it is only badly documented in Ruby (which it is), but I have been slowly reading "WebAssembly The Definitive Guide" and when comparing this to information on the internet, it seems WebAssembly is years behind e. g. HTML, CSS, or JavaScript in regards to documentation. Granted, it is not the same user base (more people will be interested in HTML and CSS simply because there is a bigger pool of people interested in that, rather than in WebAssembly), but still - documentation appears to become really worse in general on the internet. Finding it too.<p>So in this regard, having more implementations may be useful (more opportunity to improve documentation) - thus while I am in general skeptical, this is good news here, even if I do not use Go myself.
12/9/2025, 11:55:53 AM
by: simonw
Do you have any plans to add timeouts or some other mechanism for limiting the amount of CPU a webassembly call can use?<p>I'm always interested in options for using WebAssembly as a sandbox to run untrusted code, but one of the things I need to protect against is an infinite loop.<p>(I had Claude knock up an experimental Python binding to try Epsilon out, notes from that here: <a href="https://github.com/simonw/research/tree/main/epsilon-python-wrapper" rel="nofollow">https://github.com/simonw/research/tree/main/epsilon-python-...</a> )
12/9/2025, 9:54:25 AM
by: Gys
This could have been a Show HN?<p>Also: would be nice to see wazero (<a href="https://github.com/wazero/wazero" rel="nofollow">https://github.com/wazero/wazero</a>) mentioned. What was the reason to create Epsilon as an alternative?
12/9/2025, 9:22:10 AM
by: karel-3d
How does this compare with wazero?
12/9/2025, 9:21:26 AM
by: sureglymop
Only tangentially related, asking out of curiosity.<p>If one wanted to have a JIT compiler from what I understand it would essentially need to be able to get a chunk of memory, generate instructions into it and then jmp there.<p>Is creating such a thing possible in just Go?
12/9/2025, 9:43:00 PM
by: donatj
Nice! I started building a toy Go WASM VM myself but a few hours in realized I was in way over my head. Seems very readable, I'm going to want to go to school on this!
12/9/2025, 12:22:39 PM
by: mring33621
Very nice!<p>Seems like a next step would be automatic code generation to map user-supplied (or auto-generated) interface definitions to exported WASM module functions.
12/9/2025, 3:36:46 PM
by: praveen9920
Nice project.!<p>Is there anything akin to file sockets api for wasm? I see a lot of potential in using them with go channels for ipc between multiple wasm modules.
12/9/2025, 1:41:38 PM
by: koolala
I can't wait till this will be able to run in WASM on the web. Looks cool.
12/9/2025, 10:47:01 PM
by: aeve890
>with 0 dependencies<p>>Looks inside<p>>0 dependencies<p>Wow. Amazing. Was that a planned feature or did you just manage to write the entire project without stepping out the go std lib?
12/9/2025, 2:35:23 PM
by: _s_a_m_
[flagged]
12/9/2025, 9:43:57 AM