Perl 6 Summary for the week ending 20030810
    Another week, another summary. How predictable is that?

    In keeping with the predictability, we'll start with the internals list.

  Set vs. Assign
    "T.O.G of Spookware" has an issue with the way IMCC treats "=";
    sometimes an "=" means "set" and sometimes it means "assign", which
    TOGoS finds confusing. What he(?) finds even more confusing is that
    sometimes "set" has "assign" semantics.

    Dan agreed that this was somewhat confusing, and pointed out that there
    was a third possible semantic, "clone".

    Luke Palmer agreed with TOGoS and suggested that it would be useful if
    the "assign" like behaviours of of "set" were moved over to becoming
    "assign" like behaviours of "assign".

    Benjamin Goldberg wasn't even sure that "set" and "assign" were good
    names for those behaviours in the first place. He proposed three
    behaviour classes; "mutate", "alias" and "create". The general feeling
    seemed to be that Ben's approach was a good way forward, but I don't
    think anything has actually been implemented along these lines yet.

    http://xrl.us/oz5

  Generic code generator?
    Not content with his efforts in porting Python to Parrot, Michal Wallace
    floated the idea of a generic code generator for parrot that everyone
    could use. Stephen Thorne liked the concept, but worried that it
    wouldn't necessarily play well with languages that allowed "eval
    $aString". He proposed that, whatever the code generator got written in
    should be a language that would be self-hosting.

    Joseph Ryan argued that, instead of coming up with a new meta-language
    for the GCG (Generic Code Generator), we should use something like XML
    or YAML as a way of dumping the AST (Abstract Syntax Tree) with
    standardized node names. Dan (who has a 'deep personal loathing for
    XML') was all for just building a standard datastructure and passing
    that into the code generator. (ASTnode.pmc anyone?). He also suggested
    that having some way of doing AST transforms would be handy, as many
    languages would want to get hold of the AST and munge it in some way
    before it went any further (Lisp macros are the canonical example of
    this sort of thing).

    Following the discussion, Michal and Klaas-Jan Stol apparently spiked
    out a prototype that used s-expressions.

    Your summarizer wonders if there's any overlap between this and treecc.
    Maybe I've just misunderstood what treecc was all about.

    http://xrl.us/oz6

  Calling convention questions
    Vladimir Lipskiy had a couple of questions about how the calling
    conventions worked. Dan and Leo supplied the answers, Vladimir pointed
    to the section of pdd03_calling_conventions.pod that had caused the
    confusion, and Dan went and fixed the docs.

    http://xrl.us/oz7

  Infant Mortality
    Every so often, perl6-internals ends up talking about the Infant
    Mortality Problem -- the possibility of an object being marked as dead
    by the GC system before it's even been fully initialized. Benjamin
    Goldberg addressed himself to the problem this week by proposing a
    generational Garbage Collector. I'm not sure anyone was convinced that
    his proposed use of a generational collector to avoid having to walk the
    C stack was the Right Thing, but nor do I think anyone's averse to
    trying a generational collection scheme to see how performance stacks
    up.

    http://xrl.us/oz8

  Packfile stuff
    Dan outlined some things we need to add to the packfile format and the
    sub header in order to get things ready for more language work. He, Leo
    and the usual suspects thrashed out the implications (assemble.pl and
    disassemble.pl will finally get removed from the distribution for
    example), but I don't think a final bytecode and sub header format have
    been decided upon yet.

    http://xrl.us/oz9

  Parrot on Win32?
    Valery A.Khamenya wondered if there was any news on getting a ready to
    run win32 Parrot distribution. Jonathan Worthington has volunteered to
    start work on producing regular build snapshots. Yay Jonathan!

    http://xrl.us/o2a

  Bitwise string ops
    Leo Tötsch checked in the beginnings of bitwise operators for strings
    and dropped a huge hint that it'd be good if someone could finish things
    up. Vladimir Lipskiy took the hint, but felt a good deal of pain trying
    to produce appropriately formatted diffs until he worked out how to do
    the equivalent of "cvs diff -c" in WinCVS (hopefully the same trick can
    be used to do "cvs diff -u", which is the preferred diff format of
    perl6-internals).

    http://xrl.us/o2b

  Dynamic PMC classes
    Discussion of the appropriate interfaces for the dynamic loading of PMCs
    continued apace. Leo committed his current implementation, stressing
    that it wasn't final, but it is at least something to work on.

    http://xrl.us/o2c

  extproc_parrot
    Sometimes I worry about Parrot hackers... Jeff Horwitz announced that
    he's successfully built a library that lets you embed parrot in Oracle.
    The theory is that, if you want to eventually have an extproc_perl6 in
    oracle you'd need to embed parrot anyway. Jeff commented that "what
    makes this even cooler" is that, right now, you can theoretically write
    oracle extensions in, um, Parrot BASIC.

    Personally, I think Oracle and Brainfuck is a match made in heaven.

    http://xrl.us/o2d

  Pirate guide
    Michal Wallace has now got Py-Pirate (The new name for Python on Parrot;
    Pirate has been promoted to being the name of the new Generic Code
    Generator) up and running using the Parrot calling conventions. He's
    also written a guide which explains how the code is laid out for those
    who don't know Python.

    http://xrl.us/o2e

    http://xrl.us/o2f

  TWEAKS
    Leo Tötsch is a man of many admirable qualities: Official Patchmonster
    to the Parrot process; far, far easier to mention every week than Leon
    Brocard; and damn fine company when sat in a Parisian café. He does,
    however, have a Dark Side and he showed it this week when he came up
    with the acronym TWEAKS (Takers Wanted -- Effort And Knowledge Sought).

    TWEAKS is Leo's list of things that need doing for which he's soliciting
    volunteers. If you want to help with the Parrot effort without
    necessarily having to dive into some of the deeper, scary areas, you
    could do lots worse than take on one or another of the requirements on
    this list. If nothing else you'd earn the gratitude of our friendly
    neighbourhood patchmonster.

    http://xrl.us/o2g

  Parrot gets a vital op
    Jos Visser sent in a vitally important patch to Parrot which added a new
    "fortytwo" op to Parrot. Nicholas Clark asked if it shouldn't really be
    the "what_do_you_get_if_you_multiply_six_by_nine" op. The thread went
    downhill from there.

    Parrot hackers are definitely worrying.

    http://xrl.us/o2h

  QUERIES
    Leo's Dark Side was on display again as he expanded QUERIES to
    "Questions about Unanswered Elderly/Recent Issues Eventually Solvable"
    and popped up a list of more or less Warnocked design issues. Dan came
    through with answers.

    http://xrl.us/o2i

  Resumable ops and exceptions
    Jos Visser asked if it would be possible to control what happened when
    certain operators failed; whether they threw exceptions or just returned
    undef for instance. Leo thought this could be done by installing
    suitable exception handlers. Leo noted that internal exceptions should
    only really be thrown from within opcode implementations rather than
    from the functions they call.

    http://xrl.us/o2j

  "assign" opcodes
    Following the earlier discussion of "set" and "assign" Leo has been
    working on making the "assign" op do the right thing. This sparked a
    little more discussion along the lines of 'what do "set" and "assign"
    imply in English anyway?'

    http://xrl.us/o2k

  Exec
    Daniel Grunblatt checked in the latest version of Exec, his tool for
    using the JIT at compile time to generate native executables, which now
    passes all the tests. As Nicholas Clark said, "Woohoo!". This means that
    Daniel has delivered all the deliverables for his Perl Foundation grant.

    http://xrl.us/o2l

  Calling conventions for variable-length parameter lists
    TOGoS asked for some clarification on dealing with variable length
    parameter lists, especially when calling functions in an unprototyped
    fashion. Frankly, I'm not quite sure what the issue is, but Leo and Luke
    Palmer seemed to get it.

    It's my gut feeling that Perl 6 function implementations are going to
    end up with two different entry points, one for prototyped invocation
    and one for an unprototyped invocation which will take a single array
    argument, extract parameters from it as appropriate to the function's
    prototype, do any runtime argument checking and then make a tail call to
    the prototyped entry point.

    http://xrl.us/o2m

  Why "new_pad *INT*"?
    Michal Wallace asked for some clarification about "new_pad", the opcode
    that creates a new lexical scratchpad. He thought that, 9 times out of
    10 you would want to create a new pad at the next lower depth from the
    current pad, but there's no way to automagically do that. Sean O'Rourke
    explained that, generally the compiler should keep track of the lexical
    depth of the current thing being compiled, so it shouldn't be a problem
    to use the right depth anyway.

    Those of us writing pure interpreters would still like to be able to do
    "new_pad -1", but I think we'll have to implement it ourselves.

    http://xrl.us/o2n

  struct Parrot_Lexicals; ArrayHash
    Leo commented that the current implementation of find_lex(by_name) does
    a linear scan over the list of lexical names. He thought that a better
    way would be to provide a list of lexicals plus a name hash where the
    hash values are indices into the list. He thought that such
    functionality might be handy as a general PMC, and proposed implementing
    a new PMC called ArrayHash, or SortedHash. Matt Fowles wondered what was
    wrong with simply using a hash, and Leo pointed out that some HLL
    compilers might well keep their own map of names->indices where known at
    compile time and use the numeric index directly.

    http://xrl.us/o2o

Meanwhile in perl6-language
    Things were surprisingly quiet. Maybe everyone's taking time to digest
    the Exegesis. Or maybe the Exegesis was such a model of clarity that
    everyone understood it perfectly.

  Macros and is parsed
    Brent Dax showed off an implementation of the "??::" operator (which
    actually turns out to be the "macro infix:?? (...) is parsed(...)"
    operator). Larry pointed out that it wasn't *quite* as simple as Brent
    had thought because of issues of precedence and making sure that any
    lexicals got declared in the appropriate scope.

    http://xrl.us/o2p

  Implicit parameter aliases
    Dave Whipp asked whether parameter names were taken into account during
    multiple dispatch, and whether the parameter names in a forward
    declaration had to agree with the names used when the sub was fully
    declared. Dan answered that parameter names aren't looked at during
    multidispatch, but there's been no answer on whether names have to agree
    between forward declarations and the implementation (but I'm guessing
    that they do).

    http://xrl.us/o2q

  "printf"-like formatting in interpolated strings
    Larry resurrected this old thread (from mid-June when he was indisposed)
    and then laid it to rest again with his usual style and grace. It's
    worth reading the whole thing I think, because it's a very succinct
    description of the kind of expressiveness and power that's inherent in
    what we already know about Perl 6.

    http://xrl.us/o2r

I want a Ponie!
    I promise that, as development of Ponie (the port of Perl 5 to Parrot)
    accelerates you'll see a summary of Ponie activity in this summary as
    well. However, almost all the traffic on the [EMAIL PROTECTED] mailing
    list has been about fighting Subversion. However, Arthur did post a mini
    status update at the end of July

    http://xrl.us/o2s -- Status report

Acknowledgements, Announcements and Apologies
    So, the countdown to moving to the North East is under way. We've just
    had an offer accepted in principle on a house in Gateshead so we have
    got to get this one on the market (and sold) sharpish. What giddy fun!

    Meanwhile, is it just me, or do we know enough about Perl 6 now that we
    could actually start implementing stuff? Admittedly, it'll be lots
    easier when Damian finishes Perl6::Rules, but Parrot's looking mature
    enough to host most of the behaviour we've seen described. I'd start
    hacking myself but... well, see above.

    Check out http://xrl.us/mt4 for more of my writing.

    As ever, 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, requests for consultancy, photographic
        and writing commissions, or offers on a four bedroomed, 400 year old
        house in Newark on Trent to [EMAIL PROTECTED]

Reply via email to