A few months ago, Mahesh Prakriya stopped by Amazon to discuss the recently merged IronPython project and the changes that it inspired in Microsoft’s .NET implementation. We exchanged email, and he invited me to this year’s Lang.NET symposium. I plan to look for volunteers to contribute to a Perl 6 implementation targeted to the CLI.
I’ve been talking to some folks on the freenode #perl6 channel about the prospect of a .NET-based implementation. They seem to think that kp6 could be used to make something realistic with little effort (for some value of “little”). The most mature kp6 back end implementation is currently Perl5.pm, so the work would involve modifying the p5 visitor/emitter so that it outputs IL bytecode rather than perl5.
After a quick review of kp6’s Visitor::Emit::Perl5.pm, it seems as if the code used to emit the perl5 back end should be re-factored so that the emitted perl5 code snippits live in their own template files, named after the classes for which they emit code. The emit_perl5() methods (which should probably be re-named) of the various Visitor::Emit::Perl5 classes could open the template file for the current class and then substitute values using sprintf() or the like. This would allow other back ends to merely inherit from Visitor::Emit::Perl5. They would then only need to re-write the various template files in order to act as an alternate back end. Much of the code used for the Perl5 implementation could then be re-used.
Anyway, I expect to take pictures and chat with a bunch of folks about .NET and perl6 at this shindig. I hope to see you there :)