3 ms·
Impressive work. This reminds me of an experimental JVM that was around about 20 years ago from a group called Velare. They could do durable coroutines just lik
by kitd 3y ago
Impressive work. This reminds me of an experimental JVM that was around about 20 years ago from a group called Velare. They could do durable coroutines just like this, but by throwing a particular exception rather than using `yield`. They also could return a value and allow the coro to be resumed with a value.
edit: here it is https://dl.acm.org/doi/10.1145/949344.949362 https://dl.acm.org/doi/10.1145/949344.949362 It was a built-in bytecode interpreter with suspendable threads
It changed significantly how you think about cooperating processes. It was like watching 2 processes have a conversation with each other without the controlling code getting involved in any way. Also, if you save the coros after each call, you can get step-by-step replays which are very helpful in debugging.
- ncruces 3y agoAn open-source version of this I made for Google Summer of Code 2005: https://sourceforge.net/projects/jauvm/ https://sourceforge.net/projects/jauvm/