The Perl 6 Summary for the fortnight ending 2004-04-18
    The only problem with summarizing two week's worth of Perl 6 happenings
    is that there's twice as much stuff to summarize. Still, there's no way
    I could have made the time to write a summary last week so I'll take my
    lumps. I am exceedingly grateful that Apocalypse 12 (Objects) wasn't
    released the Thursday *before* Easter though, as it is I can clear the
    decks for the expected perl6-language explosion next week.

    We'll start with perl6-internals as usual.

  Initializers, finalizers and fallbacks
    There was some discussion of the various functions that get called by
    object initialization/destruction etc. Dan wondered what he'd been
    thinking when he declared that there would be distinct "FINALIZE",
    "DELETE" and "CLEANUP" properties (instead of declaring that a function
    must be called (say) "FINALIZE", you can mark any function with a
    "FINALIZE" property, and Parrot will recognise that as the function to
    call at finalization time). Andy Wardley quibbled about American/British
    spelling, but Tim Bunce pointed out that the 'ize' form is preferred by
    the Oxford English Dictionary (and your humble summarizer).

    Leo meanwhile made a (Warnocked) proposal for a new init scheme.

    http://tinyurl.com/2s2xp

    http://tinyurl.com/2dfj8

  New SDL Parrot bindings
    Taking advantage of Parrot's new, improved object system, chromatic
    updated us all on his efforts to provide a shiny OO interface to the SDL
    library. Jens Rieks wondered about chromatic's implementation choices,
    and posted a few suggestions and questions. Dan reckoned he'd prefer it
    if the SDL bindings used Parrots internal events systems. The catch
    being that Parrot doesn't actually have an internal events system yet...

    Later in the fortnight, chromatic posted an initial release and promised
    to post his notes and slides from the Portland Perl Mongers meeting
    where he was showing it off. There's no sign of 'em yet though.

    http://tinyurl.com/265sg

    http://tinyurl.com/2kpax

  "new" method
    Jens Rieks and chromatic were unsure of the best name for a constructor
    method. They'd like to be able to write a method called "new", but IMCC
    wouldn't allow it. Leo Tötsch pointed out that there's already a default
    constructor method: "__init". However, chromatic wasn't too keen on it
    because he wanted to be able to pass arguments to the constructor. Leo
    pointed out that, although it wasn't officially supported, you could
    pass arguments in the same was as if you were making a normal parrot
    function call.

    Dan pointed out that our current initialization system is some way from
    being the final one (which will use properties to mark constructor
    methods). What we have now is more like an allocator than a real
    constructor.

    http://tinyurl.com/3gv6y

  Overriding "__find_method" in PASM?
    Noting that, according to PDD15, defining a method called __find_method
    should allow Perl 5 AUTOLOAD-like behaviour, chromatic wondered if it
    was workable yet and, if it wasn't, how he should go about adding it.
    Leo confessed that what was in the docs was a cut and paste error and
    AUTOLOAD behaviour hadn't yet been defined. He suggested a workaround
    using exceptions (which turned out to be overkill for what chromatic
    needed, but it looks interesting.)

    http://tinyurl.com/ypvze

  Language interoperability
    Randy W. Sims popped over from the Module-Build mailing list, where
    they've been discussing plugin architectures to allow for the
    modification and extension of Module::Build's capabilities. One of the
    desiderata is that, once the transition to Parrot is underway, it should
    be possible to write plugins in any language supported by Parrot.
    (Mmm... a build system written in Befunge, it's what the world's been
    crying out for I tell you). There are currently two competing schemes,
    one involving manipulating the class hierarchy at runtime and the other
    involving plugins held in particular directories and a formal API. Randy
    wondered if there were any technical reasons to choose one scheme or
    another.

    Dan reckoned that there were no particular technical reasons, but the
    inheritance based scheme rather offended his sensibilities, going so far
    as to say "No way in hell it'll ever make it in as parrot's standard
    module building system if you do it [the inheritance munging solution]".

    http://tinyurl.com/33nsw

  Save the Return Continuation!
    The ongoing discussion about continuations seems to be fizzling
    slightly. Piers Cawley had proposed moving the return continuation out
    of P1 and held 'somewhere else' (possibly the control stack) and then,
    when a routine needed to do cunning things with the current continuation
    it could access it with some op (say "get_current_cont"). Dan reckoned
    he was okay with the idea, and Luke Palmer voted in favour of a special
    RC register. Dan asked for further discussion and the whole thing got
    tossed onto the horns of Warnock's Dilemma.

    http://tinyurl.com/2x896

  Rounding up pending objects
    Dan asked for a list of pending issues with objects so he could get
    things nailed down and finished so we could move on. Jarkko Hietaniemi,
    chromatic and Leo all chimed in with suggestions.

    http://tinyurl.com/2te57

  Release the Streams!
    Jens Rieks posted a "working version" of his new Stream library,
    promising more documentation later in the month. Leo and Dan looked on
    it, saw that it was good, and granted Jens commit privileges.
    Congratulations are in order.

    Later, Leo found some bugs around continuation and context handling and
    set about tracking it down. (Jens had thought it was an issue with
    string handling.)

    http://tinyurl.com/3bxjo

  Parrot libraries
    Leo pointed out that we currently have two different places to find
    Parrot runtime stuff: runtime/parrot/* and library/. He proposed we pick
    one, add some support for handling library search paths, work out a
    scheme to organize library paths and add some library tests. Dan decided
    everything should go in runtime/parrot and mused about handling library
    metadata.

    http://tinyurl.com/2ppqb

  Splitting interpreter.c
    Apparently interpreter.c runs to rather more than 2500 lines. Leo
    proposed splitting it into multiple files. Dan told him to go for it.

    http://tinyurl.com/2b6br

  Incorporating ICU
    I have a rule of thumb about Unicode: Nobody likes it. Nor does anyone
    dislike it enough to come up with something better.

    Jeff Clites dropped the list a line to let everyone know that he's still
    working on integrating the ICU Unicode library into Parrot. (A thankless
    task if ever there was one.) With some encouragement from Dan he posted
    his (huge) patch. After some debate, Dan checked it in giving a baseline
    to start dealing with any issues.

    Jeff explained the rationale of his approach (which I have to confess I
    skimmed, I don't care how strings work, so long as they work). Jarkko
    liked it, noting that other approaches lead "into combinatorial
    explosion and instant insanity". Jarkko went on to share his Unicode
    pain and generally back Jeff up in discussions with Leo. If you're
    interested in the gory details of Unicode implementation, I commend this
    thread to you. Or you can just trust Jeff, Jarkko, Leo, Larry and Dan to
    get it right (which is what I'm doing).

    http://tinyurl.com/37c7s

    http://tinyurl.com/3x2h3 -- Jeff's explanations

  Tracking JIT down
    In another of his ongoing series of simple perl tasks for the
    interested, Dan asked for a script to generate a list of all the ops
    that aren't JITted (along with a few extra goodies that would be nice).
    Stefan Lidman was the man with the script, which was rapidly checked in.

    http://tinyurl.com/2zg2j

  Diamond inheritance is broken
    If you've ever sung bass in choir you'll be aware that sometimes a bass
    line is sung on one note for rather a long time. For the past two weeks
    perl6-internals' repetitive bass note has been the failure of test 17 in
    t/pmc/object-meths.t. Should you find yourself building a CVS parrot and
    get caught by this, please be aware that we know about the problem it's
    just Dan's suffering from a tuit shortage and there are other important
    strings he's concentrating on.

  New libraries
    Jens "The librarian" Rieks released another set of libraries,
    "Data::Sort", "Data::Replace" and "Data::Escape". Tim Bunce wasn't that
    keen on his choice of names (and indeed functionality). The current
    front runners for new names for these are "PMC::DeepReplace",
    "PMC::Printable", "PMC::Sort" and "PMC::Dumper".

    http://tinyurl.com/3elvk

  Attribute questions
    Mark Sparshatt wondered how to handle class attributes, with particular
    reference to implementing Ruby. Dan reckons we'll get proper class
    attributes once he's sorted out metaclasses. Mark muddied the water
    somewhat by pointing out that Ruby has two kinds of class attributes;
    ones that are hung off metaclasses and those that are (I think) held in
    the class namespace. Annoyingly they have two distinct behaviours.

    http://tinyurl.com/2nvkd

  Tcl PMCs
    Will Coleda posted his first cut at a set of PMCs to support TCL
    semantics. He apparently had problems with the Array PMC's assumption
    that 'empty' slots contained PerlUndefs, which meant he had to implement
    a custom TclArray PMC. For the rest of the thread Will and Leo worked
    out how to re-jig the patch so the PMCs could be dynamically loaded
    before Leo checked it into the repository.

    http://tinyurl.com/29c5t

  Parrot Everywhere
    I've not really mentioned his work in recent summaries, but Marcus
    Thiesen has been doing sterling work helping to get Parrot up and
    running on a bewildering variety of systems. Thanks for the sterling
    work Marcus.

    http://tinyurl.com/2v8b5 -- Marcus's Smoker

  Warnocked
    Bryan C. Warnock posted a patch to Parrot's CREDITS, correcting a long
    defunct email address. You might enjoy the patch:

        N: Bryan C. Warnock
       +D: Little things here and there in pre-Parrot days.
       +D: And, yes, {sigh}, *that* Warnock.
       +E: [EMAIL PROTECTED]

    He's too modest of course, Bryan started off writing the Perl 6
    Summaries. When he stopped doing them due (I presume) to a lack of time,
    I missed them so much I started writing my own. So don't blame me for
    these, blame Bryan.

    Rather appropriately, nobody commented on the patch.

    http://tinyurl.com/yve38

  Unicode step by step
    Leo Tötsch posted a quick overview of steps to get Unicode support into
    Parrot. Right now, if you turn Unicode on, your (at least) first build
    is going to take a looong time.

    Debate centred on whether or not the Parrot distribution should include
    the full ICU distribution. (It's looking like a qualified yes, but we
    will attempt to use an existing installation of ICU if we can find it.)

    http://tinyurl.com/2rjw9

  Disappearing PASM files in the test directory
    Leo wondered what had happened to the generated .pasm files in t/*/ (he
    wasn't alone in this, but he was the person who posted). Will Coleda
    confessed that he'd doctored Parrot::Test so that they ended up in /tmp
    (probably). He didn't say why.

    http://tinyurl.com/2dxhp

  ICU build pains
    I don't normally discuss issues people have with building Parrot on
    various different machines either (the threads usually die out quite
    quickly: "Did you do this?" "Oh! Thanks, that worked.") but the ICU
    check in seems to have caused no small amount of pain on Linux systems
    for some reason.

    Alberto Manuel Brandao Simoes posted an error log for a failing build.
    Jeff Clites, our Guru of ICU set about helping him to track the problem
    down with incomplete success. Dan pointed everyone at Debian's patches
    to get ICU to build, and suggested that people wait for his patch to
    allow the use of an existing ICU installation.

    Various other threads continued the discussion, at the end of which Dan
    had checked in a patch that seemed to solve the problems.

    http://tinyurl.com/25nrx

    http://tinyurl.com/2ka8h

    http://tinyurl.com/3gg4z

  Tangled strings
    Dan posted the beginnings of his plan for how strings are going to work
    in Parrot. On the face of it, not a contentious issue. However, strings
    are text, and text is a human cultural artifact, which means there's
    politics and really, really, really ugly complexities to deal with if
    you want to Do It Right (assuming you can decide what Right is). There
    was much discussion. And then there was some more. The trouble is, this
    stuff is Important (and it's very important that we get it right
    *before* we start implementing the matching engine, otherwise some of
    the assumptions it might make about how fast various string
    manipulations are might turn out to be very wrong indeed...) and Hard.
    Because it's Hard it's rather tricky to summarize, so I'm going to punt
    and just give you the root message.

    http://tinyurl.com/2nyhe

  Basic Library Paths
    Dan finally got 'round to designing how Parrot was going to handle
    searching for libraries and such. Oh, and he and Jarkko engaged in some
    unseemly bragging about VMS which has had all this stuff fixed for ages.
    There was a fair bit of discussion, but the response was generally
    positive.

    http://tinyurl.com/28f2u

  Alternative object initializer calling scheme
    Leo announced that he'd added a new, property based scheme for object
    initialization. Instead of initializing an object automagically with the
    "__init" method, you mark any method with the "BUILD" property and
    Parrot handles calling it for you. You do have to set the "CALL__BUILD"
    environment variable before starting Parrot to make use of it though.

    http://tinyurl.com/34kvv

  Joseph Höök is back
    Long time no see Joseph.

    http://tinyurl.com/2ub86

  Version bump time?
    Dan suggested that, once the ICU patch is properly nailed down, it could
    be time to start the push to a 0.1.1 (or even 0.2.0) release.

    http://tinyurl.com/3bumn

  Lies, damned lies and benchmarks
    Leo posted a set of benchmark timings for the OO examples when run with
    all current optimizations. The numbers are looking rather good: Parrot's
    faster than everything on all but one test, where it's outperformed by
    Python. Of course, these aren't the benchmarks that'll determine whether
    Dan gets a Pie at OSCON...

    http://tinyurl.com/yuhx9

  PMC Constants
    Leo asked for comments on a proposal for dealing with PMC constants. No
    comments so far.

    http://tinyurl.com/2c3eq

Meanwhile, in perl6-language
  Backticks
    A proposal for a new use of backticks was made (because the proposer
    didn't think the current semantics deserved their privileged place in
    the language's Huffman table). Some people disagreed. Some people
    disagreed rather strongly. Toys were thrown out of prams. People called
    each other narrow minded. It wasn't pretty. With any luck people are
    going to calm down, apologize to each other for getting so aerated over
    something so trivial, and the list can settle down to the more rewarding
    task of dealing with the implications of Apocalypse 12.

    http://tinyurl.com/24qoy

  Compatibility with Perl 5
    Dave Cantrell wondered how Perl 6 would spot legacy code. Everyone
    forgot to refer him to the appropriate section of Apocalypse 1 in which
    Larry lays down the two rules:

    *   Files that are pulled in with "require" etc will be deemed to be
        Perl 6 unless they contain a "package" declaration.

    *   Files that are run as scripts ("perl some_script.pl") are treated as
        Perl 5 unless it's obviously Perl 6. The proposed way of making this
        obvious would be to begin the script with "module Main".

    Easy eh? It didn't stop the thread running and running though (not
    helped by someone getting the rules of thumb rather badly wrong in the
    early stages).

    http://tinyurl.com/2jd5z

  Oooh look, it's an apocalypse
    Apocalypse 12 finally stepped out of the drafty shadows into the glare
    of publicity. It's very long. I expect next week will be rather busy on
    p6l.

    http://tinyurl.com/3fjyj

And we're done
    A reminder to everyone on perl6-language: Play Nice.

    If you find these summaries useful or enjoyable, please consider
    contributing to the Perl Foundation to help support the development of
    Perl. You might also like to send me feedback at
    mailto:[EMAIL PROTECTED]

    http://donate.perl-foundation.org/ -- The Perl Foundation

    http://dev.perl.org/perl6/ -- Perl 6 Development site

Reply via email to