3 ms·
Very interesting! They say they went from a stack-based IR, which provided faster translation but slow execution time to a register-based one, which has slightl
by ceronman 2y ago
Very interesting! They say they went from a stack-based IR, which provided faster translation but slow execution time to a register-based one, which has slightly slower translations, but faster execution time. This in contrast with other runtimes which provide much slower translation times but very fast execution time via JIT.
I assume that for very short-lived programs, a stack based interpreter could be faster. And for long-lived programs, a JIT would be better.
This new IR seems to be targeting a sweet spot of short, but not super short lived programs. Also, it's a great alternative for environments where JIT is not possible.
I'm happy to see all these alternatives in the Wasm world! It's really cool. And thanks for sharing!
- herobird 2y agoThank you, that's a good summary of the article! Even faster startup times can be achieved by so-called in-place interpreters that do not even translate the Wasm binary at all and instead directly execute it without adjustments. Obviously this is slower at execution compared to re-writing interpreters. Examples for Wasm in-place interpreters are toywasm (https://github.com/yamt/toywasm https://github.com/yamt/toywasm) or WAMR's classic interpreter.
- titzer 2y agoThere is also this (https://github.com/mbbill/Silverfir https://github.com/mbbill/Silverfir) and Wizard (https://github.com/titzer/wizard-engine https://github.com/titzer/wizard-engine). I wrote a paper about Wizard's in-place interpreter and benchmarked lots of runtimes in (https://dl.acm.org/doi/abs/10.1145/3563311 https://dl.acm.org/doi/abs/10.1145/3563311). As there seem to be even more runtimes popping up (great job with wasmi, btw), it seems like a fun, maybe even full-time, job to keep up with them all.
- herobird 2y agoAlso great job on Wizard btw! Your article about Wizard was a really interesting read to me. The abundance of Wasm runtimes is a testimony of how great the WebAssembly standard really is!