![z machine interpreter chromebook z machine interpreter chromebook](https://static.macupdate.com/screenshots/287017/m/z-machine-interpreter-screenshot.png)
![z machine interpreter chromebook z machine interpreter chromebook](https://www.slashgear.com/wp-content/uploads/2015/10/main-1-e1446134020554.jpg)
Out of curiosity, are you planning on (progressively, slowly) rolling your own JIT, or using something like DynASM ( ), libFirm ( ), or some other preexisting thing (eg ) in the space?įWIW, I understand that LuaJIT gets some of its insane real-world performance from a JIT and VM design that's effectively shrink-wrapped around Lua semantics/intrinsics - it's not general-purpose. live patching and replaying of functions while debugging). If you do snapshots + live reloading there are tons of other things you can do (e.g. You could also send a snapshot to a friend so they can run an application from a given point on their machine. Imagine a debugger that takes snapshots on breakpoints, lets you to inspect the stack and heap, and replay the program forward from a given point in a deterministic manner. Snapshots allow you to peek into your program. In the context of edge computing, you could snapshot the program once it's 'warm' to cut back on VM startup time. You could also send snapshots of different tasks to other computers to execute. Continuations allow you to implement a naive version of single-shot delimited continuations - coroutines! This can be very useful for modeling concurrency.Īside from coroutines and continuations, snapshots are neat for distributed computing: spin up a vm, take a snapshot, and replicate it over the network. taking a snapshot, storing it in a variable, doing some work, and then 'calling' the snapshot to return to an earlier point. Continuations are basically exposed snapshots, i.e. The fib test compares both luajit with the JIT on and JIT off: as MiniVM is not JIT'd, I think that this is a fair comparison to make.Ī snapshot is a the entire state of a program at a single moment in time.
![z machine interpreter chromebook z machine interpreter chromebook](https://smartmania.cz/wp-content/uploads/2020/01/Chrome-os-steam.jpg)
The final runs of the benchmark take about 15 seconds to run, and are run 10 times per language, at which point startup time is no longer a large factor. So far the largest applications written with MiniVM are Paka, a self-hosted language similar to Lua that targets MiniVM os49, an operating system built on Paka/MiniVM in the spirit of lisp machines and xori, an online playground for the language.Įdit: to address your edit, the the Tree benchmark starts small, but grows exponentially (the graph is logarithmic). I'm pretty sure Shaw's written more benchmarks, but as the README explains, it's really hard to tell what the performance characteristics of a language are without writing a larger application. Personally, I find it pretty impressive that it performs as well as these runtimes despite not having a JIT compiler.