This week on Perl 6 (11/10-11/17, 2002)

“Oh! my ears and whiskers, I’m late!”

It’s 0650, it’s 20021120 and I’ve only just started writing the summary. Call me lazy, call me a shirker, call me anything you damn well please, just don’t interrupt me while I’m writing this.

Yup, it’s past time for another peek into the lives of those strange beings we call the Perl 6 development community, starting off, as usual, with the perl6-internals crew.

Quick Roadmap

Dan returned unscathed from this year’s Lightweight Languages workshop and presented a short roadmap for the next few miles. Dan reckons that if we hit all those milestones, then we’ll have a complete imperative core – which will be nice.

Branch Dump

Michael Collins stuck his head above the parapet to report that using branch provoked a core dump on his Linux setup. It turned out to be a problem with his code. Dan debugged his code and offered a reasonably full explanation of how parrot’s branch actually works (and why you should really use labels in hand written assembler.) Gopal V worried that allowing branches to non-instructions was unsafe and wondered whether, at least, a parrot -fverify switch might be in order. Dan agreed, but his reasoning was somewhat different.

Elsewhere in the thread, Dan tells us that he wants safe interpreters to be as safe as a locked down VMS system, but he’s unsure as to whether we’ll reach that gaol. (Mmm … nice typo there Piers, leave it)

Parrot BASIC 2

Clinton A. Pierce announced his complete rewrite of BASIC for Parrot, this time modeling his implementation on QuickBASIC. Here’s a list of the new features, lifted from Clint’s announcement:

  • Compiled directly to Parrot Assembly
  • Interpreted
  • Richer syntax than Parrot BASIC 1.0, which was based on GW-BASIC
  • Much, much faster than Parrot BASIC 1.0
  • Support for user-defined types
  • Support for variable scopes (but apparently, QuickBASIC scoping is ‘bizarre’)

Nobody said anything – I think they were rendered speechless. However, I’d like to take the opportunity to use this platform to say “Yay Clint!”. This is superb news. OK, so supporting BASIC wasn’t exactly Parrot’s initial goal, but it’s great to see that a single hacker can implement such a complete language using Parrot.

scope and functions in languages/scheme

Not to be outdone by Clint’s BASIC implementation, Jürgen Bömmels has taken advantage of Jon Sillito’s lexical scopes patch to add functions to scheme (before it was just scheme syntax, now it has some claim to being really scheme like). Bravo Jürgen!

Leo Tötsch is the Patch Monster

This week, Leo has been mostly:

  • Fixing JIT to make it restartable
  • Fixing JIT to make it play well with Perl 6
  • Fixing JIT so you can see what’s going on when you use gdb.

And generally seeming to pop up with useful contributions in almost every thread. Where does he find the time?

Bootstrapping Perl 6

Marius Nita asked about the Perl 6 compiler, wondering what language it’d be written in, Perl or C? Markus Laire thought it’d eventually get written in Perl 6 or Parrot ‘or something else which runs on parrot.’ Gopal V worried about the bootstrapping problem and asked that the Perl 6 compiler be written in something other than Perl 6 in an attempt to avoid a ‘dependency hellhole’. Brent Dax pointed out that we’re pretty much obliged to write Perl 6 in Perl in order to get the self modifying parser behaviour and noted that we’d ship it as bytecode. Nicholas Clark pointed out that, strictly, you can’t build perl5 from scratch without an installation of perl5, but the p5porters get ‘round the problem by shipping the generated headers as part of the perl5 tarball.

Dan points out that the goal is for Parrot to require a C compiler and a platform shell or Make tool (either should do). Nicholas Clark attempted to kick off a variant of Monty Python’s ‘Yorkshiremen’ skit (“Make tool? Luxury! We ‘ad to make do wi’ a console and switches!” “You were lucky! We used to ‘ave to mek waves in’ t’mercury delay line wi’ us tongues!”), reckoning that it should be possible to get by with just a C compiler and asked that we ‘archive this message and hold it against me when the time comes, and you’re looking for someone to prove it by making it work’. – Archive this message

Quick note on JIT bits

