This week on Perl 6, week ending 2003-03-09

Ooh look, it’s another of those Perl 6 Summaries where Piers tries to work a gratuitous reference to Leon Brocard into a summary of what’s been happening to the Perl 6 development process this week.

As tradition dictates, we’ll start with all the action from perl6-internals.

Object Specs

With his great good taste and impeccable timing, Dan Sugalski managed to release his second draft of an Object spec at 22.27 GMT on Sunday March the second. Which meant that, strictly, the root message of this thread doesn’t belong in this summary. To which I say ‘Tosh!’

Brent Dax wondered how this spec coped with classless OO languages like JavaScript and whether such languages would have to fake things with anonymous classes. It seems that faking it is going to the ‘right’ way.

Erik Bagfors asked for a clear example of the difference between attributes and properties, and between class and object variables. Dan didn’t actually offer an example, but explained that properties are ‘runtime assigned name values pairs that are stuck on a variable’, while attributes ‘correspond to instance variables or slots in other object systems’.

Dave Whipp wondered about the semantics of creation and destruction of objects with a long list of questions. Dan replied that there was a ‘Class Spec’ forthcoming at some point too. The Object spec concerns itself with ‘just the behaviour of objects that already exist’.

Some further discussion of this happened in perl6-language, but Dan dragged it back into perl6-internals. I shall follow his example by summarizing those subthreads here, whilst muttering rude words under my breath about people make a poor summarizer’s life so hard.

Garrett Goebel (not Göbel, as I mistakenly spelt it last week) wondered about serialization and persistence and wondered whether a ‘pure Parrot’ serialization scheme would be possible, allowing one to serialize Perl, Python, Ruby etc objects at the Parrot level. Dan pointed out that there were freeze and thaw vtable entries for PMCs, and said that he had some ‘sketches of necessary core functionality to make it feasible’. It looks like simple ‘data objects’ will be simple to serialize at the parrot level.

Sam Vilain suggested a whole bunch of extra things to be associated with Objects. Dan noted that all of Sam’s suggestions were actually things that belonged with Classes rather than objects, with the exception of what Sam referred to as ‘associations’. Garret asked for some clarification of what Sam was talking about, tying it to something Sam had said in perl6-language about ‘exporting object relationships in a sensible and consistent manner’, so Sam did a brain dump which outlined a scheme for persisting almost anything in a language neutral manner (requiring more or less complicity on the part of some languages) with loads of neat ideas in it. Dan liked the ideas, but isn’t going to go the whole way (probably). Dan also implied that Parrot’s serialize/deserialize methods would make use of the GC system to make sure that everything gets dumped properly, once and only once, solving the problem of cyclic references (YAY! An OO Persistence tool writer writes).

Dan released the next iteration of his tentative object spec on Sunday (but a little earlier this time). He and Uri Guttman spent the rest of the day thrashing out some issues and clarifying some terminology. Dan is threatening a glossary with the next try at an object spec.

(Dan just suggested on IRC that I summarize these threads as ‘Dan muttered incoherently about objects again. Folks generally humored him.’ Which I would never do of course; I’m English and I know how to spell ‘humour’.) – Object spec (try 2) – Garrett’s first question – Sam Vilain’s suggestions – Garrett asks for clarity – Sam’s brain dump. – Object Spec (try 3)

IMCC and multiple source files

K Stol wondered whether it was possible to write multi-file IMCC programs. Leopold Tötsch answered that, whilst there’s no Parrot linker as yet, but by the time we read his post we could use the .include macro to glue source files together.

Patch Roundup

Jason Gloudon added some more ops to the sun4 JIT core. His patch was applied, along with most of Steve Peters’ patches from last week. Jürgen Bömmels patched the print ops to use pure PIO (Parrot IO) rather than a scary stdio/PIO hybrid. Dan applied this one with alacrity (I don’t think he likes stdio).

Coroutines end and DFG

Leo Tötsch wondered if coroutines ended and if they did, how? Leo noted that coroutines caused IMCC some big headaches with register allocation. Jonathan Sillito replied saying that coroutines were never ending and pointed out that each coroutine has its own user stack which means that saveall and restoreall do the right thing, which wasn’t quite what gives IMCC headaches because you can’t pass arguments in the stack and have to rely on lexicals or globals, which apparently means that IMCC will need some new hints to work out what’s happening.

Nobody explained what DFG stands for.


Tupshin pointed everyone at SableVM ‘an interesting Java VM done as a doctoral thesis’. Leo found some of the optimization techniques in the thesis interesting. Which scares me. – SableVM – SableVM Thesis

Parrot 0.0.10 freeze

Steve Fink announced the feature freeze before release 0.0.10. Parrot is now frozen prior to the 0.0.10 release on March 15th.

Meanwhile, over in perl6-language

The object discussion leaked over from perl6-internals, I’ll cover the language relevant parts here. Dave Whipp had some interesting things to say about Associations in response to one of Sam Vilain’s posts that I covered in perl6-internals and Andy Wardley offered a counter argument. There was a fair amount of discussion about the advisability of Multiple Inheritance (which can be summed up as ``we don’t have to like it but we probably have to do it”.) Andy Wardley proposed stealing Ruby’s Mixins and Simon Cozens came up with a nifty Perl6-o-meter which Larry pointed out was rather more general than Simon intended.

Signal/slot like mechanism

Yannick Le Saint wondered if there was a notification mechanism planned for Perl 6. Luke Palmer offered a simple implementation which wasn’t quite what Yannick was after which looks like it might possibly need modifications to the ‘Class’ Class. Dan pointed noted that there would almost certainly be a mechanism for registering watcher subs with the internals (``Yay!” writes an insane summarizer with a penchant for digging around in Perl’s runtime internals…).

Acknowledgements, Announcements and Apologies

Another quiet week. However, as I write this Apocalypse 6 is available to read on and Dan is making noises on IRC about the next draft of the object spec being released some time before Sunday. I have the feeling that next week’s summary will be covering a lot more traffic.

Still haven’t produced an American Odyssey web page. I’ve been too busy taking photographs and relearning how to use my large format camera.

If you appreciated this summary, please consider one or more of the following options:

This week’s summary was again sponsored by Darren Duncan. Thanks Darren. If you’d like to become a summary sponsor, drop me a line at



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