On Apr 23, 2009, at 4:36 PM, Richard Tew wrote:
Whether someone would choose Lua or Stackless Python for coroutines is probably a matter of preference for the language itself. But one thing Stackless might provide that Lua does not, is the ability to block C function calls as well as Python function calls given that we shift C stack sections in and out with tasklets. Or the ability to persist and unpersist in a cross platform way, running tasklets.
To clarify a couple of points:
Stackless, going from my limited understanding here, is not 'actually stackless' at all -- but by manipulating the C stack, allows dynamic switching between (arbitrary?) frames. I have read that lua is 'literally stackless', and does not use a C stack at all... correct? Please, scientists and engineers, tell me what this means to me...
Stackless does use the C-stack, but sparingly, and except for when C extensions call back into python, it is "unrolled" between task switching. So essentially it is "C stackless" in (dare I say) *most* cases. When there *are* extension callbacks -- then the C-stack needs to be copied and dynamically patched.
So it's sort of the best of both worlds.
Stackless's 'tasklets' weigh only a few kilobytes a piece; what does a lua coroutine weigh?
When there are extension callbacks the stackless tasklets *could* be much more weighty...
depending one what is on the stack. _______________________________________________ Stackless mailing list [email protected] http://www.stackless.com/mailman/listinfo/stackless
