This week on Perl 6 (8/26 - 9/1, 2002)
by Piers CawleySeptember 01, 2002
Well, it has been a week. Damian came to London and made our heads spin; perl6-language erupted in a flurry of interesting, high signal/noise threads; Parrot reached its 0.0.8 release; Larry made many of his wonderfully unexpected but obviously right interjections and the world kept on turning.
So, we'll kick off with perl6-internals as usual.
DOD etc
The 'elimination of garbage collection hand waving' thread continued as Nicholas Clark asked a hard question about garbage collection and dead object detection (DOD). As far as Nick could tell, it seems that 'if we have unrefcounted "deterministic destruction" objects somewhere freely in the GC system, then we'll be needing a DOD run after every statement' and he noted that 'all ways of doing deterministic destruction seem to have considerable overhead.' Sean O'Rourke wondered whether we could use a hybrid 'full GC + refcounts where needed' scheme, but Juergen Boemmels pointed out that refcounting would be contagious. Anything that contained a reference to a refcounted object would need to be refcounted in its turn.
|
Related Reading
Perl in a Nutshell, 2nd Edition |
Meanwhile, Mike Lambert wondered why we needed to promise deterministic destruction in the first place and proposed a couple of schemes to deal with the canonical 'filehandle' case. Sean O'Rourke and Steve Fink both came forward with cases where deterministic destruction proved useful, and where Mike's scheme didn't really work. And that's where the thread came to rest. I have the feeling that it, or a thread like it, will be back.
Dynamic Keys
Tom Hughes, who has been doing good work on keyed access wondered about dealing with dynamic keys, and proposed a way forward. Dan asked whether Tom had looked at the proposed ops in PDD06, and pointed out that dynamic keys didn't necessarily need to go the whole PMC hog. 'They're our internal structures -- we can screw with them as we need :)'. Tom pointed out a few issues with the PDD06 op set, and proposed a few more ops with a (hopefully) consistent naming scheme. So far he's had no answer to the questions he raised in that post.
Perl6 Test Failures
Steve Fink wondered about all the test failures he keeps seeing for Perl 6; he doesn't want to go trying to make a language neutral regex engine play nicely with the Perl6 engine when that engine is in such a state of flux. Sean O'Rourke suggested nailing down some calling conventions and then both teams could code to those conventions. Steve pointed out that, so far, he knows of at least five attempts at a regex engine in parrot. Leopold Toetsch suggested that Steve try the tests again, forcing a grammar rebuild, and the test failures got all better.
Regex status
On Wednesday, Dan wondered where we were with Apocalypse/Exegesis 5 compatible patterns/rules/regexes. Sean O'Rourke told him. (Answer: Still some way to go, but making good speed.)
Counting down to 0.0.8
On Thursday, Jeff Goff posted his timetable for 0.0.8, 'Octarine' release of Parrot, complete with a 25-hour code freeze. Markus wondered whether using a GMT timetable might be more friendly for everyone who wasn't on the East Coast of the United States. Parrot actually saw release Monday, Sept. 2, which is slightly outside the scope of this summary, but I'll let it sneak in anyway.
An 'Oops' Moment
Leopold Toetsch found an interesting bug with the GC system
interacting with initialization. examples/life.ar.p6 is a Perl6
implementation of Conway's Life, which has a rather lengthy
initialization phase, after which it checks the @ARGS array, which
is conventionally placed in P0 at startup. But there's a catch. By
the time it comes to make the check, @ARGS has been garbage
collected. Peter Gibbs posted a quick fix patch, and Mike Lambert
stuck his hand up to being a 'lazy bum,' but reckoned that Steve
Fink's fixes should solve the problem.
Various changes to IMCC
Whilst 'idly toying' with IMCC, Steve Fink made a bunch of speculative changes, bundled 'em up in a patch and offered them to the list. I'm not sure what people thought of the changes, but the thread morphed into a discussion of generating conditional makefiles and making sure that IMCC and the other tools needed to get the Perl6 compiler working were as portable as possible. Mike Lambert pointed out that it may make sense to have the files generated by bison/flex checked directly into the repository, since then those tools wouldn't be needed except by people who go messing with the grammar.
Concatenation Failing
Leon Brocard (phew, I was worried I was going to have to run his
questionnaire this week) found a bug where concatenation fails
occasionally, leaving no clues as to why. He attached some sample code
that illustrates the problem. Peter Sinnott noted that Parrot seems
to be getting confused about the length of the strings involved. Meanwhile, Peter
Gibbs offered a patch and Mike Lambert reckoned it fixed a
bug in his code, but couldn't for the life of him work out why. Peter
reckons it has to do with unmake_COW resizing the allocation and
causing confusion elsewhere. I get the feeling that what we have now
is a 'symptomatic' fix in search of a fix for an underlying issue. But
I'm just a summarizer.
Markus Laire found what he thinks might be another bug, but I've no idea if it's fixed by Peter Gibbs' patch.
IRIX64 alignment problem
Steven McDougall chased down a bug causing t/pmc/perlhash.t to throw a bus error, but wasn't at all sure how to go about fixing it, and asked for advice. Bryan C. Warnock offered a few pointers, as did Peter Gibbs, but we don't have a fix yet.
Meanwhile, in perl6-language
Prototypes, grammars and subs, oh my!
Thom Boyer wondered what while's signature would be. He'd
considered sub while (bool $test, &body); and sub (&test,
&body); but neither really fit. Larry agreed and offered
sub while (&test is expr, &body);
and then, reaching deeper into his bag of tricks, he pulled out the wonderful/scary
sub while (&test is rx/<expr>/, &body);
(Think about that for a moment. What is proposed that you'll be able
to specify a grammar for your functions argument list, which is
definitely something that made me sit up and take notice.) Damian
sat up and took notice, too, offering some refinements and doing some
thinking aloud. Damian suggested that maybe the prototype should look
like sub while ( &test is specified(/<Perl.expr>/), &body);
>>. Damian also suggested blurring the line still further between
statements and expressions by having the likes of C<for> return a
value, and had some thoughts on multimethods. Trey Harris also offered
some more comments on multimethods.
All of which leaves me looking forward with bated breath for Apocalypse 6.
Quote of the thread: "The whole point of making Perl 6 parse itself with regexes is to make this sort of stuff easy." -- Larry


