Parrot: January 2008 Archives

Ted Neward has written an article on the problems of scaling up projects based on dynamic languages:

While a dynamic language will usually take some kind of performance and memory hit when running on top of VMs that were designed for statically-typed languages, work on the DLR and the MLVM, as well as enhancements to the underlying platform that will be more beneficial to these dynamic language scenarios, will reduce that. Parrot may change that in time, but right now it sits at a 0.5 release and doesn't seem to be making huge inroads into reaching a 1.0 release that will be attractive to anyone outside of the "bleeding-edge" crowd.

Alas, he has to end with "Perl just sucks, period." Even as we work forward with Parrot and Perl 6, the continued public perception of Perl doesn't change. :-(

I've got so many little notes that don't warrant a full-blown story, so here's a link roundup:

There, that feels much better now!

Bob Rogers, Parrot release manager for Parrot 0.5.2, announces...

On behalf of the Parrot team, I'm proud to announce Parrot 0.5.2 "P.e. nipalensis." Parrot is a virtual machine aimed at running all dynamic languages.

Parrot 0.5.2 can be obtained via CPAN (soon), or follow the download instructions at http://parrotcode.org/source.html. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion or SVK on the source code repository to get the latest and best Parrot code.

Parrot 0.5.2 Highlights:

  • "make perl6" uses the new pbc_to_exe tool to build a Perl 6 executable. It's still a ways from being a finished implementation of Perl 6, but we're working on that. Come join us!
  • Parrot now has a LOLCODE implementation! Not an "enterprise-class" computing language, you say? We don't expect anyone to use it for their next app, but at less than 500 lines of source code (and most of that in a subset of Perl 6), it demonstrates the power of the Parrot Compiler Toolkit. See lolcode.com for more.

Parrot 0.5.2 News

- Documentation
 + PDD27 (multiple dispatch) - debut of new design
 + Numerous small updates to glossary.pod, etc
- Compiler Toolkit
 + NQP: optional, named, and named/required parameters
 + PIRC: cleanups
 + PAST: "defined-or"
- Languages
 + New mk_language_shell.pl script creates language stubs
 + LOLCODE: new
 + Lua: various
 + Eclectus: start with support for local variables and procedures,
   use SXML as intermediate representation
 + Perl 6: list builtins, compiler directives, command-line options, etc.
 + "make perl6" now builds a Perl 6 executable
 + punie: more builtins, control structures, code refactoring
 + pynie: builtin stubs, more tests
- Implementation
 + New "pbc_to_exe" utility turns bytecode to executables
 + New set_outer method for subs
 + Further configuration refactoring for testability
 + All functions now completely headerized
 + Concurrency: interpreter schedulers
- Deprecations
 + DYNSELF (changes to SELF; SELF to STATICSELF)
 + METHOD (replaced by renaming PCCMETHOD)
 + pmcinfo op (superseded by 'inspect')
 + get_attr, set_attr, and 8 other vtable methods
 + See DEPRECATED.pod for details
- Miscellaneous
 + Many bug fixes
 + Minor speed enhancements with UTF-8 string handling
 + Debian packaging
 + consting, attribute marking, warnings cleanup, memory leaks plugged ...

The next scheduled Parrot release will be five weeks from today, on 19 February 2008.

Thanks to all our contributors for making this possible, and our sponsors for supporting this project.

chromatic provides us with more insight into the Perl 6 process that's picking up steam. His original post ran here at oreillynet.com. I've edited it a bit to emphasize the goodies.

A running joke in the Perl 6 world is that we'll release a stable Perl 6.0.0 by Christmas. We just won't tell you which Christmas.

As many community-developed projects have noticed, long blocks of holidays can be very productive for contributors. Both Parrot and Perl 6 on Parrot have made a lot of visible progress in the past couple of weeks.

mod_parrot

Jeff Horwitz took over the maintainership of mod_parrot a while back and has steadily made progress. The new news is that he's writing a user's guide. The older news is that mod_parrot supports languages built on top of Parrot, including Perl 6 and Plumhead (PHP on Parrot).

make perl6 just works

In terms of code, I dusted off some proof of concept code that Jerry Gay and I wrote several months ago, with advice from Nick Forrette, added one new feature, and checked it in. The code is pbc_to_exe and it allows you to build an executable named perl6 by typing make perl6 (or make perl6.exe on Windows) once you have the Parrot source tree configured on your machine.

