This file is part of the Perl 6 Archive

Note: these documents may be out of date. Do not use as reference!

To see what is currently happening visit

The Perl 6 Summary of the week ending 20031005

Hello, good evening, and welcome from the teeming metropolis that is Newcastle/Gateshead, home of The Angel of the North, the Winky Eye Bridge, the ham and pease pudding stotty and freezing your extremities off on a Saturday night down the Bigg Market.

This isn't (yet) a permanent move, but I'm here, my laptop is here, and there's a summary to write so let's get on with it shall we?

As per always, we'll start with the internals list.

Disassembler issues

Marcus Thiesen had some problems getting the disassembler working (it was throwing segfaults, never a popular behaviour). Leo Tötsch (who else?) fixed it.

Pondering proper parameter passing

The argument passing discussion continued. Leo suggested some changes to PDD03 for Dan to bear in mind when he rewrote it. (Something that was only going to take a few hours last week. Dan? I don't wish to nag you understand.)

Multimethod dispatch function installation issues

Dan's in the process of writing the the Multi Method Dispatch (MMD) subsystem (at least the parts needed for operator overloading) and is scratching his head over what to do when a Multimethod is defined that references some other class that hasn't yet been loaded. He asked for the list's assistance in choosing one of two alternative approaches. The list refused to choose (no surprise there), and suggested a third option.

Library Loading an initialization sequence

Dan is also working on what happens when PMCs are loaded -- how they are initialized etc -- so he posted a long message documenting his current thinking in this area.

MANIFEST failings, and how to overcome them

There's been a few language checkins recently that have broken the MANIFEST, Robert Spier asked for a little help writing a MANIFEST checker which could be used as part of the CVS checkin which would make CVS refused to check anything in unless the MANIFEST was also up to date. Garrett Goebel came up with the goods and now, anyone attempting to check something in that invalidates the MANIFEST will be made to fix it before proceeding. Which is nice.

Testing Parrot IO (PIO)

Last week, Michael Scott submitted a bunch of tests for the Parrot IO subsystem. This week, Jürgen Bömmels responded and he and Michael thrashed out some of the issues arising.

Waiting for the great renaming

Leo Tötsch and others are working on getting things ready for when everything gets moved around and IMCC starts getting built as the one true parrot.

LVALUE casts considered scary

Andy Dougherty found a problem building Parrot with Sun's Workshop compiler, which doesn't like having casts as lvalues. Leo proposed a (mistyped fix) and then ended up implementing a macro, LVALUE_CAST(type, value) to do the job reliably. So, if you find yourself wanting to use a cast as an lvalue when working on Parrot, use LVALUE_CAST instead.

Parrot on AIX

Adam Thomason has taken on the task of getting Parrot to build on an IBM RS/6000 running AIX 4.3 with VisualAge C 6. He submitted a patch which fixes most things, but there's still one failing test (something to do with negative zero). His big patch was applied, and there's now a little debate about whether -0 should be a valid value. Later in the week, Adam tracked down what was causing the -0s.

Parrot gets Perl regular expressions

Actually, Parrot gets pcre.imc: Leo Tötsch has wrapped libpcre, the Perl Compatible Regular Expression library that almost every language out there (except Perl of course) uses for its regexes. Leo thinks it might be useful for bootstrapping Perl6 rules. Dan doesn't want to have PCRE in core, or for it to be required for any part of building parrot, so the wrapper will be available in our current 'catch all' directory for such things, runtime/.

Parrot on Itanium

Aldo Calpini is busy bringing parrot up on an Itanium box. It's not quite there yet, but it's getting there. Thanks Aldo.

The beginnings of an extension mechanism

Dan's checked in the first part of the extension code for parrot, which lives in extend.c and which will be documented in docs/extend.pod. For now, Dan's post is the only extant documentation.

Safe mode for Parrot -- Call For Volunteers

Dan reckons it's time to start on getting a safe mode for Parrot, which will (eventually) need a lot doing. However, the initial bit is thought to be relatively simple. Dan asked for a a volunteer with enough appropriately shaped tuits to start in on that task. Gregor N Purdy delivered something in slightly less than a day. Leo checked things over and offered a few suggestions, patches got altered and discussion continued.

Meanwhile on perl6-language

The Block Returns

Luke Palmer decided to make people's heads hurt with the following snippet of code:

    sub foo () {
        return my $self = {
            print "Block"
            return $self;

    print $block = foo;
    print "Main";
    print "End";

The problem has to do with where the block returns to, depending on how you interpret the apocalypse's descriptions of block behaviour (the option that I found most consistent with the Apocalypse was the one that leads to an infinite loop, but I think there's another option). Austin Hastings jacked up the insanity level by proposing a version of ~= (~= is the Perl 6 equivalent of Perl 5's .=) that works with blocks -- The idea being that you can do

    $block = { print "First"; }
    $block ~= { print "Second"; }

and end up with a block that's equivalent to

    { print "First" ; print "Second"; }

Luke pointed out that you can already do something very like this with wrap, but that wasn't good enough for Austin. Judging by the responses of Luke and Dan, it looks like this particular extension won't be part of core Perl 6.

Acknowledgements, Announcements, Apologies

Hmm... it looks like Tuesday might be the new Monday as far as getting this summary out to the list is concerned. (At least on those occasions when I spend Sunday night in Newcastle). actually got some new content this week. Maybe it's not dead after all.

If you found this summary valuable, you might like to consider one or more of these suggestions:

  • Get involved. There's always room for more people to work on both Parrot and Perl 6 (admittedly implementing Perl 6 is a little further out, but if you want to earn huge amounts of kudos, you could have a crack at implementing Perl 6 rules in Parrot assembly before Damian gets Perl6::Rules released). Start at and for links to the mailing lists and other useful stuff.
  • Support Larry and co financially by donating to the Perl Foundation at
  • [email protected].'>Tell me how much you enjoy/hate/can't live without these summaries. Suggest improvements, point out grammatical howlers, hire me or just press gifts upon me at [email protected]'>p[email protected].