Perl 6 on Parrot is now known as Rakudo Perl
For some time now, there's been confusion about the multiple versions of Perl 6. Per Larry's wishes, Perl 6 is a specification of the language, and not an actual implementation. There will also be no "default" implementation of Perl 6. Pugs has been going strong for a while, based on Haskell. We've been talking about what to call Perl 6 that runs on Parrot, and Patrick Michaud worked with Damian Conway to come up with it: Rakudo.
It's a name the Damian has discussed before, and Yours Truly just so happened to own rakudo.org, hoping to be able to use it for something good and Perly. For a while, it hosted wikis that are now over at perlfoundation.org, and it's sat idle since then. I'm glad I didn't let it lapse, because now it can be an information center for the project. So far I've got a blog up, and I hope we can get more excitement about the project going as we post more details about the project there.
Read more about why "Rakudo" and the future of the project over at the brand new Rakudo.org.
0 TrackBacks
Listed below are links to blogs that reference this entry: Perl 6 on Parrot is now known as Rakudo Perl.
TrackBack URL for this entry: http://perlbuzz.com/cgi-bin/mt/mt-tb.cgi/286
First, you can call them Rakudo Perl and Pugs Perl if you like. Those are fine.
There is no reference implementation of Perl 6 any more than there is a reference implementation of C or FORTRAN.
Multiple implementations is very common. GCC may be a commonly used C compiler (and FORTRAN compiler and...) but it's not the only one, nor is it the reference implementation. You have MS Visual C and Turbo C and Intel's C compiler and all these different compilers and toolsets all implementing the same C language. Perl 6 is like that.
I don't understand djlvz means by "based on perl 5" for his vision of a Perl 6 reference implementation.
@Tobias:
Perl 6 is still Perl 6 the same way C is still C even when compiled by any of the compilers Andy mentioned. In the same way, a bananna is a bananna whether it's eaten by a person or a gorilla (okay, maybe that's a stretch). I guess I just don't find that distinction confusing.
Also, as I understand from previous discussions about the "slow" speed of Perl 6 development, the pace has less to do slow implementation and more to do with allowing the language itself -- the specification -- an incubation period where it is allowed and expected to change and mature. Yes, Perl 6 has been a long time coming, but when it does arrive I believe we'll see significant benefit from that incubation, and Perl 5 has already seen benefit from the work.
Tobias: i think you're missing something. perhaps you should read the docs for Rakudo Perl 6 (here's the README.) when you run Rakudo Perl 6, it's called 'perl6'. in fact, you can build and run an executable based on parrot today. it will have the same look and feel of any other Perl 6 implementation, because that look and feel is part of the Perl 6 Specification.
think of "Rakudo" as a brand. have you heard of ActiveState ActivePerl? Vanilla Perl? Strawberry Perl? these are all brands of Perl 5. Rakudo, Pugs, and other perhaps lesser-known implementations (kp6, smop) are brands, too. they'll all look and feel the same.
When I first started as Perl 6 compiler pumpking in 2004, there was an embryonic implementation of Perl 6 that was based on Perl 5. At that time the design team (Larry, Damian, Allison) advised me that we should probably abandon that effort and start over in Parrot. I figured that if anyone would know the best course of action, these folks would, and so that's what we've done.
So, we did start out with building Perl 6 on Perl 5, but decided that wasn't going to work out well, and switched to a different tack.
IIUC, KindaPerl6 is targeting Perl 5 as a backend, and so that might be one possibility. But even there the intent is not to build Perl 6 on top of Perl 5.
Pm
Correct, that's why we're calling it "Rakudo Perl", and just using "Rakudo" as a convenient shorthand.
By way of comparison "Linux" has the same sort of setup. There's no reference implementation of Linux. Instead we have "Ubuntu", "Debian", "SUSE", "Red Hat", etc., and people understand that.
Pm
Larry is clear that he wants Perl 6 implementations to be distinct from the specification. I think it makes a lot of sense to do that. Some people don't like TMTOWTDI, but then those people probably shouldn't be using Perl. TMTOWTDI is very much in Perl's blood.
Also, it's mentioned in my journal post but perhaps isn't clear here: Even though we're now calling the Parrot implementation "Rakudo Perl", it will still be invoked by /usr/bin/perl or /usr/bin/perl6 on the command line and in shebang lines.
PmI'll admit that I really haven't been following Perl 6 (sorry Patrick), but the comments above cleared up some stuff for me. As I understand it, Perl 6 is Perl 6, no matter whether you're using Pugs, Parrot, or whatever (you don't write Rakudo Perl 6 code, or Pugs Perl 6 code, you write Perl 6 code). To compile and run Perl 6 code, you can use Pugs, Parrot, etc. Parrot (as I'm sure is true with some of the others) is not specific to Perl 6. Parrot can also (will also?) be used to compile and run Python, PHP, Ruby, etc.
It comes down to what you'll be using to run Perl 6, no? Personally, I don't care if I have to type 'croc helloperl6.pl', so long as the code I write is Perl. :-) Am I understanding it correctly?
Jeremy, you have it. Perl 6 is the language. You can run a program on the Perl 6 interpreter by typing "perl6" at your command line, if you happen to have Rakudo Perl installed. Alternatively, you can run a Perl 6 program by typing "pugs" if you have Pugs installed. Or there's the other one whose name I keep forgetting.
(Similarly, you can run a Haskell program using "ghc" or "hugs" or "nhc98" or "yhc" or "hbi" or "hbc". And the results are exactly the same! The only difference is that one of the Perl 6 implementations will actually be called "perl6" - but just to keep people on their toes, its codename will be Rakudo Perl.)
If Haskell is too far out for you, think "java" versus "kaffe". Your application still runs.
Or even better, think "XFree86" versus "Xorg". Run "X" and the right thing will happen. You won't even need to care what's running underneath.
But please don't use "croc" however, since that's the name of a language I designed a few years ago. Maybe now I can use the Parrot runtime to finally implement it, since it's so damned easy to implement languages in Parrot... :)
I respectfully disagree. The reason we don't have a completed implementation is not due to "an endless writing of specification". Put another way, assuming that the Perl 6 specification had been frozen a couple of years ago, I don't think we'd be any farther along towards an implementation than we are now.
In fact, I'd even go so far as to say that we'd be less far along with a specification freeze, because many (most?) of the specification changes that have occurred in the past couple of years have been made in response to issues discovered during implementation. This is true for both Pugs and Rakudo Perl. If the specification were frozen, we'd have a much harder time with implementation.
From my perspective, the time we've taken to build a Perl 6 implementation is due primarily to having some very ambitious goals, and because we've needed time to build the tools that could support Perl 6. But it's not because the specification itself is evolving.
Pm