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 for the week ending 20030907

Welcome to the last Perl 6 summary of my 35th year. Next week's summary will (in theory) be written on my 36th birthday (a year of being square, so no change there then). I'll give you fair warning that it might be late, though it probably won't. Newcastle University has, in its infinite wisdom decided to have its students enrolling on that day so Gill will be off up to Newcastle to register leaving me at home with nothing to do but keep the house tidy in case a buyer wants to come and look at it, so sitting in one place with a laptop writing a summary seems like a good strategy.

As last week's 'world turned upside down' approach of starting with perl6-language was such a success we'll do the same again this week.

The language list gets some traffic shock!

Jonadab the Unsightly One replied to Abhijit A. Mahabal's message from the first of August concerning junctions and set theory.

Meanwhile, on perl6-internals

Serialization is Hard!

Last week's discussion of serialization sparked off by Leopold Tötsch's suggestion of a vtable->dump mode really got into its stride this week. It turns out that getting this right is a Hard Problem in the presence of threads.

Dan's plan for serialization involves using the GC's object graph walker to work out what to serialize when you tell Parrot to dump a PMC. Leo worried that this would essentially stop the garbage collector running during serialization which could be tricky if the serialization process tried to allocate any memory.

Dan and Leo ended up in a protracted, but polite, argument about details.

At about 45 entries into the thread, Leo produced a summary of the various options and issues associated with them.[] -- Leo's summary

File Spec

Leo Tötsch commented on Vladimir Lipskiy's implementation of a File::Spec like tool for Parrot. (File::Spec is Perl's tool for dealing with filenames and paths in a platform independent fashion). Michael Schwern pointed at Ken Williams' "excellent Path::Class module which gives you actual file and directory objects" which he reckons has a much better interface than File::Spec.


Gordon Henriksen posted a great discussion of using notifications to implement weakrefs. Rather wonderfully he used the notification system itself as a good example of why dying object notifications were a good idea.

Parrot 100% GNU .NET

Danger. Here be Licensing Issues. I don't do Licensing issues.

The main thrust of the discussion was what kind of library would ship with Parrot. Dan's answer is worth reading, if only for the "That's a swamp I don't have enough castles for" line.[] -- Dan's take on the library

You are in a maze of keyed variants, all similar

This seems to have been a week in which Dan and Leo spent a good deal of their time politely disagreeing with each other. This time they were disagreeing about the need for all the keyed variants of Parrot's opcodes.

Dan outlined the reasoning behind demanding keyed variants of every operation in a PMC's vtable (Executive summary: A combination of speed and space reasons). Leo still doesn't seem convinced but, for now, Pumpking trumps Patch monster.[]

Parrot Z-machine

Amir Karger's post from last week about implementing the Z-machine (the VM that runs Infocom and other text adventures) got de-Warnocked this week. Nicholas Clark explained that doing the Z-machine 'properly' would require some bits of Parrot that weren't actually there yet, specifically dynamic opcode loading and dynamic bytecode conversion. This led to a discussion of how to get those things implemented.

PIO Questions

Benjamin Goldberg posted a long list of issues and suggestions about handling character type and encoding on Parrot IO objects. Jürgen Bömels said that there were indeed issues, that he'd be dealing with them as tuits allowed and that patches are welcome.

How to dynamically add a method to a class

Joseph Ryan had asked how to add a method to a class at runtime. Dan explained what was supposed to happen (each class has a 'backing namespace' associated with it which contained all the class's methods). Leo asked for a few details about how that would look in Parrot assembly.

A little later, Joseph reported what appeared to be a bug in the way IMCC handles .namespace. It appears that IMCC is working as designed, the question is whether the design is doing the Right Thing.

Proposed amendment to chartype structure

Peter Gibbs is working on adding support for additional chartypes to Parrot, along with support for dynamic loading of the same. He outlined how he planned to do it. Dan liked the idea and Peter set off to implement it.

Acknowledgements, Announcements, Apologies

First up, a combined apology and announcement. Mitchell Charity nudged me to remind me about Mike Scott's wonderful Getting Started with Parrot Guide/Wiki at which is wonderful and should be checked out immediately. Bravo Mike, sorry it's taken so long to get round to mentioning it in the summary.

Hopefully next week I'll have some info from the Perl Foundation about their Parrot related grants. Gav Estey gave me the details in an AIM conversation which I foolishly didn't log.

Apologies to everyone for spelling 'seven years and two days' as 'seven and 2 days' last week. I would fire my proofreader, but then there would be nobody to write the summary.

ObLeonBrocard: Leon didn't say anything this week. As per usual.

My weblog has a shiny new URL this week. No new content (yet), but you can admire the old stuff at

As ever, if you've appreciated this summary, please consider one or more of the following options: