On Wed, 19 Mar 2003, Matthijs van Duin wrote: > >(4) (internals) Given that Parrot has so many different control mechanisms > >(call/ret, exceptions, closures, continuations, ...), how do we maintain > >consistency? And how much of that is parrot's responsibility (versus the > >perl6 compiler's)? > > I don't think there will be a big problem with that, but maybe I'm just > overlooking things.
Exceptions, for example, will have to unwind dynamic bindings, stack frames, call user-defined exception handlers, etc. Using continuations for everything, this isn't a problem -- get it right once and it works everywhere (btw, languages/perl6 uses continuations for its exceptions now). However, they're much more expensive than normal sub calls, so we probably don't want to use them there. I'll let Dan talk about potential issues with throwing exceptions across languages, since he's given it much more thought than yours truly, /s