The Perl 6 Summary for the week ending 20021027
You may have noticed that this summary is late. Um... [looks sheepish,
shuffles feet], the dog ate my homework. I did a tiny bit of
procrastination at the beginning of the week and then got totally
overtaken by events involving failed AC adaptors and general confusion.
Sorry folks, it will probably happen again, but hopefully not in the
near future.
So, kicking off, as is customary, with perl6-internals before getting
down to attempting to summarize the monster that was perl6-language:
C# and Parrot
The dialogue with Rhys Weatherley and Gopal V from the DotGNU project
continues apace, mostly to do with clarifying what C# needs in the way
of datatypes and the like. It appears that Leon Brocard is the go to guy
if you need to know the exact details of almost anything in a language
spec. Maybe he's just really good with Google.
Gopal V wondered if there was someone involved in p5i who would mind
acting as a liaison with the DotGNU people, who could give them a heads
up when, say, the packfile format changed. Leopold Toetsch wondered what
sort of changes were potential C# breakers, as there were probably
things that we thought of as `internal' that the C# team could be
depending on. Leo also thought that the liaison person should probably
be Dan.
http://makeashorterlink.com/?K57E12E42
Scratchpad confusion
At the end of last week, Allen Short pointed out some discrepancies
between the implementation of scratchpads and the description of them in
PDD6. John Sillito reckoned that PDD6 was waiting on a rewrite from Dan,
especially where Scratchpad PMCs were concerned as there were a couple
of different patches waiting on Dan's say so. Dan also offered some
clarification, but hasn't ruled on the Scratchpad PMCs yet.
http://makeashorterlink.com/?B58E25E42
Help! Bugs! Crawling all over me! OR The road to 0.0.9
Steve Fink wants the GC bugs ironed out before he goes adding much in
the way of new features, and he wants to start putting together a 0.0.9
with working GC too. To that end he deliberately broke all the tests by
turning GC_DEBUG on for tests. There's a certain amount of cleverness
involved in how he did this; read his post if you're interested. Peter
Gibbs found what he thought was a fix for a couple of the failures and
pointed to the possibility of a fundamental problem in MultiArray as the
culprit for the remaining failure. Steve applied this patch with much
rejoicing, and then came up with a trial patch that seemed to fix the
multiarray triggered failure. This patch had not been finalized by the
end of the week.
Steve also kicked off discussion of the forthcoming 0.0.9 release, when
he posted his list of prerequisites and sparked off a decent amount of
discussion of various points. Steve's overarching goal for this release
appears to be 'bug reduction and general consolidation'.
http://makeashorterlink.com/?N19E21E42
http://makeashorterlink.com/?S2AE12E42
Keyed ops, the return.
I think it's safe to say that some people aren't entirely happy with
keyed ops as they stand now in Parrot. The week before, Leopold Toetsch
had written a proposal for keyed ops. This week he supplied a proof of
concept patch. J�rgen B�mmels liked it but Dan took a little more
convincing. I'm not sure he is entirely convinced yet, but he's willing
to live with it.
http://makeashorterlink.com/?U5BE62E42
64-bit ints and non-capable hardware
Dan announced that he was about to bite the bullet and declare that
INTVALS have to be 64 bit integers and wanted to know of any (plausible)
platforms that have neither native nor emulated 64 bit integers. Martin
D Kealey pointed at what sounds like a scary proposal from C99 involving
declarations and clever compilers and wondered if it might be a way
forward for parrot. Rhys wondered how well the idea would play with
something as dynamic as Parrot and the languages expected to run on it,
but Martin didn't seem to think it would be much of a problem.
http://makeashorterlink.com/?W1CE23E42
http://makeashorterlink.com/?Y1DE23E42
Configuring and DOD
Erik Lechak couldn't get the latest parrot to build on WinXP. Josh
Wilmes diagnosed a problem with the way the configuration tools probed
for stack direction, and patched things so that stack direction
detection was done at runtime once more. Jason Gloudon, who had moved
the detection phase out into configuration time wasn't sure that this
was a good idea 'cos it would lead to a performance hit in the stack
walking code. Nicholas Clark, with his clever head on, came up with
three different ways of doing things at runtime without a performance
hit, and Dan blessed the third choice.
http://makeashorterlink.com/?M5EE21E42
Execute in place?
Rhys Weatherley has been taking a look at our packfile format code, and
thinks it could be improved by designing the format in such a way that
it can be "mmap"ped into a block of memory and executed immediately, as
opposed to the way parrot currently does it, which involves moving stuff
around in memory before starting execution. Dan said that that's how
things were originally done, and if it wasn't still possible then that
was a bug.
http://makeashorterlink.com/?F2FE24E42
Copyright notices and license stuff
Towards the end of the week, Dan announced that he was about to
straighten out the copyright and licensing situation. As a first step,
would be marking everything in the core as Copyright YAS. It looks like
Parrot itself will be moving to an MIT style license `Over no objections
whatsoever from the FSF'.
If you've made any contributions to Parrot's code base then you've
probably already been contacted, but if you haven't and have an
objection, you should contact Dan.
Most of the discussion of this happened in the next week, and I'll
return to it in my next summary, but response was generally favourable
following some clarifications from Dan.
http://makeashorterlink.com/?M20F54E42
Allow a NULL interpreter in "sprintf" like functions
J�rgen B�mmels sent in a patch which allowed the use of a NULL
interpreter in "sprintf" like functions. Leo Toetsch applied it, but
wondered if it was actually the Right Thing. Dan seemed to think that,
in the long run, it probably wasn't and that, if something went horribly
wrong before an interpreter got properly set up then it was probably
best to use the standard library functions.
http://makeashorterlink.com/?O21F12E42
http://makeashorterlink.com/?E22F54E42
Draft sketch of bytecode generation
Dan offered a `*very* sketchy' draft of his thoughts on what we need
from our bytecode generation system. Initial reaction seemed positive.
http://makeashorterlink.com/?Q23F52E42
Meanwhile, in perl6-language
Won't someone *please* think of the summarizer?
There were around 150 messages in perl6-language this week. The *vast*
majority of them discussing the Perl 6 built in operator list. It all
started weeks ago, when Damian wanted "|", "&" and
"the_as_yet_unnamed_xor_operator" as superposition generating operators.
But that meant we'd need somewhere else to put the bitwise operators.
And people like "^" as xor, but that's not very possible because of
hyper ops. And *nobody* likes "_" as a concatenation operator. It's all
got very complicated.
However, in answer to a summarizer's prayer, Michael Lazzaro has taken
to posting a scorecard of his understanding of what the current list of
built in ops is. (A list of diffs between these would be interesting to
see...). Things that appear to be set in stone:
* "~" is the new "_", which was the new "." and which nobody liked.
* "~~" is the new "=~". (Otherwise "=~" -> match, and "~=" -> string
append could get somewhat confused...) "!~" stays the same.
* "|" and "&" make "any" and "all" type superpositions, respectively.
Damian has an article on why superpositions are such a good idea
forthcoming for perl.com. The phrase `in constant time' will probably
not be used.
* Nobody has any idea what xor will end up as.
* Some people are worried that changing things too radically from old
Perl/Algol type syntax will make for a harder learning curve. Other
people tend to think that not many programmers use bitwise ops in Perl
at the moment, so the change shouldn't matter too much.
* It's a real shame that so many Unicode characters are so hard to type.
Here's a list of Michael's various opcode lists. They're usually good
entry points to the discussion. (Which is kind of fascinating...)
http://makeashorterlink.com/?Q24F12E42
http://makeashorterlink.com/?B25F14E42
http://makeashorterlink.com/?R26F21E42
Character properties
Luke Palmer wondered if we were planning on having properties on
individual characters on a string; something he felt was an essential
feature. There was a certain amount of debate about the use of the word
`essential' in this context, leading Luke to give some more information
about what he was driving at before he was eventually persuaded that
what he wanted was an ideal candidate for a module.
http://makeashorterlink.com/?B67F51E42
http://makeashorterlink.com/?J18F42E42
Perl6 Built in types
Michael Lazzaro asked for a list of Perl6 built in types and offered his
own first cut at such a list. Larry offered some corrections, but
reckoned that the list Michael had just posted was the nearest thing we
had to a definitive list.
http://makeashorterlink.com/?Z19F12E42
Power of Lisp macros
Adriano Nagelschmidt has been reading Paul Graham's articles about Lisp
and its advantages, especially the macro system and wanted to know if
the macros were really as useful as Mr Graham claimed, and whether it
was worth adding something like them to Perl. General consensus appears
to be "Yes, they're really good, and yes, Perl 6 will probably have
something similar". Larry had an interesting post on the subject (no
surprise there then...)
http://makeashorterlink.com/?Z5AF32E42
http://www.paulgraham.com
http://makeashorterlink.com/?C4BF12E42
In Brief
There was a minor kerfuffle early in the week when the Parrot CVS
repository ended up with the wrong permissions. Oops.
Leopold Toetsch has implemented the "splice" vtable method based on the
semantics in PDD2. This sparked a short discussion about copying vs.
cloning.
It looks like native types are going to get type numbers just like PMCs,
but native types will be negative.
Rhys Weatherley added a bunch of infix operators to IMCC's syntax.
J�rgen B�mmels added `fingerprinting' to .PBC files. The idea being that
parrot can fail at load time if it tries to load a .PBC file that was
generated with a different version of core.ops. The previous behaviour
involved weird, hard to track down, runtime errors.
Some spam got past the perl6-internals filters. We were shocked.
Michael Lazzaro announced an updated Perl6 OO Cookbook at
http://cog.cognitivity.com/perl6/.
Who's who in Perl 6?
Apparently nobody is this week. I appear to have run out of answer sets
for the questionnaire. If you've been mentioned in this, or any previous
summary and you've not already answered, please drop me a line and I'll
send you the questions.
Acknowledgement, Apologies and all that Good Stuff
This summary was once again brought to you from my office on board the
0625 from Newark to London and from my comfy chair at home. Distractions
were provided by Xmame, Perls of the North, broken AC Adaptors and my
own natural `Procrastinate now!' instincts.
Proofreading services were provided by me. Having left it as late as I
did, I just want to get this summary out of the door before next week's
is due. So any speeling mistooks are orl myne.
And, the old refrain: If you enjoyed this summary, please consider one
or both of the following options:
* Send money to the Perl Foundation at
http://donate.perl-foundation.org/ where your money will be used to
support the ongoing development of Perl and Perl 6.
* Send feedback, flames and/or an original BeBox to me,
<mailto:pdcawley@;bofh.org.uk>.
Any fee paid for publication of these summaries on perl.com is paid
directly to the Perl Foundation.
--
Piers
"It is a truth universally acknowledged that a language in
possession of a rich syntax must be in need of a rewrite."
-- Jane Austen?