Dan announced that he was about to ‘do exceptions’ and wanted to give a heads up to everyone who does Odd Things (principally the JITterbugs). The rule appears to be ‘Don’t monkey with the system stack’. Leopold Tötsch wondered if that was actually the issue Dan thought it was, but came up with a bunch of other issues to do with register allocation, both at the parrot level and the processor level. And then it all got too much for my brain to cope with.

Perl 6 test organization

Over in perl6-documentation, they’re about to start producing Perl 6 language tests, so chromatic posted Brent Dax’s suggestion about how tests should be organized into sub directories. General response was favourable (the current languages/perl6 tests are somewhat disorganized.)

Meanwhile, in perl6-language

The language list was relatively quiet this week. The Operator thread seems to have reached a cæsura, but most of the current threads seem to have spun off from issues raised in that monster.

Unifying invocant and topic naming syntax

Discussion of ralph’s proposals for changing the function declaration syntax continued. Damian doesn’t like the proposed changes, and has been explaining to ralph why not. Nicholas Clark worries that a function being able to access its caller’s topic is ‘an unrestricted licence to commit action at a distance’ (he says that like it’s a bad thing). Andrew Wilson pointed out that, unless you could access the caller’s topic you wouldn’t be able to prototype things like print (and if you can’t get a prototype for something then you can’t fully override it). Damian added that it’s also what Perl 5 does (except Perl 5 does it without having the decency to declare anything)

Superpositions and Laziness

I’m not entirely sure why a thread titled ‘Superpositions and Laziness’ should contain discussion of whether one should have a ‘pure’ property or a ‘cached’ one. Or both.

Meanwhile, in the ‘laziness’ side of the thread, Piers Cawley saw fit to post a huge chunk of uncommented code which was described by Larry as ‘opaque, and not in a good way’. On rereading, I didn’t think it was that bad.

Larry also introduced the possibility of breaking the operator: method of declaring operators up into prefix:, infix:, postfix: and circumfix:.

FMTWYENTK about :=

Last week, arcadi declined to expand ‘FMTWYENTK about :=‘. This week we discovered that it stands for ‘Far More Than What You Ever Needed To Know’ (It was the ‘what’ that foxed me).

This week Damian supplied answers/clarifications. Next week, I’m hoping for a lovely, consolidated document. – Always worth a read


Given the subject of the last link, I find it entirely appropriate that the thread about coroutines and yield should be called ‘Continuations’, but I freely admit to an odd sense of humour.

It turns out that there are several different views as to what coroutines should do, a few of the alternatives were discussed. Damian thinks that the actual semantics chosen will probably have a good deal to do with how Perl 6 iterators work. Luke Palmer, whose name should live in infamy for this, declared that he was starting to like coroutines because ‘the elegantify stuff.’ – Dan’s expectations – Damian’s initially preferred coroutines – ‘Pythonic’ coroutines

More Junctions (or, When junctions collapse)

Luke Palmer wondered about collapsing junctions. When a function collapses a junction, does the junction collapse everywhere, or would one have to make an explicit ‘observation’ to precipitate collapse? Damian offered a reasonably complete discussion of the various possibilities.

I offer the following without comment:

 When a junction hits a function and collapses down to one
 will it propagate the changes through the runtime? Oh, what fun!

Control Structures I, II and III

Timothy S. Nelson’s suggested new control structures got discussed this week. The general feeling seemed to be that what was proposed didn’t really offer much that was desperately useful over and above the current control structures.

String concatenation operator

Andy Wardley wondered whether we couldn’t overload + to work as both numeric addition and string concatenation. Answer: No.

Richard Proctor wondered if we couldn’t get away with doing string concatenation by juxtaposition ( "string " "foo" evaluates to "string foo".) Answer: No.

Larry had wise words the on subject of juxtapositional operators.

Meanwhile, Over in perl6-documentation

I’m still at something of a loss as to how to summarize this group effectively. Essentially the goal of the perl6-documentation list is to thrash out, in detail, the complete behaviour of Perl 6 and to produce tests and documentation which amount to a detailed spec. Their current project is ‘literal values’, and the work is ongoing.

