Lightweight Concurrency in Lua
wingolog.org
wingolog.org
One thing from the previous thread is that Andy has the time and the brains to dive deeply into this stuff. Andy is smart, but what I think sets him apart, is that he relentlessly drives to the root and he revisits the topic over long time scales.
Here is a talk Andy gave back in 2017. https://www.youtube.com/watch?v=iskjbi0lNQY
Now that you know the secret, Go Forth!
Update, if you find this stuff fascinating, I really recommend that you watch and follow along all of David Beazley's wonderful tutorial session, "A Curious Course on Coroutines and Concurrency" that ends in section 7 with making an OS scheduler loop.
Warning! The one called the "previous discussion" is not about the same article as this now. This now is:
"lightweight concurrency in lua, 16 May 2018"
Whereas the one linked behind https://news.ycombinator.com/item?id=14664150 is
"a new concurrent ml, 29 June 2017"
so it can be just a "previous article by the same author which was discussed on HN" or something like that.
This one, here now, is not a second go on the same topic, this one here is a brand new topic: it involves Lua, Luajit and Snabb
https://github.com/snabbco/snabb
the latest also something I've just learned that it even exists, and it's quite interesting to me.
It is rare to see such lucid communication and such a clean commit history for hard technical development.
http://git.savannah.gnu.org/cgit/guile.git/log/
https://lists.gnu.org/archive/html/guile-devel/2018-05/msg00...
In a few years, all the cool kids will switch from Graal to Guile for language development.
It's normal here to write things you would think would need C (or asm!) only to discover that DynaASM and the JIT make them 'fast enough'
Next time you're thinking "fast enough for what?": fast enough for real-time high-bandwidth packet inspection.
My guess is you can't because sharing memory between threads is hard.
Co-routines usually can't, atleast not in rust/go etc. and those are more advanced than lua.