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