The Perl 6 Summary for the week ending 20030824 Another week, another Perl 6 summary. I'm running late writing this and I don't care because I spent the bank holiday weekend at a folk festival and didn't get back 'til Monday evening.
Predictably enough, we'll start with the shenanigans in perl6-internals. Timely Destruction: Luke Palmer's Scheme The timely destruction meme just won't go away. This week Luke Palmer suggested a possible improvement to Parrot's current scheme (Parrot keeps a counter of 'eager' objects needing timely destruction, and a language's compiler emits conditional "sweep" opcodes at appropriate points. In Perl's case, for instance, the conditional sweeps would be triggered on scope exit, other languages may have different requirements). Luke's scheme involves terminating the DOD (Dead Object Detection) run if every outstanding eager object is found alive at any point in the run. For added performance, there would also be a 'high priority' flag on all objects. The idea is that the high priority flag could be used to ensure that, during a sweep, the paths through the object group that are likely to lead to an eager object get checked first, hopefully ensuring that the "sweep" gets terminated as quickly as possible in the case where no eager objects need to be finalized. The proposal was discussed, but I don't think anyone has gone so far as to implement anything based on the scheme. This discussion led Klaas-Jan Stol to ask what the heck timely destruction was, anyway. This sparked a longish discussion, covering what timely destruction is all about, why you'd want it, and why having it could be problematic. http://xrl.us/pu7 http://xrl.us/qxf The String API Benjamin Goldberg is concerned with 'a number of shortcomings in the [string] API' and outlined the problems he sees, along with some proposed improvements. Luke Palmer generally liked the ideas, but Leo Tötsch had concerns about some of Benjamin's proposals. The discussion that ensued got fairly technical. (One of these days I'm actually going to go and get my head properly around the details of the various encodings and charactersets. And then I'll probably go insane.) Dan also thought that Benjamin was confusing language level strings with low-level strings, and that this was a Bad Thing. He outlined the difference between language level (PMC) and low-level (Parrot S register) strings, and explained what each was appropriate for. http://xrl.us/qxg Making the Perl 6 Compiler use Continuation Passing Style Allison Randal sent in a patch to switch languages/perl6 -- Parrot's (incomplete) Perl 6 Compiler -- over to using Continuation Passing Style, which is a useful step in the right direction. Leo applied it. http://xrl.us/qxh Fun with "search_lex" Jos Visser (who in an earlier post confided that he's working on writing a parrot compiler back end for his personal 'computer language personality disorder: Comal', and that he does this for 'therapeutical value') wants to generate some parrot code that is capable of searching the lexical pads for the existence of a lexical. His current code tries to look up a lexical and catches the exception when the lexical doesn't exist, but this is apparently very slow. So, he proposes an op, "search_lex" which, instead of throwing an exception, returns a null PMC if the lexical is not found. Leo Tötsch wasn't convinced by the need for the op, but he is looking into why the exception handling route is so slow (indeed, he seems to have found the reason, now he's trying to fix it). http://xrl.us/qxi Syntax Highlighting Inspired by Luke Palmer's cunning, core.ops parsing vim syntax highlighter, Andy Bussey wrote something similar for the KDE Kate editor. Now, if someone could modify pasm.el, the Emacs highlighting mode to use the autogeneration trick too... http://xrl.us/qxj RFC: Constant PMCs and Classes Leo Tötsch kicked off a discussion of the handling of constants within Parrot and proposed adding a bunch of functions for creating constant strings (symbols?) within the core. He also proposed a system for creating constant classes. In the ensuing discussion I think the proposals for strings were pretty much accepted, but it's not yet known if the proposal for constant classes is quite the Right Thing. http://xrl.us/qxk Should Tom Locke target parrot? Tom Locke is about to start on a project to create a new language and wondered if Parrot might be a good target VM for him. In short, we think so. But we would, wouldn't we? http://xrl.us/qxl More fun with set/assign The semantics of "set" in Parrot are, somewhat complex. Leo Tötsch showed a fragment of code which got a value from out of a hash, set the fetched value to a new value and then printed out the value from the hash. Depending on whether the original hash entry existed or not, the fragment of code printed different things. He wondered if things shouldn't be fixed to make it print the same thing each time. Consensus has not yet been reached. http://xrl.us/qxm Registers vs. Stacks Tom Locke reopened the register or stack machine can of worms. He even offered to recan them afterwards (by writing up the discussion for adding to the FAQ). In particular, he wanted to know what we thought Miguel de Icaza meant when he claimed that Parrot was "based on religion". Klaas-Jan Stol pointed us at Dan's blog where he'd addressed this issue some time ago. http://xrl.us/qxn http://xrl.us/qxo Weak References Benjamin Goldberg hoped that Parrot would have some way of creating Weak References, as he felt that they were probably a vital feature. He outlined a scheme for implementing them. Various people disagreed about their level of vitality. Dan pointed out that weak refs could be implemented with no special core support beyond a general notification mechanism (which we're getting anyway) and a weak reference PMC. Dan seemed to think that this had already been discussed, but I confess that I can't remember the discussion and, as Benjamin pointed out, it looks like Google can't remember it either. http://xrl.us/qxp Print warning location Leo kicked off a discussion of embedding debugging information (line numbers, both for parrot code and the original high level code) in parrot bytecode. Right now, only the slow core tracks lines within the pasm file, and he wondered if using the "-w" switch should automatically force using the slow core. Nobody actually answered that question, choosing to discuss the various means of storing meta data about line numbers and the like in the bytecode file. Consensus hasn't been attained yet, but I think we're getting there. http://xrl.us/qxq WARNING: Incompatible changes to IMCC As he warned some time ago, Leo has finally removed the 'feature' whereby IMCC would parse code it found outside of subs. All IMCC code must now be contained in ".sub"/".pcc_sub"/".emit" blocks. If you're writing code that doesn't behave properly, please fix it. http://xrl.us/qxr Program exit status Leo noted that Parrot programs get commandline info passed in in P0, but there is currently no way for a parrot program to communicate an exit status to the shell. Leo offered up 3 different possibilities for fixing this and asked for comments. Dan came up with a 4th option involving a status PMC. Discussion is ongoing. http://xrl.us/qxs Meanwhile in perl6-language There were all of 6 messages. Gordon Henriksen moved the set/assign discussion over from perl6-internals, asking for clarification of what various bits of Perl 6 should do. Essentially it boils down to 'when should Perl 6 autovivify?'. The discussion is ongoing. http://xrl.us/qxt Next Week in the Perl 6 Summary * The perl6-language list will erupt in a massive discussion of the meaning of "my Dog $spot" * Leo Tötsch will post precisely no patches to Parrot * Dan will finish up the objects implementation * Leon Brocard will say something on one of the lists * Damian will release Perl6::Rules * Your summarizer will have written some real Perl code and released the code he talked about in Paris Acknowledgements, Announcements and Apologies Does anyone want to buy a four bedroomed house in Newark upon Trent, dating back to the late 16th century? The house is on the market, Gill's term starts on September 15th and so far the Estate Agents haven't sent any prospective buyers. Well, at least it gives me time to write the summary. Check out http://xrl.us/mt4 for more of my writing (and thanks to those who have already popped by). As ever, if you've appreciated this summary, please consider one or more of the following options: * Send money to the Perl Foundation at http://donate.perl-foundation.org/ and help support the ongoing development of Perl. * Get involved in the Perl 6 process. The mailing lists are open to all. http://dev.perl.org/perl6/ and http://www.parrotcode.org/ are good starting points with links to the appropriate mailing lists. * Send feedback, flames, money, requests for consultancy, photographic and writing commissions, or a dual-processor G5 with 23" Cinema Display to [EMAIL PROTECTED]