There’s been some debate as to documentation format of choice (current thinking is ‘POD with knobs’). Michael Lazzaro who, if he hasn’t officially been named documentation pumpking is doing a damn good job as de facto ‘Bey of the docs’ has posted a working outline for Section 1 of the docs. Garrett Goebel appealed for some docs on writing good tests for languages, which kicked off some debate about how tests should communicate with the test harness. Angel Faus put up a first cut at the ‘literal values’ subsection, and got a good amount of feedback. Dave Storrs took on the ‘glossary chap’ role, and posted a taster.

Dave is also the coordinator for ‘Contributor License Forms’, which are rather important. Before you donate any docs to the Perl 6 Documentation project you must fill in the form assigning the license to the Perl 6 project. Dave’s post has the details.

Can you tell it was getting late when I wrote this section? – Section 1 outline – Literals, take 1 – Literals, take 2 – Numeric literals, take 1 – Glossary – Contributor license forms

In Brief

Clinton A Pierce had problems building under Win32 – I’m not entirely sure the issue was resolved.

Jerome Quelin, backed up by Leon Brocard (Yay! I was wondering how I was going to mention him this week) used his Befunge interpreter to find bugs in PerlArray and string_append.

Daniel Grunblatt (or a better than reasonable facsimile) is back. This made Leopold Tötsch and Steve Fink happy. And we like it when they’re happy. Welcome back Daniel.

The ‘very complete lexical scopes’ patch finally got applied this week.

Tim Bunce pointed us at CCured, which looks interesting:

Jonathan Sillito offered a patch to turn Parrot subs into closures.

Arcadi wondered whether sigils were user extensible. Answer: Yes, but not necessarily easily.

Who’s Who in Perl 6?

Who are you?
Leopold Tötsch. I’m an independent software developer, living in Austria (this is the country near Liechtenstein w/o kangaroos).

What do you do for/with Perl 6?
I’m digging around in Parrot’s core, closing holes and pushing new ideas (or old ideas, which were already discussed before my time ;-).

Where are you coming from?
I started working with computers in the late ‘70s (e.g. a hard disc driver for a 10 Meg disc under CP/M 3). Via 8080/Z80 assembler, Pascal, C, Perl 5 I finally arrived at Perl 6 development, where I made this run under 5.005.03. While submitting patches toward Perl 6, I realized that IMCC caused a lot of test failures, so I rewrote IMCC substantially and added the Parrot engine. Running PBC inside IMCC demanded a bunch of patches to the Parrot core, so here I am.

When do you think Perl 6 will be released?
Sept. 16, 2004.

Why are you doing this?
For fun, really a lot of.

You have five words. Describe yourself.
Parrot for a faster live.

Do you have anything to declare?
No customs here.

Acknowledgements, requests and the usual muttering

This summary was brought to you, late from the comforts of GNER’s First Class carriages, and from Mary Branscombe and Simon Bisson’s most excellent (if somewhat hard to stand up from) sofa. Distractions were provided by the Kiseido Go Server, XMAME, Mary & Simon’s DVD collection and a visit from Black Dog. Normal service will hopefully be resumed next week.

Proofreading was once again down to Aspell and myself. We make a much better team than we did.

A couple of months ago, I said of Leo Tötsch that ‘he turned 44 on the 16th of September 2002, so not only does he contribute really useful code, he makes Dan and I feel younger. Can this man do no wrong?’ I seems he can’t, he’s even found time to contribute his answers for the summary questionnaire. Thanks, Leo. Once more, if you participate in the lists and you’ve not sent me a set of answers, then I’d be really grateful if you’d send your answers to:, current names I’m targeting include Larry, chromatic, Steve Fink, Clint Pierce, Daves Whipp & Storrs (Hmm… Now there’s a name for a legal practice, ‘Pierce, Whipp & Fink’) and anyone else named in a summary who hasn’t sent me answers. As I used to say in my USENET days aTdHvAaNnKcSe.

Now, I hope you’re in good voice as we all join in the chorus:

If you didn’t like this summary, then what are you doing still reading it? If you did like it, please consider one or both of the following options:

The fee paid for publication of these summaries on is paid directly to the Perl Foundation.



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