This week on Perl 6 (10/7-14, 2002)

This is yet another Perl 6 summary documenting what has happened over on the perl6-internals (where Parrot, the virtual machine that will run Perl 6 is discussed) and perl6-language (where Perl 6 language design is discussed) mailing lists. Piers is still on vacation (bungee jumping and motocrossing, no doubt), so I’m still your host this week. A fairly quiet week, so let’s start with the perl6-internals list as usual.

The Pumpking Is Dead, Long Live the Pumpking!

I am happy to report that we have a new Parrot pumpking. Jeff Goff has done great work in the past, but taking over is Steve Fink, who has been active in Parrot since near the beginning. He’s been extremely active this week, participating in almost all of the discussions and accepting patches left, right and center.

Variables Have Three Parts

Dan Sugalski decreed that vtables were about to get more complicated. Variables and values used to be simple, but now we need to have three parts for each ``thing:” an optional name, a container and the contents of the container. There wasn’t any discussion, but I expect Dan will rejig vtables some more.

Line Number Metadata

Juergen Boemmels explained that the line number information given by the setline opcode was quite verbose in the source and suggested adding line number metadata into Parrot bytecode. He proposed using the DWARF-2 debugging format (as used by the Mono project) so as not to reinvent the wheel. Dan promised some specs for moving this information out of band.

This thread quickly got out of hand, with Nicholas Clark noticing that having column number information magically built in full debugging support for Befunge (a two-dimensional language) and Sean O’Rouke wishing to make ``source position” a vector, thus generalizing to scripting languages of any dimension.

New Array Base

Leopold Toetsch continued in his attempt to confuse the summarizer with thousands of patches. He had rewritten the base routines from the array PMC as a working engine for list operations. It should be fast and simple, being based on chunks with fast index get and set. He committed this as list.c, and commented that most of the other array-style PMCs will start to use it as a base, and that it may replace the intlist PMC (and other typed array PMCs).


Continuing last week’s ``sprintf in Parrot” mention, Brent Dax committed a huge patch completing the feature set of Parrot_sprintf, including width and precision for ints and strings, and modified many little bits of code to use it.

Inspiration then struck him, or rather, vtables did. He’s rewritten it to use vtables, and split some of the code out of misc.c and into the new spf_render.c and spf_vtable.c, which managed to turn into another huge patch. Looks like there is a portability issue on PPC systems with va_copy however.

Nuke dem opcodes

Simon Glover proposed a patch to get rid of the 2-element ``ne” opcode, which at a first glance should be optimizable at compiler time and hence should not be in Parrot – barring complicated number precision issues. After a little discussion, Nicholas Clark pointed out that maybe we should do as C99 and state that constant folding will be done at compile time and at the precision of the compiling Parrot. Some of the opcodes where nuked, but it’s important to keep some opcodes just in case of overloading.

Getting Started Guide

Cast your minds back, dear readers, if you will, to last week, when Erik Lechak proposed writing a getting-started guide. Well, he did just that, starting from the beginning with the configure system and then all the way out. There were many comments and suggestions, and it would be great to see this as POD and in the repository soon. Unfortunately, it is not in the archive.

Larry Explains All

Perl6-language had very few new threads this week. Instead, there were mostly little updates to previous threads, which makes it somewhat tricky to summarize. However, Larry Wall was everywhere this week, giving us detailed insights into the Perl 6 language.

Larry clarified that to remove ambiguity, variable properties will surrounded in brackets and have repetitions of ``is”:

  # instead of this:
  my $foo is rw cmp "";
  # we would have:
  my ($foo is foo is bar, $bar is baz) = (1,2);

Additionally, it looked like class attributes had changed name from attr to has.

There was also some talk on the module versioning system, which could be done with a slice-like notation:

  use Acme[1.0];                  # like so
  use Acme[ (1;17..) | (2;0..) ]; # or perhaps
  use Acme[1;17..] | Acme[2;0..]; # or even

I’m pretty sure he was joking, but Larry considered alternatives to the ..., which issues a warning (or maybe an exception) if you try to execute it. ??? would never complain and !!! would always throw an exception. Or the other way around. Or one is fatal. Or more likely, stick with ... and make its behaviour pragmatically controllable. ... is useful for abstract method declaration.

There definitely wasn’t any talk about &&& and |||.

Perl6 OO Cookbook

Michael Lazzaro made good on his promise last week and produced a comprehensive Perl 6 OO cookbook describing ``stuff that hasn’t yet been designed, for a language that doesn’t yet exist.” It is a great piece of work and tries to examine real-life Perl 6 examples.

There was some discussion of the recipes and the Michael announced that he wanted to work on an online system for adding new data and many other changes. Worried about Perl 6 OO? Then check this out:

In Brief

Some of the Parrot tests still don’t work under Win32.

Some bugs in various bits of the Parrot JITs were found, and some fixed.

Dakkar found a bug in the Perl 6 compiler that basically boiled down to checking for truth instead of definedness. Hopefully, Perl 6 will remove this particular problem for us ;-)

We probably need more tinderboxes.

Brent Dax promises to fit a pony into his next patch.

Simon Glover added quite a few tests and pieces of documentation.

C structs need to be padded for the more exotic architectures and compilers.

There are still some DOD / GC bugs.

Who’s Who in Perl6

Once more we get to meet people involved in the development of Perl 6.

Who are you?
Jérôme Quelin.

What do you do for/with Perl 6?
I wrote a Befunge interpreter in Parrot assembly. Now I’m waiting for Parrot to handle multi-arrays and objects in order to implement the Befunge-98 specs.

Where are you coming from?
Some Perl Golf rumors have said that I’m an alien coming from Mars.

When do you think Perl 6 will be released?
Some day.

Why are you doing this?
In order to have a chance to understand Perl 6 sources. And because Befunge is a fun language, that deserves to be supported by Parrot.

You have five words. Describe yourself.
Perl Golf and Befunge addicted.

Do you have anything to declare?
Befunge rocks.


This summary was brought to you with slightly less distraction from Super Mario Sunshine and more recognition of the sterling work that Piers does every week.

As Piers says: One more, if you think this summary has value send money to the Perl Foundation and feed back and/or T?iBooks to me, As usual, the fee paid for publication of this summary on has been donated directly to the Perl Foundation.



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