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 from 2005-08-24 to 2005-09-11

It's been a while hasn't it?

We'll start as usual with perl6-compiler

This week in perl6-compiler

Changed ??:: to ??!! in Pugs

Following discussion of the ternary operator in perl6-language, Benjamin Smith altered pugs to use the new ??!! syntax.

Meanwhile in perl6-internals

Which 'English'?

Joshua Hoblitt posted a patch to intro.pod fixing a few typos and wondered whether the docs should be in British or American English. Apparently the Perl 5 style rule is that British authors shouldn't be required to write American English, and vice versa, but that a consistent style within a document is preferred. The consensus so far seems to be "Any documentation is good so write what's comfortable for you."

Meanwhile, at the test

Warne just got Trescothick out. 109 for 4

Python PMCs

Sam Ruby, Leo and Chip had a discussion of how to implement python semantics for parrot. I'm not sure I followed what was going on, but it looked like good 'crunchy' stuff.

Zcode interpreter release

Amir Karger announced that he'd adopted the Zcode interpreter that Leo posted in February (having, according to Amir, done the hard parts). Apparently there's 41 opcodes to do just to get version 3 of the Z-machine working, and then there's the problem of making Zops into loadable Parrot ops. He had a few problems with the test suite which got fixed in discussion.

Pirate refactoring report

