The Perl Summary for the week ending 20021215
    Hi, and welcome to the first summary prepared on my shiny second hand
    TiBook (no, it wasn't a gift from a grateful summary reader, it was
    bought from a friend who was upgrading, gifts from grateful summary
    readers are, of course, still welcomed).

    So, kicking off with perl6-internals

  Curses Life
    Or should that be "Curses! Life!"?

    Around the end of last week Leon "Namecheck" Brocard announced that he'd
    made use of the Native Call Interface to implement a version of
    life.pasm that used the curses library for drawing. Dan "Dan" Sugalski
    told Namecheck that he was really scary and muttered something about
    fixing up some of NCI's `register stomping' behaviour. Piers "The
    Summarizer" Cawley said that he'd suggested that Namecheck try getting
    Readline working next and then, once he'd got the zmachine loader and
    opcodes up and running, Dan would be able to take a well earned rest by
    playing through the Zork adventures without leaving Parrot.

    http://makeashorterlink.com/?F2D3650D2

  "logical_not" issue.
    The discussion of how "logical_not" should work rolled over from last
    week with David "Ruby" Robins mounting a spirited defence of simple
    booleans and successfully convincing Dan of his righteousness.

  Tinderbox Summary
    Steve "Release Boy" Fink got tired of `endlessly clicking on tinderbox
    links' so he wrote something to do it for him, summarized the results of
    his investigations to the list and wondered if fixes for the problems
    were in hand. A few of the machines in the tinderbox had their parrot
    directories zapped and reinstalled before starting their round of
    rebuilds once again, but there wasn't much reporting back of the success
    or failure of these operations.

    http://makeashorterlink.com/?O1E3230D2

    http://foxglove.dnsalias.org/parrot/

  IMCC and Labels
    Leopold "The Patchmonster" Tötsch warned that, with the next set of
    changes the previously informal rules about label naming would become
    formal, enforced rules.

    http://makeashorterlink.com/?P5F3420D2

  Buffer/PMC unification
    The Patchmonster announced that he would soon be starting on unifying
    Buffers and PMCs into a common Parrot Object (or PObj) and gave a
    thumbnail sketch of the changes he expected to be making. Pretty much
    every subsequent message in this thread came from the Patchmonster,
    though Dan chimed in at one point with a correction. The Patchmonster
    told him he was wrong and carried on as before. Way to go Patchmonster.

    http://makeashorterlink.com/?T204540D2 -- Start announcement, Monday

    http://makeashorterlink.com/?E314230D2 -- Done announcement, Wednesday

  A work list! (Coming soon)
    Dan announced that he was working on compiling a list of things that
    need doing and asked for suggestions from everyone of what they wanted
    to see. Gopal "Five" V wanted Object support; Nicholas "Not Nick" Clark
    offered a longish list including such obvious items as "a pony" and
    "Quantum Larry (writing the apocalypses in parallel universes in
    constant time)" as well as a long list of rather more practical requests
    (see the link for details); the Patchmonster had a list too.

    http://makeashorterlink.com/?R224210D2

    http://makeashorterlink.com/?S534530D2 -- (Not Nick)'s list

    http://makeashorterlink.com/?N444210D2 -- The Patchmonster's list

  Naive ".const" directive for IMCC
    Gregor "Jako" N. Purdy had a crack at adding a ".const" directive to
    IMCC and sent his patch to the list (he didn't commit the change because
    he doesn't `own' IMCC). The Patchmonster thanked him and set about
    implementing something based on Jako's patch and his recent lexical
    changes and using the same syntax.

    http://makeashorterlink.com/?C254110D2

  Parrot v.0.0.9 feature freeze
    Release Boy announced that 2002-Dec-14 at 20:00 GMT would see a feature
    freeze leading to a release on the following Wednesday. He also said
    that he'd be compiling a list of changes between 0.0.8 and 0.0.9 and
    noted that the release would still go out even if the tinderbox wasn't
    completely green, but that he'd greatly appreciate improvements in that
    area. Tanton "This nicknames in the summary thing started off as a nice
    idea, but now it's getting silly so I'll stop" Gibbs noted that the
    `multiarray' problem that was causing problems in the tinderbox seemed
    only to fail with --gc-debug turned on and set about investigating it.
    Work in this area is ongoing.

    Jürgen Bömmels asked that patch #18379 get added before the freeze as it
    brought languages/scheme much nearer to being a real functional language
    and Dan obliged.

    The feature freeze went ahead on time, the only patches allowed are
    bugfixes and warnings eliminations until 0.0.9 is released.

    http://makeashorterlink.com/?U364110D2

    http://makeashorterlink.com/?G574510D2

  Properties
    Dan has added support for monkeying with a hash of PMC properties. Well,
    he thinks he has, but he hadn't written any tests so he wasn't entirely
    sure. Simon Glover promptly found a bug and Leo patched things up. Simon
    also wondered if the fact that hash keys are passed by reference is a
    bug or a feature. Feature says Dan.

    http://makeashorterlink.com/?P284420D2

  More Jako changes
    Gregor N. Purdy checked in a huge rewrite of the Jako compiler, which
    has been ported to IMCC. Apparently there's a fair bit of cruft left in
    the jako directory, but there's lots of cool stuff in there too. Gregor
    then announced the addition of native calls via thunks (what is a thunk?
    anyone?) It wasn't quite working when he first announced it. Leo
    narrowed it down to a GC bug, the effect of which he minimized but
    apparently there's was issue with Parrot's 'toCstring' function which is
    now resolved, but which will require changes in a host of places to fix
    properly.

    http://makeashorterlink.com/?B194510D2

    http://makeashorterlink.com/?S3A4410D2

  CVSMonitor
    Robert Spier pointed at the CVS Monitor installation on perl.org and
    recommended that people check it out. Dan was impressed (So am I, it's
    very spiffy) and wondered if there was somewhere which gathered all such
    useful links together, and Brent Dax pointed out just such a place.

    http://makeashorterlink.com/?G1B4520D2

    http://www.parrotcode.org/resources

Meanwhile in perl6-language
  Right-to-left pipelines
    During the discussion of "purge" (which became "part") Stephane Payrard
    changed the subject to 'right-to-left pipelines' and proceeded to make
    the unsupported assertion that left to right pipelines were a good idea
    and wondered what syntactic tricks would be needed to support them. (I'm
    afraid I'm not exactly impartial on when it comes to summarizing this
    thread; personally I think that left to right pipelines supported via
    anything more than "@ary.grep(...).map(...).sort(...)" are a really bad
    idea, especially if the tools needed to support them mean a change in
    the current right to left syntax.)

    Luke Palmer thought there might be something in the idea; apparently
    he's been playing with Mathematica which has similar functionality and
    which he found to be useful and Arcadi Shehter liked the idea too. Adam
    D. Lopresto pointed out that, with some appropriate methods on the
    "Array" class that left to right pipelines could be handled with a chain
    of method calls. Damian pointed out that Adam's proposed behaviour
    didn't quite work because method calls needed to have their argument
    list in brackets. Simon Cozens started a digression into the way Ruby
    does this sort of thing by wondering if there was any way to get 'round
    that when passing a block. Damian thinks not. (Essentially it's to do
    with when things are known. Parsing happens at compile time, at which
    time Perl generally doesn't know the class of an object on which a
    method is being invoked, so it can't know the prototype of the method,
    so you can't omit parentheses around the method arguments, param
    checking only happens at runtime when methods are involved.)

    Somewhere in all this Damian pulled "then" out of his bag of tricks:

       @out = @in then map { foo }
                  then grep { bar }
                  then sort { $^a <=> $^b };

    Ralph Mellor suggested binary "->" possible syntax for left to right
    pipelines.

    http://makeashorterlink.com/?V5C4120D2

    http://makeashorterlink.com/?E1D4210D2 -- Ruby Digression starts here.

    http://makeashorterlink.com/?C4E4230D2

    http://makeashorterlink.com/?A1F4210D2

  Purge: opposite of grep
    Another thread that ran over from last week (Sadly, in the real world,
    threads don't start neatly on a Monday and end on a Sunday night. Ah
    well.) Ken Fox had asked Damian to explain some stuff about his proposed
    "part" mechanism so Damian provided an explanation. Later in the thread,
    Smylers said something that Damian deliberately requoted a huge chunk of
    "because it's so very right".

    http://makeashorterlink.com/?R12D21AB2

    http://makeashorterlink.com/?W605220D2

    http://makeashorterlink.com/?P215120D2 -- Damians requote of the
    previous link

  Hashkey context/Str context
    It appears that the `purge' thread can be thought of as the driver
    thread for this week. In this subthread Dave Storrs asked for
    confirmation that, in Perl 6 hash keys could be any datatype and that
    one should not expect them always to be smashed into a string. The
    answer is that the default will be to downcase everything to a string in
    a hashkey context, but that you would be able to declare different sorts
    of hash (e.g. "my %hash is keyed(Object)") and get different hashkey
    behaviour.

    Dave went on to wonder if all this discussion of typed declarations
    meant that type declarations was going to be required. Answer: Hell no,
    type declarations are there to allow the compiler chances for
    optimization and for setting up multiply dispatched functions and
    methods (that's my reading of it anyway).

    http://makeashorterlink.com/?G325260D2

  Partially Memoized Functions
    Smylers wondered about writing a function that would be partially
    memoized, giving as an example a function for getting the number of days
    in a month where, he argued, things would only really need to be
    memoized for the 'February' calculation. It was thought that, in the
    particular example given, there wasn't really much point in not
    memoizing the whole thing. Then Damian Conway reached into his Big Bag
    O' Perl 6 tricks and came up with a lexically scoped, named, cached
    subroutine, which made Adam Turoff gasp and stretch his eyes, and wonder
    if that would work. Answer: Yup, named subs, even lexically scoped ones
    are only compiled the once (and they're not closures).

    http://makeashorterlink.com/?D135610D2

    http://makeashorterlink.com/?V245120D2

  Usage of \[oxdb]
    Nicholas Clark played the `ask an awkward question' game and wondered
    what the Perl 6 "" parser would do when presented with what appears to
    be a $() interpolation sequence inside some other double quoting
    construct, and offered three options. Luke Palmer thought that the first
    of Nicholas's options was what would happen because "The Perl 6 parser
    is one-pass now". Dan wasn't sure that the parser is one-pass. Joseph F
    Ryan thought that it should be, but added the caveat that it doesn't
    actually exist yet...

    http://makeashorterlink.com/?X155250D2

  Stringification of references
    In another continuation (reopening) of an old thread, Michael Lazzaro
    asked for a decision on how References were to be stringified. And
    didn't get one. However, the thread morphed into:

    http://makeashorterlink.com/?I265630D2

  Comparing Object Identity
    This thread looks set to run and run. Luke Palmer pointed out that, in
    many OO languages there's a distinction between "equal" and "same", and
    wondered if Perl needed another equality operator, proposing "===" for
    the task. Michael Lazzaro came down on the "Yes" side, and suggested
    ":=:" as another option. Michael Schwern thought that this would be
    better handled with a method, proposing "sameas" for the task, and Dan
    Sugalski agreed with him. Damian pointed out that that's what the
    universal "id" operator was for; you should just be able to do "$obj1.id
    == $obj2.id". But John Siracusa reckoned that "id" was badly named, as
    it was the kind of method name that would be more useful for user code.

    I'm afraid that the waters here are still rather muddy, but it looks to
    me like we're heading in the direction of a method on Object to
    determine object identity.

    http://makeashorterlink.com/?A175230D2

    http://makeashorterlink.com/?D185210D2 -- I'm not sure how this
    relates to the subject at hand, but it's a good Larry moment.

  Everything is an Object
    Michael Schwern reminded everyone that, in Perl 6, everything is an
    object and pointed out some of the consequences this has for language
    design (chiefly, that it has the potential to "stem the tide of new
    grammar"). As with most stuff from Schwern's cursor his post is worth
    reading, I commend it to you. Larry commented that "About the only
    things that have to be truly built-in to Perl 6 are lambda and the regex
    engine. Everything else is negotiable." and noted that he counted method
    dispatch under "lambda".

    For some reason this thread led back to the 'left to right pipelines'
    thing, during which Piers Cawley got rather wound up.

    http://makeashorterlink.com/?O295150D2

In Brief
    Gregor is looking at adding native calls to Jako and thought he needed
    changes to IMCC to get things working, but the Patchmonster pointed him
    toward a workaround.

    Leo Tö checked in some changes allowing gdb to inspect parrot registers
    inside JITted code (with some caveats about N and I registers). Way to
    go Leo.

    Simon Glover made Nicholas Clark a happy man by checking in an
    interpreter.c bugfix that made at least one FreeBSD box a happier
    computer.

    David Whipp wondered if it'd be possible to do *value* based multi
    dispatch. Adam Turoff thought that it'd be an accident waiting to happen
    while Damian said that it was being considered and that "we're still
    weighing our courage against our sanity on that idea. ;-)"

    Rich Morin wondered about using regular expressions as sequence
    generators. Most people seemed to think it wasn't such a good idea in
    the general case and Luke Palmer suggested using junctions, which appear
    to fit the bill rather neatly.

Who's Who in Perl 6?
    Who are you?
        Andy Wardley

    What do you do for/with Perl 6?
        Not a great deal, just hanging around, mostly lurking, occasionally
        asking stupid or frequently asked questions. I designed the Parrot
        logo (which I'm rather pleased with), but it's hardly a monumental
        contribution to getting Parrot or Perl 6 out the door.

    Where are you coming from?
        Guildford, England. I've been programming computers for about twice
        as long in my life as I haven't (answers on a postcard). Started
        with a ZX81 and things went downhill from there, through assembly,
        C, C++ and finally ending up happy and (mostly) content at Perl's
        door (although I have been known to visit Ruby's house on occasion).

    When do you think Perl 6 will be released?
        On a tuesday, shortly after lunch.

    Why are you doing this?
        Because you asked us to send you our answers. Oh, you mean why am I
        doing Perl 6? Well, like I say, I'm not really doing much right now.
        I love Perl and I'm excited to see it evolving (or should that be
        revolting?). But mostly I'm just hanging around with the smart kids,
        hoping some of it rubs off on me.

    You have 5 words. Describe yourself.
        Someone who needs more than 5 words.

    Do you have anything to declare?
        Nothing officer, I've been in Amsterdam on business, honest.

Acknowledgements
    Once again this summary has mostly been written in a first class
    carriage travelling between London and Newark, usually behind schedule
    (a bit like the summaries in fact).

    Proofreading was handled by a spell checker and me. I really should stop
    running so close to my self imposed deadlines that I don't have time to
    get the summary looked over externally.

    Thanks to Andy "Brain out of control" Wardley for his questionnaire
    answers this week. My answer queue is down to two sets of answers, so if
    you think you should, please answer the questions and send your answers
    to <mailto:[EMAIL PROTECTED]>

    And now, the chorus:

    If you didn't like the summary, what are you doing still reading it? If
    you did like it, 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 6.

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

    *   Send feedback, flames, money and or a decent pair of headphones to
        <mailto:[EMAIL PROTECTED]>

    The fee paid for publication of these summaries on perl.com is paid
    directly to the Perl Foundation.

Reply via email to