gwtmp01 / mac.com wrote:
>
> On Jan 30, 2007, at 10:38 AM, John Lam (CLR) wrote:
>> On the CLR front (and I'm pretty sure on the JVM front as well)
>> continuations pose a very major problem for implementers. It's a
>> difficult problem to solve while preserving decent performance
>> characteristics. And the approaches that have been attempted in the
>> past (like exploiting the exception facilities of the runtime) don't
>> hold forth the promise of future performance improvements.
>
> Do you have any pointers to resources (papers, blog entries, source
> code) that elaborate on the difficulties of implementing continuations?
> Is it difficult in the theoretical sense or simply difficult to
> implement on top of VMs that were designed without continuations in mind?
The latter. The JVM and CLR do not provide any way to manipulate the
call stack, which is the typical and probably most efficient way to
implement continuations (aside from providing your own machine and call
stack implementation, which would essentially be an interpreter-on-VM in
both cases).
So yes, they're difficult to do on the JVM and CLR. Maybe impossible
without severe performance degradation, and entirely impossible to do
when third-party libraries are involved that don't play nice with even
the cleverest tricks we could come up with.
For this reason, it's highly likely that even if continuations did
survive into later 1.9 and 2.0 releases, they may never be available on
the CLR or JVM.
Ruby developers will have to decide if inability to run on JVM or
CLR-based Ruby implementations is worth all the continuation-based
"funky stuff". Honestly, I don't think it is.
- Charlie