Perl 5, CPAN, and Perl 6 (Re^2: Hockey Sticks)by raiph (Hermit)
|on Jan 26, 2012 at 01:52 UTC||Need Help??|
Larry has planned use of Perl 5 and CPAN from within Perl 6 from the start. I am confident several approaches will get implemented, once the right pieces are in place. I agree it will make a huge difference.
One approach is embedding the usual perl interpreter via libperl.
jnthn's blizkost enables Perl 5 code to be executed within Parrot (and hence using Rakudo on Parrot). I think jnthn recently said that blizkost is currently broken and that he hopes to fix it in the next few weeks.
Aiui, blizkost currently does very little, just eval'ing a single line of perl5 code, and not even making use of the result. I think that developing it toward supporting Perl 5 modules was blocked on other progress, in particular implementing native 6model. Maybe it'll move forward this year.
Update August, 2014: jnthn implemented native 6model in 2012/2013 -- in a brand new VM MoarVM, not Parrot. nine (Stefan Seifert) then started Inline::Perl5 at YAPC::EU 2014. Within a couple days this new NativeCall based approach had already established itself as a great approach for delivering P5 interop, once P5 object destruction has been dealt with. It looks likely to me that this project will assimilate aspects of diakopter's unimplemented proposed P5 Interop design which in turn had assimilated blizkost.
Alternatively, once Perl 6 is sufficiently complete, it might be "relatively easy" and compelling to implement a Perl 5 compiler in Perl 6. So that'll be another plausible approach to using some CPAN modules.
Update August, 2013: FROGGS' 20 minute video introducing the Perl 5 slang of Perl 6
Update August, 2014: FROGGS is wrapping up two major yak shaves: a port of v5 (the Perl 5 slang) to full P6 code from the NQP subset, and completing the specification and implementation of module importing so CPAN modules can be use'd.
I can imagine others. There are complications whichever approach is used. For some approaches, XS will always be a bridge too far.