This week's Perl 6 Summary

Piers Cawley <[email protected]> Tue, 27 May 2003 15:06:06 +0100
Newsgroups gmane.comp.lang.perl.perl6.announce
Message-ID <[email protected]>
The Perl 6 Summary for the week ending 20040525
    Welcome back to another Perl 6 summary in which Piers comes back from
    watching a load of pretty girls dancing 'round a huge Maypole in Wellow
    (it's 60 feet high, the tallest permanent Maypole in England, there's
    been on on the site since at least 1856. One does wonder if the Lord of
    the Manor who put the first one up was compensating for something). It's
    not my favourite English traditional event (you'd have to go a long way
    to beat the Whitby Penny Hedge for weirdness or the Brockworth Hill
    cheese-rolling for complete and utter reckless insanity (it was called
    off this year because the people who usually provide cover in case of
    accidents are in Algeria helping deal with the aftermath of the
    earthquake there; St John's Ambulance didn't feel up to the rigours of
    dealing with the kind of injuries that occur when too many people chase
    a Double Gloucester cheese down a 1 in 2 slope.)) but it made for a
    lovely afternoon.

    Which is why, instead of having this written by mid afternoon on a
    Monday, I'll be lucky if I have it finished before Tuesday. Ah... the
    trials of a summary writer.

    So, we'll start with perl6-internals because that's what we always do.

  IMCC variable names
    Will Coleda discovered that IMCC didn't allow him to have a variable
    name that happened to be the same as an op, which isn't what the spec
    says and which could lead to interesting problems where IMCC source code
    suddenly becomes invalid when someone adds a new op to the language.
    Will sent a patch to fix the docs. Leo Tötsch didn't apply the patch,
    choosing to fix the problem instead. Yay Leo.

    http://xrl.us/ijk

  Vtables get macroized
    Leo Tötsch finished checking a series of patches which switch the Parrot
    source code over from accessing vtable innards directly to accessing
    them via macros, thus making it easier to monkey with vtable internals
    without having to change a million and one different source files.

    http://xrl.us/ijl

  The timely destruction thread
    After last week's discussion of timely destruction, the debate continued
    this week. Dan announced his design for dealing with the issue. PMCs now
    get a flag marking them as requiring timely destruction and there's a
    new op to trigger a DOD run if and only if there are any flagged PMCs in
    memory. The idea is that compilers for languages that care about timely
    destruction would insert the "lazysweep" op into their generated code in
    the appropriate places. Mr. Zellyn Hunter (hey, that's what he asked to
    be called, who am I to argue?) suggested a different name for Dan's
    proposed flag and offered the following joke which I repeat here in its
    entirety because it's funny (because it's *true*).

    Q: How many Parrot programmers does it take to screw in a lightbulb?

    A: Just one, as long as it's Leo Tötsch. He will probably also rewire
    your entire electrical system slightly, saving you about 3% in power
    consumption during the evenings and on weekends.

    Leo denied the truth of this as lightbulbs are hardware and he doesn't
    do hardware.

    Meanwhile, back at the thread...

    Guess what? People didn't like the solution. I think this is a classic
    problem of GC. Everyone agrees that real Garbage Collection is a good
    idea, but they also want it to work by magic and take no time at all.
    Sadly, whilst Leo is good, even he can't change the laws of physics. My
    suggestion: if you're currently writing Perl code that relies on magic
    to close a filehandle the instant it goes out of scope then Don't Do
    That, close it yourself. That way, when you come to switch things over
    to Perl 6 you can do "use GC scope_end => undef" (or something) and get
    blistering performance and real GC.

    http://xrl.us/ijm

    http://xrl.us/ijn

  PASM code analysis
    Clinton A Pierce has rewritten BASIC's expression evaluator and is
    reintegrating it with the runtime. This has left a lot of 'junk code'
    that never actually gets executed, and Clint wanted to know if there was
    a way of tracking down (and removing) the unreachable code. Leo implied
    that the answer is 'run it under IMCC' which apparently does dead code
    detection. This didn't quite work for Clint as IMCC threw an error when
    it tried to run some BASIC generated PASM (at least, it does when run in
    dead code detection mode...) Leo wasn't able to help directly with
    tracking down the issue, but did provide some pointers for conversion of
    the BASIC compiler so that it targets IMCC's PIR language instead of
    simple Parrot assembly. This prompted a list of questions from Clint
    about IMCC and Luke Palmer provided a some good answers.

    http://xrl.us/ijo

    http://xrl.us/ijp

  Perl 6 Essentials
    Sean O'Rourke noticed the new Perl 6 book in O'Reilly's catalogue and
    wondered where Leo found the time to become an author as well as a
    coding machine. Dan popped up to note that the plan is to have the book
    available in time for OSCON and YAPC::Europe. (Be there or be somewhere
    else). Randal Schwartz mentioned that he'd been a tech reviewer for the
    book and had found it 'quite an interesting read'.

    http://xrl.us/ijq

    http://xrl.us/iaz -- Americans can't spell catalogue

  A New PMC Layout
    Leo Tötsch posted a proposed new layout for PMCs now that PMC access has
    been hidden behind macros and asked for comments on his proposed new
    scheme for the new PMC layout. Dan commented on this, and between them
    he and Leo appear to have hashed out a way forward. Leo kicked out a
    patch using the new PMC scheme, with a second version not long after.

    http://xrl.us/ijr

    http://xrl.us/ijs

    http://xrl.us/ijt

