The Perl 6 Summary for the week ending 2004-04-04
    Wednesday? Why did I leave it 'til Wednesday to write the summary? I
    must have *some* reason. Or maybe not. I'll give fair warning that I
    won't be doing a summary for next week though, what with Easter and
    everything, but you'll get a fortnight's summary the week after, because
    I'm good to you like that.

    We'll start this week's summary with perl6-internals.

  MMD vtable functions in bytecode
    Dan had announced that he was working on adding parrot bytecode support
    for multimethod dispatch, and outlined how they'd be used and got
    semi-Warnocked.

    The discussion got going this week, Leo Tötsch was unsure about some of
    Dan's implementation choices. In particular, he wondered if MMD subs
    should use PMCs rather than the simple function pointer that Dan had
    used. Dan thought not.

    http://tinyurl.com/3do7z

  Behaviour of PMCs on assignment
    The discussion of what to do when assigning to PMCs continued. The issue
    is complicated because we are trying to be friendly to multiple
    languages (though, as far as I can tell, the really problematic issue is
    Perl Scalars; most of the other languages that spring to mind have
    variables that are 'simple' pointers to objects; Perl Scalars can hold
    (seemingly) a million and one different things, potentially all at
    once). TOGoS argued that, as things stand there's a disjunction between
    the way (say) integer registers work and the way PMC registers work.
    With Integer registers, if you do

        $I1 = $I2 + $I3

    then $I1 gets a 'new' integer; there doesn't need to be a preexisting
    integer. However, if you were to do:

        $P1 = $P2 + $P3

    what actually happens (assuming we're using straightforward PMCs
    here...) is more like:

        $P1.value = $P2 + $P3

    In other words, you need a preexisting $P1. Leo agreed with TOGoS's
    argument, but worried that implementing it would blow core size up to an
    insane value. Dan didn't agree with TOGoS though, but I'm afraid I
    didn't quite follow his reasoning (probably because I'm being dumb this
    morning).

    http://tinyurl.com/24yaw

  In which your Summarizer asks dumb questions
    In an extended moment of stupidity, Piers Cawley asked why we had
    distinct register and user stacks. Leo explained it to him, very
    politely I thought.

    http://tinyurl.com/3x77x

  Stalking the wily Garbage Collector bug
    Jens Rieks's *projet du jour* -- an EBNF parser in Parrot -- tweaked a
    garbage collection bug so he posted appropriate debug traces and Leo set
    to work on it. He didn't get it working fully, but it takes longer to
    crash now (but it crashes in the same bit of C code). Jens thinks it's a
    problem with Parrot's handling of strings.

    http://tinyurl.com/3eqlh

  New SDL Parrot bindings underway
    That stalwart of Portland.pm, chromatic, announced that he's in the
    process of porting the existing SDL Parrot bindings to use our shiny new
    Object system. Jens Rieks wondered why he was prefixing his method names
    with underscores (you only need underscores for globally visible
    functions, methods can have straightforward names). Tim Bunce wondered
    why chromatic wasn't using nested namespaces. Leo pointed out that
    nested namespaces haven't been implemented just yet.

    http://tinyurl.com/yrue9

  Some new classes
    Dan checked in some stub code for PMCArray and StringArray. Eventually
    they'll be auto-resizable, PMC or String only arrays, but right now
    they're simple wrappers for PerlArray. He suggested that rewriting them
    so they were real, efficient arrays would be a Good Thing (and, I
    suggest, a relatively gentle introduction to Parrot hacking if anyone
    reading this is interested.)

    Jens Rieks offered up a patch for his data dumper so it could take them
    into account, which Dan applied.

    http://tinyurl.com/29gsq

  Points of focus
    Dan went all Managerial on our collective donkey and posted a nice
    bulletted list of things that need sorting out for a 0.1.1 release. The
    general thrust of the message is bug fixing and documenting, which is
    good.

    http://tinyurl.com/35mor

  Fun with non deterministic searches
    One of the canonical illustrations of things to do with continuations is
    non deterministic searches. Imagine that you could write

        $x = choose(1,3,5,9)
        $y = choose(1,5,9,13)

        assert $x * $y == 15
    
        print "$x * $y == ", $x * $y, "\n"

    and have "3 * 5 == 15" printed out. (Okay, so in Perl 6 you're going to
    be able to do that with junctions, but this is about an underlying
    implementation). Piers Cawley translated a simple non deterministic
    search algorithm from scheme to Parrot and posted the (initially
    failing) code to the list and pointed out that, even if he tweaked IMCC
    to generate full continuations instead of RetContinuations and turned of
    garbage collection, Parrot fell over with a bus error.

    Once he'd explained how it worked (in a post made on April Fools' Day no
    less) and Leo had wrapped his head round it, the work went on to make it
    work. It turns out that Parrot had a few too many assumptions about how
    call stacks would work (starting with the assumption that you could
    simply reused a stack frame once you'd returned through it; in the
    presence of a full continuation you have to let stack frames be garbage
    collected). Leo fixed things so that you can now make a 'full'
    continuation simply by cloning the current continuation in P1 and there
    should only be a performance hit for the call chain that leads to the
    continuation (and that hit should be a one time cost you pay when
    cloning the continuation). Way to go Leo.

    Oh yes, and "$P0(...)" doesn't throw a syntax error in IMCC any more.

    http://tinyurl.com/2275y

    http://tinyurl.com/2vdy2 -- Continuations made simple

  Collision of running jokes
    Once upon a time, I endeavoured always to mention Leon Brocard in these
    summaries, which got increasingly difficult (not to mention tortured) as
    his posts to the mailing lists became more and more infrequent. However,
    on the first of April (aka the oldest running joke in Christendom) he
    posted a couple of patches. Sadly, we didn't manage to get a triple
    running joke collision, for it was Leo Tötsch and not chromatic who
    applied the patches.

    http://tinyurl.com/2gqjz

  Stream library
    Okay, if Leo Tötsch is the Patchmonster, then Jens Rieks shows every
    indication of becoming the Libmonster. Not content with implementing
    Data::Dumper in pure Parrot, he's working on an EBNF Parser and, on
    Friday he released his first working development version of a Stream
    library which wraps all sorts of sources of strings behind a simple
    interface (suitable for parsers, for instance). Leo had a few issues
    with some of the implementation choices that potentially make it a
    little tricky to subclass streams (and then the week ended, but a little
    bird tells me that Jens took these comments on board and redid the
    library).

    http://tinyurl.com/3cwfj

  Subroutine calls
    Leo announced that he's added a "pmc_const" opcode to parrot. The idea
    being that, in general subroutines don't vary that much so instead of
    having to call "newsub" every time you make a function call (IMCC
    usually does this), you would instead fetch a preexisting Subroutine PMC
    from the PMC constant pool.

    http://tinyurl.com/yvzq5

  Named attribute access
    In a very short (but useful) post, Leo announced that you could now do

        getattribute $P0, anObject, "attribute"
        setattribute anObject, "attribute", $P0

    For which I personally thank him profusely.

    http://tinyurl.com/2rom6

