Das ist mal wieder eine Möglichkeit, mit Lieblingsthema "Perl 6" ins Spiel zu bringen...
Zur Zeit gibt es da neben den "großen" Projekten Parrot (und 6 in parrot) und Pugs noch MiniPerl6 und KindaPerl6.
MiniPerl6 ist in einer Untermenge von Perl 6 geschrieben (mp6 genannt), und kann sich selbst nach Perl 5 übersetzen. Und es existierte eine (soweit ich weiß handgeschriebene) Perl 5-Version davon. Wenn man jetzt den Compiler verändert, kann man ihn mit der älteren Version übersetzen, und dann noch mal mit der aktuellen - bootstrapping also.
Und dann gibt es KindaPerl6 (kp6), einen flexibleren Compiler, der ebenfalls in mp6 geschrieben ist - und damit von MiniPerl6 nach p5 übersetzt werden kann. Und kp6 versteht schon mehr Perl 6.
Vom "endgültigen" Perl 6-Compiler wird es sicher eine in Perl 6 geschriebene Version geben, die dann entweder mit kp6 oder mit pugs gebootstrapped werden wird.
Dann ist der Compiler gleich sein eigener Testcase: Wenn er sich selbst übersetzen kann, müssen schon mal 90% der Features korrekt implementiert sein - insbesondere Regexes und Rules.
Wobei es natürlich trotzdem noch eine offizielle Testsuite gibt.
Ein in Perl 6 geschriebener Compiler erleichtert es, Teile der Grammatik zu überschreiben, Makros zu implementieren und einen ganzen anderen Wust an Flexibilität zu erreichen, den man sonst nur mit ganz üblen Hacks bekommen könnte ;-)
Falls das jemand alles verwirrend findet: ist es auch. Zumindest anfangs ;-)