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.