
On 9/14/06, Giovanni Piero Deretta <gpderetta@gmail.com> wrote: [ .. description on how RIFE implements full continuations in Java .. ] These are a too great limitation for a general purpose library like
mine (even RIFE provieds a way to disable full continuations with setCloneContinuation(false)). Also walking the stack to search for object to copy cannot be implemented portably (or even non portably), unless one where to be restricted to never allocate non builtin stack objects and have all heap allocated objects inherit from a common base. This would kill performance, would be a very non iodimatic c++ and still be hard to do and very fragile.
Theoretically compiler support could make coroutine copying possible and even relatively cheap (no much more than the cost of copying every single local object in scope) . In fact some compilers know at every moment the set of all objects alive in the stack for unwinding purposes.
For the time being my library is stuck with non-copyable coroutines.
Then I see two interesting and not mutually exclusive paths to follow: - implement the one shot continuation examples, although the multiple web cont. implementations out there seem to do full cont. (at least Scheme, Java, Ruby, ..) - experiment with an implementation for Linux only, and check whether performance and fragility are major issues (the interpreted versions out there don't seem to complain about that but I am not sure they are used in high performance cases) Thank you for helping me understand this complex topic !