The initial proof of concept took about two afternoons to write up; I wrote the first version in Perl 5 and then Jerry and I translated it to PIR (Parrot's native programming language). Then it sat for a few months, until someone convinced me that the progress we've made would be much more accessible if we could provide an executable file named perl6 with the compiler linked in nicely. It took part of an afternoon to add the last missing piece and put things in place. (For that, see downloading the Parrot source code. Until the next stable Parrot release on 15 January, you need to check out Parrot from source code.)

I'm proud of this little project in a sort of mortified way; it just writes out a C file that wraps a tiny exectuable header around the PBC file and calls a couple of functions in libparrot to run that code, much like the parrot executable does (but without all of the latter's command-line options). It may be the most useful code I've written in a while though.

More developers, and Debian packaging

The biggest surprise to me is that, besides myself and Jerry, Francois Perrad, James Keenan, Patrick Michaud, Cosimo Streppone, Will Coleda, Curtis Poe, Bernhard Schmalhofer, Jason Porritt, and Andy Dougherty have all worked on this system in the past week. One small change -- one small feature representing perhaps an ideal day's worth of work -- inspired so much additional polish and evolution. That's not counting all of the other people who might now download and play with Perl 6 on Parrot. (It gets better too. Allison Randal and some of the other Parrot developers have resurrected the old Debian packages for Parrot, so Debian and derivatives will likely be able to install and run both Parrot and Perl 6 on Parrot after the next release.)

That's not the only interesting thing.

Parrot's new object system

The November and December 2007 Parrot releases were significant because each one added a major new feature. Parrot 0.5.0 introduced the new object system which we believe is capable of supporting all of Perl 6's OO features (and by extension, just about every OO system available in dynamic languages, though there's one design question remaining about the multi-dispatch system in CLOS). Parrot 0.5.1 includes the new Parrot Compiler Tools, which allow you to build compilers using, more or less, Perl 6.

LOLCODE in Parrot

Though most of my work in Parrot is fixing weird bugs and adding new features to the platform itself, it's been fun and a little scary to watch the development of LOLCODE on Parrot. Will Coleda started this on Wednesday, and the project has picked up contributions from Simon Cozens, Jerry Gay, Patrick Michaud, Klaas-Jan Stol, Bernhard Schmalhofer, James Keenan, and Stephen Weeks.

I know that you know that LOLCODE is a joke language, and I know that Simon Cozens is a smart guy who worked on Parrot several years ago and then retired from programming, but he wrote up his experiences in Parrot is really quite wonderful.

How to build a Parrot compiler

Patrick and I gave a talk at OSCON last year about building a Parrot compiler, and I repeatedly said that our goal is to make it possible for you to build a working compiler in an afternoon. You won't build a language as rich and powerful as Perl, Python, or Lua in an afternoon, but we hope to get all of the boilerplate out of the way in the first thirty seconds so you can spend four hours adding just the features you want. (The frosting part of this dessert is that you can bundle up your compiler into a cross-platform C program you can distribute as source code to compile and run on any machine which has libparrot installed.)

I think we're starting to succeed.

Parrot New Contributor Day

The next Parrot New Contributor Day is Saturday, 12 January 2008. Please join us in #parrot on irc.perl.org then or any time.

chromatic is an editor and technical evangelist at O'Reilly Media and has contributed to Perl 1, Perl 5, Perl 6 and Parrot.

Patrick Michaud has written up a huge recap of recent activity in Parrot and Perl 6 in the past few days. As Patrick points out, "there is a huge amount of activity taking place with Perl 6 and Parrot; in fact, most of what I've written about here has occurred in the [past] 72 hours." Highlights include:

  • make perl6 target in Parrot
  • Patrick added the "defined-or" operator and the @*ARGS array to the perl6 compiler
  • Jonathan Worthington added a preliminary version of 'given'/'when'
  • Jerry Gay has been adding radix conversions to perl6,
  • Will Coleda is working on a web interface for high-priority RT tickets
  • the Perl 6 wiki has also gotten received quite a bit of reorganization

All the Perl 6 and Parrot buzz brought Simon Cozens out of the woodwork. Simon's been involved with Perl 6 since the very beginning, but hasn't been worked on the project for a while. He's checked out the current status of Parrot and Perl 6, and he likes what he sees:

There's a perl6 make target which builds Perl 6 binary, for heaven's sake, and it runs real live Perl 6 code. It's there, right now. [But] what excites me is the Parrot Compiler Toolkit.

[P]eople were saying that Perl 6 was going to be written in Perl 6, and I was, well, let's say, a little sceptical. But you know what? They've done it. I am astounded. It is lovely.

Here's hoping Simon sticks around for a while and helps keep this burst of Perl 6 energy going!

About this Archive

This page is a archive of entries in the Parrot category from January 2008.

Parrot: December 2007 is the previous archive.

Parrot: February 2008 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Other Perl Sites

Other Swell Blogs

  • geek2geek: An ongoing analysis of how geeks communicate, how we fail and how to fix it.
Technorati Profile