There's also C--, but it seems to be in a state of permanent development. Has anyone used this? Its aim is to provide more support for languages (things like garbage collection and tail recursion - I can't see mention of special support for threads or coroutines though).|
Gcc also has its advantages for supporting other languages (apart from the fact that if it's slower it's probably doing more optimization!). It allows nested procedure definitions, for example, which apparently helps some implementors (iirc it's useful for logic languages and if anyone really wants to know why I can go look it up! - I guess it allows some kind of almost-closures, a bit like Java's inner classes).
But there doesn't seem to be the "perfect" system for language support out there. I guess that's why we're waiting for Parrot...