This Week in Perl 6, June 1-7, 2005

Crumbs. I’ve remembered to write the summary this week. Now if I can just remember to bill O’Reilly for, err, 2003’s summaries. Heck, it’s not like waiting for the dollar to get stronger has paid off.

Ah well, no use crying over spilled milk. On with the show. Maybe, just maybe, darwinports will work its magic and I’ll have a working Haskell compiler by the time I’ve finished writing.

This Week in perl6-compiler

undef Issues

I’d probably forgotten this, but Larry pointed out that in Perl 6 there will no longer be a function undef() and a value undef. Instead there’ll be a function undefine() and a value undef, but he thinks that we should usually fail() to construct our undefined values.

This Week in perl6-internals

Keys

I’m not sure I understood what TOGoS was driving at with a suggestion about keys and properties. Luckily Leo, Dan, and Chip all seemed to. The discussion continued through the week.

Loop Improvements

Oh no! It’s the register allocator problems again. One of these days, I swear I’m going to swot up on this stuff properly, work out whether it’s really the case that full continuations break any conceivable register allocator, and summarize all of the issues for everyone in a nice white paper/summary.

HP-UX Build Notes

Nick Glencross posted some of his issues with getting Parrot up on an HP-UX machine. After a good deal of discussion and tool-chain fettling, he made things build and posted a patch to fix the knowledge, which was promptly applied (r8280, for those of you with the svn chops to know how to take advantage of that).

mod_pugs Status

Jeff Horwitz announced that mod_parrot now comes bundled with mod_pugs, which means that you can now write Apache extensions in Perl 6. I don’t know about you, but my mind is still boggling.

Parrot 0.2.1

Parrot spent most of the week in a feature freeze for the release of Parrot 0.2.1 “APW,” which went ahead as planned on the 4th of June.

Parrot on Solaris

Peter Sinnott reported problems with Parrot on Solaris. It turns out that different implementations of atan behave slightly differently, which isn’t good. I believe the problem remains unresolved.

Parrot on the Mac OS

Joshua Juran’s questions about getting Parrot running on Mac OS Classic went Warnocked.

Parrot Tests Get TODO

Continuing the drive for consistent testing structures everywhere in Perl land, Chromatic applied a patch to Parrot::Test that makes TODO tests work in a way that Test::Builder understands. Hurrah!

Missing MMD Default Functions

Dan was somewhat bemused to find that the MMD functions’ defaults had disappeared when he did a sync with subversion. He wondered whether this was deliberate. Turns out that it was. I’m not sure whether Chip’s ruled that it was right, though.

Google’s Summer of Code 2005

Remember earlier when I talked about IMCC’s register allocation? Well, Dheeraj Khumar Arora is looking at working on improving IMCC’s optimizations as part of Google’s Summer of Code 2005. The usual thread ensued.

Building nci/dynclasses on HP-UX

Not content with getting Parrot to build on HP-UX, Nick Glencross next set his sights on making nci/dynclasses work on HP-UX. It sounds like there’ll be a patch forthcoming some time next week.

Nick Paints the Big HP-UX Picture

Announcing Amber for Parrot 0.2.1

Roger Browne announced another new language that targets Parrot: Amber. It borrows a good deal of syntax and semantics from Eiffel, with a large sprinkling of Ruby for good measure.

A note WRT exception handlers

Leo posted a quick discussion of the correct use of exception handlers in Parrot. Essentially, the rule is that your exception handler should jump back to the point just after the exception handler block:

    push_eh except_N
    # Code that might fail
    clear_eh
resume_N:
    ...
except_N:
    ...
    goto resume_N

Easy, eh?

Meanwhile in perl6-language

The Reduce Metaoperator Thread

Remember when I discussed this thread two weeks ago? It’s still going strong.

Larry ended up stating that there will be an optional property, identval, on operators which will be set by default on all operators with obvious identity values. Or it might be called initvalue.

Larry Makes Up His Mind

Construction Clarification