Meanwhile, over in perl6-language
    Things were pretty quiet. But not utterly quiet

  Default Program
    Extrapolating from the general Perl principle that, in the absence of
    any indication otherwise, Perl should use a sensible default, Brent
    Royal-Gordon proposed that Perl 6 should extend this principle to entire
    programs. He proposed that, when the whole program was an empty string,
    Perl 6 should substitute a sensible default program. Based on extensive
    research on the Internet and printed Perl documentation, he proposed
    that the default program should be:

        print "Hello world!\n"

    Apart from those who quibbled with his punctuation, the general response
    was positive. However, always one to take a good idea that one step
    further, Austin Hastings suggested that a more sensible default would be
    to have a naked invocation of perl launch an editor (or other script
    development environment). He proposed that, to this end, the Parrot team
    should be focusing on implementing elisp in Parrot rather than worrying
    about winning the Piethon.

    Richard Nuttall thought that Austin hadn't gone far enough, he proposed
    that Perl 6 should load the DWIM::AI module and provide as output the
    script you were intending to write.

    A quick glance at the calendar was in order at about this time.

    http://tinyurl.com/2d57m

  Can colons control backtracking in logical expressions?
    Gleefully ignoring Larry's stricture that "I [Larry] get the colon.",
    Austin Hastings wondered about using "::" to mean something special in
    conditional statements. Quite what his proposal offered over and above

        if specific_condition() ?? detail() :: general_condition()
          { ... }

    perplexed Damian somewhat (though he did forget that "... ? ... : ..."
    has become "... ?? ... :: ..." in Perl 6. Elsewhere in the thread, Larry
    reminded everyone that Perl 6 will not be confusing statements and
    expressions.

    http://tinyurl.com/25sgu

Announcements, Acknowledgements, Apologies
    No announcements this week, apart from the one earlier about the next
    summary being due in two weeks because of Easter.

    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] or, if you find yourself at Miskin Folk
    Festival this Easter weekend, you could always buy me a drink.

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

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

    http://www.miskinfolk.cjb.net/ -- Miskin folk festival

Reply via email to