Epsilon: A WASM virtual machine written in Go
41–47 of 47 posts
Re: Epsilon: A WASM virtual machine written in Go
#42Earlier quoted context omitted.
So far, seems interpreter only, lots simpler, etc. I'd be interested to understand the goal behind it better.
The goal was to see if I could do it :D
But I guess now that it's done, the comparison is obvious, and as a wazero maintainer, I wanted to know what we could learn from your experience.
Re: Epsilon: A WASM virtual machine written in Go
#43Do you have any plans to add timeouts or some other mechanism for limiting the amount of CPU a webassembly call can use? 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. (I had Claude knock up an experimental Python binding to try Epsilon out, notes from that here: https://github.com/simonw/research/tree/mai…
I believe that wasmtime has some sort of mechanism for this called Gas if I'm not mistaken.
(Core Wasmtime maintainer here, and I built our epochs mechanism when I realized we could do better than fuel if one doesn't need the determinism, only periodic yields)
Re: Epsilon: A WASM virtual machine written in Go
#44WASM 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 an…
WASM development is really for a "level lower" than HTML, CSS, and JavaScript development. I know this because, being curious about it myself, I tried a year ago to make use of a WASM runtime in Go to run a piece of WASM code (I think I wrote something in V and compiled it to WASM). It becomes a huge pain in the bum as soon as you have to deal with moving anything more than trivial types around, because you have to m…
I'm not sure how well it carries over to embedded platforms though, but I'm really interested in trying.
Re: Epsilon: A WASM virtual machine written in Go
#45Congratulations on the progress and getting the engine out there! 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). 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…
You can download the WASM, it just can't materially change the purpose or scope of your app.
IIRC there is also a limitation on making platform-like super-apps on iOS and it feels like that might be a natural occurrence depending on just how much dynamic functionality you pull in via Wasm (i.e. how powerful your app is).
Re: Epsilon: A WASM virtual machine written in Go
#46Earlier quoted context omitted.
The goal was to see if I could do it :D
Which is how lots of great things start. But I guess now that it's done, the comparison is obvious, and as a wazero maintainer, I wanted to know what we could learn from your experience.
what is it?
Re: Epsilon: A WASM virtual machine written in Go
#47Earlier quoted context omitted.
You can download the WASM, it just can't materially change the purpose or scope of your app.
Thanks! Do you have a source for this? Would appreciate a pointer if you have one. IIRC there is also a limitation on making platform-like super-apps on iOS and it feels like that might be a natural occurrence depending on just how much dynamic functionality you pull in via Wasm (i.e. how powerful your app is).
> Except as set forth in the next paragraph, an Application may not download or install executable code. Interpreted code may be downloaded to an Application but only so long as such code: (a) does not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application (b) does not bypass signing, sandbox, or other security features of the OS; and (c) for Applications distributed on the App Store, does not create a store or storefront for other Applications.
App Review Guidelines § 2.5.2, "Software Requirements" [2]:
> Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps. Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the app completely viewable and editable by the user.
1: https://developer.apple.com/support/terms/apple-developer-pr...
2: https://developer.apple.com/app-store/review/guidelines/#sof...