This Week on Perl 6, Week Ending 2004-08-20

The Perl 6 Summary for the fortnight ending 2004-08-20

Harrumph. Note to self; never miss a week when you could actually have written the summary. I lulled myself into a false sense of security with the quiet week for the last summary. The last two weeks have been rather more busy and I’ve been away at EuroFoo over the weekend.

So, this fortnight’s summary might be a bit sketchy.

We’re back with starting with perl6-internals this time as it continues to comfortably out traffic perl6-language (message count was running about 3:1 in favour of p6i).

Register allocation

Work continued apace on adding a bullet proof failsafe register spilling algorithm so that Dan’s work project could be made to at least compile. There was much discussion of what was actually causing the problem and several attempts to fix it. Work is ongoing.

Melvin Smith coined a new acronym: DSWEPIC, which stands for Dan Stop Writing Evil Pathological Intermediate Code though, as chromatic pointed out, it’s actually Dan’s compiler that’s generating Evil Pathological code and Dan claimed that that’s because he’s writing a compiler for an Evil Pathological language.

Parrot cvs mirrored with svk

Chia-liang Kao announced that he (I’m guessing, I’m not very good at divining the gender of none western names. Sadly ‘he’ is usually a safe bet in this field though) was mirroring the Parrot CVS repository in a Subversion repository for those who didn’t like CVS. There was a certain amount of chuntering but most people seemed pleased by this.

The Pie-thon post-mortem

Dan posted his notes on the aftermath of the pie-thon push. Next time we do this, we’ll start earlier.

An alternate call scheme

Dan ruled on Leo’s alternate call scheme proposal, but wasn’t entirely comfortable with it. However, he sketched out another idea inspired by it. Leo didn’t sound convinced.

Source mangling slides

Dan posted a link to an abortive talk on some of the cunning tricks we do with source mangling in Parrot.

Making NCI work with a nasty library

Hildo Biersma is trying to write parrot support for IBM’s MQ library. He had a couple of questions about the best way to go about it. Leo and chromatic had some suggestions.

Functions for embedders to override

Noting that Ponie was already have problems, Dan outlined those functions that embedding environments may need to override to get things working. He asked for help and comments in getting a system in place to allow overriding functions to be registered in order to give embedders control over parrot’s interface to the real world. This is something which needs doing sooner rather than later so as to avoid storing up pain.

This triggered a fairly wide ranging discussion, but progress is being made.

What Unicode means to us

Mmm… Unicode. Dan outlined what need to deal with to do Unicode sufficiently well. Discussion ensued.

Fix generation of src/nci.c to be more efficient

I don’t normally point out patches, but Dan’s patch to improve the generation of src/nci.c spawned a longish thread with commentary from Nicholas Clark and chromatic.

A small task for the interested

Dan posted another of his small tasks for the interested (maybe we should start calling them STFTIs?). This time he’s after source tests to test the embedding interface and some fixing of the auto-prefix scheme.

The encoding API

Dan detailed the encoding API, the layer that mediates between Parrot, which sees strings as a sequence of codepoints and the underlying buffer full of bytes. Gopal V and Michael Stone had questions and suggestions.

COBOL on Parrot?

Remember Dan pointed everyone at a GPL’d COBOL compiler and suggested that a Parrot backend would be cool? David Essex (if that’s the British singer from the 70s then I’ll be boggling like a good ‘un) pointed everyone at a couple of others. He and Uri Guttman discussed runtime libraries.

The Perl 6 compiler pumpking

Patrick Michaud, Perl 6 compiler pumpking, outlined his plan for getting us to a working Perl 6 compiler.

PMC semantics

Leo kicked off what looks like being a long running thread when he opened discussion of the semantics of the various integerish PMCs in Parrot. Larry and Dan both pitched in with discussion.

Charset API

Dan posted part two of the charset API, which confused me slightly by arriving on my computer before Part 1. – Part 1 – Part 2

