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 2005-12-18

Welcome to another Perl 6 summary. This has been a week of shootouts, cleanups, relationships and cunning translations. Read on for the details (or, this being a summary, pointers to the details).

This week in perl6-compiler

2 messages? Sometimes I wonder why I even bother summarizing this list; I could just paste its contents in their entirety. However:

Call for a Pumpking: Do you want a Ponie?

Jesse announced that Nicholas Clark was retiring as Ponie's Pumpking following his departure from Fotango. So we're looking for another volunteer to take Ponie from its current state to a working Perl 5 runtime fully integrated with Parrot. If you're a C programmer with a good grasp of the Perl 5 internals and you're interested in taking on the job, [email protected] is eager to hear from you.

Pugs, Javascript and Perl 5

Continuing Pugs' tradition of linguistic mashup, Chia-liang Kao announced that Pugs Javascript backend can now support Perl5.

Meanwhile, in perl6-internals

Parrot Shootout

Work continued on implementing and optimizing Parrot's entry for the Language Shootout.

Variables, Aliasing and Undefined-ness

Matt Diephouse wondered how he should translate the following in to PIR code:

  $var   = "Foo";
  *alias = *var;
  $alias = undef;
  $alias = "Baz";
  print $var, "\n";

Audrey "Autrijus" Tang suggested that allowing multiple LexInfo names to point to the same underlying register would make this sort of thing (and several Perl6isms) a good deal easier to implement. Leo pointed out that it actually had been implemented, though I'm not sure if Luthor includes this. (Pugs always targets the latest Parrot release).

Cleaning up the build process

Joshua Hoblitt went to town on RT posting a breakdown of proposed refactorings of the Parrot build process

ParTCL shootout

Will Coleda suggested that it would be useful to set things up to run the TCL shootout benchmarks on ParTCL. He's not exactly sure that they'd work just yet (or be fast, come to that), but they'd certainly be a handy test/benchmark suite. After a couple of patches, it seems that ParTCL can at least run the "hello" benchmark. Still, a journey of a 1000 miles starts with but a single step and all that.

Parrot directory reorganization (phase 2 mark 3)

Jerry Gay's reorganization of the Parrot distribution's directory structure continued apace. Reorganizing the JIT subdirectory and its associated config system proved to be something of a sticking place, but Joshua Hoblitt sorted things out.

Bug or feature?

Chip had some thoughts about PIR's macro support and concluded that we need a robust multi-line quoting convention in order to pass multiple lines of code to macros. He outlined some suggested syntax. Discussion ensued, mostly favourable.

Building Parrot includes

Leo noted that the files in runtime/parrot/include/*.pasm are created by configure. He argued that they should really be generated by a Makefile rule, which would have the advantage of taking note of dependencies. There followed a certain amount of quibbling with Joshua Hoblitt, but I don't think anyone disagrees with the gist of the proposal.

Library loading - no more duplicates

Leo announce that, as a of r10458, Parrot doesn't load_bytecode from the same file twice any more. Chip and Nicholas Clark applauded the change and plotted ways to make it even more effective.

Fixing japhs

Not content with implementing shootout benchmarks, Joshua Isom has also fixed a few of Parrot's example japhs.

Q: String.get_integer

Leo had some questions about magical conversion between strings and integers. Patrick and others reckoned that his proposed behaviour was about right. Personally, I'm not convinced that the basic String PMC should do any magic conversion, but PerlString definitely should.

Parrot Borking

Steve Gunnell had a problems with Parrot throwing segfaults. Leo gave him some pointers to tracking the issue down and recommended using the SVN repository and not the CVS mirror.

Meanwhile, in perl6-language

Relational data models and Perl 6

Darren Duncan's been doing some thinking about Relational data models and how to support working with them in Perl 6 and posted the results of his thought on this to the list. Lots of discussion ensued. There was a fair amount of quibbling over details, but the general tenor of the discussion was in favour of supporting relational data models (possibly as a separate module).[]

Handling undef better

Darren also had some ideas about making undef behave more like a relational NULL. These were received a little less favourably -- they aren't exactly compatible with autovivification, which is one of those things that many people like about Perl.

So, a little later, Darren retracted his original proposal and posted a new one which takes into account the various different ways in which undef gets used in Perl programs.[][]

Transliteration preferring longest match

Brad Bowman wondered why the trans function described in Synopsis 05 specifies that the longest matching input sequence should be the one that wins. He thought that a simple 'first in order' rule would be more useful and flexible. The answer was that, because transliteration matches literal strings, if you didn't have 'longest' wins rules then, depending on the order, you might as well simply remove the longer literal because it'd never be used.

Import/export and module configuration

Gaal Yahas had some questions about Perl 6's import/export model and the various hooks that get called in the process. Larry had many answers and speculations. He also noted that he can now 'translate about 95% of random Perl 5 back to identical Perl 5'. Which probably doesn't sound like much at first glance, but it means he's getting a great deal closer to being able to translate random Perl 5 code into equivalent Perl 6 code.

As Larry puts it, he is "now confident that we can hit the original p5-to-p6 spec of translating 95% of scripts at least 95% accurately".

Acknowledgements, apologies and everything else

Wow! It's still Monday! The move went pretty smoothly and our lives are slowly emerging from the boxes they had been packed in. We're still boggling at how many boxes of china there were though. At one point I began to think we'd packed the country in there. I'm typing this from my new office on the second (third if you're American) floor of our new (well, 178 years old, but new to us) house and wondering how much of the stuff that's spread out over two table tops is really necessary.

Help Chip -- Chip still needs help.

The usual coda

If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. -- The Perl Foundation

The Perl Foundation Blog is an excellent source of news about the Perl Foundation's activities.

Planet Perl Six is a handy news aggregator of several Perl 6 related sources. -- Perl 6 Development site

Check out my website, it's lovely.

Vaguely pretty photos by me can be found at: