This Week on Perl 6, Week Ending 2004-05-23

Yes. I know. This week’s summary is a week late. So it’s a summary of the last two weeks. So let’s get straight to perl6-internals shall we?

Working on the Perl 6 Compiler

Abhijit A. Mahabal posted his first ever patch, which updated the calling conventions used in the Perl 6 Compiler. Dan applied it promptly, and Allison Randal chimed in with some comments on the workings of the perl 6 compiler. There’s a new document, which you’ll find at languages/perl6/doc/developer_notes.pod in a CVS parrot, which is a scratchpad for developers to make notes of any issues that arise while they’re working on the compiler.

Pants performing ponies

The issues that cropped up in the last summary to do with poor ponie performance continued to exercise Leo Tötsch, Nicholas Clark and Jeff Clites as they homed in on the Ponie bug that had led to ludicrous numbers of PMCs being generated to no good end. It turns out that Parrot’s garbage collection doesn’t go that fast when there’s 9 million live PMCs. Leo worked to improve things…

MMD side effects

Leo pointed out some strangeness related to the new multiply dispatched opcodes and proposed a solution. Warnock applies.

The Parrot Question Repository

Dan announced that he was trying (slowly) to get things documented and questions asked. Because questions to the list tend to get Warnocked or asked repeatedly, he’s set up a new central question repository on the Parrot Wiki. He appealed for a volunteer to watch the list and add new questions to the Wiki page and (a possibly different volunteer) to watch the Wiki and post any answers back to the list. If such a volunteer should step up to the plate, I would be inordinately grateful if they could make a habit of commenting to any questions they transplant to the Wiki to let people know that this has been done. – Central Questions Point

IO Opinions

Dan asked for opinions on how the IO system was going to work when it came to dealing with record based files. Tim Bunce and Jeff Clites had suggestions and questions.

The “Right Way Repository”

Dan announced that he’d started an FAQ aimed at compiler writers targetting parrot in docs/compiler_faq.pod in your local CVS parrot. It’s a bit sparse, but the proverb about mighty oaks and acorns applies. We hope. Brent Royal-Gordon was first in with a question and answer.

Towards a multiply dispatched parrot

Leo continued his work on switching over to a multi dispatched vtable architecture and asked for comments on the work so far, and the sanity of the whole concept. Dan was very positive, and the work continues.


Cygwin continues to be a fully paid up member of the awkward squad of environments. Joshua Gatcomb pointed out that JIT had broken again. He and Leo engaged in debugging by email as Leo worked to fix things.

Perl 6 Parser weirdness

Abhijit A. Mahabal had some problems with the Perl 6 compiler’s parser and asked for help. It looks like it’s an issue with the load path using relative paths, which makes it fragile when you’re running in an unexpected directory.

The discussion evolved into one on the nature of the (eventual) Perl 6 parser. Dan worried that a recursive descent parser will be awfully slow compared to the current perl 5 parser. It looks like Perl 6 won’t have a recursive descent parser, but the conversation got rather beyond my level of computer science (at least where parsers are concerned). Larry said that he was in favour of a hybrid parser which used both top down and bottom up parsing techniques.

Dan suggested that since Larry has been “itching to get into the internals anyway, [the parser]’d be a good place to start.”

Event design sketch

Discussion of Dan’s event design sketch continued. Gordon Henriksen was worried that the events system as sketched wouldn’t work well with GUI type events. Rocco Caputo pointed out issues with Daylight Saving for timed events. Leo asked for a glossary.

And those are just the items that caught my eye as I went into speed skim mode.

PARROT_API, compiler and linker flags

Ron Blaschke has been working on getting Parrot’s linker magic right; and he presented his findings and warned us that he intended to go ahead and implement something based on them unless there were substantive objections. There weren’t any objections as such, but there were an awful lot of issues raised (in case you didn’t already know, cross platform compatibility is Hard).$

Events and names

In response to the discussion of his initial sketch, Dan said that he thought that ‘event’ might be the wrong word for what he was working. ‘Event’ fits the bill in some places, but not in others. He asked for suggestions in case someone had a better name. Tim Bunce suggested ‘hap’, which met with some approval. James Mastros suggested ‘page’. Andy Wardley reckoned ‘Parcel’ might fit the bill. I don’t think any of the suggestions got massive approval.

New version of parrotbug

Jerome Quelin announced a new version of parrotbug for reporting bugs in parrot.

MMD and objects

Announcing that the basics of MMD are almost done, Dan moved to address issues with objects and inherited methods. He outlined what needed to be done and some of the choices that need to be made.

Bits and Pieces

Dan announced a few decisions that he’d made about various stuff.

Non-flow-control logical tests

It turns out that Dan’s work project would be a lot easier if Parrot had logical test ops that simply returned 0 or 1 rather than jumping off somewhere. He wondered if there was a real case for actually implementing such things. The general response was favourable so he checked in a new set of isgt, iseq, etc ops in experimental.ops.

Embedding Parrot / mod_parrot

Paul Querna is looking at writing mod_parrot for apache 2.0. He had some questions about how to go about embedding parrot.

Meanwhile, in perl6-language

C style conditional statements

Pedro Larroy wondered if there was any chance that, in perl 6 it would be possible to write conditional statements that looked like C type if statements.

    if (condition) 

The thread drew quite a lot of traffic, but the answer is that it’s not going to happen because it’s incompatible with the new Perl 6 way of not requiring parentheses around the condition. For some reason, the thread evolved into the “Perl 6 shouldn’t be called Perl!” thread. But set against that, it did elicit the following from Larry:

Indentation is a wonderful form of commentary from programmer to programmer, but its symbology is largely wasted on the computer. We don’t tell poets how to format their poetry.

Which certainly made me smile.

Yadda yadda yadda some more

Aaron Sherman is a big fan of .... Lots of folks seemed to like it too, and the thread became something of a love in. Let’s hear it for yadda yadda yadda.

RFC eq and ==

It was Pedro Larroy’s turn to ask if it’d be a good idea to make == and friends polymorphic in order to get rid of eq etc. It was chromatic’s turn to say that no, it’s not a good idea, and haven’t we done this one countless times before? It was your summarizer’s turn to have had a foul couple of days before he finally knuckled down to writing the summary.

Idiom for filling a counting hash

Stéphane Payrard wondered Perl 6 might have a neater way of populating a counting hash than

    $a{$_}++ for @a;

He proposed some alternatives which (to my biased eyes at least) looked rather more opaque than the straightforward Perl 5 idiom. John Williams suggested that %a{@a}»++ might fit the bill, but it seems that ++«%a{@a} is more likely to be the right thing.

I think this may be one of those Shibboleth things. If you like Perl 6, then ++«%a{@a} is the kind of thing that could well make you like it more. If you don’t like Perl 6, it’s the kind of thing that makes you double the length of the pole with which you will not touch the language.

Simon Cozens has RSI

Simon Cozens’ auto responder informed us all that he’s suffering from RSI. I’m sure I’m not alone in wishing him a speedy recovery (or at least, that he finds some way of alleviating his problem).

Announcements, Apologies, Acknowledgements

Many apologies for the staggering lateness of this week’s summary (at least a week late). Hopefully I’ll be back on track next week.

If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. You might also like to send me feedback at – The Perl Foundation – Perl 6 Development site



Something wrong with this article? Help us out by opening an issue or pull request on GitHub