Carl Franks wondered about how object constructors will work. It turned out that the code he’d carefully written by hand pretty much described the default behavior. Damian and Larry provided details. Hopefully, some keen p6porter has already incorporated any new information into the appropriate Synopses.

A Comprehensive List of Perl 6 Rule Tokens

Patrick responded to his own post last week to clarify some things about the capturing behavior of various rule types. He, Japhy, and Thomas Sandlaß thrashed out the gory details.

Default Invocant of Methods

Larry addressed Ingo Blechschmidt’s questions about class methods.

Class is a role? My head hurts.

returns and Context

Gaal Yahas wondered how to specify the signature of a context-sensitive function. The consensus seems to be to use a junction, like so:

sub foo() returns Str|Int {...}

Declarations of Constants

Adam Kennedy had wondered how much compile-time optimization of constants would happen. Damian thought not as much as Adam thought, but suggested that he could use macros to get more optimization if he needed it.

Time Functions

The good thing about localtime et al. is that everyone knows them. The bad thing about them is that they’re at such a low level that you either end up reinventing wheels, getting it wrong, or boggling at the size of the library you need to install to get access to good time manipulation. I wonder what Perl 6 will end up with.

Empty Hash

Luke wondered if {} should be an empty hash rather than empty code, and why { %hash } no longer makes a shallow copy of the hash, but code that returns %hash. There was some discussion, but no answers came from anyone else on the design team.

chars in a List Context

Joshua Gatcomb revisited a long-Warnocked subject. He wants:

@chars = 'hello'.chars; # <h e l l o>

That is, in a list context, chars should return a list of the characters in the string. Stuart Cook thought it was a good idea.

Transparent/Opaque References

Um … I’m not sure what Thomas Sandlaß and Juerd were talking about. I’ll tell you what, let’s swap places: you read the thread and write me a summary of it.

Idea for Making @, %, and $ Optional

Millsa Erlas wondered if it would be possible to make variable sigils optional. The short answer is yes, with a pragma, and probably left for CP6AN.

Using Rules

BÁRTHAZI András wondered about using rules in a web templating system he was working on. Aankhen supplied an answer.

(Look, it’s two messages. Any summary I wrote that told you more than the above sentence would be about as long as the original messages.)

(Multi)Subroutine Names

Dakkar wondered how he could get at the long name of a multi sub. Rod Adams thought it’d be:

&foo<Array, Int>
&foo<Hash, Int>

but also thought it might been changed. Thomas Sandlaß agreed that it had changed to:

&foo:(Array, Int)
&foo:(Hash, Int)

Easy.

Flattening Arguments

BÁRTHAZI András wondered about the behavior of flattening arguments in Pugs when compared to that described in Perl 6 and Parrot Essentials. Answer: The book’s right, they’re just not implemented in Pugs. Yet.

return() in Pointy Blocks

Oh boy. Ingo Blechschmidt opened a can of worms when he asked about return within pointy subs. However, because the worms were slow in starting, you’ll have to wait for Matt’s summary next week when he explains:

sub callcc (Code $code) { $code(-> $r {return $r}) }

Meanwhile, in Another Place

Once upon a long time ago, Jon Orwant threw coffee cups and swore and Perl 6 was born. Later that afternoon, Dan Sugalski started doodling design sketches for what was to become Parrot. Parrot’s first README in CVS dates from August 11th, 2001, and the first archived mailing list post is from August 1st, 2000, but that’s a reply.

As well as being Parrot’s original developer, Dan is also Parrot’s first commercial user.

Last week, he announced in his blog that, having already given up his designer’s hat earlier this year, he’s stopped doing any Parrot development. The plan is that he’ll be publishing a few design documents and historical explanations of various bits of Parrot design on his blog, but otherwise, that’s all he wrote.

I’m not the first, and I’m sure I won’t be the last to say this. Dan, thank you very much for all the work you’ve put into Parrot over the years. Good luck with whatever you do next.

The End … for Now

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

Or, you can check out my website. Maybe now I’m back writing stuff I’ll start updating it. There are also vaguely pretty photos by me.

Tags

Feedback

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