Meanwhile in perl6-language
    Things have started to pick up a little after the virtual silence of the
    past few weeks.

  Perl 6 Tutorial?
    Dulcimer wondered if anyone was working on a simple introductory
    tutorial for Perl 6 yet. He thought that writing one might help get him
    up to speed, especially if people on the list critiqued it as he wrote
    it. Michael Lazzaro pointed to the documentation list
    [email protected] which is apparently rather quiet at the
    moment. Dave Whipp wasn't sure that the time was right to write a
    tutorial yet as we don't yet know enough about the final language
    (Personally I think anyone attempting to write a Perl 6 tutorial before
    the object system gets designed/documented is going to end up having to
    do some fairly dramatic rewriting at some point).

    Anyhoo, this led to a string of suggestions trying to sum up the Spirit
    of Perl 6, one of which managed to be a spoiler for Buffy the Vampire
    Slayer...

    Simon Cozens also nodded towards the forthcoming *Perl 6 Essentials*
    which may be just what Dulcimer is after.

    http://xrl.us/iju

  Coroutines
    Discussion of Coroutines in Perl 6 was the thread that ate the list this
    week. John Macdonald, had a few observations about using coroutines and
    suggestions for the best semantics for them in Perl 6. There seems to be
    a split between those who want the caller to know it's calling a
    coroutine and those who want the coroutine to be invisible to the
    caller. Halfway along the thread, Damian wrote up a proposal which he
    hoped would make everyone happy. It didn't succeed, but it was at least
    a step forward as the proposal got batted back and forth a few times,
    leading to another proposal which got batted back and forth a few more
    times and which received far more acclaim.

    Damian's proposals introduced a new "coro" declarator for coroutines,
    which Piers Cawley thought wasn't really necessary, and there was some
    discussion about whether 'coroutineness' was something that could be
    applied to all sorts of different Code based things, in which case using
    new declarators could lead to ugliness (coro, comethod, coblock,
    corule...) or if there was only really one thing. The jury is out on
    this.

    There was also discussion of possibly unifying coroutine and threading
    syntax, which some people thought was cool and which others disliked
    intensely (nothing new there then).

    There was also discussion of what a coroutine is, and why you would want
    to use them. Damian gave a good explanation of some of this. Actually,
    Damian gave some really good philosophy in this thread about why he
    likes Perl.

    Elsewhere in the thread, some fool called Piers Cawley attempted to
    introduce a discussion of multimethods and failed dismally to change the
    subject line. Bad Piers.

    http://xrl.us/ijv

    http://xrl.us/ijw -- Damian's proposal

    http://xrl.us/ijx -- Damian's second proposal

    http://xrl.us/ijy -- Damian addresses the "Why coroutines?" question

    http://xrl.us/ijz -- Damian on why people like Perl

  Warnock's Dilemma
    The eponymous Bryan C. Warnock (note to any Wired Jargonwatch editors
    who may be watching, that's *Bryan*, not 'Brian') popped up to set the
    record straight about his dilemma. Delightfully, by the end of the week,
    nobody had replied to him.

    http://xrl.us/ij2

Acknowledgements, Announcements and Apologies
    Thanks once again are due to all the good people on the Perl 6 lists.
    Apologies will probably be due to the organizers of YAPC North America
    as I still haven't started writing the talks I'm supposed to be giving.

    If you've appreciated this summary, please consider one or more of the
    following options:

    *   Send money to the Perl Foundation at
        http://donate.perl-foundation.org/ and help support the ongoing
        development of Perl.

    *   Get involved in the Perl 6 process. The mailing lists are open to
        all. http://dev.perl.org/perl6/ and http://www.parrotcode.org/
        are good starting points with links to the appropriate mailing
        lists.

    *   Send feedback, flames, money, photographic and writing commissions,
        or a description of this week's deliberate mistake to
        [email protected]. I'll be awarding points, and points mean
        prizes.



-- 
Piers