To see what is currently happening visit http://www.perl6.org/
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.
Marcus Thiesen had some problems getting the disassembler working (it was throwing segfaults, never a popular behaviour). Leo Tötsch (who else?) fixed it.
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.)
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.
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.
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.
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.
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.
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.
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.
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/.
Aldo Calpini is busy bringing parrot up on an Itanium box. It's not quite there yet, but it's getting there. Thanks Aldo.
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.
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.
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";
$block();
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.
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).
www.bofh.org.uk 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: