The Perl 6 Summary for the week ending 2004-05-02
So, May Day didn't quite knock me for six this year (but being up at 4am
on Newcastle Town Moor on Saturday morning to welcome in the summer with
a bunch of rapper dancers (and no, rapper does not involve large shouty
men wearing positively kitsch amounts of jewellery posturing in front of
scantily clad women and shouting about how they're keeping it real, or
whatever the current argot is. It's a rather older tradition of men
making fools of themselves than that) is guaranteed to leave a chap
feeling rather tired) so here's the summary.
We'll kick off with perl6-internals. Again.
GCC for Parrot
Vishal Vatsa announced that he was working on getting GCC to compile to
Parrot as his masters research project. I'm sure we're all wishing him
the best of luck.
http://tinyurl.com/2a6gj
Parrot strings
Various discussions of the Right Way to do string handling continued.
Dan clarified his Strings design docs and Jeff Clites posted a 'Strings
Manifesto'.
It seems, to this observer at least, that a big problem with dealing
with strings is that there's rather more than one Right Way to do
things, depending on how you're looking at the problem and what you're
trying to do. Dan's problem is that he has to find some way of
accommodating all the various contradictory things that people want to
do to strings without making any of them unduly painful. (Not assisted
by the fact that, in one last week's documents he managed to graphemes,
characters and glyphs slightly mixed up.)
Me? I'm punting on summarizing this properly. My theory is that if you
know enough about this stuff to be of assistance then anything I say
will almost certainly be an annoying simplification too far. And if you
both know enough about strings and care enough about Parrot, you're
already involved in the thread. Hopefully there'll come a point in the
future when everything's settled and this section of the summary will
say "Strings got sorted at last, look at this URL for details".
http://tinyurl.com/36cck
http://tinyurl.com/3dm3c
http://tinyurl.com/yw8dv -- Strings Manifesto
http://tinyurl.com/2se9w
http://tinyurl.com/2drsf
Win32 and cygwin issues
There's been a good deal of work this week on getting things building
properly in the Win32 and cygwin environments. Ron Blaschke, 'Limbic
Region', George R and Leo T�tsch all worked on things.
http://tinyurl.com/3axog
http://tinyurl.com/26z4n
NCI and 'Out' parameters
Mr ParrotSDL (aka chromatic) showed an SDL function signature that he
wanted to use via NCI (Parrot's Native Call Interface), but which didn't
work because it had two pointer arguments that were used by the function
as out parameters. He proposed changing the NCI PDD (PDD16) to support
this sort of thing cleanly. Leo, Dan, Tim Bunce and chromatic discussed
the changes needed.
A little later in the week, chromatic posted a patch implementing
something to solve the problem.
http://tinyurl.com/32oxo
http://tinyurl.com/2l4j7
Joys of assignment
There's been some discussion recently about what happens with assignment
and/or binding, and the difference between value and reference types.
Dan decided that the time was right to post a clarification of the
issues as they related to Parrot.
http://tinyurl.com/ypl8u
Fun with md5sum
Nick Glencross's idea of fun is, apparently, implementing md5sum in
IMCC. He posted his first cut at an implementation. I think Leo's
response holds for all of us: "Wow". Maybe I'm looking in all the wrong
places, but so far it doesn't appear to be in the repository, but it can
only be a matter of time.
http://tinyurl.com/2lr4v
Return continuation register
Dan's working through outstanding issues and tidying up loose ends. One
result of this is that he's been thinking about how the return
continuation is handled. The new design (and calling conventions?) makes
use of a return register in the interpreter structure, which gets saved
as part of the environment that a continuation captures.
http://tinyurl.com/277ne
Library loading
Clearing up another loose end, Dan did some design of how we're going to
cope with loading libraries.
http://tinyurl.com/33djf
Keyed vtables and MMD
If you've been following the mailing list for any length of time
(especially if you've been following it directly rather than
summarized), you'll be aware that there's been a long running...
discussion between Leo and Dan about the keyed variants of all the
binary vtable entries: Leo worries that there's a heck of a lot of 'em;
Dan worries that it means creating temporary PMCs in what should be
simple circumstances.
It turns out that having *all* the keyed variants does rather get in the
way of multi-method dispatch. So Dan's mandated that get rid of the
keyed variants for everything but get and set and move all the operator
functions out of the vtable and into the Multi method dispatch system.
He asked for comments...
It turns out that moving to MMD everywhere doesn't seem to have any
deleterious effect on performance, which is nice. In fact, in some cases
it's faster.
http://tinyurl.com/ywuwm
File stat info
Tying up another loose end, Dan specced out how "stat" is going to work.
It was modified (slimmed down rather a lot) after discussion.
http://tinyurl.com/2t3sn
One more thing
Dan noted that, by going MMD all the way, it means we can skip the
bytecode->C->bytecode transition for MMD functions that are written in
Parrot bytecode and just dispatch to them as if they were any other sub.
http://tinyurl.com/2ehe6
MMD table setup semantics
Dan opened a discussion of what should happen when we add things to a
Multimethod dispatch table. Discussion followed.
http://tinyurl.com/3ana7
Double-checking compiler function parameters
Dan thought allowed about what a compiler module should look like and
asked for comments. Leo and Stefan Lidman came through with some.
http://tinyurl.com/yt9kq
Pointer stores and DOD
Dan reckons the time has come to make sure that all stores of pointers
to DOD-able structures into DOD-able places are done with a mediating
function (or macro). The idea is that doing this will allow us to
experiment with other Garbage Collection techniques without having to
change vast amounts of code.
http://tinyurl.com/2pfgr
TODO: Forth as a compiler module
Dan laid down a TODO challenge: Your mission, should you choose to
accept it, is to take languages/forth/forth.pasm into a loadable
compiler module that you can compile workable forth code with. Go to it!
http://tinyurl.com/2at2a
Outstanding parrot issues
Roll up! Roll up! Come and see the Ponie trainer and the Patchmonster
engage in a free and frank exchange of views!
Well, maybe not quite that extreme. Nicholas Clark, Arthur Bergman and
Leo T�tsch have had a long standing disagreement about how Parrot's
embedding works.
Because of the weekend falling when it did, you'll get the resolution
next week.
http://tinyurl.com/37yvb
Meanwhile, in perl6-language
A12 Versioning
Richard Proctor isn't happy with the A12 versioning proposal, and he
said as much, outlining what he didn't like about it. Aldo Calpini had
some further comments. Larry came through with answers.
http://tinyurl.com/23jbz
Compatibility with Perl 5
The discussion of how to write identify Perl 6 and Perl 5 scripts
continued. Larry suggested moving to using ":" as the command line
switch in Perl 6, so a minimal Perl 6 marker would be something like:
#!/usr/bin/perl :
#!/usr/bin/perl ::
#!/usr/bin/perl :6
Jonathan Scott Duff doesn't like using shifted characters to for
commandline switches, so he suggested using "=" instead. Other options
were suggested...
http://tinyurl.com/2wp7j
On inheriting wrappers
Aldo Calpini had some questions about using wrappers with methods, and
whether wrappers got inherited. I must confess I didn't quite follow the
discussion, but Larry seemed to.
http://tinyurl.com/2z5q2
Hey look everyone, p6stories!
Now that we have Apocalypses 1-6 and 12, that could be seen as having
most of the language done. So chromatic pointed everyone at the P6
stories Wiki and suggested that they join the effort of breaking the
apocalypses up into stories and (hopefully) test cases, to help make the
job of writing Perl 6 itself much easier.
http://p6stories.kwiki.org/
How to parameterize roles
Austin Hastings wondered how/if he could implement a parameterized role.
Luke Palmer had some answers, and some unsolicited (but rather useful)
design advice. Aaron Sherman also had some design advice.
http://tinyurl.com/3ebm3
Announcements, Acknowledgements, Apologies
If you find these summaries useful or enjoyable, please consider
contributing to the Perl Foundation to help support the development of
Perl. You might also like to send me feedback at
mailto:[EMAIL PROTECTED]
http://donate.perl-foundation.org/ -- The Perl Foundation
http://dev.perl.org/perl6/ -- Perl 6 Development site