Parrot is a register-based virtual machine being developed using the C programming language and intended to run dynamic languages efficiently. It uses just-in-time compilation for speed to reduce the interpretation overhead. It is currently possible to compile Parrot assembly language and PIR (an intermediate language) to Parrot bytecode and execute it.
Parrot was started by the Perl community, and is developed with help from the open source and free software communities.
Parrot's biggest issue is that they don't have a First-among-equals language that they can do better than anyone else. JVM has Java, CLR has C#, even Perl 6 has moved to PUGS. I commend the Parrot team for the amazing effort they've been showing, but I'd liken this to Duke Nukem Forever finally settling on a Physics Engine...
What language do you think would be best for them/someone to move to Parrot as their base platform?
Given Parrot's very dynamic nature, a dynamic language seems like a good idea. Io would be quite interesting but it's too esoteric at this point so perhaps a more popular prototype-based language like JavaScript? What about dumping the old, crappy C-based implementation of Ruby for Parrot?
Actually, JavaScript would be kind of interesting as a First-among-equals language. The more I work with JS, the more I get the feeling that it's a wonderful language crippled by a tragic standard library and a horrible run time.
JavaScript has some great runtimes; V8 and Tracemonkey are very fast. The standard library is also fine, you probably only dislike the W3C DOM. Pretty much everyone agrees that that is one of the worst APIs ever designed, and that's why it's been replaced (or rather, hidden) by things like jQuery.
There is already an implementation of Ruby on Parrot called "Cardinal". Don't know its status but it can now be found in GitHub http://github.com/cardinal
I haven't worked on Cardinal in ages, besides moving it to an independent repository recently and updating it to actually build on its own last night.
The grammar is fairly complete, but the standard library isn't there, several builtin classes are missing completely, or don't have all their methods filled out, etc.
I was targeting 1.9, yes.
The big problem is that I don't actually know or really like ruby. That's the main reason I stopped working on it.
I'd love to see someone else take up work on it. I'd be glad to give commit privs on the repo to anyone, and I'd love to help anyone get up to speed in working on it.
Parrot is out but perl 6 is only half way complete. The closest implementation has (warning!: second hand knowledge) passed 7,000 spec tests. There will be an estimated 15,000 spec tests when they are finished being written.
Sounds good, but at this point I take any Perl 6 date projections with a big fat salt lick.
Years ago, I slacked on updating my 2nd edition Camel Book to 3rd edition, figuring that I would just wait for the Perl 6 version. Ten years ago. The book is not in very good shape these days.
Well Perl5 isn't disappearing because Perl6 is coming around the corner.... in fact the opposite there are lots of cools things happening right now in Perl5 world (see Moose, MooseX::Declare, etc).
So perhaps you should upgrade your Camel book or look at "Perl Best Practices" by Damian Conway. Also keep an eye on http://www.modernperlbooks.com
As for Perl6/Rakudo... no need to wait its already here! Clearly its still "beta" but that shouldn't stop you downloading and playing with it.
I've read Perl Best Practices. Good book. I don't agree with every single one (the deep ?: structures in particular) but everything in there is very sane. I've also found that with http://perldoc.perl.org, I don't have to refer to the book much at all.
However, these days I favor Ruby over Perl. Especially now that the interpreter is not dog-slow anymore.
I'd move to ruby but the OO's a bit limited for my tastes - no multiple inheritance and a fairly minimalist mixin system just doesn't cut it after doing perl/python OO and using assorted lisps for prototyping.
Of course, every ruby dev I've spoken to about this has basically said "you don't need anything more, and if you do want it, that means your design is wrong" - which brings us immediately into a question of opinion so I can't really argue either way about it.
I do find perl5 v10 w/MooseX::Declare to be very much "ruby, but with a more flexible object system" though ...
One of the things I was looking forward to in implementing Ruby on Parrot was using real OO. I don't really mind ruby's syntax too much, but the OO was frustrating.
"whenever the word "Parrot" is mentioned"? No, I posted it because the website as as dead as a parrot. And ended with "etc" quite quickly because, yeah, old gag.