To see what is currently happening visit http://www.perl6.org/
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
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.
groups.google.com[63.120.19.221]
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.
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.
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.
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.
groups.google.com -- Start announcement, Monday
groups.google.com -- Done announcement, Wednesday
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.
groups.google.com[63.120.19.221]
groups.google.com -- (Not Nick)'s list
groups.google.com -- The Patchmonster's list
.const directive for IMCCGregor "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.
=head 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.
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.
groups.google.com[63.120.19.221]
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.
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.
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.
groups.google.com -- Ruby Digression starts here.
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".
groups.google.com -- Damians requote of the previous link
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).
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).
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...
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:
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.
groups.google.com -- I'm not sure how this relates to the subject at hand, but it's a good Larry moment.
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.
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.
Andy Wardley
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.
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).
On a tuesday, shortly after lunch.
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.
Someone who needs more than 5 words.
Nothing officer, I've been in Amsterdam on business, honest.
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:5Ws@bofh.org.uk
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:
The fee paid for publication of these summaries on perl.com is paid directly to the Perl Foundation.