Handling block parameters in Ruby

Mark Sparshatt asked for advice on how to handle method invocations that include special block parameters like Ruby’s. Leo thought that handling it in the parser/compiler and simply passing the block in as an extra parameter was the best way forward. Larry and Dan discussed complications associated with that idea.

Parakeet breaks and recovers

Michel Pelletier updated his Parrot distribution and managed to kill his Parakeet language. Dan and Leo set about trying to track the underlying bug down. I presume it got fixed because Michel posted a new version of Parakeet soon after.

NCI and callback functions

Stephane Peiry had some problems getting NCI callbacks working with GTK. He and Leo went tried the debugging by email trick, but with little joy before the end of the week.

TODOs added

Will Coleda added a vast number of TODO items to Parrot’s RT queue.

His TODO about the configuration system sparked a good deal of discussion. At least one person suggested ditching make, which seems to be par for the course in these kinds of discussions.

Popping an empty array

Michel Pelletier wondered how to generate a catchable exception when he tried to pop from an empty PerlArray. Larry reckoned that, if it’s really a PerlArray it should return an undef containing an unthrown exception. Which sparked a longish discussion…

Parrot interfaces

Noticing that there appeared to be ops for handling interfaces, Michel Pelletier wondered when we might see an implementation or PDD covering their semantics. Our resident roles guy, chromatic, pointed out that Parrot will actually have roles, which can look like interfaces in the right light and pointed at Apocalypse 12 for more in the way of detail.

Later on, Dan sketched out an initial interface spec. Parrot level interfaces are very simple indeed.

Interpreter permissioning

Felix Gallo sought input on the problem of interpreter permissioning. He got lots.


Dan Sugalski is a very, very bad man. Sure, he gets a good deal of mitigation from Parrot working as well as it does, but… well… Multi Method Dispatch on return continuations is sick, evil, and a strangely fascinating idea.

Span praise

Dan’s been catching up with his mail and popped his head up to say nice things about Span, a very pleasant looking OO language based around Parrot.

Incremental garbage collection

Leo’s working on implementing an incremental garbage collector for Parrot. The idea behind it is to reduce the amount of time the GC system spends with the world stopped. The response was generally positive, with discussion of potential edge cases.


Whee, a subject that’s all acronym. That’s Garbage Collection/Dead Object Detection Application Programming Interface for those of you who are bemused by the alphabet soup.

Dan pointed out that, before we get a fully reworked garbage collection system in place, it would be a good idea to get the API designed and documented.

Meanwhile, in perl6-language

Revision of Apocalypse 12’s lookahead notions

Larry posted a a message resolving issues with method lookahead and adverb parsing. And there was much discussion and clarification. Expect to see the results in Synopsis 12 when it gets written.

Handling block parameters in Ruby

Matt Diephouse spawned a subthread from the A12 lookahead discussion by wondering how Perl 6 will handle multiple blocks as arguments. Larry had some thoughts.

Precedence table update

Larry posted a newly tweaked Perl 6 operator precedence table. If you’re one of those chaps who thinks Perl has too much syntax look away (or point and laugh depending on your persuasion) now.

Various oversights were quickly spotted and fixed up.

Synopses drafts

Larry posted the first draft of Synopses 1, 2 and 4 the condensed, updated, versions of their respective apocalypses. The list did the usual proofreading/patching thing.

Return with no expression

Matt Diephouse found something surprising in Perl 5’s handling of a return with no arguments and wondered if Perl 6 would magically solve his problem. Luke thinks it’ll do the right thing by making the right hand side of a => evaluate in a scalar context.

Announcements, Apologies, Acknowledgements

Phew! I think I got this finished just before ‘press’ time for Or maybe not.

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 feedback or contributions to a ‘getting Piers to OSCON 2005’ fund to – The Perl Foundation – Perl 6 Development site

Oh yes, there’s new content on my website for the first time in an age. Enjoy.



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