Michal Wallace posted an update on Pirate (the python to parrot compiler). He and Curtis Hall have been taking advantage of a Google Summer of Code grant to refactor the (Curse! Now Flintoff's out. Caught & bowled Warne for 8) current mess. Their first step was a generic transformation module which has apparently made life easier for the compiler module.

They've also produced a plan in code for how they hope they'll have things working once the refactoring's finished and asked for comments. So far comments have not been forthcoming.

Tcl in the leo-ctx5 branch

Will Coleda's been having a crack at getting ParTcl working with the leo-ctx5 branch and had a few problems. It turns out that he'd tickled a bug that Leo described as 'a bit non-trivial'. It took him a while, but it got fixed eventually (Over 10 days, but he did have the excuse of being at YAPC::Europe for a chunk of that time).

Meanwhile at the Oval

They've gone in for lunch at 127 for 5. Hopefully I'll be able to get down to some summary writing without being on the edge of my seat for a while.

Branch Review

Chip posted a review of the leo-ctx5 branch prior, describing it as "A significant improvement." The body of the review covers user visible changes and a few niggles with the current state of the branch. Leo replied with a few questions and explanations.

GMC release

Nattfodd announced the 'release' of GMC, the generation garbage collector he's been working on as part of Google's Summer of Code. It's not quite bug free yet, but the SoC deadline was the 1st of September, so that's when it got released. Discussion ensued, hopefully helping to triangulate bugs.

Call for B0rked

Following a discussion with Chip and Leo, chromatic posted a call for entries in a 'very specific TODO list'. A list of things that should work, but don't. He contributed a couple himself. Various other suggestions were offered.

Optimizer Documentation

Curtis Rawls spent part of his Summer of Code project wishing there was better documentation of the Parrot optimizer. So he wrote some. Brent Royal-Gordon converted it to POD format, and Leo asked for someone to add it to the repository.

HLL Namespace Design

Matt Diephouse posted a list of namespace features that he thinks are necessary to support all the target languages and asked for some comments. He got several, including one from Larry.

Global Destruction

Nicholas Clark had some questions about finalization and destruction in Parrot. In particular, he asked: "Does parrot make any guarantee that all objects will be rendered down to bare memory before program exit". Leo answered and the answer was good enough for Ponie. Huzzah.

Meanwhile, at the Oval

Ah... they're back on the pitch... I may be slowing down again...

Meanwhile, in perl6-language

Demagicalizing Pairs

Discussion of Luke's proposal to demagicalize Pairs continued. It turns out that it's actually a discussion of how to do named argument calling...

~ and + vs. generic eq

I don't know about you, but I'm starting to lose track of Perl 6's 'equality' tests. The latest discussion concerns the differences between ~~ and eqv. Damian pointed out that we currently stand at 6 different possible tests for 'equality' and wondered if that might not be slightly too many.

Perl 6 code -- A possible compile, link, run cycle

Yuval Kogman thought it was time to think about how a the Perl 6 on Parrot linker might eventually look. So he did some thinking aloud. Discussion ensued, mostly related to the workings of use and other directives that can affect compilation semantics.

Binding of array elements

Ingo Blechschmidt had some questions about the workings of the binding operator. He outlined a list of possibilities along with his understanding of the semantics. Yuval Kogman and TSa had some ideas, but nothing from @Larry yet.

Who is @Larry

Speaking of @Larry, Matt Fowles asked who comprises @Larry. According to Autrijus, @Larry = \xABLarry Damian Chip Leo chromatic Allison Hugo Luke Nathan Dan\xBB, but I have the feeling Dan's retired.

Does list construction create new containers?

Continuing his investigations of semantics, Ingo Blechschmidt had some questions about the semantics of list construction. Yuval and Juerd had some suggested answers.

Using lists 'containing' arrays as lvalues

More questions from Ingo, more suggestions from Yuval and Thomas Sandla\xDF this time. There was even an answer from Larry.

How do you say another_sub(@_) in perl 6?

Yuval wondered how to pass arguments through from one sub to another in Perl 6. My mailbox appears to be missing a few replies so I'm not entirely sure how the thread went. I don't think there was anything on the subject from @Larry though.

User defined autovivification

Yuval Kogman thinks code like this is ugly:

  ($index_by_x{$thing->x_value} ||= Set::Object->new)->insert($thing);

Frankly, I agree with him (how could I not?)

He suggested a couple of possible ways of avoiding such ugliness in Perl 6. My favourite was probably:

  my %hash will autovivify { };

However, I'm not sure that this is something that needs to be in the language core; it seems to be the sort of thing that can be implemented reasonably simply in a CP6AN module.


Luke is trying to get the useful:dangerous balance inherent in Junctions sorted out. To that end, he proposed a new way to do autothreading that doesn't use junctions at all. Discussion ensued, mostly to do with where to fit the semantics in the syntax.

Operator sub names that are not special

Luke tried to make people's heads hurt with this sample code:

    sub foo(&infix:<+>) { 1 + 2 }
    sub bar($a, $b) { say "$a, $b" }
    foo(&bar);   # "1, 2"

I think everyone but Yuval Kogman was too shocked to comment.

@array = $scalar

Ingo continued his mission to understand assignment semantics by asking about assigning a scalar to an array. The thread drifted slightly, moving onto consideration of such hypothetical(?) operators as ,=, &= and |=. One of those is probably more hypothetical than the others.

no 6;

Rafael Garcia-Suarez thought it would be useful to be able to put no 6; at the top of Perl 5 modules that it wouldn't make sense to port to Perl 6. In order for this to work effectively, he thought it would be best if Perl 6 would at least die correctly with a useful error message. He asked p6l for comments. Apart from asking if supporting no 5 would mean we'd have to support Perl 4, there weren't any.

for $arrayref {...}

Another question from Ingo. Another answer from Juerd with commentary from Luke.

WWW::Kontent 0.02 is released

Another of our Summer of Code interns, Brent Royal-Gordon announced the 0.02 release of WWW::Kontent, a content management system written in Perl 6 and executable in Pugs. As Brent says, it's not ready for production, but it seems to be ready for serious play. From the release notes:

"Part of the purpose of this project was to test Perl 6, and I'm happy to report that it passed with flying colors. Perl 6 feels like a much-enhanced Perl 5, with all the wrinkles removed and very few new ones added. It seems to be a very solid design, and is a joy to program in."

I've been saying that this would be the case for ages now. It's good to see that Brent's experience here bears that out.


And another question from Ingo. This time he wanted to know about the arity of multi subs. The discussion got rather complicated. - The meaning of arity

Multi scoping

Luke showed an example of a seemingly simple multi sub declaration that ended up creating an infinite loop. He asked for suggestions about fixing it. He and Yuval worked some stuff out.

Lambda Calculus in Perl 6

Dan Kogai noted that its way easier to do Lambda Calculus things in Perl 6 than it was in Perl 5. He even went so far as to claim it was even easier than doing the same thing in Scheme.

Changing ??::

Thomas Sandlass thought that making :: unambiguously be used as a symbolic sigil was worth changing the ternary operator to ??//. Almost everyone agreed that replacing :: wouldn't be a bad thing, but that // wasn't the right replacement. We ended up with the ternary operator becoming ??!!.


Another of Ingo's questions, this time about the behaviour of \(...) spun off into a rather complicated discussion that I'm afraid I'm not going to attempt to summarise in more detail than that.

Packages, Module and Classes

Stevan Little is currently wrestling with the Pugs MetaModel and had some questions about the workings and interrelationships of Packages, Modules and Classes. He and Larry sorted things out.

Parsing indent-sensitive languages

Dave Whipp had some questions about parsing a Pythonesque language using Perl 6 rules. Much discussion ensued with possible extensions to Perl 6 rules being suggested. Then Damian pointed out, with appropriate rules, that you don't need any extensions, you can parse such languages already.

Back at the Oval

McGrath just bowled Kevin Pietersen for 158. It's looking awfully like we've won The Ashes.

Item and slurpy

Juerd wondered if 'item context' and 'slurpy context' were official terms now. Larry thought not, preferring item and list context.

Sequence points, undefined behaviour

Nicholas Clark wondered if Perl 6 will have any documented notion of things like sequence points, undefined behaviour, etc. Will it fix the order in which function arguments are evaluated and all those other things it's useful to know. Warnock applies.

Acknowledgements, apologies and everything else

Ah... sorry for the lack of recent summaries. Sorry for being distracted by the cricket, but it's been a bit tense for most of the day.

Help Chip -- Chip still needs help.

The usual coda

If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. -- The Perl Foundation -- Perl 6 Development site

Check out my website, it's lovely.

Vaguely pretty photos by me can be found at: