This week on Perl 6, week ending 2004-02-01

Welcome once again to Gateshead, where the skies are grey, the view is uninspiring, and the workmen across the road seem determined to fall off the ladder before they get the double glazing fitted.

But enough of the gay Gateshead life, let’s hurry on to the doings of the denizens of the perl6-internals mailing list. Who knows, we might even visit the inmates of perl6-language later.


To nobody’s great surprise, we talked about threading. In particular, Gordon Henriksen’s concerns about the all around scariness of morph (and not just in a threading context). I’m not sure I quite understand what’s being done, but progress is definitely being made.

Late in the week Dan announced that there were obviously still issues to be worked out before we started in on implementation (modulo some ‘obvious’ stuff). He also asked for ‘real worldish’ tests for threading in order to get some real numbers for different possible approaches and to see if the problem is as bad as it was first thought.

Embedding vs. extending interface types

Remember last week’s kerfuffle about Parrot_Interp vs Parrot_INTERP? Dan’s resolved it be deciding that we’ll just call it Parrot_Interp everywhere. Gordon Henriksen sent in the patch.

Leo explains

Will Coleda (and others) have been having problems with data that should be inviolate getting clobbered in strange ways. After some effort, Will got his offending code down to 22 lines. This let Leo Tötsch work out what was going on, and in the referenced post he explained all. Essentially, the Copy on Write logic for handling register (and other) stacks is broken. The workaround is not to use Continuations and Exception Handlers. Fixes are welcome. Please.

Testing Signal Handlers

Leo asked for help with sorting out the testing code for some signal handling tests that seemed to be confusing the harness quite badly. Uri Guttman came up with some suggested workarounds, as did Mike Schwern. Leo found a third way. (If you’ve ever tried to write test with fork in it, it’s worth taking a look at both Uri and Schwern’s answers.

The costs of sharing revisited

Last week, Leo posted some scary numbers implying that using a shared PMC led to terrible slowdowns. This week he posted the latest numbers, and things are looking up.

   $ time perl-58-th

   real 0m8.694s

   $ time parrot shared_ref.pasm

   real 0m0.375

(and that’s an unoptimized Parrot). Elizabeth Mattijsen was moved to ask for a ponie.

Cunning stunts with with UnManagedStruct

Donning his devious head, Leo demonstrated the use of UnManagedStruct to allow for unlimited self-inspection and self-modification of Parrot state. Which isn’t really something we want to be possible. In the opinion of Luke Palmer and Jeff Clites, the costs of removing this capability aren’t worth paying. As Jeff Clites pointed out, you only use UnManagedStructs when you’re calling out to a native library, and once you introduce a native library all bets are already off.

Michael Scott: hero of the week

Over the past few weeks Michael Scott has gradually been making the parrot distribution a kinder, gentler place with his sterling efforts to tidy up and generally improve the existing documentation. This week he rationalized/added documentation for everything in src/ (with the exception of malloc.c and malloc-trace.c). He’s working on documenting examples/ now.

The response to his announcement was overwhelmingly and understandably positive (The consensus is that Mike rocks). Now if we can just keep everything in such good condition…

Parrot DBDI announced

Tim “Perl DBI” Bunce announced the Parrot DBDI Project: A Database Driver Interface for Parrot. The goal is to have a common Parrot level interface to database drivers which can then be reused by different language specific database interfaces. For further details read the post; it’s jolly good. And bravo Tim.

Internal exception handlers

Leo posted a set of macros for doing exception handling in the parrot core using TRY/CATCH/THROW etc. and asked for comments. So far he’s been Warnocked.

SDL bindings

After Leo fixed the struct PMCs for him, chromatic has proceeded apace to implement SDL wrappers in Parrot. He’s reached the point where he has code that can create an SDL window and blit a blue rectangle onto it. Leo applied his patches. Check out examples/pni/sdl_blue_rectangle.imc if you’re interested.

Meanwhile, in perl6-language

Discussions continued to test the encode setups of the participants’ mail readers…

Semantics of vector operations

A sub-thread of the discussion of the semantics of vector operations turned into a discussion of the meaning of ‘vector’ which has different meanings depending on whether you’re a mathematician or Seymour Cray.

Another sub-thread discussed the possible ASCII alternatives for « and ». I’m afraid I’m going to bottle out of attempting to summarize the various alternatives suggested, if only because I used up all my POD escape-fu last week. It looks like the << and >> alternatives might be about to bite the dust in favour of an as yet undecided, less ambiguous, new scheme. Larry hasn’t ruled on it yet though.

Acknowledgements, Apologies, Announcements

I’d just like to announce that, if you haven’t seen Eliza Carthy perform life, you owe it to yourself to rectify that. We went to see her last night and it’s bucked me up enormously.

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, or drop by my website. – The Perl Foundation – Perl 6 Development site – My website, “Just a Summary”



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