Re: Perl Summarizing
Matt Fowles [EMAIL PROTECTED] writes: In the hopes of inspiring someone to take my place, I would like to encourage any interested party to just start summarizing and thus become the official perl 6 summarizer. Strongly seconded! NB - I do not assume to speak for Piers in this, so interested parties may want to coordinate with him. Nope, no need to coordinate. Go to it with a will. -- Piers Cawley [EMAIL PROTECTED] http://www.bofh.org.uk/
This weeks summary, part 2
The Perl 6 summary for the week ending 2006-02-12 Did I say Thursday night? What was I thinking? Blame Nikon for finally delivering my D200; or just blame me for being a lazy git who spent Thursday night recovering from the drive home from Liverpool and Friday playing with a new toy and chatting to interesting people in the atrium at SageGateshead. So, here's part two of the summary, in which I summarize ancient history in perl6-language. This week in perl6-language Overloading the variable declaration process Darren Duncan asked that Perl 6 provide a way for a class/role/metaclass to declare that all variables declared to be of that type are automatically/implicitly set to a particular value at declaration time. Larry's response was fascinating as he talked about what I find myself thinking of a continuum of definedness, where, instead of worrying if a variable is defined, the language/programmer/whatever only cares whether it is defined enough. The syntax for asking such questions isn't really defined enough yet. Then it all got slightly philosophical with talk of the ideal of a dog (when I think the questioner really wanted to talk about the ideal dog), Platonism and Aristotelianism. And the metamodel. And there was hypnotism. http://xrl.us/j36z Macros? Last week, Brad Bowman asked a bunch of questions about the workings of Perl 6 macros. This week, Larry offered answers. http://xrl.us/j362 A proposition for streamlining Perl 6 development Yuval Kogman had some ideas about how to make Perl 6 development go faster. Igor! More tuits! Some people disagreed with him. Some agreed. I am staying well out of this one (at least in the summaries; I have opinions and I don't trust them, or myself, enough to be able to write a properly impartial summary of the discussions). http://xrl.us/j363 Tokenizer hints, supporting delimited identifiers or symbols Darren Duncan had another wish for Perl 6: a simple and terse way for Perl 6 identifiers or symbols to be able to be composed of any characters whatsoever... whoa! Deja vu! Ah yes, I already did this one in part one. Move right along the summary, nothing to see here. http://xrl.us/j364 The definition of say Simple question: how do you implement say? The answer isn't quite as simple as you might think. Actually, that's not true, the answer is simple, but the question has hidden depths. Go read Robin Houston's question and its responses if you don't believe me. http://xrl.us/j365 Smart match table Robin Houston had some questions/observations about the smart match table in synopsis 4. This is the table that describes how the smart match (~~) operator does its comparisons. It turns out that the table in the synopsis implies non-commutative behaviour, which came as something of a surprise. I'm surprised this thread petered out so quickly without any real resolution; it seems rather important to me. http://xrl.us/j366 Acknowledgements, apologies and everything else So, does the serial format work? Apart from the problem of not actually getting on with part two when I should have done, it works remarkably well for me. Writing the summary in one big chunk can be somewhat daunting, especially if my brain gets fried by the first two lists. Feedback is good. Help Chip http://geeksunite.org/ -- Chip still needs help. The usual coda If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. http://donate.perlfoundation.org/ -- The Perl Foundation The Perl Foundation Blog is an excellent source of news about the Perl Foundation's activities. http://blog.perlfoundation.org/ Planet Perl Six is a handy news aggregator of several Perl 6 related sources. http://planet6.perl.org/ http://dev.perl.org/perl6/ -- Perl 6 Development site Check out my website, it's lovely. http://www.bofh.org.uk/ -- Piers Cawley [EMAIL PROTECTED] http://www.bofh.org.uk/
This week's summary. Part 1
The Perl 6 summary for the week ending 2006-02-12 Welcome to part one of this week's summary. Owning to chronic problems with deadlines I've only got time to summarize perl6-compiler and perl6-internals tonight; I'll do perl6-language when I get back from $paying_job on Thursday night. You shall just have to contain your excitement 'til then. This week in perl6-compiler Tokenizer hints, supporting delimited identifiers or symbols Darren Duncan said that he'd like for there to be a simple and terse way for Perl 6 identifiers or symbols to be able to composed of any characters whatsoever (even whitespace). After all, it's allowed in lots of other languages (including, although Darren didn't mention it, Perl 5 -- consider ${var with spaces} = 'foo' if you don't believe me. Lexical vars are a wee bit trickier). I turns out that, as Larry said $::You can already do that!;, which is nice. It turns out there's quite a few ways of doing it and Larry discussed them all. http://xrl.us/j2bf Meanwhile, in perl6-internals Parameter count checks One of the tricky things about having PIR level parameter count checks is coming up with a good syntax for it; in particular, Chip wanted an easy way of expressing common things like void calls. It turns out out that Common Lisp is one of the trickier languages to deal with here since it allows for multiple values returned from a function, but ignores every return apart from the first unless you specifically ask for them. Which can be nice, but is weird. I'm not sure we have a syntax for it yet, I'm sure one will be forthcoming eventually. http://xrl.us/j2bg Add methods in dynpmc François Perrad had some trouble adding methods to Lua PMCs and asked for help. Leo provided it and all was gorgeousness again. http://xrl.us/j2bh {null,parrot,installable}_config.o Florian Ragwitz is the Debian maintainer of the pugs and parrot packages and he has problems getting the latest pugs to link with Parrot, mostly because of the way parrot stores information about where things are installed. He made a few suggestions for resolving the issue. I'm not sure Leo's answer was much use to him. http://xrl.us/j2bi Heureka - from the -Ofun department Leo announced that Parrot is now running the Ackermann benchmark faster than C. It turns out that tail recursion elimination is a really good thing to have. It also turns out that we only get the really blistering speed on x86 and ppc architectures, because those are the architectures with a working JIT core. Things aren't quite so rosy on SPARC, for instance. Still. Wow! http://xrl.us/j2bj :non_volatile is now :unique_reg Jonathan Worthington checked his :non_volatile patch back in, but with the new :unique_reg name. Which is nice. http://xrl.us/j2bk Sub introspection: filename and line Jerry Gay had some questions to ask about walking the Parrot call chain and getting at file and line info. It turns out that the Sub PMC doesn't have the methods he needs. Johnathan Worthington corrected what he'd said on IRC about how to walk the call chain, pointing out that, instead of walking subs, you need to walk contexts, but that contexts aren't actually PMCs because we don't have weak references yet. Apparently, we will have weak references eventually, at which point we'll be able to have context PMCs, which can be used for introspecting on the call chain. Me? I don't quite understand what's the difference between these 'contexts' of which Jonathan speaks and return continuations. But I'm odd like that. http://xrl.us/j2bm Q. Namespaces and classes Leo wasn't entirely sure of what semantics are needed by namespace PMCs. He talked around the issues and asked if he was going along sane lines. I can't tell if Jonathan thought Leo was sane or not, but Leo seemed to find the response useful. http://xrl.us/j2bn Quis custodiet ipsos custodes? Misspelling Juvenal slightly, Jerry Gay observed that there are no tests for Parrot::Test and made a plea for this to be remedied. You're on your own with the Latin. http://xrl.us/j2bo PIC/JIT update Leo announced that the PPC JIT core can now compile subs on the fly, just like the x86 core. But only for integer code apparently. http://xrl.us/j2bp Integer divide overflow Leo observed an overflow issue with integer division and asked for comments. Jonathan Worthington suggested going to the pub. It won't fix the problem, but we'll feel better about it. We definitely seem to be in Don't do that then. territory. http://xrl.us/j2bq Find a multi-method/multi-sub by name and signature Jonathan Worthington's work on a .NET translator 'ambles on'. He's working on mapping .NET's static
Um... this week's summary
Unless Matt takes pity on me, and writes a summary at disgustingly high speed, there won't be a summary this week. Assorted things got in the way on Monday or Tuesday, and I'm now at my consulting gig 'til the end of the week with no time for summarizing. I'm really, really sorry. -- Piers Cawley [EMAIL PROTECTED] http://www.bofh.org.uk/
This week's summary
The Perl 6 summary for the week ending 2006-01-01 Another year, another summary. You might think I'm going to summarize the events of the whole year, but it turns out that chromatic's already done it. So in the spirit of laziness, I'll just point you at his year end summary. http://xrl.us/jfai Sadly for us all, he doesn't go into enough detail on the events of the last week for me to go straight into the coda. I shall have to talk to him about next year. This week sees a big non-technical change in the Pugs camp, lots of roadmapping and implementation in the Parrot camp, and a more and more concrete feel of what the language is going to look like in the perl6-language camp. Pretty much business as usual really. This week in perl6-compiler Runtime typecasting Autrijus Tang is now Audrey Tang. Read her explanation on her blog. Speaking personally I'm delighted that she's found the courage to make the change and wish her the best of luck and happiness in her new/true identity. http://xrl.us/je9a Pugs on Cygwin There was a fair amount of discussion on getting pugs and parrot running in the Cygwin environment this week. Last time I looked, things were working again. http://xrl.us/jfaj This week's Pugs developments Audrey's taken to summarizing pugs developments on her blog and to posting digests of these posts on the list. She wrote about PIL and Rules this week. http://xrl.us/jfak -- Pugs-PIL developments http://xrl.us/jfam -- Pugs-Rule developments http://xrl.us/jfan -- Pugs-Rule: Grammar support Meanwhile, in perl6-internals Threading PDD? Patrick Michaud suggested, after a question from Klaas-Jan Stol, that it might be a good idea to create a placeholder Threading PDD (Parrot Design Document) noting that threading hasn't been specced yet and that a draft would be welcomed. Warnock applies. http://xrl.us/jfao Pugs is the official Perl 6? Or am I putting words into Luke's mouth? Read, then decide. http://xrl.us/jfap .imc or .pir? There can only be one As part of the great Parrot reorganization, Chip declared that the IMC vs PIR ambiguity had to be resolved. As he put it: IMC vs. PIR Two names enter One name leaves The name that left was PIR, any files you find with .imc extensions should be cruelly laughed at while you kick sand in their faces. http://xrl.us/jfaq Dynamic binding patch Bob Rogers offered up a patch to implement dynamic binding of globals for the list's consideration. Leo thought the patch was mostly sound, but that the whole dynamic binding thing needed more thought and infrastructure. Which is probably a broad hint to Chip and possibly @Larry (said hint hasn't been taken yet though, well, not in public). http://xrl.us/jfar Smoke testing Leo pointed everyone at the Perl Image Testing Architecture, which has possibly the coolest acronym of any Perl project in recent years. He thought it would be useful to use for additional Parrot platform testing as well. http://xrl.us/jfas http://ali.as/pita/ Lots and lots of TODOs I'm not going to enumerate them here, but Will Coleda, Matt Diephouse and others have been adding loads of TODO entries to the Parrot bugtracker. Which is nice. IMCC optimizer instruction duplication and opcode write/reads Amos Robinson wanted to know how to go about duplicating instructions and wondered about the correct semantics of in/out/inout arguments. Leo came through with the answers. http://xrl.us/jfat Meanwhile in perl6-language Iterating over complex structures Rob Kinyon applied the 'What does Ruby do?' pattern to the problem of iterating over complex structures. Mostly it looks good, but I'm hoping that someone else considers applying the 'What does Smalltalk do?' pattern as well. Subject to tuit supply, I might even do that myself. http://xrl.us/jfau Match objects Who is Match, and to what does he object? Sorry. Couldn't resist. Patrick and Luke discussed the behaviour of match objects. (Array) introspection Ilmari Vacklin wondered about how to introspect on the structure of arrays and other data structures. Warnock applies. http://xrl.us/jfav Array/list transformations Rob Kinyon pointed out the difficulties of dealing with binding array slices and other such goodies. Larry thought it wasn't really that difficult (from the point of view of the perl programmer, things might be different for the implementers) http://xrl.us/jfaw Relationship between slurpy parameters Austin Frank wondered about the different uses of prefix:* in parameter lists and elsewhere. Stuart Cook had answers. Piers Cawley worried about the current behaviour of prefix:* in parameter lists and about how
This week's summary
The Perl 6 summary for the week ending 2005-12-18 Welcome to another Perl 6 summary. This has been a week of shootouts, cleanups, relationships and cunning translations. Read on for the details (or, this being a summary, pointers to the details). This week in perl6-compiler 2 messages? Sometimes I wonder why I even bother summarizing this list; I could just paste its contents in their entirety. However: Call for a Pumpking: Do you want a Ponie? Jesse announced that Nicholas Clark was retiring as Ponie's Pumpking following his departure from Fotango. So we're looking for another volunteer to take Ponie from its current state to a working Perl 5 runtime fully integrated with Parrot. If you're a C programmer with a good grasp of the Perl 5 internals and you're interested in taking on the job, [EMAIL PROTECTED] is eager to hear from you. http://xrl.us/i9rz Pugs, Javascript and Perl 5 Continuing Pugs' tradition of linguistic mashup, Chia-liang Kao announced that Pugs Javascript backend can now support Perl5. http://xrl.us/i9r2 Meanwhile, in perl6-internals Parrot Shootout Work continued on implementing and optimizing Parrot's entry for the Language Shootout. http://xrl.us/i9r3 http://xrl.us/i9r4 http://xrl.us/i9r5 http://xrl.us/i9r6 http://xrl.us/i9r7 http://xrl.us/i9r8 Variables, Aliasing and Undefined-ness Matt Diephouse wondered how he should translate the following in to PIR code: $var = Foo; *alias = *var; $alias = undef; $alias = Baz; print $var, \n; Audrey Autrijus Tang suggested that allowing multiple LexInfo names to point to the same underlying register would make this sort of thing (and several Perl6isms) a good deal easier to implement. Leo pointed out that it actually had been implemented, though I'm not sure if Luthor includes this. (Pugs always targets the latest Parrot release). http://xrl.us/i9r9 Cleaning up the build process Joshua Hoblitt went to town on RT posting a breakdown of proposed refactorings of the Parrot build process ParTCL shootout Will Coleda suggested that it would be useful to set things up to run the TCL shootout benchmarks on ParTCL. He's not exactly sure that they'd *work* just yet (or be fast, come to that), but they'd certainly be a handy test/benchmark suite. After a couple of patches, it seems that ParTCL can at least run the hello benchmark. Still, a journey of a 1000 miles starts with but a single step and all that. http://xrl.us/i9sa Parrot directory reorganization (phase 2 mark 3) Jerry Gay's reorganization of the Parrot distribution's directory structure continued apace. Reorganizing the JIT subdirectory and its associated config system proved to be something of a sticking place, but Joshua Hoblitt sorted things out. http://xrl.us/i9sb Bug or feature? Chip had some thoughts about PIR's macro support and concluded that we need a robust multi-line quoting convention in order to pass multiple lines of code to macros. He outlined some suggested syntax. Discussion ensued, mostly favourable. http://xrl.us/i9sc Building Parrot includes Leo noted that the files in runtime/parrot/include/*.pasm are created by configure. He argued that they should really be generated by a Makefile rule, which would have the advantage of taking note of dependencies. There followed a certain amount of quibbling with Joshua Hoblitt, but I don't think anyone disagrees with the gist of the proposal. http://xrl.us/i9sd Library loading - no more duplicates Leo announce that, as a of r10458, Parrot doesn't load_bytecode from the same file twice any more. Chip and Nicholas Clark applauded the change and plotted ways to make it even more effective. http://xrl.us/i9se Fixing japhs Not content with implementing shootout benchmarks, Joshua Isom has also fixed a few of Parrot's example japhs. http://xrl.us/i9sf Q: String.get_integer Leo had some questions about magical conversion between strings and integers. Patrick and others reckoned that his proposed behaviour was about right. Personally, I'm not convinced that the basic String PMC should do any magic conversion, but PerlString definitely should. http://xrl.us/i9sg Parrot Borking Steve Gunnell had a problems with Parrot throwing segfaults. Leo gave him some pointers to tracking the issue down and recommended using the SVN repository and not the CVS mirror. http://xrl.us/i9sh Meanwhile, in perl6-language Relational data models and Perl 6 Darren Duncan's been doing some thinking about Relational data models and how to support working with them in Perl 6 and posted the results of his thought on this to the list. Lots of discussion ensued. There was a fair amount
This week's summary
The Perl 6 Summary for the week ending 2005-12-04 I heard a rumour on the London.pm mailing list week. Apparently the Perl 6 Summaries are no longer being published. As I'm sure you can imagine, it came as something of a surprise to me. This week has been all about Parrot, Leo's got the new lexical scheme, calling conventions and exception handlers working and made Parrot stricter about arguments. The end of the week saw the release of 'Luthor', version 0.4.0 of Parrot. Read on for more details... This week in perl6-compiler Um... one post in perl6-compiler this week. And that was crossposted to perl6-language. And because it got posted at the end of the week, none of the actual discussion occurred this week. Moving swiftly on... This week in perl6-internals Much more going on here as everyone rushed towards the release of Parrot 0.4.0 Luthor at the end of the week. Exception handlers and calling conventions As I predicted last week, Leo's brain dump about exception handling got discussed this week. It was well liked, and after a small bit of sugar was sprinkled on to make ParTCL's life a little easier (and possibly unsprinkled later) all manner of things were well. http://xrl.us/i5nt Subs may not contain dynamic call info, ever Chip posted a clarification of his comments on what data could and couldn't be hung off a Sub object at runtime. Let's be reentrant people. http://xrl.us/i5nu PDD20 Tcl Will Coleda announced that ParTCL is now working with the new lexically lovely Parrot calling conventions. There was much rejoicing. http://xrl.us/i5nv Test::More and Tests in PIR Leo showed the love for chromatic's shiny pure parrot implementation of Test::More. So the patch was applied. http://xrl.us/i5nw Upcoming changes Leo announced the scratchpad's impending doom and outlined the planned change for comment. Nobody commented, and the changes went in. http://xrl.us/i5nx Parrot directory reorganization Quick quiz: where would you expect to find tests in the parrot distribution? How about generated source files? Jerry Gay proposed a reorganization to make things a little more lovely. The consensus seemed to be that a reorg along Jerry's lines wouldn't be a bad idea, but Chip pointed out that, whatever gets done it should be done 'cautiously so as to minimize unpleasantness'. So Jerry is proceeding cautiously, starting with a host of new TODO tickets in RT. http://xrl.us/i5ny Solving = confusion: ':=' for aliasing There are those of us who are wondering why this one took so long... Chip proposed that people start to spell aliasing as := and assignment as =. I think it's a really good idea, but then I don't have a large amount of PIR code to maintain so what do I know. Some other folks weren't so sure, but Chip is not to be denied. Discussion then span off into what language to write the automagical translator in. I believe this may involve writing it in PIR then converting it to PIL, which would be converted to Perl 5 using pugs and then Larry's Perl 5 to Perl 5 project could be used to convert it to XML, which could then be modified using XSLT and converted back into PIR using some scary voodoo magic. Or they could just write it in Perl 5. Prosaic, but possible right now. http://xrl.us/i5nz PDD03 Revisions Chip announced that he'd put up another revision of PDD03 on Parrot calling conventions. Most of the changes are simple clarifications and flag renaming, but he's also proposing a new READONLY flag for get_params to make it easy to support the default Perl 6 argument mode. Response was muted, but favourable. http://xrl.us/i5n2 PDD03 and Overflow/Underflow It's been mandated for ages that Parrot should throw an exception when functions get called with the wrong number of arguments. It's always been one of those things that will be implemented 'some day'. Well this week had a someday in it as Leo made parrot do what it's supposed to do. And broke PGE for a while... http://xrl.us/i5n3 PDD20 questions Jonathan Sillito is a class act. He didn't just ask a bunch of questions about the new PDD20 on lexical variables, he promised to take the answers he received and use them to patch PDD20 to make things clearer. Spurred on by this promise, Chip was unstinting in his answers and clarifications of them. Which is nice. http://xrl.us/i5n4 PIR methods and local variables occupy the same 'namespace' Allison Randal used Snarks, Boojums and Thingies to demonstrate a possible problem with the way Parrots local variable and method namespaces overlap. Leo pointed out that this can sometimes be useful. So, for the time being, Parrot continues as is in this area. If you go getting the
This week's summary
The Perl 6 Summary for the week ending 2005-11-27 Another week passes. Another summary is written. Another sentence remains steadfastly in the passive voice. This week in perl6-compiler Perl 5 tests for PGE::P5Regexp Jerry Gay announced that he'd checked in a subset of perl 5.9.2's regexp tests to give PGE something to work on. Right now only 130 of 960 tests are running, in part because the test harness he's using can't quite cope with the test file syntax used for the original tests. I'm sure it won't stay that way or long. A couple of days later he announced that more tests were being converted and that there were now 360 passing tests and a further 155 or so TODO tests. Well done Jerry. http://xrl.us/i2be PDD 20 and :outer Leo had some questions about the workings of lexical pads and :outer. He showed a couple of examples in high level language and wondered if his parrot conversions were right. Chip thought that Leo shouldn't worry about implementing the Perl 5 semantics of a named inner subroutine because the way Perl 5 does it is a bug not a feature. Dave Mitchell wasn't so sure. http://xrl.us/i2bf DynLexPad Leo's working on implementing a DynLexPad PMC to provide 'a more dynamic lexpad' akin to the new deprecated ScratchPad PMC. He outlined his current plans and asked for comments from HLL authors about what they needed. http://xrl.us/i2bg Punie to AST Allison has checked in the code to transform PunieGrammar match objects into Abstract Syntax Trees (ASTs). Apparently the set of AST node types she's using isn't quite the same as the Pugs PIL. Hopefully one day we'll have a common AST format, and all manner of things shall be well. http://xrl.us/i2bh Meanwhile, in perl6-internals RESPONSIBLE_PARTIES or ENTITIES_AT_FAULT? Joshua Hoblitt suggested that Jerry Gay should be added to the RESPONSIBLE_PARTIES file as the person in charge of the test suite. After a small amount of byplay suggesting the file be renamed, the nomination was strongly seconded and Jerry's name added to the list. http://xrl.us/i2bi Curses and parrot problems? Josh Isam has been having problems with using the curses library under both Darwin and freebsd. He wondered if anyone had any pointers for fixing things. Leo thought it might be that the parrot ncurses support was getting a function signature wrong somewhere and suggested Josh check that. http://xrl.us/i2bj Subs may not contain dynamic call info, ever Repeat after Chip: Subs don't have callers. Call frames have callers. After a short discussion with Leo, Chip wrote a short treatise on the relationships between Subs and Closures, noting that they should only hold static information. http://xrl.us/i2bk Undefined labels While working on TODO #37590 (catch illegal bsr at compile time), Leo's made parrot rather more picky about labels and how they are used. Essentially, if you weren't doing daft things with labels you're probably all right. If you were, you should probably check this post. After Leo checked the fixes in (r10168), several PGE tests started breaking. Less than 6 hours later, Patrick check version r10176 in and the tests started passing again. Leo (and I) was impressed. http://xrl.us/i2bm http://xrl.us/i2bn Exception handlers and calling conventions Leo posted a brain dump about how to get exception handling to work in Parrot. In particular he wanted help with syntax (exception handling semantics aren't exactly rocket science when you've got a continuation based virtual machine after all). Warnock applied (However, I am reliably informed that next week's summary will have some responses; anyone who suggests that that's because this summary is late will be annoyingly Right). http://xrl.us/i2bo Test::More and tests in PIR Not content with having a pure PIR implementation of Test::Builder, chromatic posted his implementation of Test::More in pure parrot. Admittedly the current version should likely be called Test::Less::Is::More, but the journey of 1000 cliches starts with a single step and all that. And that's not all, the fearlessly lowercased one intends to start work on the big daddy, Parrot::Test with an eye to doing even more in Parrot. (Which makes a good deal of sense. After all, the plan is to get Parrot to a point where it can be built without needing a working perl installation) http://xrl.us/i2bp Meanwhile, in perl6-language \x{123a 123b 123c} Juerd had praised Ruud H.G. van Tol's proposal of \x{123a 123b 123c} as a replacement for \x{123a} \x{123b} \x{123c} in rules. Larry wasn't so sure. He suggested \x[123a,123b,123c] but still wasn't exactly happy with it. He also had some thoughts about character class
This week's summary
The Perl 6 Summary for the fortnight ending 2005-11-13 Welcome to another fortnight's worth of summary. We'll get back to a weekly schedule one of these fine days, you see if we don't. This fortnight in perl6-compiler There was a surprisingly large amount of activity on the list, but again, the place to look for perl6 compiler news is the Planet Perl Six aggregator. http://planetsix.perl.org/ PGE improvements and changes Patrick announced that he'd checked in some major changes to the PGE internals. The changes include a shiny new shift-reduce operator precedence parser which is used to parse the rules themselves. PGE finally has a p6rule parsing rule which can be used to parse a valid Perl 6 rule. There are other changes, but those two are the headlines. Patrick asked for the usual questions, comments, patches and tests. A couple of days later, he posted a more comprehensive overview of the new and shiny bits in PGE. http://xrl.us/ifuy http://xrl.us/ifuz PGE problem with non-greedy quantifiers Allison fell foul of some changes in the new PGE. This turned out to be a bug in PGE, so Patrick fixed it. http://xrl.us/ifu2 The meaning of \n and \N Noting that Synopsis 5 says that '\n now matches a logical (platform independent) newline, not just \012', Patrick asked the list for more details about what that should mean so he could get on and implement it in PGE. He offered up a suggested matching rule. Larry thought that the suggested rule was close enough for jazz. http://xrl.us/ifu3 [] and () on rule modifiers Patrick continues to work on the PGE. This time he asked about the behaviour of rule modifiers, with particular reference to the :w modifier. Larry had answers. http://xrl.us/ifu4 Parrot 0.3.1 Wart released Leo announced the release of Parrot 0.3.1 Wart, complete with shiny new features like variable sized register frames and no more spilling, a much better PGE (see above) and other goodies. The latest release has more than 3000 tests, and that's probably still not enough. http://xrl.us/ifu5 Octal in p6rules (and strings) Patrick Continued his voyage of stringy discovery, this time asking about the black art of specifying glyphs/bytes/whatever using octal notation. He wondered about his assumption that the correct way to do it is with \o123 by analogy with using 0o123 to specify a number in octal. He also wanted confirmation that the \nnn notation had been dropped. A surprisingly long discussion ensued as Larry did a good deal of thinking aloud and Patrick got on with implementing the nailed down bits. http://xrl.us/ifu6 Meanwhile, in perl6-internals SWIGging Parrot John Lenz is one of the developers a SWIG, which started off as the Python equivalent to Perl's XS. He had some questions about writing a SWIG module for parrot and asked if there would be interest in having SWIG be one of the 'official' ways of doing native calls from Parrot. Leo thought not, pointing out that Parrot's NCI is fully dynamic and groovy. http://xrl.us/ifu7 NCI using ffcall library Garrett Goebel joined in the ongoing discussion of using ffcall to implement the Parrot NCI (Native Call Interface) by pointing back to an earlier discussion of using libffi to implement the Parrot NCI. Last time round, Dan had pointed out that, because libffi is an external library, there still needs to be a supported (if possibly hackish) way of doing NCI that comes with Parrot, but that configure could probe for external libraries to use where they are available. http://xrl.us/ifu8 Heredocs in function calls Patrick wondered if there might be a convenient way to support heredoc parameters in PIR function calls. Nicholas Clark wondered why one would bother since most PIR code should be generated code. Later on, Leo implemented them. About the only place they don't work now is in macro arguments. http://xrl.us/ifu9 http://xrl.us/ifva Simple register allocation Summarizing a discussion on IRC, Patrick noted that it would be nice if the PIR compiler had a way to use a very basic register allocation for .subs that only use a small number of registers. After all, there's little point in doing a complex analysis of control flow if a sub uses (say) 5 registers at most. The problem is that this analysis gets harder as the subs get longer (O(n) on the length of the sub). In the case of PGE (for instance), the subs can get very long, with lots of control flow statements, but use a maximum of 10 PMC, 9 int and 4 string registers for the whole thing. Warnock applies. http://xrl.us/ifvb Careful with that bsr Eugene Leo noted that, with the introduction of variable sized register frames, it is no longer
This week's summary
The Perl 6 Summary for the week ending 2005-10-30 Hmm... Thursday afternoon and I've only just started writing the summary... What happened to professionalism? What happened to rigid, albeit self-imposed deadlines? Um... I've had a cold. The cats ate my homework. This week in perl6-compiler It's weird isn't it? Activity on Pugs and the other Perl 6 compiler tools shows no signs of slowing (especially now conference season is over), but the volume of mail on the list continues to be tiny. Autrijus seems to be Erdösing round Europe and writing everything up on use.perl. I could give you a bunch of links to various other blogs and journals where various Perl 6 developers are writing up their work, but it's probably easiest just to point at the Planet Perl Six aggregator. It's good to see so much of this stuff becoming a little more visible. http://planetsix.perl.org/ Meanwhile, in perl6-internals Discussion of the Parrot JSON serialization code span off into a discussion of generalized serialization for Parrot data structures. http://xrl.us/ia4m Determining the number of return values expected Leo and Jonathan Worthington discussed how to find out about the number and types of return values the caller expects. Jonathan ended up implementing an experimental op to kick around. http://xrl.us/ia4n Rules for changing APIs Leo talked about the Parrot policy for changing APIs. In general, it's a good idea not to have to change a public API, but in practice, it happens. As Leo said, the general rule is You break it, you fix it, so the policy is that if any API changes break anything in the Parrot subversion tree, it's up to whoever changed the API either to fix it or to work with the the sub project's 'owner' to get it fixed. Projects that aren't in the tree will need to keep themselves up to date, but if you didn't document your changes well enough, expect to be fielding questions for a while after your changes. http://xrl.us/ia4o check_progs is not portable François Perrad pointed out that the check_progs subroutine used by Parrot's config system doesn't work on windows. He suggested using the CPAN module File::Which instead. This turned into a discussion about whether it would be good to have a Bundle::Parrot set up on CPAN with all the CPAN modules needed for Parrot to build, or if we should continue to bring those modules that Parrot needs into the Parrot distribution so that, once you've downloaded the Parrot tar file you won't need to scurry off to CPAN for various supporting bits and pieces. http://xrl.us/ia4p The Configure System Understating the case somewhat, chromatic pointed out that the plugin system for configuration is grotty. Everyone agreed pretty much, but the question is whether to do anything about it since the current configuration is supposed to be a stopgap solution until we get the proposed miniparrot scheme up and running. Pretty big gap eh? Hopefully this means we're going to get work started on the miniparrot approach. Or maybe someone will clean up the stopgap. Neither would be bad. http://xrl.us/ia4q Yet another C compiler Leo pointed everyone at the Amsterdam Compiler Kit, which is the default compiler for Minix and wondered if anyone wanted to experiment with it to see if it could compile parrot. http://tack.sourceforge.net/ http://xrl.us/ia4r Deprecation warning Leo announced that the newsub operator is about to be removed. Check docs/compiler_faq.pod for details of the Right Way of making subs. Patrick had a few questions so he could track the changes in PGE. Leo answered them. http://xrl.us/ia4s Compiling parrot with c++ Nick Glencross wondered if it would be a good idea to make it so that Parrot couple be compiled by a compiler in C++ mode. The answer appeared to be 'yes'. http://xrl.us/ia4t Documenting new_pad Jerry Gay asked about the use of the new_pad op, which appears to be both undocumented and untested. Not good. He posted some apparently reasonable code that fails. Matt Diephouse reduced it to a simpler failing case and Leo tracked down the bug. None of which addresses the lack of documentation of course, but it's a start. http://xrl.us/ia4u All tests successful considered harmful Jerry Gay pointed out that All tests successful is only a useful message when you're confident that your test suite has good enough coverage. Jerry thinks parrot has too few tests. So he's started writing more and sending in patches. He noted that trying to write tests was a very good way of discovering areas of Parrot that aren't sufficiently (at all) specced. He called for others to join him in writing tests and picking off parrot's low hanging fruit. Go
This week's summary
The Perl 6 Summary for the week ending 2005-10-09 Hello, and welcome to the first Perl 6 Summary to be published on my website rather than its former home at http://www.perl.com/ This week in perl6-compiler PGE error on failing subrules Allison broke the resounding silence of the last two weeks by posting about some PGE errors she was seeing. No reply yet. http://xrl.us/hx2j Tests converted from pugs' rules.t to Parrot::Test::PGE Yuval Kogman announced that he'd written a script to convert pugs's rules tests into Parrot tests. The resulting test suite still needs some attention, and he outlined what was needed. No response so far on the list. http://xrl.us/hx2k Meanwhile, in perl6-internals Variable registers Klaas-Jan Stol wondered about how the new lexical scheme was going to work. In particular, he wanted to know what was happening to scratchpads. Leo gave a very brief overview of the new scheme, which uses register frames for static lexicals and more conventional scratchpads for dynamic lexicals. As I understand it, they'll look pretty much the same from the PIR writer's point of view. Leo promised a PDD from Chip in the nearish future which would thrash out the details. http://xrl.us/hx2m Exception handlers and calling conventions Roger Browne wanted to know if exception handling had changed at the same time as the calling conventions. He presented some code that behaved differently depending on the Parrot version. Leo replied that exceptions still wind up in P5 and Roger had found a bug. So Leo fixed it. http://xrl.us/hx2n Parrot 0.3.0 TODO Having successfully got Parrot building on his Cygwin installation, Robert Eaglestone was casting around for something to do and listed a few possibilities. Will Coleda replied that he'd quite like to see a working Parrot equivalent to Perl 5's $0. http://xrl.us/hx2o Parrot 0.3.0 and Tru64 Jarkko Hietaniemi posted a bunch of issues with Parrot on the Tru64 architecture. Leo addressed them. I'm not sure they're all fixed yet though. TCL - Compiling Will Coleda announced that ParTcl is now a compiler. Some tests are failing but Will claimed that this is because Jerry Gay was getting bored with all the tests passing. Jerry was delighted. As Will said later in the thread, the current iteration is doing the bare minimum needed to be called a compiler, but of course that will change over time. Good work Will. http://xrl.us/hx2p BROKEN.pod Hey, now he's no longer my editor, I don't have to worry about making sure I don't put his name at the beginning of a sentence! Anyhow, chromatic posted a first cut at BROKEN.pod, the big list of broken stuff. There followed some discussion of how this should be organised in the future, particularly on the RT side. After discussion, it was decided to keep it as a single file for now, but to aim for generating it from multiple RT tickets in the future. http://xrl.us/hx2q Stack call directives are deprecated Using .param, .arg, .return, .result and call to do stack based calling conventions is now deprecated. Use save, restore, bsr and ret instead. Or, ideally, use the standard Parrot calling conventions. http://xrl.us/hx2r Deprecation of rx ops Brent Royal-Gordon confirmed that he was happy enough to see his experimental regular expression specific ops removed from Parrot. They've not been removed yet, but they're certainly deprecated. http://xrl.us/hx2s Software Architecture of Parrot Klaas-Jan Stol informed us that his Software Architecture professor had approved his proposal to write a paper on the architecture of Parrot. He outlined his plans for the paper and hoped that he would be able to count on people for proof-reading when the time came. Leo thought it was a marvellous idea (so do I come to that, but I didn't say anything on the list.) http://xrl.us/hx2t ParTcl command line options, etc Will Coleda kept us abreast of his progress with ParTcl in this thread, initially announcing the new -e flag which allowed for writing one liners. After a certain amount of havering before a final interface arrived, ParTcl also acquired a --pir flag, which dumps the results of compilation to a PIR file. http://xrl.us/hx2u BASIC compiler Will Coleda (does the man never sleep?) announced that the BASIC compiler is (sort of) working again with Parrot 0.3.0. There are still problems with the windows display code (the offending code is simply commented out), but code that doesn't need that appears to be working now. He noted that BASIC could really use a decent test suite, right now he was simply working to get programs like eliza2.bas and wumpus.bas working, which is okay as far as it goes, but he
Summary rollover date
I thought we'd switched to a Monday deadline for the summary and a Sunday night roll over. I just noticed your last summary ended on a Monday night. -- Piers Cawley [EMAIL PROTECTED] http://www.bofh.org.uk/
This week's summary
The Perl 6 Summary for the week ending 2005-09-25 Hello all. It's another Monday afternoon, which means I'm writing another summary. There's no cricket to distract me this week, so I'm letting iTunes Party Shuffle attempt to distract me instead. This week in perl6-compiler Nobody said anything on the list this week. I blame IRC. Meanwhile, in perl6-internals About multithreading Leo pointed everyone at an article about about 'A Fundamental Turn Toward Concurrency in Software'. Jonathan Worthington liked it. http://xrl.us/hq4w Bug Wrangling It's possibly a failing of mine as a summary writer, but I've not been following Parrot's RT traffic. Luckily, Joshua Hoblitt has volunteered as a Bug Wrangler and he's hoping to increase the signal/noise ratio. To that end, he'll be pinging people who reported bugs that are older than 3 or 4 months to find out if they're still current or can be closed. It sounds like a mammoth task in the short term, but it also sounds like a very useful project that'll get easier once the big house cleaning has been done. He hinted that this is the sort of project that *really* benefits from having more than one volunteer doing the work. Later in the week, he posted a bunch of IMCC TODOs. http://xrl.us/hq4x Tcl, exceptions in leo-ctx5 Andy Dougherty posted some more details about a bug in ParTcl when running under Leo's branch. The bug seems to depend on whether there's a slash in the script path passed to ParTcl. There was no response, but hopefully work continues on fixing it. http://xrl.us/hq4y [RFC] Debug Segment, HLL Debug segment and Source Segment Jonathan Worthington posted a discussion of how debugging segments could work in Parrot in the future. He outlined a suggested unified debug segment format that should work for both PASM/PIR and high level language debugging requirements. Roger Browne applauded Jonathan's efforts and made some further suggestions. And then the thread got Warnocked. http://xrl.us/hq4z Magic is useless unless verifiable Jonathan Worthington posted a discussion about how Parrot bytecode files should handle their magic number. At present, apparently, Parrot checks the magic number only after it's tried to work out word size and bytecode. Which is somewhat bass ackward. After some discussion, Chip reckoned that the solution would be to have a magic string rather than a magic number. http://xrl.us/hq42 loadlib and libraries with '.' in the name Ross McFarland found a problem with loadlib. Apparently it won't let you load a library that has a '.' in the name. It turns out that fixing things robustly isn't quite as straightforward as it at first appears. Discussion ensued. Ross posted a patch to RT. http://xrl.us/hq43 http://xrl.us/hq44 Find copied and pasted code That gentleman of great intelligence, sagacity, wit and annoying capitalization; the one and only chromatic wondered what running PMD's copy and paste detector plugin on Parrot's .c files would show. If anyone has run it yet, they haven't reported on its findings, but it surely won't be long now. http://pmd.sf.net/cpd.html http://xrl.us/hq45 Amber's Ashes Announced Roger Browne announced the release of Amber for Parrot version 0.2.3a (Ashes). According to the announcement, Amber's a Eiffel like scripting language for Parrot. Joe Bob says Check it out! http://xamber.org/index.html http://xrl.us/hq46 Meanwhile, in perl6-language \(...) Oh look, a thread in p6l that's still going more than a fortnight later. How unusual. This particular instance of the form is nominally about the behaviour of \($a, $b) but various subthreads have drifted onto discussions of context in general and meaningful whitespace. So far there has been no discussion of the return value of Pin.head.contents.grep - Angel $a {$a.is_dancing} but I'm sure it's only a matter of time. http://xrl.us/hq47 Junctions, patterns and fmap again Luke continued to discuss Junctions and fmap with Stuart Cook. http://xrl.us/hq48 Conditional wrapper blocks Yuval Kogman discussed the inelegance of code that reads like: if $condition { pre } unconditional midsection; if $condition { post } And proposed a possible syntax that could be implemented in a macro. I confess that I would be taking this thread more seriously if, when I was writing this summary I had been able to come up with a realistic example of code that had this problem. Anyhoo, it sparked a good deal of discussion. http://xrl.us/hq49 Object Model Pictures Stevan Little's ongoing development of the Perl 6 MetaModel continues to yield pictures. This week he incorporated Roles into the bigger picture.
Summary for the last 3 weeks
The Perl 6 Summary from 2005-08-24 to 2005-09-11 It's been a while hasn't it? We'll start as usual with perl6-compiler This week in perl6-compiler Changed ??:: to ??!! in Pugs Following discussion of the ternary operator in perl6-language, Benjamin Smith altered pugs to use the new ??!! syntax. http://xrl.us/hjb5 Meanwhile in perl6-internals Which 'English'? Joshua Hoblitt posted a patch to intro.pod fixing a few typos and wondered whether the docs should be in British or American English. Apparently the Perl 5 style rule is that British authors shouldn't be required to write American English, and vice versa, but that a consistent style within a document is preferred. The consensus so far seems to be Any documentation is good so write what's comfortable for you. http://xrl.us/hjb6 Meanwhile, at the test Warne just got Trescothick out. 109 for 4 Python PMCs Sam Ruby, Leo and Chip had a discussion of how to implement python semantics for parrot. I'm not sure I followed what was going on, but it looked like good 'crunchy' stuff. http://xrl.us/hjb7 Zcode interpreter release Amir Karger announced that he'd adopted the Zcode interpreter that Leo posted in February (having, according to Amir, done the hard parts). Apparently there's 41 opcodes to do just to get version 3 of the Z-machine working, and then there's the problem of making Zops into loadable Parrot ops. He had a few problems with the test suite which got fixed in discussion. http://xrl.us/hjb8 Pirate refactoring report Michal Wallace posted an update on Pirate (the python to parrot compiler). He and Curtis Hall have been taking advantage of a Google Summer of Code grant to refactor the (Curse! Now Flintoff's out. Caught bowled Warne for 8) current mess. Their first step was a generic transformation module which has apparently made life easier for the compiler module. They've also produced a plan in code for how they hope they'll have things working once the refactoring's finished and asked for comments. So far comments have not been forthcoming. http://xrl.us/hjb9 http://xrl.us/hjca Tcl in the leo-ctx5 branch Will Coleda's been having a crack at getting ParTcl working with the leo-ctx5 branch and had a few problems. It turns out that he'd tickled a bug that Leo described as 'a bit non-trivial'. It took him a while, but it got fixed eventually (Over 10 days, but he did have the excuse of being at YAPC::Europe for a chunk of that time). http://xrl.us/hjcb Meanwhile at the Oval They've gone in for lunch at 127 for 5. Hopefully I'll be able to get down to some summary writing without being on the edge of my seat for a while. Branch Review Chip posted a review of the leo-ctx5 branch prior, describing it as A significant improvement. The body of the review covers user visible changes and a few niggles with the current state of the branch. Leo replied with a few questions and explanations. http://xrl.us/hjcc GMC release Nattfodd announced the 'release' of GMC, the generation garbage collector he's been working on as part of Google's Summer of Code. It's not quite bug free yet, but the SoC deadline was the 1st of September, so that's when it got released. Discussion ensued, hopefully helping to triangulate bugs. http://xrl.us/hjcd Call for B0rked Following a discussion with Chip and Leo, chromatic posted a call for entries in a 'very specific TODO list'. A list of things that should work, but don't. He contributed a couple himself. Various other suggestions were offered. http://xrl.us/hjce Optimizer Documentation Curtis Rawls spent part of his Summer of Code project wishing there was better documentation of the Parrot optimizer. So he wrote some. Brent Royal-Gordon converted it to POD format, and Leo asked for someone to add it to the repository. http://xrl.us/hjcf HLL Namespace Design Matt Diephouse posted a list of namespace features that he thinks are necessary to support all the target languages and asked for some comments. He got several, including one from Larry. http://xrl.us/hjcg Global Destruction Nicholas Clark had some questions about finalization and destruction in Parrot. In particular, he asked: Does parrot make any guarantee that all objects will be rendered down to bare memory before program exit. Leo answered and the answer was good enough for Ponie. Huzzah. http://xrl.us/hjch Meanwhile, at the Oval Ah... they're back on the pitch... I may be slowing down again... Meanwhile, in perl6-language Demagicalizing Pairs Discussion of Luke's proposal to demagicalize Pairs continued. It turns out that it's actually a discussion of how to do named argument calling...
This week's summary
The Perl 6 Summary for the week ending 20050814 As you will note from the date in the title, it's been a short week. We're switching back to a midnight Sunday/Monday rollover in order to make life easier for the perl.com types. So, if I can avoid being distracted too much by the second Ashes test we'll try and get the summary finished on before Monday is out, which should please chromatic. This week in perl6-compiler Another low volume week in perl6-compiler; probably because, with the high speed of pugs development, most of the discussion happens on IRC. Container model - pictures and questions Autrijus fielded some questions about and updated the pictures of the container model. http://xrl.us/g5kk Why PXPerl? Robert (No Surname) asked what were the benefits of PXPerl over the ActiveState distribution. In short, PXPerl comes with Parrot and Pugs, which ActiveState doesn't. If you set your path appropriately, you can continue to use the ActiveState Perl and just rely on PXPerl for Parrot and Pugs. http://xrl.us/g5km Hoisting lexical declarations Larry answered some of Autrijus's questions about Perl 6's lexical scoping rules. Apparently what Pugs currently does is close enough to sane to be going on with. http://xrl.us/g5kn Warnock in Pugsland Autrijus noted that, in Pugsland, a Warnocked patch usually means that the person who posted the patch simply got given a committer bit and didn't mention the fact on the list. http://xrl.us/g5ko MetaModel Notes Nathan Gray posted some notes and ASCII art about the Metamodel. Autrijus added pointers to further pictures. http://xrl.us/g5kp http://xrl.us/g5kq http://xrl.us/g5kr Meanwhile, in perl6-internals Updated intro.pod Jonathan Worthington posted a rewrite of Parrot's intro.pod document, now with a discussion of PIR. Huzzah! http://xrl.us/g5ks Test::Builder and friends on Parrot Following prompting from Geoff Young and Jeff Horwitz, chromatic has implemented Test::Builder and Test::Builder::Tester in pure parrot. For his next trick, he intends to port Test::More and Parrot::Test. Tests are good, m'kay? http://xrl.us/g5kt How to add a new opcode? Gerd Pokorra asked how to add an opcode to Parrot. Klaas-Jan Stol and Leo gave the answers. http://xrl.us/g5ku Cleaning up the call opcodes Leo reposted about cleaning up the various function calling opcodes to take account of the fact that the calling conventions have changed. He asked for opinions and actually got a couple, which is handy since he got Warnocked last time. http://xrl.us/g5kv parrot -I Amir Karger wondered if there was some way of telling Parrot to add directories to its load path. Leo seemed not to think it was that good an idea, and proposed using a relative path in a .include directive. http://xrl.us/g5kw Dominance Frontiers Curtis Rawls continued his work on dominance frontiers to improve Parrot's optimizer. http://xrl.us/g5kx PGE globber, empty strings Will Coleda reported that trying to match empty strings with PGE's glob implementation. It turned out to be a problem with Data::Escape. Leo fixed it. http://xrl.us/g5ky Deprecated opcodes Leo posted a list of opcodes that are due for the chop (or alteration) soon. If you're doing anything with Parrot, it's probably a good idea to take a look at this. One of those who did was chromatic, who asked if Leo could give some examples of translating code so as not to use the old forms. http://xrl.us/g5kz Meanwhile, in perl6-language Hmm... 8 balls to go with one wicket needed. I think I'll pause for a while... Damn. Australia have saved the game. Translating (or at least parsing) Java interface definitions Tim Bunce wondered if anyone had done any work on parsing Java interface declarations and (ideally) translating them to roughly equivalent Perl 6. Apparently Gaal Yahas has done something along these lines (with Parse::RecDescent for Perl 5) but doesn't own the code. He outlined the approach he took. http://xrl.us/g5k2 Perl 6 Meta Object Protocols and $object.meta.isa(?) Stevan Little is busy documenting the Perl 6 Meta Model that he's implemented in Perl 5 and that Autrijus is busy porting to Haskell. He posted an overview to the list and asked for comment. There then followed lots of discussion. I think I understood some of it. http://xrl.us/g5k3 $object.meta.isa(?) redux Stevan split the discussion of $object.meta.isa(?) off from the earlier metamodel thread into a thread of its own and asked for comments once more. Larry commented that the Apocalypses are primarily intended to be entertaining rather than factual. Also in this thread, Luke let slip that there's now a
This week's summary
The Perl 6 Summary for the week ending 2005-07-19 Welcome to another Perl 6 Summary, brought to you by the words 'displacement' and 'activity'. So far today I've caught up with everything unread in NetNewsWire, my Flickr groups, every other mailing list I'm subscribed to and completed about 5 Sudoku. And now I'm dragging out this introduction and I don't know why; I enjoy writing these things. This week in perl6-compiler Another quiet week on the list. However, you only have to watch the svn commit log and the other stuff on PlanetSix to know that things are still proceeding apace. Last time I looked it seemed that Stevan Little was working on bootstrapping the Perl 5 implementation of the Perl 6 MetaModel so that it's implemented in terms of itself. Rather mindbogglingly, Pugs is now targeting Javascript as well. The Current Pugs release is 6.2.8 http://xrl.us/gtdv Creating threads in BEGIN Nicholas Clark posted what he described as a 'note to collective self' wondering about how Perl 6 will cope with people creating threads inside BEGIN blocks. According to Luke it won't. Larry thought that it might be okay to create threads at CHECK time, so long as any spawned threads didn't do any real work later than CHECK time. http://xrl.us/gtdw Perl 6 Modules Gav... (I presume the ellipsis is important to someone) wondered what he needed to do to write Perl 6 modules. Nathan Gray pointed him at the porting howto in the pugs distribution. http://xrl.us/gtdx http://xrl.us/gtdy Is namespace qualification really required? Phil Crow came across some weirdness with namespace resolution. It seems that you have to explicitly qualify function names in signatures. Autrijus agreed that it was a bug and asked for Phil to write a TODO test. Discussion ensued -- I think it's fixed in SVN now. http://xrl.us/gtd2 Parsing perl 6 grammars Nathan Gray wondered about the state of Jeff 'Japhy' Pinyan's effort to implement a Perl 6 rules parser. Japhy said that it's been on hold for a while, but that he'd started to work on it again, basing it on his earlier Regexp::Parser module. http://xrl.us/gtd4 Meanwhile, in perl6-internals PMC changes? Nicholas Clark wondered if the PMC layout is likely to remain stable, or if there might be changes in relation to the generational garbage collector. In particular, he wanted to know if the API would remain stable. Leo thought that there might be changes in the layout, but the API shouldn't change. http://xrl.us/gtd5 ParTcl Accelerator Will Coleda showed some timings for ParTcl, the Parrot implementation of Tcl and made a few suggestions about how to get things going faster. Patrick and Leo mused on the issues involved. http://xrl.us/gtd6 Partitioning PMCs Nicholas Clark had some questions about making PMCs and Ponie play well together, with particular reference to using SvFLAGS(). http://xrl.us/gtd7 Embedding/extending interface Nicholas Clark wondered if chromatic was still waiting for confirmation that his automated embedding tools were the Right Thing. Apparently, chromatic is waiting for confirmation, but offered to send his existing patch, if only to force the discussion. http://xrl.us/gtd8 Ponie Questions Nicholas Clark had a bunch of questions about various subsystems, mostly in relation to Ponie. Leo came good with answers. http://xrl.us/gtd9 http://xrl.us/gtea http://xrl.us/gteb Parrot Project Management I'm not sure if Will Coleda's suffering culture shock about the way Parrot project management is done, or if we're really not doing it right. The first rule of Parrot/Perl 6 development is that if you really want something then the only way to guarantee that it gets done is to do it yourself. It's certainly worked for me over the years. http://xrl.us/gted Tcl GC issues... solved Matt Diephouse announced that as of r8617 in svn, the longstanding GC bug that was occasionally tickled by ParTcl has been fixed. There was no rejoicing on list, but at least one summarizer was really pleased to hear it. http://xrl.us/gtee GMC for dummies Summer of Code intern, Alexandre Buisse, who is working on a new GC system for Parrot pointed us all at an introduction to the Generational Mark and Compact scheme that he's working to implement. He and Leo had a discussion about implications, assumptions and other stuff. Bob Rogers asked some tricky questions relating to circular structures and timely destruction. Discussion of this continues. http://xrl.us/gtef http://xrl.us/gteg Register Allocation fun There was a flurry of patches from Curtis Rawls who appears to be working on refactoring and (one hopes) fixing the IMCC register
This week's summary
The Perl 6 summary for the week ending 2005-07-05 My, doesn't time fly? Another fortnight gone and another summary to write. It's a hard life I tell you! This week in perl6-compiler Where's everyone gone? It seems that most of the Perl 6 compiler development is being discussed at Hackathons and IRC, and summarized in developers' weblogs. What's a summarizer to do? For now, I'll point you at Planet Perl 6, which aggregates a bunch of relevant blogs. http://xrl.us/gn5n PGE now supports grammars, built-in rules Allison Randal raved about the totally awesome PGE grammar support. I doubt she's alone in her enthusiasm. http://xrl.us/gn5o Multiple implementations are good, m'kay? Patrick discussed the idea of a 'final' Perl 6 compiler, pointing out that it isn't clear that there needs to be a final compiler. So long as multiple implementations are compatible... http://xrl.us/gn5p Meanwhile, in perl6-internals New calling conventions Klaas-Jan Stol asked a bunch of questions about the new calling conventions and Leo answered them. http://xrl.us/gn5q Parrot Segfaults What's a tester to do? You find a bug that makes Parrot dump core, so you write a test to document the bug and make sure it gets fixed. But the test leaves core files lying about. It goes without saying that Parrot should never dump core without the active assistance of an NCI call or some other unsafe call blowing up in its face. Which makes it a little embarrassing that PIR code generated by Pugs can cause a parrot segfault, though that appears to have been caused by mixed up calling convention style in the generated call. http://xrl.us/gn5r http://xrl.us/gn5s - Brian Wheeler's segfaulting Pugs script Python PMCs Leo pointed out that the various dynclasses/py*.pmc parrot support PMCs don't yet support all the semantics that Python needs. He outlined some outstanding issues announced that, as calling conventions and context handling were changing he'd be turning off compiling py*.pmc for the time being. http://xrl.us/gn5t PGE bug It appears that the upcoming changes in Parrot's context handling tweak a bug in PGE. The discussion moved onto a discussion of PGE's implementation strategy, Nicholas Clark was keen to make sure it didn't repeat some of the Perl 5's regex engine's infelicities. While this discussion continued, Leo spent half a day with gdb and tracked down the problem, which turned out to be that a register wasn't getting initialized in the right place. http://xrl.us/gn5u Left-recursive grammars are bad m'kay? While experimenting with PGE grammars, Will Coleda managed to write a left-recursive grammar that blew Parrot's call stack with impressive ease. Luke apologized for things blowing up so spectacularly, but pointed out that left-recursive grammars weren't supported, and showed a rewritten grammar that didn't have the same problem (but which doesn't appear to match the same expressions). http://xrl.us/gn5v Coroutines Leo pointed to a summary of coroutines, and noted that we still hadn't defined the syntax of Parrot coroutines, especially with respect to argument passing. He discussed it with Matt Fowles and solicited a set of tests that expressed the semantics they came up with. http://xrl.us/gn5w ftp://ftp.inf.puc-rio.br/pub/docs/techreports/04_15_moura.pdf ParTcl, Perl6 Grammars Will Coleda announced that, thanks to Matt Diephouse's work, ParTcl (Tcl on Parrot) is now able to run part of tcl's cvs-latest test suite. The tests aren't fully native yet, they're currently driven through a Perl test harness and only passing 10% of the tests, but hopefully the situation will improve and ParTcl will end up able to run the tests completely natively (while passing far more of them). Congratulations on the work so far though. http://xrl.us/gn5x Python and Parrot Kevin Tew popped up to say that he too is working on a Python compiler targetting parrot and wondered how to handle things like Python's self parameter. Michal Wallace and Leo chipped in with suggestions. http://xrl.us/gn5y Another month, another release Has it really been a month? Seems so. Parrot walked through the traditional feature freeze, code freeze before being released on Sunday. The latest release is called 'Geeksunite', referencing the website that discusses Chip's problems with his former employer. You should definitely visit the Geeksunite site -- Chip needs our help. http://xrl.us/gn5z http://geeksunite.org/ -- Support your local Pumpking lower in default find_name scope Patrick posted a code fragment whose output surprised him -- it turned out that looking up lower as a name in the default scope returns an NCI object.
This week's summary
The Perl 6 summary for the fortnight ending 2005-06-21 Surprise! It's me again. You may be wondering what happened to last week's summary (I know I was) and where Matt had gone. Well, I'm not entirely sure where exactly he is now, but last week was moving week for him. Those of you reading this on the mailing lists may also be wondering why this summary is so late. Um... three words: World of Warcraft. This week in perl6-compiler As a Summarizer, when you see the 'last fortnight' view of a mailing list containing 21 messages, several thoughts spring, unbidden, to your mind: Is my mail broken again? Has everyone given up? Phew, this group won't take long to do. It turns out that the answer to both of those questions is No. What actually happened was that most of the stuff that normally happens in mail happened at the Austrian Perl Workshop and Leo Tötsch's house, with a side order of IRC conversation. Oh, and a bunch of spin off threads in p6l and p6i. So, in the last fortnight Pugs reached the point where it has a (mostly) working Parrot back end and BÁRTHAZI Andras wondered if we shouldn't start a perl6-general mailing list. http://xrl.us/gia7 - Autrijus's Pugs development journal http://xrl.us/gia8 - perl6-general anyone? This week in perl6-internals 140 messages in this one. p6c lulled me into a false sense of security. Again, you may notice a bewilderingly fast rate of change this summary. It turns out that they weren't just working on Pugs at Leo's house. Perl 6 Hackathons give great productivity. This is not your father's Parrot There's been some serious work going on under the Parrot hood in the last two weeks. The calling conventions have been drastically reworked and now uses 4 new opcodes, set_args, set_returns, get_params and get_results. At the time of writing, IMCC doesn't give you full syntactic help with them, but they're easy enough to use explicitly for the time being and the help is getting there. Check out the PDD for details. Also getting rejigged is the continuation/register frame architecture. Taking advantage of the fact that this is a *virtual* machine, we now have an unlimited number of registers per register frame. Combine this with the new calling conventions, in which arguments are passed outside the register frame and all of a sudden a full continuation becomes a simple pointer to the register frame and everything gets saved as if by magic. Which opens up a whole bunch of possibilities. Which has interesting implications for the register allocator. http://xrl.us/gia9 -- The new calling conventions http://use.perl.org/~chip/journal/ -- Chip's design notes New Generational GC scheme Alexandre Buisse posted his outline for a Google Summer of Code project to implement a shiny new Generational Garbage Collection scheme. Discussion of tunability and threading issues followed. http://xrl.us/giba Ordered Hashes -- more thoughts Steve Tolkin helpfully provided a summary of his thoughts about ordered hashes: An ordered hash that does not support deletes could cause a user visible bug. At a minimum it should support the special case of delete that is supported by the Perl each() operator. Dan pointed out that reusing the ordered hash code for anything other than the lexical pad it was specifically implemented for was just looking for trouble. http://xrl.us/gibb The thread that I really hoped Matt would be summarizing AKA Attack of the 50 foot register allocator vs. the undead continuation monster. Piers Cawley and Chip had something of a disagreement about interactions between continuations and the register allocator. After discussion on IRC it became apparent that they were talking past each other. The new 'the register frame is the continuation' means that yes, the register allocator definitely can't rely on being able to reuse registers that persist over function calls, but that's all right because you can always grab more registers. http://xrl.us/gibc Missing MMD default functions Remember the missing Multimethod functions I mentioned last time. At the time Chip hadn't ruled on whether taking them out was the Right Thing or not. He has since ruled that it was. This is probably not quite the right place to suggest this, but what the heck. Maybe in future when user visible changes of this sort are planned they should spend at least one release period deprecated and throwing warnings when used. http://xrl.us/gibd PGE, namespaced rules William Coleda worried that PGE subrules appear to be globally scoped. It turns out that Patrick worries too, but is currently in the process of thrashing out how they should be scoped. He outlined his current thinking.
This week's summary, correctly formatted
The Perl 6 summary for the fortnight ending 2005-06-21 Surprise! It's me again. You may be wondering what happened to last week's summary (I know I was) and where Matt had gone. Well, I'm not entirely sure where exactly he is now, but last week was moving week for him. Those of you reading this on the mailing lists may also be wondering why this summary is so late. Um... three words: World of Warcraft. This week in perl6-compiler As a Summarizer, when you see the 'last fortnight' view of a mailing list containing 21 messages, several thoughts spring, unbidden, to your mind: Is my mail broken again? Has everyone given up? Phew, this group won't take long to do. It turns out that the answer to both of those questions is No. What actually happened was that most of the stuff that normally happens in mail happened at the Austrian Perl Workshop and Leo Tötsch's house, with a side order of IRC conversation. Oh, and a bunch of spin off threads in p6l and p6i. So, in the last fortnight Pugs reached the point where it has a (mostly) working Parrot back end and BÁRTHAZI Andras wondered if we shouldn't start a perl6-general mailing list. http://xrl.us/gicz - Autrijus's Pugs development journal http://xrl.us/gic2 - perl6-general anyone? This week in perl6-internals 140 messages in this one. p6c lulled me into a false sense of security. Again, you may notice a bewilderingly fast rate of change this summary. It turns out that they weren't just working on Pugs at Leo's house. Perl 6 Hackathons give great productivity. This is not your father's Parrot There's been some serious work going on under the Parrot hood in the last two weeks. The calling conventions have been drastically reworked and now uses 4 new opcodes, set_args, set_returns, get_params and get_results. At the time of writing, IMCC doesn't give you full syntactic help with them, but they're easy enough to use explicitly for the time being and the help is getting there. Check out the PDD for details. Also getting rejigged is the continuation/register frame architecture. Taking advantage of the fact that this is a *virtual* machine, we now have an unlimited number of registers per register frame. Combine this with the new calling conventions, in which arguments are passed outside the register frame and all of a sudden a full continuation becomes a simple pointer to the register frame and everything gets saved as if by magic. Which opens up a whole bunch of possibilities. Which has interesting implications for the register allocator. http://xrl.us/gic3 -- The new calling conventions http://use.perl.org/~chip/journal/ -- Chip's design notes New Generational GC scheme Alexandre Buisse posted his outline for a Google Summer of Code project to implement a shiny new Generational Garbage Collection scheme. Discussion of tunability and threading issues followed. http://xrl.us/gic4 Ordered Hashes -- more thoughts Steve Tolkin helpfully provided a summary of his thoughts about ordered hashes: An ordered hash that does not support deletes could cause a user visible bug. At a minimum it should support the special case of delete that is supported by the Perl each() operator. Dan pointed out that reusing the ordered hash code for anything other than the lexical pad it was specifically implemented for was just looking for trouble. http://xrl.us/gic5 The thread that I really hoped Matt would be summarizing AKA Attack of the 50 foot register allocator vs. the undead continuation monster. Piers Cawley and Chip had something of a disagreement about interactions between continuations and the register allocator. After discussion on IRC it became apparent that they were talking past each other. The new 'the register frame is the continuation' means that yes, the register allocator definitely can't rely on being able to reuse registers that persist over function calls, but that's all right because you can always grab more registers. http://xrl.us/gic6 Missing MMD default functions Remember the missing Multimethod functions I mentioned last time. At the time Chip hadn't ruled on whether taking them out was the Right Thing or not. He has since ruled that it was. This is probably not quite the right place to suggest this, but what the heck. Maybe in future when user visible changes of this sort are planned they should spend at least one release period deprecated and throwing warnings when used. http://xrl.us/gic7 PGE, namespaced rules William Coleda worried that PGE subrules appear to be globally scoped. It turns out that Patrick worries too, but is currently in the process of thrashing out how they should be scoped. He outlined his current thinking.
This week's summary
The Perl 6 summary for the week ending 2005-06-07 Crumbs. I've remembered to write the summary this week. Now if I can just remember to bill O'Reilly for, err, 2003's summaries. Heck, it's not like waiting for the dollar to get stronger has paid off. Ah well, no use crying over spilt milk. On with the show. Maybe, just maybe, darwinports will work its magic and I'll have a working Haskell compiler by the time I've finished writing. This week in perl6-compiler Undef issues I'd probably forgotten this, but Larry pointed out that, in Perl 6 there would no longer be a function undef() and a value undef. Instead there'd be a function undefine() and a value undef. But he thought that we should usually fail() to construct our undefined values. http://xrl.us/gcxo This week in perl6-internals Keys I'm not sure I understood what TOGoS was driving at with a suggestion about keys and properties. Luckily Leo, Dan and Chip all seemed to. The discussion continued through the week. http://xrl.us/gcxp Loop Improvements Oh no! It's the register allocator problems again. One of these days I swear I'm going to swot up on this stuff properly, work out whether it's really the case that full continuations break any conceivable register allocator and summarize all the issues for everyone in a nice white paper/summary. http://xrl.us/gcxq HP-UX build notes Nick Glencross posted some of his issues with getting parrot up on an HP-UX machine. After a good deal of discussion and tool chain fettling he got things building and posted a patch to fix the knowledge which was promptly applied (r8280 for those of you with the svn chops to know how to take advantage of that). http://xrl.us/gcxs mod_pugs status Jeff Horwitz announced that mod_parrot now comes bundled with mod_pugs, which means that you can now write Apache extensions in Perl 6. I don't know about you, but my mind is still boggling. http://xrl.us/gcxt Parrot 0.2.1 Parrot spent most of the week in a feature freeze for the release of Parrot 0.2.1 APW which went ahead as planned on the 4th of June. http://xrl.us/gcxu Parrot on Solaris Peter Sinnott reported problems with Parrot on Solaris. It turns out that different implementations of atan behave slightly differently, which isn't good. I believe the problem remains unresolved. http://xrl.us/gcxv Parrot on Mac OS Joshua Juran's questions about getting Parrot running on MacOS Classic were Warnocked. http://xrl.us/gcxw Parrot tests get TODO Continuing the drive for consistent testing structures everywhere in Perl land, chromatic applied a patch to Parrot::Test which makes TODO tests work in a way that Test::Builder understands. Hurrah! http://xrl.us/gcxx Missing MMD default functions Dan was somewhat bemused to find that the MMD functions' defaults had disappeared when he did a sync with subversion. He wondered whether this was deliberate. Turns out that it was. I'm not sure whether Chip's ruled that it was Right though. http://xrl.us/gcxy Google's Summer of Code 2005 Remember earlier when I talked about IMCC's register allocation? Well Dheeraj Khumar Arora is looking at working on improving IMCC's optimizations as part of Google's summer of code 2005. The usual thread ensued. http://xrl.us/gcxz Building nci/dynclasses on HP-UX Not content with getting Parrot to build on HP-UX, Nick Glencross next set his sights on getting nci/dynclasses working on HP-UX. It sounds like there'll be a patch forthcoming some time next week. http://xrl.us/gcx2 http://xrl.us/gcx3 -- Nick paints the big HP-UX picture Announcing amber for parrot 0.2.1 Roger Browne announced another new language that targets Parrot. It's called amber, and it borrows a good deal of syntax and semantics from Eiffel with a large sprinkling of Ruby for good measure. http://xamber.org/ -- the Amber website http://xrl.us/gcx4 A note WRT exception handlers Leo posted a quick discussion of the correct use of exception handlers in Parrot. Essentially, the rule is, your exception handler should jump back to the point just after the exception handler block: push_eh except_N # Code that might fail clear_eh resume_N: ... except_N: ... goto resume_N Easy eh? http://xrl.us/gcx5 Meanwhile in perl6-language The reduce metaoperator thread Remember when I discussed this thread two weeks ago? It's still going strong. Larry ended up stating that there will be an optional property identval on operators which will be set by default on all operators with obvious identity values. Or it might be called initvalue. http://xrl.us/gcx6
This week's Perl 6 Summary
The Perl 6 Summary for the week ending 2005-05-24 Note to self: It's generally not a good idea to go installing Tiger on the day you return from holiday. It's especially not a good idea to fail to check that it didn't completely and utterly radish your Postfix configuration. And your emacs. And the backing store for your website. And a bunch of other stuff. It's an especially bad idea not to have backups of things like your aliases file... Nor is it a good idea to get preoccupied with all these joys and completely forget that you're supposed to be writ ting the Perl 6 summary. Ahem. I'm very, very sorry. So, on with the show. This week in perl6-compiler Inline::Pugs Autrijus announced the availability of Inline::Pugs. If you've ever been moved to mix up Perls 5 and 6 in one program, your prayers have been answered. Just grab Pugs and Inline and you're set. Brian Ingerson made things even more delightfully evil: #!perl use pugs; sub postfix:! { [*] 1..$_ } sub sum_factorial { [+] 0..$_! } no pugs; print sum_factorial(3); # 21 http://xrl.us/f73s Experimental Coroutine support Autrijus announced that Pugs now has an experimental implementation of coroutines. It's almost certainly not final, but it's good enough for exploration and feedback purposes. http://xrl.us/f73t Graphing tool for PerlGuts Illustrated Yuval Kogman asked what tool was used to generate the 'pretty diagrams' in PerlGuts Illustrated because he wanted to use it for diagrams in a forthcoming PugsGuts Illustrated. Ingy said that Gisle had hand hacked postscript based on initial diagrams drawn on graph paper. After some discussion, the plan seems to be that Yuval will just draw diagrams, scan them and bung them into the pugs repository. He'll rely on the LazyWeb to turn them into beautiful scalable graphics. http://www.lazyweb.org/ http://xrl.us/f73u Perl Development Server Okay everyone, repeat after me: Juerd is a star! You may ask me why, and I shall tell you. Juerd and his cosponsors, Twistspace will making a Perl 6 development server available over the internet to any Perl 6 developers who are working on 'everything that improves Perl 6 development'. So, if you've been put off working on Pugs by the hassles of getting Haskell working on your machine, or if you have the kind of bandwidth that makes svn updates a painful prospect, worry no longer. Just sign up for a development account. There was much rejoicing and suggesting of hostnames. Rather bizarrely, there was also discussion of the etymology of 'sipuli' (Finnish for 'onion' in case you were wondering). http://xrl.us/f73v Two releases in one day Autrijus announced the release of Pugs 6.2.4. About half an hour later he announced the release of Pugs 6.2.5. http://xrl.us/f73w Undef issues Adrian Taylor thought he'd found some issues with Perl 6's understanding of undef. It turned out that he'd found some issues with his own understanding of same. http://xrl.us/f73x Method/attribute chaining Alex Gutteridge found some weirdness with the chaining of autogenerated attribute methods (I wonder if the same weirdness occurs with hand rolled attribute methods). So far it remains unfixed, but given the speed of Pugs development I doubt it'll stay that way for long. http://xrl.us/f73y Meanwhile, in perl6-internals Parrot as an extension language Colin Adams continued to have problems using Parrot as an extension language for Eiffel. It turns out that interfacing between statically strongly typed languages and Parrot isn't easy. http://xrl.us/f73z Fixing t/src/manifest.t Dino Morelli reported problems with t/src/manifest.t and wondered how some of the failures came about. Jürgen Bömmels thought that the problem was an overzealous test -- the original version of which simply ensured that version control and the MANIFEST were in sync. He provided his suggested version of a less eager, but still svn compatible test. Further discussion thrashed out the various difference use cases for manifest checking. http://xrl.us/f733 More t/p6rules tests Dino Morelli posted a bunch of tests for the Perl 6 rules. Well, he did once he'd done battling his mailer's somewhat bizarre choice of MIME type for his test files. Remember, if you're about to attach a .t file to a message you send to the list, make sure your mailer doesn't declare it to be an application/x-troff file -- text/plain is your fiend. Patches were applied. http://xrl.us/f734 Stressing the hash Leo asked for some stress and bench mark tests for hashes because he was in the process of redoing src/hash.c. Bob Rogers provided one.
This week's summary
The Perl 6 Summary for the week ending 2005-04-26 It's my turn again. What fun. What, I hear you all ask, has been going on in the crazy mixed up world of Perl 6 design and development? Read this summary and, beginning with perl6-compiler, I shall tell you. This week in perl6-compiler Refactoring Test.pm Stevan Little had an idea while he was refactoring Test.pm. He wondered whether to get rid of the various todo_* functions in favour of just using a t/force_todo file. Which led him to wonder about doing away with t/force_todo in favour of a force_todo() function. He asked for opinions before he started making the change (which isn't exactly a refactoring). General opinion seemed favourable, though I confess I am perturbed by the proposed release trick of proclaiming all failures, whether expected or not, to be TODOs. The current system generates an explicit list of tests that are failing on 'core' systems. The proposed solution would seem to make all failures equal, so even unexpected 'platform' failures wouldn't be caught. http://xrl.us/fwkn Weird thing with say ++$ What do you know, say $i++, ++$i behaves weirdly. http://xrl.us/fwko Pugs 6.2.1 released Autrijus announced the availability of Pugs 6.2.1 which comes complete with much shininess. http://xrl.us/fwkp This week in perl6-language Parrot Common Lisp Cory Spencer's port of Common Lisp to Parrot was much admired (it's got some way to go before it's *really* Common Lisp, but it's a cracking start). Uwe Volker suggested porting emacs to it and was promptly accused of being Erik Naggum by Lars Balker Rasmussen. Cory acquired (or is acquiring) a committer bit. http://xrl.us/fwkq State of the Tcl Will Coleda gave the list a heads up on the state of ParTCL, the Parrot TCL port. It's still failing some tests, apparently because of GC issues. A few days later, these problems went away (we're not quite sure how though). http://xrl.us/fwkr http://xrl.us/fwks alarm() and later() Leo stated that Parrot provides subsecond timer resolution as well as alarm callbacks and multiple timers. Hurrah! http://xrl.us/fwkt RFC assign Px, Py Leo posted a discussion of the semantics of assign and set, with a proposed change to PIR syntax. Warnock applies. http://xrl.us/fwku RFC unary operations In another RFC, Leo discussed changes to Parrot's unary operators and proposed other changes. http://xrl.us/fwkv One more MMD -- assignment Dan noted that he was writing a great deal of code in his set_pmc vtable methods that looked very MMD-like. He suggested that adding assignment to the list of MMD functions might be a good idea. Leo pointed him at his assignment RFC. http://xrl.us/fwkw Fun with morph() Nicholas Clark wondered about the responsibilities of the morph method with respect to handling PMC_struct_val. In the subsequent discussion it became apparent that morph can get complicated. Bob Rogers supplied a bunch of extra complications and wondered about the feasibility of making Parrot morph-free. Leo agreed that it seemed feasible and is probably a good idea. Another subthread made my head hurt -- I can understand this stuff much better when I'm sat 'round a table with people and we're kept supplied with drinks, notepaper and, in Leo's case, industrial quantities of tobacco. (Ah... YAPC::Paris!) http://xrl.us/fwkx Building an incomplete code generator into Parrot [EMAIL PROTECTED] (that's the only name I have) has started work on implementing a JIT backend for the AMD64 processor. He asked a few questions and Leo provided answers. http://xrl.us/fwky Calling Convention Abstraction This thread continues to rumble on. Leo said that what he wants is for the HLL folks to create a workable scheme for abstract and extendable calling conventions that could express all the various HLL specific semantics of function calling, pointing out that, unless we have this we can forget interoperability (or at least, easy interop). http://xrl.us/fwkz Alpha development Box Bob Rogers 'has' an Alpha development box that can be used for open source projects. He wondered if the Parrot project could make use of it, and if so what was the best way of doing this. Some discussion occurred on the list, but I assume (hope) more happened offline. http://xrl.us/fwk2 Meanwhile, in perl6-language Calling junctions of closures Brad Bowman wondered about calling junctions of closures. He guessed that the rule is call 'em all and return a similarly structured junction. but wasn't sure. Thomas Sandlaß wasn't so sure. My head hurts. http://xrl.us/fwk3 { = } autocomposition Autrijus asked about the following fragment: %ret
Summary for the week ending 2005-04-12
The Perl 6 Summary for the week ending 2005-04-12 Whoa! Deja vu! Where'd Matt go? Don't worry, Matt's still writing summaries. As you may have noticed, Matt's been writing summaries every two weeks. And now so am I. Because we love you, we've decided to arrange things so I write summaries in the weeks when Matt doesn't. We could do it the other way, but that could be seen by some as self-defeating. Heck, when I say 'some' I probably mean 'all'. So, bear with me while I remember how to type all those accented characters and get back into the swing of writing these things (and of reading everything in the mailing lists once more -- someone should write a summary for us summarizers...) I'll be sticking to my old 'lists in alphabetical order' scheme of writing summaries. So, let's get going This week in perl6-compiler Array of arrays, hash of hashes, elems, last Lev Selector asked for confirmation that Pugs didn't support compound data structures, @ar.elems or @ar.last. Autrijus and others confirmed that they didn't then, but they do now. http://xrl.us/fq99 MakeMaker6 stalls on takeoff Darren Duncan pointed out that, whilst last week's summary had claimed he was working on implementing MakeMaker in Perl 6 which is, sadly not the case. He reckoned he'd possibly look into it again when he had tuits and Pugs was more complete (supporting objects, for instance). http://xrl.us/fraa Declaration oddness Roie Marianer pointed out what looks like some weirdness in Pugs' parsing of lexically scoped subroutines. Warnock applies. http://xrl.us/frab Toronto pugs hackathon John Macdonald asked for people who wanted to come to the YAPC::NA pugs hackathon to get in touch with him beforehand as spaces there are limited. If you're interested, drop him a line. http://xrl.us/frac Pugs slice oddities Andrew Savige noticed some weirdness in pugs's slicing behaviour. He posted some example code showing the problem. Autrijus agreed that there was a problem and explained that he was in the process of rewriting all the variable types, symbol tables and casting rules to agree with the Perl 5 model as described in perltie.pod. The rewrite is currently failing tests, so he posted a patch for people who want to play. On Sunday, he bit the bullet and committed the entire 2500 line patch which 'touches pretty much all evaluator code'. http://xrl.us/frad -- Autrijus's patch http://xrl.us/frae -- Autrijus on the patch http://xrl.us/fraf Meanwhile, in perl6-internals Tcl, Unicode William Coleda has been trying to add Unicode support to his TCL implementation and he fell across issues with missing methods in charset/unicode.h. Leo waved a magic wand and checked in an implementation which he fenced about with disclaimers. http://xrl.us/frag The status of Ponie Nicholas Clark confessed that Ponie had been pretty much stalled for some time, but sweetened the pill by announcing that it's about to restart and that he would be able to allocate at least one day a week to the project. He pointed people at the Ponie roadmap which breaks down the required tasks between here and a first release, complete with time estimates. If you're interested in getting Ponie to a ridable state, this would be a good place to start. People were pleased. http://xrl.us/frah -- Ponie intro/roadmap http://xrl.us/frai Monthly release schedule Chip donned his Fearless Leader hat and announced that, effective, Parrot would be moving to a monthly release schedule (with an initial three week 'month' to get things into sync). There was some debate about whether Solaris/SPARC should be one of the officially required monthly release platforms (darwin, linux-x86-gcc3.* and win32-ms-cl were Chip's initial blessed three). This morphed into a discussion of Tinderbox; apparently there are cool things happening behind the scenes. http://xrl.us/fraj Calling convention abstraction What do you know? You go away for n months and when you come back people are *still* talking about calling conventions. http://xrl.us/fram Dynamic Perl, Part 1 William Coleda announced that he was starting work on removing the core's dependence on Perl* PMCs in favour of using language agnostic PMCs internally and loading the Perl ones dynamically as required. Everything but PerlArray was dealt with quickly and names and ways forward with that tricky case were discussed. It looks like we're going to have a 'ResizablePMCArray' added to the core once people have the tuits. http://xrl.us/fran Subversion Another discussion that wouldn't go away back when I was last writing summaries has come to a head. Parrot's finally migrating from CVS to Subversion. By the time
So long, and thanks for all the fish!
I tried, I really did, but I'm afraid that I must raise the white flag to my teacher training for the next while and give up writing the Perl 6 Summary until at least after Christmas. I've had a great time doing this for the last two and a half years, I hope you've all enjoyed it too. It's been a privilege to see the progress that's been made with Parrot since I started. Dan, Leo and the rest of the p6i team have done fantastic work -- it's only when you stop to think about what Parrot looked like two years ago and then compare it with the recent release that you get a real sense of how far we've come. Thanks guys. Thanks to the language folks, Larry, Allison, Damian, and all the many and various denizens of perl6-language. Following the list has been an education. Every time I find myself thinking a proposal is simply poisonous, along comes Larry in fugu-chef mode to extract the good stuff that sets your mind a tingling and chuck away the stuff that would leave you paralyzed and dying on the floor. I don't know how he does it, but I'm very glad that he can. It's no wonder that p6l felt like it was spinning its wheels for a while there while Larry was busy being ill. Thanks to O'Reilly for continuing to publish the summaries on perl.com, and to Robert Spier and Ask for holding their archives on perl.org (and for all the other work they do for perl.org, including the various RT installations). The work they did in getting the perl6 lists onto groups.google.com made the task of working out appropriate URLs for messages far easier than in the bad old days. Thanks to everyone who ever sent me feedback; I've mentioned Warnock's dilemma many times in these summaries, it's always good to be gently lifted from its horns by a word or two of praise or damnation. While I'm about it, thanks to Bryan Warnock for first identifying his dilemma and for writing the original Perl 6 summaries that gave me the idea in the first place. Thanks to you all for reading, whether you sent me feedback or not. I'm not about to stop writing. I'm slowly working through chromatic's 'Write Your Life' project. It's far easier than summarizing; all the material I need is already in my head, and I can bash out words even when I don't have net access. I may not have stopped writing the summaries for good either; I just haven't got computrons to spare for writing them at the moment. But if any of you are thinking I could do that! then don't let me stop you -- there's an awful lot goes on on the lists, and there's a lot of interested people who don't have the time to keep up with them. A regular summary helps the interested but busy people get a grasp of how the Perl 6 project is getting on, and that can only be a good thing. Sorry things have rather fizzled out; I just didn't realise until I started quite how demanding this course would be. And I don't just mean because I've got to wear a suit. -- Piers Cawley -- Former Perl 6 Summarizer http://www.bofh.org.uk/
This week's summary
The Perl 6 Summary for the week ending 2004-09-24 So, this is my last summary before I start my teaching practice. Hopefully I've got things set up so writing the summary isn't going to interfere with that, and vice versa. This week in perl6-compiler State of Rules Discussion of the state of the Perl 6 compiler (with particular reference to the rules engine) continued. People were concerned with making sure that the rules engine that Luke and Patrick are working on would be flexible enough to cope with different languages in 'closures'. Synopsis 5 updated Ed Peschko asked that there be some way of 'turning the rules engine inside out' to make something which, given a rule, would generate strings that could match against it. Actually, this is the second time Ed asked for this, as Luke reminded him. Luke went on to implement a generator in hypothetical perl 6, which seemed to please everyone but Ed. Rod Adams wins the 'making the summarizer smile wryly' occasional prize. http://xrl.us/c8ax Meanwhile, in perl6-internals Problems Reimplementing Parrot Forth Matt Diephouse fell foul of problems with the compile and compreg opcodes in his efforts to reimplement Parrot Forth in PIR. Steve Fink made some suggestions for workarounds based on his work on writing a regular expression compiler. From further discussion, it seems that, if you're implementing a stack based language, you'd do well to manage the language's stack yourself rather than using Parrot's User stack which is interestingly scoped. http://xrl.us/c8ay __init not being magically called Will Coleda had some problems with a class's __init function not being called magically. Nobody else could reproduce the problem. After a certain amount of confusion, Will did make realclean; perl Configure.pl; make; make test and all was well again. If you're experiencing a weird problem, it's probably best to do the rebuild before posting to the list. Or you could fix the build system to have more accurate dependencies... http://xrl.us/c8az Incremental collector and finalization Jeff Clites had some questions about how finalizers interact with the work that Leo's been doing on implementing an incremental garbage collector for Parrot. Leo had some thoughts, but noted that there's still a problem with ordered finalization and destruction. [Your summarizer is really starting to get a feel for why old school GC types really don't like finalizers...] http://xrl.us/c8a2 Python bytecode volunteers Dan asked for volunteers to finish the task of getting python bytecode working on Parrot; he reckoned that the work was mostly done, but that neither he nor Leo have the time to go the last couple of yards. Come on people, this would definitely be a cool thing to have. http://xrl.us/c8a3 mod_parrot 0.0 Jeff Horwitz announced the release of version 0.0 of his mod_parrot Apache module. It's remarkably powerful for version 0.0 http://xrl.us/c8a4 The compile op and building compilers Dan had some thoughts on tidying up the spec for the compreg and compile operators and asked for comments before he nailed the spec down. Steve Fink and Leo had comments. http://xrl.us/c8a5 Misc. remarks about YAPC::EU Leo popped up to thank everyone who'd donated to The Perl Foundation and thus supported the purchase of shiny new Apple Powerbook G4 that he'd used to run his presentation at YAPC Europe in Belfast. He went on to outline some of the things he'd done and heard in Belfast, including the fact that one French teacher is using Parrot for teaching assembly language. http://xrl.us/c8a6 Parrot m4 0.0.8 Bernhard Schmalhofer announced version 0.0.8 of Parrot m4. There's no new functionality 'just' some structural improvement and tidying. http://xrl.us/c8a7 Parrot TCL Will Coleda posted a progress report on his Parrot TCL implementation which is progressing gradually towards being a full blown TCL implementation; he's working towards using special Tcl* PMCs with real TCL semantics instead of the current scheme which uses Perl PMCs. http://xrl.us/c8a8 Namespaces, Part 1 Dan posted the first part of his Namespaces spec. There was, of course, much discussion. Inevitably, there was another revision, and further discussion. http://xrl.us/c8a9 http://xrl.us/c8ba -- The revised version Towards a new call scheme Leo posted an overview of the work he was doing on Parrot's internals to get a faster calling scheme in place (as discussed endlessly). The usual perl6-internals discussion and revision process swung into action. http://xrl.us/c8bb Hello everybody Remember the French teacher that Leo mentioned? Well, the man himself, Christian Aperghis-Tramoni
This week's summary
The Perl 6 Summary for the week ending 2004-09-17 Another week, another summary, and I'm running late. So: This week in perl6-compiler The current state of the compiler Discussion of the current state of the nascent perl 6 compiler and how best to contribute to its development even before code has been released continued. The best way to contribute right now is Write tests. Don't worry about what the test harness should look like, simple tables of rules, test strings and expected matches will be very welcome. The status discussion also touched on how to handle different languages in the closures embedded in rules. Bootstrapping the grammar Uri Guttman had some thoughts on bootstrapping Perl 6's grammar. He hoped that his suggested approach would enable lots of people to work on the thing at once without necessarily getting in each other's way. Adam Turoff pointed everyone at a detailed description of how Squeak (a free Smalltalk) got bootstrapped. http://xrl.us/c6kp Synopsis 5 updated Larry announced that he has updated Synopsis 5, which covers Grammars, rules and all that good stuff. It's now only a week out of date instead of two years and counting. http://xrl.us/c6kq http://dev.perl.org/perl6/synopsis/S05.html -- Synopsis 5 This week on perl6-internals Namespaces Discussion of Dan's namespace proposal really got going this week. http://xrl.us/c6kr Buffered IO and Parrot Forth Matt Diephouse fell foul of a problem with IO buffering when he was taking a look at Parrot Forth, so he asked the list for help. Leo supplied the help, so Matt supplied a patch to Parrot Forth which made it print its prompts correctly when run under modern (CVS) Parrot. http://xrl.us/c6ks Pragma @LOAD is not always honoured Stéphane Payrard was bemused to discovered that parrot routines declared with the @LOAD pragma don't get automatically executed if they're in the main segment. He suggested that the issue be either fixed or documented. Leo documented it. http://xrl.us/c6kt NCI basics Charles Somebody tried to crash the monomonikered big leagues by failing to vouchsafe his surname when he posted a question about getting NCI to work with wxWindows. For reasons that escape me, the answers (and, indeed, Charles's surname -- Lowell) appeared in a different thread. Sadly the answers were more along the lines of Oops, that's a bug that is, we'll add it to the RT queue. Still better to have it identified than festering away undiscovered. http://xrl.us/c6ku http://xrl.us/c6kv Language::Zcode Who says Perl 6 is the only language that's taking a long time to appear on Parrot? Amir Karger posted his first annual update on his attempt to get Parrot to emulate the Z-machine. Hopefully subsequent updates will be more frequent. http://xrl.us/c6kw Meanwhile, in perl6-language Ordinals, Hashes and Arrays, oh my! David Green had some thoughts on Perl 6's compound data structures. Larry didn't sound convinced. http://xrl.us/c6kx Writing pack, or something like it Michele Dondi wondered how to write pack-like functions in Perl 6, where the first argument is a string which specifies the signature of the rest of the function call. The proposal stumped me, but maybe you all can make something of it. http://xrl.us/c6ky But is it intuitive? No it isn't. http://xrl.us/c6kz S5 Grammar compositions While peacefully reading Synopsis 5 (Rules Grammars), Dave Whipp noticed that grammatical inheritance wasn't as flexible as the Role based compositions that can be used when working with classes. Larry wondered allowed about having grammar roles, but I don't think they've been officially mandated yet... http://xrl.us/c6k2 Still about subroutines... Michele Dondi continues to make my head hurt with zir proposals. In part it's because I've still not worked out whether zie is male or female, and in part because, well, zir proposals are challenging. In this particular proposal zie wondered if there would be a way to magically write recursive anonymous functions without having to introduce a new symbol of some sort. Luke and Larry think there will be such a way, but the precise syntax hasn't been settled just yet. http://xrl.us/c6k3 Range quantifier woes Jonathan Scott Duff wasn't happy with the new range quantifier syntax in Synopsis 5. He posted a bunch of questions that were nagging at him. Larry had some good answers (if you're interested in contributing to the design of Perl 6 you should *really* read Larry's replies). http://xrl.us/c6k4 Announcements, Apologies, Acknowledgements And so ends another summary. I hope you liked it. Sorry for the delay if you're reading this on the mailing list; this
This week's Summary
The Perl 6 Summary for the week ending 2004-09-03 Another week, a free weekend, and still I haven't started writing the summary until Monday. Still, I don't actually start at college 'til next week, so that's all right then. We start with perl6-internals. Compile op with return values The discussion of how to return something from dynamically compiled code continued with Leo, Dan and Steve Fink all working to clarify and address the issues. http://xrl.us/cybq Library loading Dan started the process of nailing down Parrot's dynamic loading API so that it can be added to the embedding interface. Steve Fink and Aaron Sherman had suggestions. http://xrl.us/cybr Pathological register allocation scenarios Gregor N Purdy had asked Dan if his work compiler could be made to spit out structurally equivalent C code to the Parrot code that was breaking IMCC. His idea being that we could then see how C compilers dealt with such nastiness. Dan thought that, whilst this was a good idea, it would be too much work to implement. Gregor wasn't so sure. http://xrl.us/cybs Dan and Leo demonstrate comic timing. Again. 14:17:09 GMT Dan: PerlHash test 20 is failing? Anyone know what's up so we can fix it? 15:30:41 GMT Leo: It stopped failing at 15:55 CEST (13:55 GMT) 16:32:29 GMT Dan: D'oh! We love it when a patch comes together. http://xrl.us/cybt PMC Instantiation Leo had raised issues with the current scheme for PMC instantiation. This week Dan came through with some design which got discussed and (I think) implemented. http://xrl.us/cybu Last bits of the basic math semantics If you believe Barbie, Math is hard. She's right, up to a point. The list's spent a couple of weeks now sorting out the design of Parrots underlying mathematical and numeric systems to make sure that maths works right (for sufficiently useful values of 'right'). This particular line of discussion covers rotations and stuff, where you're actually treating a number as a bit field. http://xrl.us/cybv Cross-compiling parrot And you thought compiling Parrot on a Win32 box was hard. Robert Schwebel wants to cross compile Parrot and isn't having a good time. Dan wasn't surprised because the Parrot build process still gets most of its information from the local perl installation which will generally be wrong when you're cross compiling. Dan noted that part of the problem is that we don't have people on the team with a need or the experience of doing cross compilation and added that he'd be thrilled if this were to change. Any patches to make things better for cross compilers will, of course, be gratefully received. http://xrl.us/cybw Proposal for a new PMC layout and more Leo's concerned that the current PMC layout isn't the Right Thing, and laid out a proposal describing some changes he thinks would be worthwhile. In essence, he argues for removing the requirement for fixed sized PMC headers and separate variable sized buffers in favour of unifying buffers and PMCs so that PMCs become variable sized, thus eliminating some time consuming indirection, and space consuming overheads. Nicholas Clark thought the proposal was interesting, but said that, since the proposed changes would be invisible to the user, he'd be far happier with a functionally complete implementation of parrot with stable, useful APIs. Dan rejected the proposal (both for technical reasons and because he agreed with Nicholas). I don't think Leo was convinced by the technical reasons, but the Let's get the interfaces finished! argument clinched it. http://xrl.us/cybx http://xrl.us/cyby -- Dan explains why not. Semantics for regexes Dan appears to have opened an entertaining can of worms when he outlined his view of the minimum string semantics required to support a regular expression engine and asked for comments. Boy did he get them. And boy did they run off in all sorts of strange directions. Interesting directions mind. Anyway, further down the thread, Dan, Chip Salzenburg and Patrick Michaud seemed to reach something approximating agreement about the low level semantics required. http://xrl.us/cybz TODOs and calls for volunteers Leo came up with a list of things that need fixing/implementing and asked for volunteers. These include sorting out what happens with the experimental ops, implementing new_extended for every PMC class and finishing up BigInt's MMD and vtable functions. He also had some proposals for how we should get the Integer classes properly implemented now we know what the semantics will be. http://xrl.us/cyb2 http://xrl.us/cyb3 http://xrl.us/cyb4 http://xrl.us/cyb5 Meanwhile, in perl6-language Roles trying to
This Week's Summary
NB: The links are probably broken at present. Normal service will hopefully be resumed once Google gets caught up with the perl6 lists. The Perl 6 Summary for the week ending 2004-08-27 Where does the time go? I blame folk festivals. Once I'm getting busy with the teacher training I'm going to have weekends free to write the summaries. And if you'll believe that... We start with perl6-internals. Incremental garbage collection Discussion of implementing incremental garbage collection continued. Calling conventions for unprototyped subroutines Mattia Barbon asked for some clarification of how the calling conventions work for unprototyped subroutines in IMCC. Specifically, whether IMCC was behaving as documented in the Parrot Design Document (PDD3). Leo reassured him that the TODO entry that had caused his disquiet was obsolete and that IMCC does the right thing. http://xrl.us/cw77 Compile op with return values Steve Fink asked how to go about returning something from dynamically compiled code. He, Leo and Dan went over the issues. An unnamed (and as yet unvolunteered) volunteer will probably write it all up and add it to the parrot compiler FAQ. http://xrl.us/cw78 NCI and callback functions Stephane Peiry and Leo continued to work on getting NCI callbacks working with the GTK library. They finally tracked the problem down, but it looks awfully like Stephane's going to have to reimplement the gtk_main loop to get everything working. Best of luck Stephane. ParrotGTK would definitely be a cool thing. http://xrl.us/cw79 Planet Parrot Robert Spier announced the creation of Planet Parrot, an aggregator of Parrot related blogs. If you have such a blog, Robert would probably be interested in hearing from you. http://xrl.us/cw8a http://planet.parrotcode.org/ GC/DOD API Leo and Dan continued to discuss and work on documenting Parrot's memory management API. http://xrl.us/cw8b NCI GC issues Dan noticed a problem with garbage collection and NCI PMCs. Leo tracked the problem down and fixed it. I love it when a plan comes together. http://xrl.us/cw8c Opinions on base behaviour Base behaviour is disgusting and should be stamped out I tell you. We have a moral duty to... Ah... Actually, the subject refers to Dan and Leo's desire to nail down the behaviour of Parrot's basic types. He outlined the issues and asked for discussion. And that's what he got. It looks like Parrot's going to have a reasonably complete set of numeric types which will allow accuracy nerds to avoid reals for as long as possible. Which will be nice. http://xrl.us/cw8d http://xrl.us/cw8e http://xrl.us/cw8f http://xrl.us/cw8g http://xrl.us/cw8h Concat, Cows Basil Comfortably winning the weirdest subject line of the week award, Sam Phillips laid out some of the problems he's having implementing a Basil compiler which targets Parrot. Leo supplied answers. http://xrl.us/cw8i Low level math[s] op behaviour As well as discussing basic types, Dan opened a discussion of the proper semantics of Parrot's low level maths (yeah, he spelt it 'math', but I'm English and I'll spell it correctly) operators. In particular he proposed variants that throw exceptions if strange things happen. http://xrl.us/cw8j Benchmark stuff Joshua Gatcomb posted some patches he'd made to Fparrotbench.pl to make it a little less fragile and more useful. A few days later he announced a slightly more finished set of patches (Leo had checked his original patches in rather sooner than expected). http://xrl.us/cw8k http://xrl.us/cw8m Resuscitating a mod_parrot Dan Sugalski looked upon mod_parrot and saw that it was cool, to the point of being laid out on a mortuary slab. He thought that the time had come to try and put some life back into the project, now that Parrot's so much more capable. He asked for volunteers and Jeff Horwitz seems to be (the only?) one of 'em. http://xrl.us/cw8n PMC instantiation Leo posted another of his discussion documents, this time on instantiating PMCs. No response so far. http://xrl.us/cw8o Meanwhile, in perl6-language Return with no expression. In the usual freewheeling perl6-language way, a thread entitled 'return with no expression' ended up discussion how to disambiguate a :: which is part of ... ?? ... :: ... expression and :: in its role as module sigil. (According to Luke it's easy; white space is required). http://xrl.us/cw8p Synopses discussed Discussion of the draft synopses continued http://xrl.us/cw8q - Synopsis 2 POD tables? Aaron Sherman wondered if Perl 6's incarnation of POD would have support for tables. Luke wasn't overly keen on Aaron's proposed
Absence of summary
You may have noticed that the mailing lists weren't working for a large chunk of last week. So I'm taking a break in summarizing this week. I'll catch up next week.
This week's summary
The Perl 6 Summary for the six days ending 2004-08-06 Another short week and the rollover point is now set to Friday nights in preparation for September when I'll almost certainly not have weeknights free. (Of course, I don't expect the summary will be coming out any earlier in the week through August, what with Saltburn Folk Festival this coming weekend, EuroFoo the weekend after and Towersey Folk Festival the weekend after that. Just for a change, we'll start with the discussions in perl6-language. Meanwhile, in perl6-internals ICU Outdated Unicode is evil I tell you. Necessary, but evil. If ever there was an essential piece of technology that was absolutely guaranteed to annoy everyone then Unicode is probably it. The Unicode issue this week was the ongoing discussion of what to do about ICU. It's huge, it's in C++ and Dan maintains we can't do without it (unless some kind soul were to implement a Unicode library with all of ICU's features and fewer of its annoyances -- now there's a postgraduate task for the interested). Dan's plan is: 1 Make Configure detect and use a system ICU, if available 2 Dan will spec out encoding and charset APIs for loadable encoding and charset modules 3 Parrot gets fixed to use those APIs 4 Add support for non-Unicode encodings and charsets 5 Make ICU a loadable module tied into the encodings and charset API 6 Profit! This puts Dan smack on the Critical Path, but what's new? http://xrl.us/cob9 Span! Matt Kennedy announced the initial release of a new Parrot based language called Span. And very lovely it looks too (Think Smalltalk meats Block structured languages and wins), if only I could get it to compile on my Panther installation. http://xrl.us/coca http://xrl.us/cocb Executable AST In an intriguing post, Leo announced that Parrot's now running code directly from a (Python) Abstract Syntax Tree description. The post is light on details, but big on potential. http://xrl.us/cocc Roadmaps Dan announced that he'd committed a DESIGN_TODO file to the repository with brief details of what he thinks needs working on. He also posted a short term roadmap of things to deal with in the near future and very interesting it looks too (he reckons we should be able to get serializable continuations working, which would be rather cool). http://xrl.us/cocd PMC Basics Leo posted a list of issues with how PMCs work. Warnock applies. http://xrl.us/coce Starting to make things final Dan pointed at the efforts of Piethon and the 'PHP on Parrot' people and at Span and declared that we're at the point where things that are in and implemented should be documented and fixed and that things that are in flux should 'un-flux and get fixed'. He sketched the road to 0.2.0, 0.2.1 and thence to 0.3.0. The idea is that 0.2.0 (or 0.2.1) will be a 'complete' stable, good enough platform for language developers. Which will be nice. Oh, there's going to be a compiler writer's list (probably parrot-compilers) spun off from perl6-internals (which will probably become parrot-internals). Names are slightly undecided at present (but I will aim to cover both lists in my summaries). http://xrl.us/cocf Declaring MMD subs from PASM/PIR He who must not be capitalized, chromatic, wondered about declaring parrot subroutines that participate in multiple dispatch. He outlined a scheme that Dan had suggested (presumably at OSCON) and asked for comments. Leo and Dan discussed it further, but I don't think anything's final yet. http://xrl.us/cocg Everything Parrot Documents maestro Michael Scott posted the beginnings of a subject overview for Parrot. He asked people to point out any bits and pieces he'd missed. http://xrl.us/coch A testimonial and a question Andrew Rodland delurked to say nice things about Parrot (pretty smooth stuff) and to ask if there was a handy list 'It Would Be Nice If...' tasks that newcomers could get started on without having to dive straight into hacking the core. Simon Glover pointed at the TODO list. He suggested that you can't have too many tests and that writing tests can be a good way of getting a handle on what the core does (or is supposed to do). Reading tests can be a good way of getting a handle on what the core does too, of course. http://xrl.us/coci The new Perl 6 Compiler pumpking Dan announced that Patrick Michaud stepped up to the plate and taken charge of getting the Perl 6 compiler module written. Welcome Patrick, and the very best of luck. Leon Brocard asked Patrick what his plan of attack was. No reply so far. http://xrl.us/cocj Spilling problems The thing about writing naive compilers for
This week's summary
The Perl 6 Summary for the six days ending 2004-07-31 As I threatened last week, I'm moving the rollover point for these summaries from midnight on Sunday/Monday to midnight on Friday/Saturday, but rather than do it in one swell foop I'm doing a couple of six day weeks. The theory is that, once I become a student teacher I'll be rather busy during the week, but I should still be able to make time to write the summaries at the weekend. That's the theory at least. You'll note that this didn't get posted to the mailing lists on a Sunday. Blame my cousin for getting married. It won't happen again. Pie-thon Good news! Guido is a gentleman and declined to throw a pie at Dan. Bad news! The Perl Community is a bunch of savages, and they paid $520 to be able to throw pie at Dan. Good news! There are photos. http://xrl.us/ck3f http://xrl.us/ck3g Notes to self 1 Americans pronounce 'maths' as 'math'. 2 Don't make silly cracks about American rectitude 3 Oops. Leo's proposed calling conventions It's been apparent for a while now that Leo Tötsch isn't happy with Parrot's current calling conventions. This week he posted a proof of concept patch implementing a proposed new scheme. Luke Palmer agreed that it was probably worth consideration. We'll see what Dan has to say when he gets back from OSCON. Stack based language RaghavendraK asked about the difference between stack and register based virtual machines. Brent Royal-Gordon gave good advice. http://xrl.us/ck3h ICU outdated Joshua Gatcomb noted that the ICU that comes with Parrot is, not to put too fine a point on it, old and buggy. The ICU developers have suggested that Parrot move to version 3.0. Josh proposed various ways of doing this. Leo wants ICU out of the Parrot CVS, but Dan's argued in the past that it should be in there because he doesn't want to force people to chase round fetching a raft of required libraries before they can build parrot. http://xrl.us/ck3i Jarkko proposed for a CVS checkin rights Following a raft of high quality patches from Jarkko Hietaniemi, Leo proposed him for membership of the cvs ci club. http://xrl.us/ck3j Meanwhile, in perl6-language What's core? Larry and Dan Hursh discussed what would be going in the standard Perl 6 distribution. Dan argued that we should be concentrating on producing a distribution akin to the current Perl 5 distribution, but with a few fewer kitchen sinks. Larry argued that we should concentrate on two distributions: 1 Bare bones, just able to build itself and with enough capability to bootstrap everything else. 2 Extended. The bare bones system + a set of libraries fetchable from CP6AN that constitute the Perl 6 'supported' library; modules that are maintained by the Perl 6 equivalent of perl5-porters and which will be supported over a long time frame. I don't think Dan's been convinced yet. Elsewhere in the thread Luke Palmer coined the delightful acronym 'EYEWTIBWATA' -- Everything You Ever Wanted To Install But Were Afraid To Ask -- or eye-witty-bwattle. I'm unsure about whether it's going to rank up there with Tim-toe-tidy though. http://xrl.us/ck3k Announcements, Apologies, Acknowledgements I'm getting bored of typing 'Palmer' and 'Tötsch' once a week, so I'm considering treating Luke and Leo like Larry, Dan, Damian and, if you insist, chromatic. So, 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 feedback or contributions to a 'getting Piers to OSCON 2005' fund to mailto:[EMAIL PROTECTED] http://donate.perl-foundation.org/ -- The Perl Foundation http://dev.perl.org/perl6/ -- Perl 6 Development site
This week's summary
The Perl 6 Summary for the week ending 2004-07-18 Following last week's bizarrely dated summary (I misplaced a day) we're back with the correct week ending date, but I'm ashamed to admit that I've slipped to writing on a Tuesday again. My head hangs in shame and I am filled with the direst remorse. It will probably happen again though; life's like that. Pie-thon! Anyone would think that the possibility of not even being able to run the Piethon benchmark (let alone getting a pie in the face for running it too slowly) weighs heavily on Dan. The bulk of the week's traffic related to getting to the point where we can at least run all the tests. Python::Bytecode, the module that parses, well, python bytecode, shot up in version numbers; I think it reached 2.7 by the end of the week. Dan released a Piethon translator, a tool that uses Python::Bytecode translate python to parrot. So has Leo. Dan's is on his website (see the link below, you'll find Leo's in languages/python/pie-thon.pl). http://xrl.us/chh9 -- Parrot runs a python lambda http://xrl.us/chia -- Notes on pie-thon.pl http://xrl.us/chib -- Namespaces for builtins http://xrl.us/chic -- Dan's translator Semi-stack code In a quest for speed when emulating python's stack manipulation ops, Dan outlined a plan for manipulating a pseudo stack using some of Parrot's PMC register (18-29, with P31 used for overflow). Leo wasn't convinced it was needed. http://xrl.us/chid string_to_num precision Leo's got some problems with the precision of the string_to_num function found in string.c. He doctored things to use atof, but Dan's not so keen on that idea because atof doesn't have standard behaviour across platforms. He recommended grabbing Perl 5's string to num code (which he thought we'd already done). Nicholas Clark wasn't convinced that this was a good idea; he reckoned that Perl 5's code wasn't good enough. I think Nicholas convinced Dan that atof is actually the right thing to use (with a little preprocessing to deal with C99's atof being incompatible with C89's -- Parrot expects C89 behaviour). http://xrl.us/chie GMP Licensing Armin Obersteiner reported his investigations into the licensing requirements of the GMP maths library. It appears that the FSF's 'GPL Compliance Engineer' reckons we won't need to include the GMP's source code with binary distributions. We just have to make it available from the same source as the distribution. Which is handy. http://xrl.us/chif Parrot configuration -- a small perl task Leo asked for volunteers to fix up Configure.pl in order to make it less dependent on the host Perl's configuration. Brent Royal-Gordon provided a teeny-tiny patch that's actually shorter than Leo's description of the problem. http://xrl.us/chig Meanwhile, in perl6-language Scalar subscripting Remember Guatam Gopalakrishnan's question about subscripting scalars? Discussion continued. One Piers Cawley (who he?) suggested that it should be possible to specify a postcircumfix:[] is rw method in the String class to make string subscripting behave in a helpful fashion. He also suggested pulling this (and other similar behaviours) out into a Sequence trait. Juerd thought the proposed method name was a little verbose compared to Ruby's syntax for doing the same thing and showed off some rather pretty Ruby metaphors. Another subthread discussed interpolation in strings. Larry's changed his mind so that $file.ext is now interpreted as $object.method. You need to do ${file}.ext or $( $file ).ext. Or maybe $«file».ext by analogy with %foo«bar». James Mastros pointed out that . is rather ambiguous in a literal string; sometimes a full stop is just a full stop. http://xrl.us/chih Pushing lazy lists This thread continues to resemble the lists it is nominally discussing: Infinitely long and possibly endless. http://xrl.us/chii Perl 6 and Parrot Essentials, 2nd Edition Leo pointed us at an O'Reilly press release announcing that the second edition of *Perl 6 and Parrot Essentials* is available. Huzzah! Let joy be unconfined. http://xrl.us/chij Rules to match abbreviations Hans Ginzel wondered wondered about adding something to the rules system to easily match specified abbreviations of a string. Luke Palmer came up with a (pretty ugly) solution which he then wrapped very neatly in a rule. http://xrl.us/chik Enhancing open There's a good deal of mileage to be had talking about how to improve the open function it seems. Larry continues to come up with new and interesting ways of designing the language in such a way that almost every decision about how to do something can be deferred. Speaking as someone who wishes he could
This week's summary
The Perl 6 Summary for the week ending 2004-07-04 Another week, another Perl 6 Summary. This is becoming a habit. Let's do perl6-internals first shall we? Japhy's Perl 6 rules parser Last week Jeff 'japhy' Pinyan announced that he'd be working on a Perl 6 rules parser once he'd finished his Perl 5 regex parser. This week saw a deal of discussion on how his parser worked. The answer seemed to be It works the Right Way. Which is good. With any luck Steve Fink will be able to get this parser and the current (sketchy) Perl 6 compiler playing well together. http://xrl.us/ccie Complexities Last week Leo had pointed out that we'd need support for complex numbers in order to get the Piethon stuff running properly. This week there was some discussion of what was actually needed. Later in the week Ion Alexandru Morega posted a patch implementing them. I think Leo spoke for us all when he said Whee, great, thanks - applied. http://xrl.us/ccif New mailing lists There was some discussion of how perl6-internals should be broken up. It looks like we'll see new lists called parrot-internals, parrot-compilers and parrot-library (for internals hackers, compiler implementers and library builders respectively). The original perl6-internals will carry on, but will be focused on the actual internals of Perl 6. Some, or all, of these lists will be covered in these summaries for as long as I can keep up. Stack language for Parrot In as impressive a delurk as I've seen in a while, Michael Pelletier announced that he'd been lurking for a while, playing with Parrot and had implemented a little stack language not entirely unrelated to Forth which he'd christened Parakeet. He posted his implementation and got promptly Warnocked. http://xrl.us/ccig GMP and licensing issues Scott Bronson announced that he'd taken a look at GMP's license and he didn't think it was incompatible with Parrot's licenses. Dan wasn't convinced. Scott's still trying to convince him though. Robert Spier attempted to resolve the problem by pointing everyone at another possibly suitable library called IMath. http://xrl.us/ccih Meanwhile, in perl6-language Argh! Strings! Discussion of the various ways of slicing and dicing strings in Perl 6 continued. The issue is that, especially in a Unicode world, there are many ways of looking at a string, all of which are useful in different contexts. However, because you can look at a string as a sequence of bytes, codepoints, graphemes or whatever, then functions like substr get a little weird. If you were to say $substring = $a_string, 5 then what does the '5' mean? And that's just one example of where conceptual problems can arise. I confess that, whenever Unicode comes up, my gut reaction is to keep my head down and trust that Larry's going to get it right. Certainly the current formulation seems decently sane; things only get problematic if you're trying to do something well out of the ordinary. http://xrl.us/ccii if, loop, and lexical scope Discussion of Perl 6's new scoping rules (things are generally more consistent than they are in Perl 5; if a variable is declared inside a block, or in that block's signature in the case of - $a, $b {...} type blocks, then that block is its scope) continued. Some people like the new rules, others don't. http://xrl.us/ccij Different OO models Jonadab the Unsightly One had wondered about having objects inheriting behaviour from objects rather than classes in Perl 6. The gist of the answers he received was that it wouldn't be in the core of the language, but neither should it be too hard to implement something that worked how he wants. Undo? Michele Dondi wondered if Perl 6 would have a built in undo function for rolling back the history of a scalar (say). Rafael Garcia-Suarez pointed out that the concept wasn't a simple as it first appeared, especially in the context of threads, closures, side effects. He suggested that a better approach would be to implement a suitable transaction/rollback library that handled such things in an application appropriate fashion rather than using a 'half-baked kludge built into the base language'. Mark Biggar pointed out that the language already had hypothetical values, which did pretty much the right thing. Elsewhere in the thread, Luke Palmer attempted to explain continuations again. A sandwich was involved. http://xrl.us/ccik http://xrl.us/ccim -- Luke makes a continuation sandwich If not , then what Alexey Trofimenko triggered your Summarizer's sense of deja vu when he asked what was happening to the C-style comma (we're keeping it, more or less) and proposing a then keyword for use in the
This week's Summary
The Perl 6 Summary for the week ending 2004-06-27 What's this? No! It can't be! It's a *weekly* Perl 6 Summary. What is the world coming to? Sorry, I can't answer that one, so I'll tell you what's been happening this week in perl6-internals. Bignums, licenses, pie As you are no doubt aware, Python has bignums. And that means that, unless we want Dan to get a face full of Pie at OSCON this year, Parrot needs bignums too. Work on several fronts continued towards getting a bignum implementation for Parrot. Ideally, we'd like to just include GMP, but the license seems to require that the full source of GMP sip with any Parrot binary. Which isn't good when you're writing a VM that you'd like to be able to install on, say, a Palm. Scott Bronson suggested getting in touch with the GMP developers to see if there was anything that could be done about it. He volunteered to be the liaison, assuming Dan was cool with it. Meanwhile, Uri Guttman offered his 'stillborn' bignum implementation as a basis for our own bignum library. Leo commented that it might be a good idea in the medium to long term, but the Pie-thon is looming... http://xrl.us/cbf7 http://xrl.us/cbf8 Ion's Strings Remember Ion Alexandru Morega's string pmc that got Warnocked? Well, it got un-Warnocked this week. Dan liked it, so he checked it in. Congratulations Ion, don't forget to send in a patch to the CREDITS file. http://xrl.us/cbf9 Mmm... Pie-thon Dan reminded everyone of the URL of the benchmark that's going to be run for the Pie-thon. If Parrot doesn't run it faster than the C implementation of Python, then Dan's going to get a pie in the face and he'll have to spring for a round of drinks for the Python Cabal (is there one? Could be a cheap round...). Of course, the plan is to have Parrot be faster than Python so Dan'll get to chuck a Pie at Guido. Either way, if you're at OSCON this year it should be fun. Right now, Parrot is some way from, well, running it. Leo announced that he will start a series of postings discussing the main features (and requirements) of the various benchmarks. He started with some notes on b6.py. http://xrl.us/cbga http://xrl.us/cbgb -- Python needs exception objects http://xrl.us/cbgc -- Pie-thon and the recursion limit Class name hashes Leo wondered about the current implementation of class name hashes. We have two such hashes, one for PMC base classes and one for dynamic PMCs. Leo thought this was suboptimal (and liable to make one of the Pie-thon benchmarks problematic.) Dan agreed that unifying the hashes (and renaming PMC classes to have Parrot prefixes (ParrotFixedSizeArray anyone?)) was the way to go. http://xrl.us/cbgd Confusing parameter order Nicholas Clark was somewhat bemused by the choice of parameter order for the Parrot_PMC_set_intval_intkey function, which reverses the order of some parameters from the vtable version. He suggested unifying the two. Leo agreed that changing things round was the best bet and suggested that Nicholas go ahead and make the change to the extend.h interface. Dan didn't pipe up to say it was a bad idea. In fact, Dan didn't pipe up at all. http://xrl.us/cbge Perl 6 regex parser Jeff 'japhy' Pinyan announced that he was currently completing work on an extensible, regex-specific, parsing module. Once it's finished, he's going to start work on writing a subclass that parses Perl 6 rules. He thought it might come in handy for people implementing Perl 6. Luke Palmer thought it would be too; the grammar of Perl 6 is being specified in Perl 6 patterns. Initially it was hoped that Damian's Perl6::Rules module would be what was needed to bootstrap us, but 'serious bugs in the Perl 5 regex engine having to do with executing code within regexes' meant that Perl6::Rules can't do the job for us. So, good luck Japhy, we're depending on you. But, you know, no pressure mate. http://xrl.us/cbgf Leo's tasks for the interested Leo asked for volunteers to implement a class to handle complex numbers (needed for Python) and to implement sort method(s) for the various *Array PMCs. http://xrl.us/cbgg Meanwhile, in perl6-language Command line like switches for functions and operators Michele Dondi proposed syntax for adding 'command line' type switches to functions and methods which look almost, but not quite, entirely unlike Perl 6's named parameters. Brent Royal-Gordon pointed out that Michele's proposed rename -v = 1, $orig, $new; could be written, rather more Perl6ishly as: rename $orig, $new :verbose; Luke Palmer pointed out that wrappers could be used to add such extra named arguments to built ins, so the proposed behaviour for rename
This fortnight's summary
The Perl 6 Summary for the fortnight ending 20040621 Good evening. You find me typing away in a motel room on the edge of the Lake District on the shortest night of the year. I suppose, by rites, I should be spending the night by some stone circle drinking, dancing and generally making merry, but as I'm a teetotal, unfit, atheistical nerd with a mission to summarize I'll skip that and plough straight into the activities of another arcane sect. Yes, it's perl6-internals again... Towards an accurate README Andy Dougherty sent in a patch adjusting the Parrot README so that it accurately reflected the toolset needed to build parrot. For some reason, as well as the requirement for a C++ compiler if you want to build the ICU library, we've moved to needing Perl 5.6.0 rather than 5.005. Nicholas Clark suggested that, rather than bumping the Perl version requirement, we bundle appropriate versions of modules Parrot required, but chromatic thought it better to check the for the correct versions of said modules at Configure time and bail out if they weren't there. There was further discussion about whether going to Perl 5.6.0 as a requirement was the right thing to do -- the issue is that some OSes (FreeBSD and Solaris 8 were cited) still only ship with 5.005 family Perls. My feeling (which I didn't mention in the thread, more fool me) is that, as eventually the goal is to eliminate the need for Perl at all in the build process, then require 5.6.0 rather than 5.005 isn't exactly the end of the world. http://groups.google.com/[EMAIL PROTECTED] http://groups.google.com/[EMAIL PROTECTED] OS X Builds again Someone finally summoned up the tuits to fix the OS X build. Step forward Nicholas Clark and accept your plaudits. http://groups.google.com/[EMAIL PROTECTED] Basics of the PMC class set Dan announced that he was about to make some changes to the repository, including establishing a basic set of PMC classes. Matt Fowles wondered about Array PMCs, which seemed to be missing from Dan's list. Dan agreed that they should be rationalized as well. Bernhard Schmalhofer suggested adding a complex number class to Dan's basic menagerie, but Dan was unconvinced. http://groups.google.com/[EMAIL PROTECTED] Correct use of #define Nicholas Clark was moved to growl by a section of include/parrot/string.h that used a #define to define a type. Actually, he was moved to 'swearing and cursing and time wasted grepping to find out what a STRING is'. Dan agreed that this was bad and decreed: 'Typedefs for types, #defines for constants and bizarre (*temporary!*) debugging things.' http://groups.google.com/[EMAIL PROTECTED] The next release During a lull while Leo Ttsch was away at a conference, Dan mused on the next release of parrot. His goal for that is a rejig of classes/, aiming to make sure that all the PMCs we want are in and working, and that the ones we don't care about are neatly deprecated. Warnock applies. http://groups.google.com/[EMAIL PROTECTED] A small task for the interested Stretching the definition of 'small' somewhat, Dan asked for volunteers to implement the missing PMCs detailed in PDD 17. He reckoned it should be 'fairly straightforward'. A new entrant in these summaries, Ion Alexandru Morega took a crack at the String PMC and posted a patch to the list which was promptly ignored. Which seems a little unfair really. http://groups.google.com/[EMAIL PROTECTED] Bignums! Dan asked for a volunteer to get Bignums working. Alin Iacob stepped up to the plate. Leo suggested that, rather than starting from types/bignum.c, it might be better to use an existing, maintained, maths (Look, I'll spell 'summarise' with a 'z' -- the OED does -- but it will be a cold, cold day in hell when I start abbreviating 'mathematics' as 'math'. Ahem.) package. Dan worried about license compatibility; the proposed GMP package is licensed under the LGPL which may (or may not) be compatible with Parrots Artistic/GPL dual licence. After a closer reading he reckoned that GMP's license is definitely incompatible with Parrot. http://groups.google.com/[EMAIL PROTECTED] Adding Fixed*Array classes Matt Fowles posted a patch implementing Fixed Array classes. Dan applied it. Leo wondered about the patch's use of malloc(3) instead of Parrot's memory management. Dan wasn't worried in the case of fixed size arrays. http://groups.google.com/[EMAIL PROTECTED] Resizeable*Array classes Fresh from his Fixed Array triumph, Matt Fowles posted a patch implementing nave Resizeable Arrays. Leo thought it a little too nave, and worried about duplication of existing functionality. Dan wasn't worried about the navet, or the duplication of functionality. He
This fortnight's summary
The Perl 6 Summary for the fortnight ending 2004-06-06 Whee! There's a new graphics card in the G5, which means I can type this at the big screen again, which makes me happy. Well, it would make me far happier if the new card didn't leave horrible artifacts all over the screen like some kind of incontinent puppy attempting to fulfil OpenGL draw instructions. Maybe next week will see a third card in the box. Dang! It looks like the G5 will be off receiving some TLC from an Apple service centre while I'm on holiday next week. Which means that the 'weekly' summaries will continue on their fortnightly summer holiday schedule for at least one more summary. But then the lists themselves appear to be on summer footing anyway. Ahem. As you will probably have worked out by now, we start with perl6-internals. Library loading Jens Rieks is working on library loading code that does all the nice things we've come to expect from other languages. The plan being that you'll be able to write (say) use('some_library') and Parrot will go off and search it's include paths for some_library.(pbc|imc|pasm|whatever) and load it. As he noted, if you're going to implement that kind of code in parrot assembler (or PIR, or whatever), you need some way of loading the loading code. It's also a good idea to have a working stat. Jens added a Parrot_load_bytecode_direct function to the parrot core to support the first part. His please for a functional (if not complete) stat were answered by Dan who set about implementing the stat API he outlined a few weeks ago. http://xrl.us/b689 Embedding Parrot Leo Ttsch and chromatic answered Paul Querna's questions from last week about embedding Parrot. http://xrl.us/b69a Using PMCs as PerlHash keys TOGoS wanted to know how he could use a PMC as a key in a PerlHash. Leo replied that it was as simple as doing $P2 = new Key $P2 = key_string $P0 = $P1[$P2] Piers Cawley did some naive translation into PASM and got himself horribly confused. Leo and TOGoS corrected him. http://xrl.us/b69b First draft of IO and event design Remarking that events and IO are (kinda, sorta) the same thing, Dan posted his first draft of a unified IO and events design and asked for comments. This being p6i, he got several (though not as many as usual, maybe everyone likes it). Freeze, objects, crash, boom Will Coleda tried to get freezing and objects to play well together and failed. So he asked a bunch of questions. Leo didn't solve the problem, but he did have some pointers to where it was coming from. http://xrl.us/b69c MMD table setup semantics Possibly winning an award for the oldest rejuvenated thread, Nicholas Clark had some questions about a post Dan made about MMD at the end of April. He made a suggesting about how to calculate 'distance' for multi dispatch. Dan pointed out that Larry had decreed that the 'distance' would be the 'Manhattan Distance'. (Google has several definitions). http://xrl.us/b69d Compiler FAQ entry Will Coleda posted a possible set of entries for the compiler writers' FAQ. Leo had a few quibbles. Sterling Hughes suggested that having small, runnable source code examples would be really helpful. Layering PMCs Dan kicked off a discussion on how to go about layering PMCs. The usual suspects offered suggestions. The aim is to be able to layer behaviours on top of PMCs without massive overhead or combinatorial explosion problems. As usual with these things, there's several possible ways of doing it, the debate is about choosing the best one. http://xrl.us/b69e IO Layers Leo had some questions about the (not fully implemented) ParrotIOLayerAPI. He laid out a proposal for implementing things. Uri Guttman and Dan joined in a discussion of the issues. (Simple summary of the issues: Asynchronous IO is hard. Possibly more accurate summary of the issues: Asynchronous IO is *not* synchronous) http://xrl.us/b69f PIO_unix_pipe() Leo's implemented a PIO_unix_pipe() method which allows you to run an external program and capture the results with a Parrot IO handle. He doctored the open opcode to use it pipe = open /bin/ls -l, -| Dan liked it, but proposed also adding a backtick operator. http://xrl.us/b69g Register spilling Dan noted that it's possible to get the register allocator caught up in an infinite loop (or as near infinite as makes no difference) as it tries to work out a register spilling strategy. He proposed there be a 'slow but working' fallback method to use if the normal method goes through too many iterations. Leo suggested an delightfully brute force approach with some possible elaborations that Dan didn't think
This week's summary
The Perl 6 Summary for the fortnight ending 2004-05-23 Yes. I know. This week's summary is a week late. So it's a summary of the last two weeks. So let's get straight to perl6-internals shall we? Working on the Perl 6 Compiler Abhijit A. Mahabal posted his first ever patch, which updated the calling conventions used in the Perl 6 Compiler. Dan applied it promptly, and Allison Randal chimed in with some comments on the workings of the perl 6 compiler. There's a new document, which you'll find at languages/perl6/doc/developer_notes.pod in a CVS parrot, which is a scratchpad for developers to make notes of any issues that arise while they're working on the compiler. http://tinyurl.com/2o4lg Pants performing ponies The issues that cropped up in the last summary to do with poor ponie performance continued to exercise Leo Tötsch, Nicholas Clark and Jeff Clites as they homed in on the Ponie bug that had led to ludicrous numbers of PMCs being generated to no good end. It turns out that Parrot's garbage collection doesn't go that fast when there's 9 million live PMCs. Leo worked to improve things... http://tinyurl.com/29z6w MMD side effects Leo pointed out some strangeness related to the new multiply dispatched opcodes and proposed a solution. Warnock applies. http://tinyurl.com/35o3x The Parrot Question Repository Dan announced that he was trying (slowly) to get things documented and questions asked. Because questions to the list tend to get Warnocked or asked repeatedly, he's set up a new central question repository on the Parrot Wiki. He appealed for a volunteer to watch the list and add new questions to the Wiki page and (a possibly different volunteer) to watch the Wiki and post any answers back to the list. If such a volunteer should step up to the plate, I would be inordinately grateful if they could make a habit of commenting to any questions they transplant to the Wiki to let people know that this has been done. http://tinyurl.com/228g7 http://tinyurl.com/2vec8 -- Central Questions Point IO Opinions Dan asked for opinions on how the IO system was going to work when it came to dealing with record based files. Tim Bunce and Jeff Clites had suggestions and questions. http://tinyurl.com/2gruo The Right Way Repository Dan announced that he'd started an FAQ aimed at compiler writers targetting parrot in docs/compiler_faq.pod in your local CVS parrot. It's a bit sparse, but the proverb about mighty oaks and acorns applies. We hope. Brent Royal-Gordon was first in with a question and answer. http://tinyurl.com/3dxqp Towards a multiply dispatched parrot Leo continued his work on switching over to a multi dispatched vtable architecture and asked for comments on the work so far, and the sanity of the whole concept. Dan was very positive, and the work continues. http://tinyurl.com/yvk4b Cygwin Cygwin continues to be a fully paid up member of the awkward squad of environments. Joshua Gatcomb pointed out that JIT had broken again. He and Leo engaged in debugging by email as Leo worked to fix things. http://tinyurl.com/2rqxc Perl 6 Parser weirdness Abhijit A. Mahabal had some problems with the Perl 6 compiler's parser and asked for help. It looks like it's an issue with the load path using relative paths, which makes it fragile when you're running in an unexpected directory. The discussion evolved into one on the nature of the (eventual) Perl 6 parser. Dan worried that a recursive descent parser will be awfully slow compared to the current perl 5 parser. It looks like Perl 6 *won't* have a recursive descent parser, but the conversation got rather beyond my level of computer science (at least where parsers are concerned). Larry said that he was in favour of a hybrid parser which used both top down and bottom up parsing techniques. Dan suggested that since Larry has been itching to get into the internals anyway, [the parser]'d be a good place to start. http://tinyurl.com/2d6zs Event design sketch Discussion of Dan's event design sketch continued. Gordon Henriksen was worried that the events system as sketched wouldn't work well with GUI type events. Rocco Caputo pointed out issues with Daylight Saving for timed events. Leo asked for a glossary. And those are just the items that caught my eye as I went into speed skim mode. http://tinyurl.com/322o4 PARROT_API, compiler and linker flags Ron Blaschke has been working on getting Parrot's linker magic right; and he presented his findings and warned us that he intended to go ahead and implement something based on them unless there were substantive objections. There weren't any objections as such, but there were an awful lot of issues raised
This week's summary
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
This week's Summary
The Perl 6 Summary for the week ending 2004-04-25 And we're back on a weekly schedule again (unless the Mayday bank holiday knocks me for six next week). As I expected, the Apocalypse has brought out a rash of prophets and prognosticators in perl6-language, but perl6-internals is still ahead on number of messages per week. Constant Strings I confess I'm not sure I quite understand the constant strings patches that Leo Tötsch and Jeff Clites were discussing. I understand the bottom line though -- they make parrot a lot quicker when comparing constant strings. Huzzah! Then it turned into a discussion of Unicode (or at least, Parrot string handling which is almost, but not quite, the same thing). http://tinyurl.com/2mowl Parrot m4 0.0.4 Bernhard Schmalhofer posted a patch to bring his parrot implementation of m4 up to what he's calling version 0.0.4 http://tinyurl.com/34be5 SDL Parrot status Portland Parrot stalwart, chromatic, posted a link to a SDL Parrot site he's set up with current status, downloadable snapshots and other good SDL Parrot related things. http://tinyurl.com/2gcbs Passing arrays of structs to NCI subs That man chromatic again, this time he asked if there was a secret syntax for passing and retrieving arrays of things to and from NCI. Leo noted that, according to the docs, there is no secret syntax, it's all documented but unimplemented. http://tinyurl.com/2xsrc PMC Constants Last week, Leo asked for comments on his proposal for PMC constants. This week, Dan replied. Essentially he's all for the idea, but wasn't sure which implementation strategy was the best choice. http://tinyurl.com/2ff8t Assign and set Leo announced some changes he'd made to the behaviour of the set and assign opcodes. Jens Rieks pointed out a case that he'd missed. http://tinyurl.com/3bl4u hyper op - proof of concept Leo also implemented what he described as a rather hackish and incomplete new opcode called hyper. Dan liked it enough to suggest that we should go the whole hog and add a hyper vtable to PMCs, with hyper versions of all the standard vtable entries. He and Dan had a long discussion of this, with contributions from various luminaries including Larry. There was some debate as to whether we really needed overridable hyper ops, but Dan's adamant that whatever happens they'll be implemented in a vtable to allow for potential optimizations in some cases. http://tinyurl.com/37wqy Separating allocation and initialization of objects Last week, Leo posted the latest object benchmarks, and things were fast. But there was one test where Python was faster. Analysis of the results and the code seemed to point the finger at Parrot's combined allocation and initialization. This week Dan confessed that he was leaning towards separating the two because that would allow for a standard PCC call into the initialization code. He pointed out that there were still a few issues, but that appears to be the way he's thinking. http://tinyurl.com/24h68 Another config task Dan pointed out that the current config scheme relies rather heavily on flags set in the current perl install, which isn't ideal. He suggested that people might like to look into making Parrot's config step rather less Perl dependent and pointed at things like 'metaconfig'. http://tinyurl.com/3xn29 Problems with the Perl 6 Compiler Allison Randal noted that languages/perl6/ was failing all its tests. The issue arose because the Perl 6 test module inherits from Parrot::Test, and Parrot::Test's behaviour got changed recently. She wondered why the changes had been made. After some discussion, Allison provided a patch to make things work with the new Test module. http://tinyurl.com/2j3kp IMCC temp optimizations... Dan is possibly the only person using Parrot in a commercial (mission critical?) environment, using a compiler from a legacy language to Parrot. He's currently experiencing problems with IMCC taking a long time to compile the PIR generated by his compiler. Apparently it's because he's using a lot of .locals and temps. He and Leo discussed it back and forth to try and find optimizations (both of IMCC and of Dan's compiler) for the issue. (Dramatic) progress was made. http://tinyurl.com/3f9gq Korean character set information Last week, Dan had wished he had access to anyone who knew anything about Korean. This week kj provided some information. The ensuing discussion of Unicode (again, maybe I'm going to have to extend my I don't cover the Unicode arguments policy from perl6-language to the internals list too) led Jarkko Hietaniemi to propose that Parrot's standard character set be cuneiform, with Phaistos disc symbols for
This fortnight's summary
The Perl 6 Summary for the fortnight ending 2004-04-18 The only problem with summarizing two week's worth of Perl 6 happenings is that there's twice as much stuff to summarize. Still, there's no way I could have made the time to write a summary last week so I'll take my lumps. I am exceedingly grateful that Apocalypse 12 (Objects) wasn't released the Thursday *before* Easter though, as it is I can clear the decks for the expected perl6-language explosion next week. We'll start with perl6-internals as usual. Initializers, finalizers and fallbacks There was some discussion of the various functions that get called by object initialization/destruction etc. Dan wondered what he'd been thinking when he declared that there would be distinct FINALIZE, DELETE and CLEANUP properties (instead of declaring that a function must be called (say) FINALIZE, you can mark any function with a FINALIZE property, and Parrot will recognise that as the function to call at finalization time). Andy Wardley quibbled about American/British spelling, but Tim Bunce pointed out that the 'ize' form is preferred by the Oxford English Dictionary (and your humble summarizer). Leo meanwhile made a (Warnocked) proposal for a new init scheme. http://tinyurl.com/2s2xp http://tinyurl.com/2dfj8 New SDL Parrot bindings Taking advantage of Parrot's new, improved object system, chromatic updated us all on his efforts to provide a shiny OO interface to the SDL library. Jens Rieks wondered about chromatic's implementation choices, and posted a few suggestions and questions. Dan reckoned he'd prefer it if the SDL bindings used Parrots internal events systems. The catch being that Parrot doesn't actually have an internal events system yet... Later in the fortnight, chromatic posted an initial release and promised to post his notes and slides from the Portland Perl Mongers meeting where he was showing it off. There's no sign of 'em yet though. http://tinyurl.com/265sg http://tinyurl.com/2kpax new method Jens Rieks and chromatic were unsure of the best name for a constructor method. They'd like to be able to write a method called new, but IMCC wouldn't allow it. Leo Tötsch pointed out that there's already a default constructor method: __init. However, chromatic wasn't too keen on it because he wanted to be able to pass arguments to the constructor. Leo pointed out that, although it wasn't officially supported, you could pass arguments in the same was as if you were making a normal parrot function call. Dan pointed out that our current initialization system is some way from being the final one (which will use properties to mark constructor methods). What we have now is more like an allocator than a real constructor. http://tinyurl.com/3gv6y Overriding __find_method in PASM? Noting that, according to PDD15, defining a method called __find_method should allow Perl 5 AUTOLOAD-like behaviour, chromatic wondered if it was workable yet and, if it wasn't, how he should go about adding it. Leo confessed that what was in the docs was a cut and paste error and AUTOLOAD behaviour hadn't yet been defined. He suggested a workaround using exceptions (which turned out to be overkill for what chromatic needed, but it looks interesting.) http://tinyurl.com/ypvze Language interoperability Randy W. Sims popped over from the Module-Build mailing list, where they've been discussing plugin architectures to allow for the modification and extension of Module::Build's capabilities. One of the desiderata is that, once the transition to Parrot is underway, it should be possible to write plugins in any language supported by Parrot. (Mmm... a build system written in Befunge, it's what the world's been crying out for I tell you). There are currently two competing schemes, one involving manipulating the class hierarchy at runtime and the other involving plugins held in particular directories and a formal API. Randy wondered if there were any technical reasons to choose one scheme or another. Dan reckoned that there were no particular technical reasons, but the inheritance based scheme rather offended his sensibilities, going so far as to say No way in hell it'll ever make it in as parrot's standard module building system if you do it [the inheritance munging solution]. http://tinyurl.com/33nsw Save the Return Continuation! The ongoing discussion about continuations seems to be fizzling slightly. Piers Cawley had proposed moving the return continuation out of P1 and held 'somewhere else' (possibly the control stack) and then, when a routine needed to do cunning things with the current continuation it could access it with some op (say get_current_cont). Dan reckoned he
This week's Summary
The Perl 6 Summary for the week ending 2004-04-04 Wednesday? Why did I leave it 'til Wednesday to write the summary? I must have *some* reason. Or maybe not. I'll give fair warning that I won't be doing a summary for next week though, what with Easter and everything, but you'll get a fortnight's summary the week after, because I'm good to you like that. We'll start this week's summary with perl6-internals. MMD vtable functions in bytecode Dan had announced that he was working on adding parrot bytecode support for multimethod dispatch, and outlined how they'd be used and got semi-Warnocked. The discussion got going this week, Leo Tötsch was unsure about some of Dan's implementation choices. In particular, he wondered if MMD subs should use PMCs rather than the simple function pointer that Dan had used. Dan thought not. http://tinyurl.com/3do7z Behaviour of PMCs on assignment The discussion of what to do when assigning to PMCs continued. The issue is complicated because we are trying to be friendly to multiple languages (though, as far as I can tell, the really problematic issue is Perl Scalars; most of the other languages that spring to mind have variables that are 'simple' pointers to objects; Perl Scalars can hold (seemingly) a million and one different things, potentially all at once). TOGoS argued that, as things stand there's a disjunction between the way (say) integer registers work and the way PMC registers work. With Integer registers, if you do $I1 = $I2 + $I3 then $I1 gets a 'new' integer; there doesn't need to be a preexisting integer. However, if you were to do: $P1 = $P2 + $P3 what actually happens (assuming we're using straightforward PMCs here...) is more like: $P1.value = $P2 + $P3 In other words, you need a preexisting $P1. Leo agreed with TOGoS's argument, but worried that implementing it would blow core size up to an insane value. Dan didn't agree with TOGoS though, but I'm afraid I didn't quite follow his reasoning (probably because I'm being dumb this morning). http://tinyurl.com/24yaw In which your Summarizer asks dumb questions In an extended moment of stupidity, Piers Cawley asked why we had distinct register and user stacks. Leo explained it to him, very politely I thought. http://tinyurl.com/3x77x Stalking the wily Garbage Collector bug Jens Rieks's *projet du jour* -- an EBNF parser in Parrot -- tweaked a garbage collection bug so he posted appropriate debug traces and Leo set to work on it. He didn't get it working fully, but it takes longer to crash now (but it crashes in the same bit of C code). Jens thinks it's a problem with Parrot's handling of strings. http://tinyurl.com/3eqlh New SDL Parrot bindings underway That stalwart of Portland.pm, chromatic, announced that he's in the process of porting the existing SDL Parrot bindings to use our shiny new Object system. Jens Rieks wondered why he was prefixing his method names with underscores (you only need underscores for globally visible functions, methods can have straightforward names). Tim Bunce wondered why chromatic wasn't using nested namespaces. Leo pointed out that nested namespaces haven't been implemented just yet. http://tinyurl.com/yrue9 Some new classes Dan checked in some stub code for PMCArray and StringArray. Eventually they'll be auto-resizable, PMC or String only arrays, but right now they're simple wrappers for PerlArray. He suggested that rewriting them so they were real, efficient arrays would be a Good Thing (and, I suggest, a relatively gentle introduction to Parrot hacking if anyone reading this is interested.) Jens Rieks offered up a patch for his data dumper so it could take them into account, which Dan applied. http://tinyurl.com/29gsq Points of focus Dan went all Managerial on our collective donkey and posted a nice bulletted list of things that need sorting out for a 0.1.1 release. The general thrust of the message is bug fixing and documenting, which is good. http://tinyurl.com/35mor Fun with non deterministic searches One of the canonical illustrations of things to do with continuations is non deterministic searches. Imagine that you could write $x = choose(1,3,5,9) $y = choose(1,5,9,13) assert $x * $y == 15 print $x * $y == , $x * $y, \n and have 3 * 5 == 15 printed out. (Okay, so in Perl 6 you're going to be able to do that with junctions, but this is about an underlying implementation). Piers Cawley translated a simple non deterministic search algorithm from scheme to Parrot and posted the (initially failing) code to the list and pointed out that, even if he tweaked IMCC to generate full continuations
This week's summary
The Perl 6 Summary for the week ending 2004-03-28 ... and we're back! Another interesting week in Perl 6. Your Summarizer even wrote some [parrot] code and it's been simply ages since he did that. In accordance with ancient custom, we'll start the summary with perl6-internals. Building with miniparrot Back in the early days Dan proposed, and it was generally agreed that the Parrot build process wouldn't be Perl dependent, but instead there would be a few OS specific 'bootstrap' scripts, enough to get miniparrot up and running. Miniparrot would have just enough smarts to be able to complete the configuration and build the final full parrot. After last week's discussion about reinventing metaconfig, I wondered if the miniparrot plan was still in place. It seems I'd missed the discussion of stat that ended up talking about how miniparrot would be able to do its job. I find myself wondering what else is needed to get miniparrot to the point where it can start doing configuration work. http://tinyurl.com/2djx8 Continuations continued (and fun with stacks) Warning: The following discussion of the Continuation discussions is irrevocably biased; I find it very hard to be objective about discussions I participate in, and I was rather loud mouthed in this one. The previous discussions of the uses and semantics of continuations carried over into this week. Piers Cawley argued that the current stack architecture seemed to be optimized for the wrong thing, with the special case RetContinuations being symptoms. He argued that current architecture (where a single stack frame can accommodate multiple pushes, with copy on write semantics being used to handle full continuations) should be replaced with a 'naïve' architecture using linked lists of immutable, simple stack frames, one frame per push. Switching to this approach, he argued, would do away with a great deal of code complexity, and issues of high object creation overhead could be offset by using free lists and preallocation to reuse stack frames. Oh yes, and there'd be no difference between a RetContinuation and a full Continuation with this scheme. Leo Tötsch wasn't convinced. Dan was though, and made the decision to switch to single item per frame, immutable, non COW stacks. Leo implemented it. His first cut was rather slow; later refinements added freelists and other handy stuff to start pulling the performance back up. I'm sure there's more refinement to come though. http://tinyurl.com/2k9ke http://tinyurl.com/yqsxa http://tinyurl.com/34kas http://tinyurl.com/2fo5j http://tinyurl.com/3buyk Variadic functions Ilya Martynov had some questions about how to handle variadic functions. Leo clarified some things and pointed Ilya at the foldup op. Jens Rieks suggested aliasing the registers I[1-4] to argc[ISPN], which Leo liked. I'm not sure he's implemented it yet though. http://tinyurl.com/yugc6 GCC compiling to Parrot In previous weeks Gerard Butler had posted wondering about getting GCC to target Parrot. The initial response was rather negative, pointing out that GCC and Parrot saw memory *very* differently, to the extent that there would probably be a need have special PMCs for GCC managed memory, which would make communication between GCC implemented languages and Parrot implemented ones rather tricky. Undeterred, Gerald mapped out a way forward and asked for opinions. Dan thought the scheme looked reasonable, but fenced that with the caveat that he knows nothing about GCC's internals. http://tinyurl.com/2qm87 Safe execution core and ops classification Leo checked in some patches from Jens Rieks to allow classification of ops. He thought that this meant we were a good way along the road to providing a 'Safe' run-core option, though there was still a lot to do. He outlined a road map and asked for comments (and implementations). Comments were forthcoming, and Dan eventually bundled his comments up into a single post with some design in it. For some reason this induced some industrial hand waving about Proof Carrying Code from Steve Fink (he accused himself of hand waving, not me). Jarkko Hietaniemi (Emacs' dynamic completion suggested 'Jarkko Himself' for that one. Well, it made *me* smile) offered the pathological eval 'while([EMAIL PROTECTED],0){}' as an example of the kind of bad things that can happen if you allow eval EXPR in your 'safe' code, even with strict rules on what it's allowed to compile (Dan pointed out that quotas would help in this particular case...) If there's one lesson to take from the discussion it's this: Code Safety is Hard. Whether it's AI Hard or not is left as an exercise for the interested reader.
This week's summary
The Perl 6 Summary for the week ending 2004-03-14 Another week, another summary. It's been a pretty active week so, with a cunningly mixed metaphor, we'll dive straight into the hive of activity that is perl6-internals. Benchmarking Discussion and development of Sebastien Riedel's nifty Parrot comparative benchmarking script continued. Leo suggested a handy config file approach which would allow for adding benchmarks in other languages without having to change the script itself. The initial results don't look good if you're name's Dan and you want to avoid getting a pie in the face at OSCON though, as Dan pointed out, there's a few tricks still to be played in this area. Anyway, benchmark.pl is now in the CVS tree if you want to play with it. http://tinyurl.com/2h7c4 Speeling mistacks The ever helpful chromatic applied Bernhard Schmalhofer's patch to fix up an endemic speling mostake in some tests. Apparently DESCRIPTION isn't spelt DECSRIPTION. http://tinyurl.com/3dd85 Dates and Times Discussion of parrot's handling of dates and times continued this week too. Joshua Hoblitt who works on DateTime.pm (a very handy base for doing date/time handling in Perl 5, you should check it out) said that the DateTime people really, really want is an epoch that's *absolutely* fixed across all platforms. There was also some discussion of where the opcode/library boundary should be placed, with some arguing that the likes of strftime should be implemented as opcodes. Melvin Smith responded to this with what seems to me to be a very telling point: If we cannot provide a decently performing VM that makes people want to write stuff in bytecode (or compiled to bytecode) we have failed anyway. Toward the end of the week, Dan announced some decisions and questions. Larry had a few quibbles, but otherwise there have been no other comments. Personally, if I never hear the phrase leap second again, I'll not be unhappy. http://tinyurl.com/2s5ep http://tinyurl.com/2djx8 -- Dan's decisions Alternate function calling scheme Dan has come to the view that we need an alternative, light weight, calling convention for calling vtable opcode functions; the idea being that this should speed up objects a tad. He asked for suggestions. Leo Tötsch wasn't convinced that we really need special calling conventions, arguing (with numbers) that it would be best to concentrate on speeding up object instantiation by optimizing object layout. Simon Glover agreed with him, noting that simply changing the Array that used to store class, classname and attributes gave him a speedup of around 15% on the object benchmarks. http://tinyurl.com/2699g Summary Correction Last week I said that we can't yet do delegated method calls for vtable functions with objects. Leo pointed out that, actually, we can now. Leo also disclaimed any responsibility for helping Brent Royal-Gordon (né Dax?) fix up the support functions for Parrot::Config, though Brent later claimed that he was merely the person doing the typing... Jerome Quelin noted that parrotbug has already reached version 0.2.1 (I wonder what its version will be when Parrot 1.0.0 gets released). http://tinyurl.com/2ksox http://tinyurl.com/3hyky Dead Object Detection improved Not content with his work on everything else this week, Leo has revisited the Garbage Collector and tracked down a couple of bugs including a really nasty sounding one that caused disappearing continuations. He even isolated the problem with a test. http://tinyurl.com/2m7sf Rejigging trace output Leo's rearranged the output of parrot -t slightly in an effort to make it more readable. Jens Rieks was impressed and pointed out a couple of issues, which Leo quickly fixed. http://tinyurl.com/33r9w Namespaces in IMCC Dan's day job continues to be a handy driver of Parrot development. This time he needs to make use of namespaces and, whilst namespaces themselves aren't completely nailed down yet, there's enough there that the time has come to work out the syntax for working with them in IMCC. He proposed .namespace [foo; bar; baz] as a way of setting the current namespace to foo::bar::baz (in Perl style, your language may vary). Leo was okay with that as far as it went, but pointed out that things were slightly more complicated than Dan's proposal implied. He suggested that the time was right to sort out the duties of the PIR assembler towards variable names, name mangling, lexical scopes, namespaces, globals and all that good stuff. Dan punted slightly on this latter part, saying that, in general it shouldn't be the assembler's job to track them. The current namespace would simply be used as the namespace
This week's summary
The Perl 6 Summary for the week ending 2004-03-07 Time marches on, and another summary gets written, sure as eggs are eggs and chromatic is a chap with whom I will never start a sentence. We start, as always, with perl6-internals. Platform games Work continued this week on expanding the number of known (and preferably known good) platforms in the PLATFORMS file. Languages tests Dan reckons it's time to be a little more aggressive with tests for ancillary stuff, in particular the contents of the languages subdirectory. He called for language maintainers (and any other interested parties) to at least get minimal tests written for all the languages in the languages directory, and to get those welded to the languages-test makefile target. http://tinyurl.com/24sd3 IMCC and objects/methods Tim Bunce congratulated everyone on Parrot 0.1.0 before asking about where we stood with IMCC and objects/methods. Leo confirmed Tim's supposition that there is no syntactic support for objects and methods in IMCC, at least in part because there's been no discussion of how such syntax should look. http://tinyurl.com/2jerk Parrotbug reaches 0.0.1 Jerome Quelin responded to Dan's otherwise ignored request for a parrot equivalent of perlbug when he offered an implementation of parrotbug for everyone's perusal, but didn't go so far to add it to the distribution. I don't think it's been checked into the repository yet, but it'll probably go in tools/dev/ when it does. Later in the week, he actually got it working, sending mail to the appropriate mailing lists. With any luck the mailing lists themselves will be up and running by the time you read this. http://tinyurl.com/3fknl Subclassing bug Jens Rieks found what looked like a problem with subclassing, which turned out to be a problem with clone not going deep enough. Simon Glover tracked it to its den and Dan Sugalski fixed it. http://tinyurl.com/ysogd Good news! Bad news! Good news! Dan says the infrastructure is in place to do delegated method calls for vtable functions with objects. Bad news! It doesn't actually work because it's impossible to inherit from delegate.pmc properly. Dan pleaded for someone to take a look at pmc2c2.pl and or lib/Parrot/Pmc2c.pm and fix things so that the generated code is heritable. http://tinyurl.com/2ouce Parrot m4 updated Bernhard Schmalhofer posted a patch to improve the Parrot implementation of the m4 macro language. http://tinyurl.com/2aauu Use vim? I don't use vim, but it seems that Leo Tötsch does. He's added some handy dandy vim syntax files for IMC code. If you're a vim user you might like to check it out. Leo points out that the syntax tables might well be handy if you don't know all 1384 opcode variants by heart. http://tinyurl.com/36gqv Parrotris Sadly, Jens Rieks' Parrot and SDL implementation of tetris didn't quite make it under the wire for the 0.1.0 release. However, Leo has got round to trying it and is impressed, though he did spot a few bugs (it doesn't spot that the game is over for instance). Jens is working on fixing those (and on adding new features), which he reckons will go a deal faster when IMCC has better syntactic support for OO techniques. http://tinyurl.com/2hklm Dates and Times To paraphrase Barbie: Dates and Times are Hard. Not that hardness has ever stopped Dashing Dan Sugalski before. This time he waded into the swamp that is Parrot's handling of dates, times, intervals and all that other jazz. He started by soliciting opinions. He got quite a few. The discussion can probably be divided into two camps: KISS (Keep it Simple) people, and DTRT (Do The Right Thing) people. But KISS still has it's complexities (which Epoch do we want? Should time be a floating point value?) and what, exactly, is the Right Thing? The catch is, time is a messily human thing, and computers are really bad at messy humanity. Larry said that Dan could do what he wants with Parrot, but he wants Perl 6's standard interface to be a floating point seconds since 2000. He argues that floating point will almost always have enough precision for the task at hand, and by the time it doesn't, it will. :-). He also argued that normal users should *never* have to remember the units of the fractional seconds. Zellyn Hunter pointed everyone at Dave Rolsky's excellent article on the complexities of handling dates and times with a computer. Discussion is ongoing, but it seems that Larry and Dan are leaning towards the KISS approach. http://tinyurl.com/3dqhn http://tinyurl.com/ywcs9 Initializers, finalizers and fallbacks Anyone who has been reading the internals list for any length of time, or who has chatted
This week's summary
The Perl 6 Summary for the week ending 20040229 Welcome to the leapday summary. We'll crack straight on with perl6-internals Running up to release time As Leapday had been chosen as the release date for Parrot 0.1.0, the week was mostly spent getting things ready for release. A case in point was the PLATFORMS file which lists those platforms on which Parrot is known to compile and run, which (at the beginning of the week) was short several platforms and generally out of date. So everyone manned the pumps and sent in reports of success and failure. BTW, if you manage to get Parrot up and running (or even partially up and limping) on a platform that's not listed in PLATFORMS then [EMAIL PROTECTED] would be very pleased to hear from you. http://tinyurl.com/287f2 Objects and time Dan announced that he'd trodden on one of the nasty bits of objects; the proper ordering of classes for initialization and destruction in the face of multiple inheritance. He announced that he was in the process of actively ignoring it for the time being and canvassed opinions about whether to delay the Leapday release in favour of fully specced/implemented objects or whether to make the 29th without objects, or some other choice. In the end we decided to still aim for the 29th, with objects in a 90% there state, but with big 'HERE BE DRAGONS' warnings plastered on the tricky edge cases. A little later Dan announced what would be there for the release (Multiple inheritance, attributes, object instantiation and method calls) and what wouldn't (monkeying with some things after subclassing/instantiation, method redispatch and fancy namespace lookups). As the week progressed, objects inched closer and closer to readiness, though at least one summarizer's heart was in his mouth as the week ebbed away. Would Dan get everything he'd promised working before the deadline? Tune in later on to find out. http://tinyurl.com/34db3 http://tinyurl.com/2xuoa Feature Freeze On Wednesday, Leo Tötsch announced a feature slush (patches to add OO features were still being accepted) in anticipation of a release. The patch rate increased as people got on with fixing up failing tests on various platforms, improving documentation, and improving OO functionality. Not all the object patches were from Dan; chromatic got in on the act with a couple of tweaks to parrotobject.pmc... http://tinyurl.com/2u3kb Native PBC issues It turns out that, just at the moment, Parrot bytecode isn't actually platform independent. This will, of course, get fixed, but it's not Leo's top priority at present. He asked people who are running Parrot on 64 bit and Big endian architectures to submit native_pbc test files (if you're on such an architecture, take a look at t/native_pbc/*.t for instructions, and the Parrot community will thank you for it). http://tinyurl.com/2fh5r Object Questions Simon Glover did some sterling work exercising the Object documentation and implementation, posting several bug reports and questions. http://tinyurl.com/3bnys http://tinyurl.com/yu9ce Ladies and Gentleman: Objects! On Wednesday, several full days before the release date, Dan announced that objects were done (well, everything that he promised would work did) and asked for people to start 'abusing it heavily'. Which they promptly did. There was applause too. http://tinyurl.com/2bsqv Next on the hit list Having got objects up, Dan immediately posted a list of desiderata for the next release but one. Is there no stopping him? http://tinyurl.com/38ymw Today we have naming of parts Will the madness never stop? Mitchell Charity spoke for everyone when he posted an extract from PDD15: What .NET calls an attribute parrot calls a property What .NET calls a property parrot calls an attribute Everyone shared the pain, though Paolo Molaro pointed out that it's not exactly accurate and the .NET name for a parrot attribute is 'field' (which is yet another term with wide variety of meanings when you think about it). Not being the biggest OO fan in the world, Dan swears he's just going to rename them Fred and Barney but not tell anyone which is which. http://tinyurl.com/24j36 LANGUAGES.STATUS updates Mitchell also pointed out that LANGUAGES.STATUS was out of date and several languages which were supposed to be okay failed to work on his system. He asked for feedback to get it updated correctly. http://tinyurl.com/3xow7 Inconsistent Parrot/IMCC behaviour Gregor Purdy found that Parrot was doing different things with the .pasm file generated from an .imc file by IMCC than it was when it ran the .imc file directly. Melvin Smith and Leo both agreed that it was a bug,
This week's summary
The Perl 6 Summary for the week ending 20040222 Welcome to the latest belated Perl 6 Summary. I'm running late, so we'll just dive straight into perl6-internals Loading bytecode at runtime Last week Dan had specced out the rules for runtime loading of bytecode. This week, Leo Tötsch started implementing it. There was a certain amount of quibbling about syntax, but that was quickly sorted out. http://tinyurl.com/27kp6 Objects Dan continued his work on objects and on sorting out method resolution niggles. Getting ahead of myself slightly, he finished it this week. http://tinyurl.com/33ql7 Obfuscated Parrot I reproduce this product of Leo Tötsch's warped brane without comment: bounds 1 trace 0 split P0, '', \nrekcaH torraP rehtona tsuJ add I1, 3 add I2, 4 branch I2 pack S23, 793, I1, I0 branch I2 add I2, 382, I1 branch I2 new S23, 911, I0, I0 branch I1 transcode S23, S0, -19 end And, to compound things: bounds 1 trace 0 newclass P0, Just another Parrot Hacker\n shift S0, P5 does I0, P0, S0 add I0, 4 bsr I0 pack S0, 381, I0, I0 invoke ret Look, OO badness http://tinyurl.com/2xbye http://tinyurl.com/2eufv IO fixes for Win32 I must confess I didn't understand the details of the discussion, but Goplat, Vladimir Lipsky and Melvin Smith spent some time working on IO issues under Win32. http://tinyurl.com/3b3bw Parrot Dumper updated Jens Rieks continued his sterling work on a Parrot Data::Dumper equivalent, posting a new version that does bounds checking and PMC property dumping. A later refinement added support for self referential data structures and other edge cases. http://tinyurl.com/ytmmz ConfigScript3 TOGoS announced a new language targetting Parrot. http://tinyurl.com/2pszj http://tinyurl.com/2b942 Symbol naming and IMCC2 Dan ruled on the symbol naming issue discussion. Essentially, if your symbol includes a sigil, you're not going to be able to use it directly. Learn to love symbol tables and .alias. http://tinyurl.com/37fx3 TODO: parrotbug Dan asked for someone to implement a parrotbug script to handle building and possibly sending the bug reports into RT. The script should work in a similar way to perlbug, appending configuration information etc to any bug report. http://tinyurl.com/3x59b TODO: Forth as a compiler Dan asked for a volunteer to fix forth.pasm so that it can be loaded in as a compiler module, allowing one to do: compile P5, ForthCompiler, 1 2 + . and have it print out 3. http://tinyurl.com/2zzrr Documentation tasks Taking time out to heap praise on the deserving Michael Scott, Dan outlined a few documentation jobs that need to be done (hopefully) before the next Parrot release. http://tinyurl.com/3eons SDL goodness The work on SDL support continued apace, with chromatic checking in several SDL related fixes and enhancements. http://tinyurl.com/yrsgk http://tinyurl.com/2oycl Parrot Day at the Austrian Perl Workshop Thomas Klausner announced that this year's Austrian Perl Workshop would have a Parrot Day, with a tutorial from Leo Tötsch and hopefully some other good stuff from Parrot luminaries. Thomas also asked for people to submit talk ideas. http://tinyurl.com/29ev4 http://tinyurl.com/2257c SDL + Parrot = Tetris Jens Rieks announced the alpha of an implementation of tetris in Parrot using SDL for the display. Yay Jens! Mmm... a time sink... just what the Parrot developers need. http://tinyurl.com/2vb3d The First International Workshop on Interpreted Languages Dan pointed us all at the First International Workshop on Interpreted Languages' Call for Papers. http://tinyurl.com/2golt http://tinyurl.com/3cuhu Meanwhile, in perl6-languages Traits/Roles I know I've had this feeling of déjà vu before, but I've spelt it right this time. Discussion of Roles continued this week. If I never read another discussion of the difference between Dog::bark and Tree::bark again, it'll be too soon. The Sort Problem The other topic of discussion this week covered sorting. It looks as though Perl 6's sort function is going to be rather more powerful than the Perl 5 equivalent; hopefully this means Perl 6 will finally see the back of code like: map { $_-[0] } sort { $a-[1] = $a-[1] } map { [$_, extract_key_from($_) } @array Damian's post on the subject, referenced below, looks like the front runner. It's worth reading if you're interested in sort itself or if you're interested in how Perl 6's multi dispatch will work.
This week's summary delayed
I'm afraid that this week's summary won't be posted until at least Wednesday. Sorry.
This week's summary
The Perl 6 Summary for the week ending 20040215 In his talk on Parrot at OSCON last year, Dan said that Parrot would have objects 'by the end of the week'. It's been a very long week, and it's not finished yet. Right, venting over, time for the summary. I'll start with perl6-internals, as always. Actually, we're starting slightly before the usual start of the week because about half an hour after I sent last week's summary off I realised I'd completely missed a couple of threads. Some minor decisions and timetables Dan made a few design decisions and outlined a release timetable for the next release of Parrot (which was initially set to be Valentine's Day, but the appeal of February 29th for a Leap Parrot release proved to be greater). http://tinyurl.com/2y8fz Why didn't I mention this last week? Jens Rieks earns a Wow, cool! from me with his parrot version of Data::Dumper. Way to go Jens. People were impressed. http://tinyurl.com/2uebj Supporting simple PMCs as keys Stéphane Payrard posted a patch to support using simple PMCs instead of full on key PMCs for simple lookups. He and Leo discussed it, but the patch hasn't been accepted yet. http://tinyurl.com/2fru2 Keyed access to UnManagedStruct Everyone's favourite differently capitalized O'Reilly employee, chromatic (Maybe the new running joke should be my struggles to avoid using his name at the start of a sentence so we don't have a falling out cases), continued his discussion with Leo about keyed access to Unmanaged (and presumably managed) C structs. http://tinyurl.com/yuk3m http://tinyurl.com/2c6z6 -- An example of chromatic's problem Backward branch, fixed Remember the problem with a backward branch that I said was Warnocked last week. It turned out that it was fixed before I posted the summary. They don't call Leo Tötsch the Patchmonster for nothing. http://tinyurl.com/24tre Parrot system Dan apologized for his recent silence on list, but thought he'd be more active from now on. He also announced that he was in the process of adding in perl 5 style system support http://tinyurl.com/2jg8v Parrot sort Jens Rieks garnered more kudos with his implementation of a simple _sort function in IMC. Leo checked it in, and you'll find it in library/sort.imc in an up to date CVS distribution. Then, seemingly in his spare time, he fixed up some SDL related stuff for chromatic. http://tinyurl.com/3fm4w RFD: Symbol naming and IMCC2 Melvin Smith posted a Request For Discussion about how IMCC2 will handle symbols and sigils. The issue seems to be that, for humans writing code, quoting symbols is a pain. Various options were suggested, but nothing appears to have been decided yet. (I quite like Leo's suggestion involving declaring lexicals with a mangled name for use in parrot, but marking it as being associated with an $unmangled_original_name.) http://tinyurl.com/2ovqp JIT and branches under the Sun Stephane Peiry found with the JIT on Suns; it seems that a loop that should terminate carries on forever instead. He and Leo worked on tracking it down, but the bug was still there by the end of the week. http://tinyurl.com/2acc8 Rules for method resolution? Okay, so I may have kvetched about the continuing lack of Parrot objects earlier, but Dan's definitely working on it. This time he's thinking about method resolution. In particular he wondered when findmethod P4, Pobject, methodname should do the name resolution. In other words, should P4 contain the method that was current at the time of the findmethod call, or a proxy PMC that waits until the method is invoked to find the appropriate method. The discussion seemed to come down in favour of doing both. http://tinyurl.com/232lg Object spec Dan noted that he'd checked in some major revisions to PDD15 (objects!) and suggested that people take a look. Simon Glover, Leo Tötsch and LF had questions. http://tinyurl.com/2hm3x Meanwhile in perl6-language The thread that ate the mailing list Luke Palmer doesn't like the repetition inherent in @sorted = sort { $^a.foo('bar').compute = $^b.foo('bar').compute } @unsorted; He wondered if there might be some way of rejigging sort to eliminate the duplication and proposed a couple of spectacularly ugly possibilities. And then the world exploded. It seems that nobody (on perl6-language) actually likes the current signature of sort, but nobody can quite agree on what it *should* look like. You know things are getting hand when Dan proposes just using SQL's ORDER BY syntax (even though he was joking). Simon Rubyometer Cozens proposed: @sorted = @unsorted.sort(op = infix:=, key = {
This week's summary
The Perl 6 Summary for the week ending 20040208 Another Monday evening. Another day of displacement activity out of the way. There's a huge lump of belly pork braising slowly in a mixture of stock, rice wine soy sauce, and nothing on the telly. It must be time to write the Perl 6 summary. As usual, I'm going to deal with perl6-internals first. RT Cleanup The cleanup of the RT bugs database continued apace. Stephane Peiry posted a list of old RT entries and their authors and asked them to supply updates ore they'd be flagged as obsolete in the queue. In the ensuing discussion, Steve Fink pointed out something that I'd missed: as of this week, all the perl6 tests (including the regular expression tests) are passing. He pointed out that the suite is *far* from comprehensive, but I still think this is pretty spiffy. http://tinyurl.com/38e6l DOD, mutation, and generational collectors Dan had posted some thoughts on the way that many of the things that cause problems for threads also cause problems for generational garbage collectors and gave a list of 'mutating activities' that might need to be trapped by both threads and GC. Gorgon Henriksen asked Dan for more elaboration on what he meant by generational GC because, as Gordon understood it, it came with a whole load of baggage that was inappropriate for Parrot. This week, Dan gave his answer and pointed out that various other improved GC schemes (incremental, concurrent) required the same level of support as a generational scheme so it made sense to provide such support now. Leo Tötsch had a few comments to make about the different possible schemes and discussion moved on to the nastiness of doing GC in a multithreaded environment. http://tinyurl.com/24vjs -- Thread root SDL Bindings The SDL bindings that chromatic's been working on continue to develop. (Bah! People who insist on weird capitalization of their names and thus force me into the passive voice are jolly annoying, even if personally very pleasant). http://tinyurl.com/3y4ft Python PMCs? Michal Wallace wondered what Dan's plan was for getting python objects working for the pie-thon. Michal has made a small start on wrapping PythonObjects as PMCs which seemed to work and was apparently easier than trying to recode them as PMCs. He pointed everyone at his current implementation. So far his post has been Warnocked. http://tinyurl.com/2jzyc http://tinyurl.com/3fnud -- The wrapper implementation Docs and releases Tim Bunce wondered whether Parrot's documentation was in sync with current implementation reality, and when we'd see a clean way to make method calls. In a post dated the 3rd of February, Leo confessed that there is still a lot of outdated or unimplemented stuff in the assembly related docs and noted that Dan had said that the low-level object design would be done by the 30th of January. http://tinyurl.com/ysrn5 Backward branch, Warnocked Pete Lomax drew everyone's attention to a problem he'd found back at the beginning of December which Leo had said was a problem with a backward branch. He wondered when/if the problem might be fixed. Sadly the answer was We're not sure when it'll be fixed, it's really hard to fix the current version of IMCC, but it should be easier to sort out in IMCCv2. For now, don't do that. Meanwhile, Harry Jackson tried to track the bug down to the appropriate bit of IMCC; his experiments with code variants seem to imply that the problem is with IMCC not recognizing that ret is a branch. http://tinyurl.com/2pxj6 Alignment issues with *ManagedStruct The redoubtable chromatic came across some issues with the alignment of members within a struct and wondered if there might be a better way of sorting out alignment issues than his current trick of explicitly padding things out (which he feels probably isn't portable). Leo pointed out that there was already support for offsetting struct members when setting up a *Struct PMC by using the third initializer parameter. As discussion of the best way forward continued, it emerged that Jens Rieks is in the process of writing a simple C-parser in IMC which should be able to parse header files and create ManagedStructs automagically. Go Jens. Tim Bunce suggested that Jens take a look at ExtUtils::XSBuilder for hints. Meanwhile Uri was looking at Convert::Binary::C which is apparently far more robust. Leo ended up listing a set of requirements for a script to parse C headers and generate the appropriate PIR code to set up various *Struct PMCs. http://tinyurl.com/2ae4m http://tinyurl.com/36kxn -- Jens talks about his C parser http://tinyurl.com/234du -- Leo's requirements Baby, baby, where did my patch go? Gordon
This week's summary
The Perl 6 Summary for the week ending 20040201 Welcome once again to Gateshead, where the skies are grey, the view is uninspiring, and the workmen across the road seem determined to fall off the ladder before they get the double glazing fitted. But enough of the gay Gateshead life, let's hurry on to the doings of the denizens of the perl6-internals mailing list. Who knows, we might even visit the inmates of perl6-language later. Threading To nobody's great surprise, we talked about threading. In particular, Gordon Henriksen's concerns about the all around scariness of morph (and not just in a threading context). I'm not sure I quite understand what's being done, but progress is definitely being made. Late in the week Dan announced that there were obviously still issues to be worked out before we started in on implementation (modulo some 'obvious' stuff). He also asked for 'real worldish' tests for threading in order to get some real numbers for different possible approaches and to see if the problem is as bad as it was first thought. http://tinyurl.com/3h9tq http://tinyurl.com/2774w Embedding vs. extending interface types Remember last week's kerfuffle about Parrot_Interp vs Parrot_INTERP? Dan's resolved it be deciding that we'll just call it Parrot_Interp everywhere. Gordon Henriksen sent in the patch. http://tinyurl.com/ywue7 Leo explains Will Coleda (and others) have been having problems with data that should be inviolate getting clobbered in strange ways. After some effort, Will got his offending code down to 22 lines. This let Leo Tötsch work out what was going on, and in the referenced post he explained all. Essentially, the Copy on Write logic for handling register (and other) stacks is broken. The workaround is not to use Continuations and Exception Handlers. Fixes are welcome. Please. http://tinyurl.com/2t3a8 Testing Signal Handlers Leo asked for help with sorting out the testing code for some signal handling tests that seemed to be confusing the harness quite badly. Uri Guttman came up with some suggested workarounds, as did Mike Schwern. Leo found a third way. (If you've ever tried to write test with fork in it, it's worth taking a look at both Uri and Schwern's answers. http://tinyurl.com/2egso The costs of sharing revisited Last week, Leo posted some scary numbers implying that using a shared PMC led to terrible slowdowns. This week he posted the latest numbers, and things are looking up. $ time perl-58-th shared_ref.pl real 0m8.694s $ time parrot shared_ref.pasm real 0m0.375 (and that's an unoptimized Parrot). Elizabeth Mattijsen was moved to ask for a ponie. http://tinyurl.com/3amop Cunning stunts with with UnManagedStruct Donning his devious head, Leo demonstrated the use of UnManagedStruct to allow for unlimited self-inspection and self-modification of Parrot state. Which isn't really something we want to be possible. In the opinion of Luke Palmer and Jeff Clites, the costs of removing this capability aren't worth paying. As Jeff Clites pointed out, you only use UnManagedStructs when you're calling out to a native library, and once you introduce a native library all bets are already off. http://tinyurl.com/yt92b Michael Scott: hero of the week Over the past few weeks Michael Scott has gradually been making the parrot distribution a kinder, gentler place with his sterling efforts to tidy up and generally improve the existing documentation. This week he rationalized/added documentation for everything in src/ (with the exception of malloc.c and malloc-trace.c). He's working on documenting examples/ now. The response to his announcement was overwhelmingly and understandably positive (The consensus is that Mike rocks). Now if we can just *keep* everything in such good condition... http://tinyurl.com/2pevc Parrot DBDI announced Tim Perl DBI Bunce announced the Parrot DBDI Project: A Database Driver Interface for Parrot. The goal is to have a common Parrot level interface to database drivers which can then be reused by different language specific database interfaces. For further details read the post; it's jolly good. And bravo Tim. http://tinyurl.com/23zq3 Internal exception handlers Leo posted a set of macros for doing exception handling in the parrot core using TRY/CATCH/THROW etc. and asked for comments. So far he's been Warnocked. http://tinyurl.com/2z57k SDL bindings After Leo fixed the struct PMCs for him, chromatic has proceeded apace to implement SDL wrappers in Parrot. He's reached the point where he has code that can create an SDL window and blit a blue rectangle onto it. Leo applied his patches. Check out
This week's summary
The Perl 6 Summary for the week ending 20040125 Welcome to the first summary from my new home in Gateshead. The same old wibble, with a different view from its window and fewer trips to London. Right, time to see what's been going on in perl6-internals this week. Global labels in IMCC The cryptically named TOGoS wondered how to get the address of a label in a different IMCC compilation unit. According to Dan there's no way to do that, and you didn't want to do that anyway. http://tinyurl.com/3evz2 Dan's threads proposal After a few weeks of everyone else's proposals, Dan started to outline the design of Parrot's threading capabilities. He started by defining his terms (a useful thing to do in a field where there seem to me multiple competing definitions of various terms) and guaranteeing that user code wouldn't crash the interpreter (subject to the assumption that system level memory allocation was thread safe) before getting into the meat of his proposal. Which you're probably best reading for yourself; it's a long document but there's very little flab and any attempt of mine to summarize it would probably end up being at least as long as and a good deal less lucid than the original. Of course, this sparked a ton of discussion, generally positive, as people asked for various clarifications and made suggestions. Gordon Henriksen pointed out a nasty race condition that means that the garbage collector can't be made as thread safe as Dan had hoped. Summarizer Barbie says Threads are hard! On Thursday, Dan posted a last call for comments and objections before he went on to the detailed design. This time there were some objections, but I don't think any of 'em are going to stop Dan. http://tinyurl.com/ys2ar http://tinyurl.com/29lpb Vtables organization Last week Dan had outlined an approach to organizing PMC vtables using a chaining approach; this week saw the discussion of that proposal with Benjamin K. Stuhl asking the hard questions. http://tinyurl.com/35rlc Benchmark suite Matt Fowles suggested that it might make sense to create a canonical suite of benchmarks to exercise Parrot well. His idea being that, if we have a standard suite of Parrot benchmarks, then potential performance affecting changes could be tested against that, rather than having custom benchmarks rolled each time. Luke Palmer pointed to examples/benchmarks and noted that it's hard to create benchmarks that test everything. However, he hoped that any good benchmark that gets posted to the list would get added to this suite, along with some documentation describing what is being tested. http://tinyurl.com/22cyj Number formatting Dan did some more designing, this time mandating that Parrot will, eventually adopt ICU's formatting template for numeric templates but, to start with, we'll be rolling our own. The new op will be format Sx, [INP]y, [SP]z. http://tinyurl.com/2vhuk Base string transforms Dan announced that he would be adding upcase, downcase, titlecase and to_chartype to the various chartype vtables. He also noted that he'd like to get some alternative chartypes and encodings into Parrot as soon as possible to make sure we can actually handle things without having to use Unicode all the time. http://tinyurl.com/2gvg3 Calling conventions in IMCC Will Coleda had some problems with IMCC's handling of the parrot calling conventions when he found that code that worked a couple of months ago had stopped working in the current Parrot (A month is a *very* long time in Parrot development though.) The problem took a fair bit of tracking down and I'm not entirely sure it's entirely fixed yet; Will had reached the point where the code would compile, but it still wouldn't actually run. http://tinyurl.com/3d4c4 Steve Fink's obnoxious test case Steve Fink posted an obnoxious test case that generated memory corruption. The test case is obnoxious because it's 56KB of IMCC source code, and Steve had been unable to reduce it. This didn't discourage Leo Tötsch though, who set about tracking the bug to its lair. It's not fixed yet, but with the Patchmonster on the case it can only be a matter of time. There were several other GC related issues that cropped up over the week; I wonder if they're all aspects of a single lurking bug. http://tinyurl.com/yvnmn IMCC returning ints Steve Fink also found a problem with IMCC failing to properly return integers from unprototyped routines and posted an appropriate patch to the test suite. It turns out that the problem is that IMCC doesn't quite implement the full Parrot Calling Conventions, especially the return convention, but it's getting there. http://tinyurl.com/2rtzo The
This week's summary
The Perl 6 Summary for the week ending 20040118 I hope you'll forgive the lack of banter before we start in on perl6-internals. Threads. Again. Still more proposals about threads this week. Jeff Clites offered some notes based on the Java Virtual Machine's threading model. Surprisingly, this was the week's only threads thread. Next week: Dan starts to outline the design that's going to be implemented. http://tinyurl.com/2fk4f Questions about abstract PMCs Stéphane Payrard had some questions about abstract PMCs and whether they were needed in core_pmcs.h and pmctypes.pasm to make PMC type checking work in IMCC. Leo Tötsch answered questions, but didn't think they were actually needed in those files. Discussion ensued. http://tinyurl.com/3bqxg Docs and releases Tim Bunce wondered whether a date had been set for the next release. He also pointedly wondered if the docs were up to date with best practises and whether having them up to date would be a goal for the next release. Dan answered: No, no and yes, bordering on a requirement and not just a goal. Discussion ensued again. For some reason this thread flushed out a few 'shy lurkers' so let's extend a big hello to Paul Cochrane, Herbert Snorrason, Matt Diephouse, Robin Redeker, Richard Holden and Mark Solinski. http://tinyurl.com/yucb2 Making continuations work properly The work of getting continuations to close over the various bits and pieces the should close over continues; it seems there's rather more to doing the Right Thing than meets the eye. http://tinyurl.com/2bvpj new_noinit and init ops Luke Palmer was trying to implement a loop using a continuation. He wanted to be able to defer initialization of a continuation so he implemented two stage instantiation initialization; wrapped it up in two new ops, new_noinit and init, and posted the resulting patch to the list. Michal Wallace thought it best to just use a lexical. Then he perpetrated a spectacularly extended metaphor about Parrot entitled *Mr Parrot's Neighborhood*, which probably works best if you don't automatically correct the spelling of neighbourhood. http://tinyurl.com/24myr http://tinyurl.com/3xrus -- Mr Parrot's neighborhood Namespace stuff Jeff Clites revisited a thread from a while back about namespaces. His discussion centred on whether the namespace part of a name should be, logically a string Global::Namespace::Hierarchy or list of strings [Global, Namespace, Hierarchy]. He argued that it made sense to just use a simple thing and asked what we actually gained from having a hierarchy. Dan wants a hierarchy because it makes cross language sharing of namespaces easier. Larry wants a hierarchy 'cos it makes all sorts of things easier. Tim Bunce offered another proposal which received qualified approval from both Dan Leo. http://tinyurl.com/2j8gb http://tinyurl.com/3fecc -- Tim's proposal Parrot string docs Robert Eaglestone had a bunch of questions about Parrot's String documentation. Answers were forthcoming. http://tinyurl.com/ysz54 IMCC v1 feature freeze Melvin Smith announced a feature freeze for IMCC version 1 and called for bug reports for it. He plans to get imcc1 working as correctly as possible and frozen within a couple of weeks before starting the really major work (and deprecation of features) on IMCC 2. There was a certain amount of wrangling about CVS issues, but it was generally thought to be a good idea. http://tinyurl.com/2ooy5 Managed and unmanaged structs Dan had some thoughts about accessing and generally monkeying around with C structs and added a couple of related tasks to the todo list. Leo pointed out that quite a bit of it was done, and pointed out where further work was needed. http://tinyurl.com/2a4jl Loading bytecode at runtime Dan did some more design work on how runtime loading of bytecode should be handled. http://tinyurl.com/22rst The todo list Dan was reminded that we have a full, working, RT installation so he's started creating tickets for each todo. This should make for better tracking and ownership of tasks. Hurrah. He asked for a volunteer or two to manage the todo queue. Dave Pippenger and Stephane Peiry stepped up to the plate with heartening alacrity. Go guys. http://tinyurl.com/2wxou http://bugs6.perl.org/ Numeric formatting More design from Dan. This time he was thinking about numeric formatting. His initial plan was to lift the formatting rules from SQL, but I'm not sure if that plan survived contact with Michael Scott who pointed out that ICU (the Unicode library that's already included in the Parrot tree) has its own number formatting API. After some discussion in which Dan pointed out
This week's summary
The Perl 6 Summary for the week ending 20040111 It's Monday. People have been talking about Perl 6, Parrot and the European Union Constitution. Let's find out what they've been saying about Parrot first shall we? Threads Threads were discussed some more. Dan's deadline is coming up soon, hopefully soon after that discussion will move from Holy Skirmishes about architecture and on to meaningful discussions of a real implementation. Hmm... that came out rather more dismissive than I intended. Continuation problems Luke Palmer found a problem with Parrot's continuations. A continuation is supposed to encapsulate the interpreter's control state, in other words the position of the program counter and the state of the register stacks, and a pointer to the previous continuation. However, it turns out that a Parrot continuation just contains the program counter and a pointer to the previous continuation. There was some discussion of why this was so (Melvin Smith seemed to claim that it was both his fault and not his fault). Everyone agreed that this needed to be fixed pretty promptly and it wasn't long before Luke posted a patch. http://tinyurl.com/2jzv2 http://tinyurl.com/3for3 A problem with threads In a change from the discussions of thread philosophy, Jeff Clites posted about a problem he was having with Parrot's current threads implementation which was causing problems when trying to join multiple threads. Between them, Jeff and Leo Tötsch tracked down a possible cause of the problem and Jeff offered up a patch which Leo applied. http://tinyurl.com/yssjs The PPC JIT gets fixed Jeff Clites also posted a patch which cleans up the last problems with the JIT on PPC. Leo applied it. Us Apple users cheered. http://tinyurl.com/2pyft Luke Palmer gets his act together Luke Palmer decided to get his act together (given the level of his contribution to the Perl 6 lists so far, I'm almost scared to find out what he's going to be like now...) and finish up his 'Priority DOD' rethink of the Garbage Collector. I confess I'm not really qualified to discuss what's different about it, beyond the claim of a 10,000% speed up when there were no 'eager' PMCs about (things that need immediate cleanup on scope exit; the canonical example being a Perlish file handle) and only a 5% slowdown when there were. Luke and Leo discussed the patch a bit before Leo applied it. http://tinyurl.com/2afyc http://tinyurl.com/235ak -- Luke explains the patch IMCC speed issues Dan posted some timings he'd made of IMCC compiling some large subs, which were not the most wonderful timings I've ever seen. A 41 minute compile isn't generally what one wishes to see. Melvin Smith had a few ideas about what was causing it, as did Leo (it seems that IMCC's register allocation is very slow in the presence of spilling and Live analysis increases with the product of the number of lines and variables in a segment. Leo recommended redoing the sub to reduce the number of (and avoid long lived) PIR variables (ie. registers) by using lexicals or globals instead. http://tinyurl.com/2wb6l References to hash elements Arthur Ponie Bergman had some questions about how references to hash elements would be done. Consider the following Perl code: my %hash; $foo = \$hash{key}; $$foo = bar; print $hash{key}; # Prints bar Arthur wondered how this could be made to work with the current vtable setup, specifically in the presence of tying. Simon Cozens thought that there should be a special HashElement PMC which would handle fetching the actual value from the hash (or writing it back to the hash) as appropriate. Dan agreed with him, so it looks like this might be the way forward. http://tinyurl.com/2hop4 Instantiation? Michal Wallace asked how to instantiate objects from Parrot. Luke Palmer supplied the answer, but pointed out that, at present, classes can only have integer attributes. It turns out that, for Michal's purposes, he can probably get by with using properties instead, so that's all right. Stéphane Payrard did the decent thing and implemented the other attribute types. He even wrote tests. http://tinyurl.com/3dul5 http://tinyurl.com/ywgvo Creating 'proper' interpreters in Parrot Simon Cozens wondered what was left to do to allow parrot to be embedded in an interpreter and have PIR fed directly to it. Leo pointed him at his own YAL. http://tinyurl.com/2smrp http://toetsch.at/yal/ -- Yet Another Language yield op? Michal Wallace was uncomfortable with the workings of Parrot Coroutines and posted a sample of parrot code which demonstrated why. Leo promised to fix it once he'd applied Luke's
This week's summary
The Perl 6 Summary for the week ending 20040104 What a surprise, a scant week after the last Perl 6 Summary of 2003, it's the first Perl 6 Summary of 2004. Will wonders never cease? Without further ado, we'll start with perl6-internals as usual. Garbage Collection Tasks Dan noted that a copying garbage collector doesn't play that well with threads so he proposed a twofold task to fix things. 1 The GC and memory allocation APIs need to be formalized and abstracted in order to allow for changing the GC mechanism when threads come into play. 2 Someone needs to implement a more traditional, non-moving GC as an alternative to the copying collector. Plugging Parrot into Mozilla Stephane Peiry posted a set of patches to allow a parrot plugin for Mozilla. Not satisfied with this (but pretty darned impressed all the same) Sam Vilain noted that it would be nice if someone wrote an ECMAscript front-end to Parrot. Patches welcome Sam. http://tinyurl.com/2lgy8 Problems with make test Harry Jackson couldn't get his build of parrot to finish running make test. After a certain amount of thrashing about by the team, Dan narrowed it down to issues with the mutant '2.96' version of GCC that some versions of Red Hat used for a while. This is currently the list's best guess as to the root of the problem, but it's not absolutely certain. If it does turn out to be the compiler, the config suite will have to be rejigged to detect and warn. http://tinyurl.com/2lzsb Threading threads They're everywhere! And I despair of summarizing them. So I won't. Here's the root messages for anyone interested enough. Once things have died down and we know how threading is going to work in Parrot I'll summarize that. Dan opened the floodgates and asked anyone who was serious about their particular Right Way To Do Threading to write things up as a proper proposal. He outlined the constraints that Parrot's threading will be working under and encouraged everyone to speak now or forever hold their peace. http://tinyurl.com/3359s http://tinyurl.com/2e94j http://tinyurl.com/ytyb6 -- Dan says put up or shut up http://tinyurl.com/2p777 http://tinyurl.com/2akpn http://tinyurl.com/36qlo http://tinyurl.com/23byv http://tinyurl.com/2hugf -- Dan offers up common terminology Don't use IMCC macros Bernhard Schmalhofer found what looked like a bug in IMCC's macro support. This prompted Melvin Smith to expedite the removal of IMCC macro support as threatened some weeks ago. However, it turned out that that wasn't actually the seat of the bug. But if you like IMCC macros now is the time to make a *very* good case to Melvin, I doubt you'll convince him though; macros belong in a preprocessor. http://tinyurl.com/3e3cg wxWindows support? David Cuny wondered if Parrot's objects were not at the point where it's possible to interface wxWindows to Parrot. So far he's been Warnocked. Just try implementing it David. http://tinyurl.com/yr758 Win32 Core Dumps Dan's a fan of core dumps (when appropriate) and wondered if there was a way of getting windows to either produce a core dump or attach a debugger to a crashed process. Vladimir Lipsky and Nigel Sandever gave good answers. http://tinyurl.com/2ndy9 The Piemark is ready Dan forwarded the announcement that the Pie-thon Parrot Benchmark (which I've unilaterally decided to call the Piemark) code is ready. Let's make sure it's Guido not Dan who gets Pie eyed in Portland this year. http://tinyurl.com/28qjp ftp://ftp.python.org/pub/python/parrotbench/parrotbench.tgz Object System? Luke Palmer wondered what work was needed to finish up Parrot's object system. Judging by Leo's response there are name mangling issues that need deciding on, and we're not quite sure who's supposed to be making the decision. Dan? http://tinyurl.com/34wfq Enhancements for the debugger Whilst wearing his employee implementing a large project targetting Parrot hat, Dan has been using IMCC's debugging facilities. This led to a bunch of suggestions/decisions about how these could be improved. http://tinyurl.com/2g3ah NCI callback functions Leo isn't enamoured of the current PDD16 design of callbacks in NCI, so he proposed a new design. Dan seemed to think that this proposal smacked of getting a little to sophisticated to early, arguing that the best thing to do was to flesh out what's there (and get it working) before using it as a base on which to build. This means that, once his work deadline is out of the way, we should be expecting some better examples in PDD16. And we'll be reminding Dan of this in a couple of weeks' time. http://tinyurl.com/3c96z Meanwhile in
This week's summary
The Perl 6 Summary for the week ending 20031221 Welcome one and all to the penultimate Perl 6 Summary for 2003. The nights are long, the air is cold, freezing fog made the journey home from watching *The Return of the King* a deeply fraught experience (though probably not as fraught for us as for the chap who obviously didn't see the roundabout in time and went straight over it). If you're in the southern hemisphere, feel free to ignore the foregoing flavour text. It should come as no surprise to you by now that we start with the internals list. Namespaces II Dan returned from a bout of paying work to finish up the current understanding of how namespaces are managed in Parrot. A namespace selector becomes a multidimensional key (using a multidimensional key instead of a single long namespace name makes for easier sharing of namespaces between languages; there's no need to go guessing what separator the other language uses in its namespace naming because that's essentially irrelevant at the Parrot level). Looking up a particular variable in a namespace is still a two step process, first get the namespace, then do the lookup within the namespace. Dan explained that this is a win because it should allow for holding onto namespaces in a register when dealing with multiple variables. Leo Tötsch wasn't entirely convinced by the new syntax introduced, and proposed a mechanism which used the standard syntax for accessing multikeyed structures with a proposed Namespace PMC. http://tinyurl.com/2wtkd Another keyed ops proposal Leo continues to make proposals for rethinking keyed ops. Somewhat surprisingly, Dan didn't entirely reject the latest one involving a possible new set of key registers. http://tinyurl.com/2za5t Leo adds threads Leo Tötsch checked in a patch to allow Parrot to spawn threads. As he admitted, there's a lot missing, but it's a start. He solicited comments and further pointers. Later in the week he asked for some design decisions related to making various of the interpreter's internal data structures thread safe. Elizabeth Mattijsen had several comments to make, based on experience with Perl 5's ithread system. In essence her suggestion was that as many things as possible should be made copy on write between threads. (I have a faint recollection of Nicholas Clark delivering a wonderful lightning talk/dance explaining his proposal for making Perl 5 use copy on write structures for ithreads. It's worth seeing if you get the chance...) http://tinyurl.com/3egyu http://tinyurl.com/yrjrm PDD03 and method calls Leo queried the design of Parrot's calling conventions for calling a method and proposed a slightly different convention with the object put in P5 rather than P2. Dan thought that the calling conventions documented was the right way to go, but didn't seem to convince everyone. http://tinyurl.com/2npnn Rolling back clone Leo pointed out that clone's semantics had got altered to take an uninitialized destination PMC as an argument back when the GC system was flaky. He suggested switching back to a version that creates the new PMC itself now that GC was working properly. Dan told Leo to go for it. http://tinyurl.com/35c57 Meanwhile, in perl6-language Um... sorry about this, but I'm punting on writing the promised Roles/Traits/Classes summary. I was planning on doing it today, but things have been hellish; I've spent about 8 hours fighting fires today rather than writing the summary. Sorry. Work on Perl 6's object system continues apace though; things are looking very good and powerful. By the way from now on I'll try and stick to Larry's usage of capitalizing 'Traits' when referring back to the Traits paper, and keeping it lower case when referring to Perl 6's compile-time traits. Runtime CHECK? Piers Cawley asked if Perl 6 modules that get loaded at runtime will have their CHECK blocks (or their equivalent) executed. Larry initially thought not, but Rafael Garcia-Suarez noted that Perl 5 shouldn't be held up as exemplary and that there was definitely a need for some kind of special block that would get run at the end of the compilation phase of any arbitrary compilation unit. http://tinyurl.com/2ytze but true Adam D. Lopresto wondered how the recent work on Roles, Properties and Traits fit in with already declared stuff like but true. Larry confessed that he was still thinking hard about this, but that he thought but wasn't powerful enough yet. http://tinyurl.com/2v2ef Acknowledgements, Announcements, Apologies Cross your fingers and toes, we might have link shortening in this version. Hurrah! Merry Christmas everyone. I make no promises about whether there
This week's summary
The Perl 6 Summary for the week ending 20031214 It looks like things are starting to slow down slightly as we run up to Christmas, but the quality of discussion remains high. We'll start with the usual trawl through perl6-internals. Testing for null Dan ruled on last week's discussion of testing for undef in Parrot. We're getting a new isnull branch op along with a new Undef PMC. Leo Tötsch implemented it with his usual alacrity. http://groups.google.com/[EMAIL PROTECTED] How many comparison ops do we need again? One of the annoyances of writing something that's really going to be used is that you can't get away with the equivalent of outlining your proof on the blackboard, waving your hands and saying The details are left as an exercise for the interested reader. A case in point is Parrot's array of comparison branch operators. For a while now we've been getting by with a sparsely populated array of such beasties. This week saw people (well, okay then, Leo, but he has the productivity of people) doing the detail work to get the full range implemented. http://groups.google.com/[EMAIL PROTECTED] Incorrect scoping of constants in IMCC Dan wasn't happy with the scoping of the .const directive in IMCC (essentially constants are sub/block scoped, which makes them pretty much useless for the things constants are normally used for). Melvin Smith made the fix. http://groups.google.com/[EMAIL PROTECTED] Objects and Namespaces Dan had mandated that the Parrot internal equivalent of the Perlish Package::Name should be Package\0Name. Nobody (Dan included) liked the embedded nulls mandated in Dan's original spec. After some discussion he posted a description of a new hierarchical namespace design. Dan pointed out that the use of hierarchical namespaces would probably mean that the semantics (and syntax) of find_global would need to be adjusted. http://groups.google.com/[EMAIL PROTECTED] http://groups.google.com/[EMAIL PROTECTED] -- The New Namespace Dan Sugalski, IMCC Bugfinder General Dan's been writing more PIR code by hand, and is discovering infelicities as he goes. http://groups.google.com/[EMAIL PROTECTED] http://groups.google.com/[EMAIL PROTECTED] Macros, PIR and PASM Following his bout of IMCC bug spotting, Dan announced a decision about macros in PIR and PASM code. Essentially, Parrot's built in PIR and PASM parsers do not need to do macros as 'macro assemblers are for people, not compilers'. Because of this, Dan would like to see any macro processing moved out of the core binary and into an external tool. (Which can always be invoked via the hypothetical macro-parrot.pl). Melvin Smith suggested that it would probably be worth extracting the existing macro processor from imcc.l and moving it into a separate library. http://groups.google.com/[EMAIL PROTECTED] Meanwhile, in perl6-language The language list continues to fascinate (and not in the 'car crash' way it has done on occasions in the past) with an ongoing conversation between Larry on the one hand (seemingly designing on the hoof and certainly doing a great deal of thinking aloud) and everyone else on the other hand getting clarification or extrapolating to the point where Larry has to step in and do a little bit more design. I'm finding it hard to do a proper summary of what's going on because so much is changing (and because so much of what seems to be set in quick drying concrete now is so novel.) Essentially the discussion revolves around Roles, which are sort of like Java interfaces, sort of like mixins and nothing like either. In his 'Vocabulary' post, Luke Palmer describes a Role as 'A collection of methods [and/or attributes] to be incorporated into a class sans inheritance [...]. Used with does'. In this new world, a property ($bar but Red etc) is a kind of degenerate role. At the same time though, we're getting other gems. For instance, Perl 6 is going to get something a little like final, but instead of it being a declaration made in a type's implementation (This is the one, the only Integer and you may not inherit from it or ever alter it!), it will become a promise made by a type's user not to attempt to monkey with it come run time, which should set the code generator free to use optimizations that aren't safe when everything's dynamic. So, if you're interested in how Perl 6's OO system is going to work, now is the time to get involved in the language list. If there's something you've always wanted to do or something about Perl's current OO that you love and want to retain, it's time to speak up for it. The odds are good that you'll be able to do what you want using the mechanisms being designed, but you'll be kicking
This week's summary
The Perl 6 summary for the week ending 20031207 Another week, another late summary. Luckily it's been a quiet week so I should get this written faster than usual. As is traditional, we start with perl6-internals Parrot build system tinkering Andy Dougherty and other discussed extending the Parrot build system to allow for building parrot itself outside the main source directory (useful when Parrot's mounted read only via NFS for example. It's not (quite) possible to do this just yet because of a couple of generated files in the IMCC tree. Leo suggested only generating those when Configure.pl --maintainer is run, on the grounds that a maintainer shouldn't be building from a read only source. Dan asked for a volunteer to fix things up. http://groups.google.com/[EMAIL PROTECTED] Object stuff I (and others I presume) got ready to do the Happy! Happy! Joy! Joy! dance of delight; this was the week that Parrot finally got objects. Or, as Dan described them, 'objects-ish'. Parrot now has single inheritance objects. They're not the final word on the matter, but it's definitely better than a poke in the eye with a sharp stick. Dan went on to discuss what needs to be done with them before we're ready for Parrot 0.1 (Objects are one of the criteria for making a point release). Dan then went rather quiet, apparently because he got mugged by flu, or something like it, and spent the rest of the week wishing he were dead. Meanwhile, Leo lived up to his Patchmonster nickname by checking in a bunch of object related stuff. http://groups.google.com/[EMAIL PROTECTED] -- Rumblings http://groups.google.com/[EMAIL PROTECTED] -- Announcement http://groups.google.com/[EMAIL PROTECTED] -- The way forward http://groups.google.com/[EMAIL PROTECTED] -- Dan gets mugged by flu http://groups.google.com/[EMAIL PROTECTED] -- Leo's patches Raising exceptions Cory Spencer wondered about 'proper exception raising' and wondered what the state of play was, and if there were any good examples. Leo Tötsch pointed him at t/pmc/exception.t http://groups.google.com/groups?selm=Pine.LNX.4.58.0312011749290.13872@ okcomputer.antiflux.org Compilation units and the boundaries of IMCC Pete Lomax had wondered about package/file local variables in IMCC. At the moment IMCC variables can't be file or package scoped, but Melvin Smith is working on it. As he said this, he asked for suggestions for other potential IMCC features. Cory Spencer wanted to be able to write if _some_test() goto LABEL but that was vetoed by Dan (and Melvin) as being rather too high level for an intermediate language that's meant to be a compiler target. http://groups.google.com/[EMAIL PROTECTED] String manipulation Melvin Smith put forward a convincing argument that IMCC shouldn't concern itself with doing string interpolation as the expected behaviour is too 'high level language' dependent, but that Parrot should have a printf/sprintf equivalent, implemented in C for speed. Dan seemed to agree and reckoned it should be addressed as soon as objects were out of the way. http://groups.google.com/[EMAIL PROTECTED] IMCC pending changes Melvin Smith posted a list of pending IMCC changes, most of which were concerned with tightening up IMCC behaviour (making it both stricter nd more forgiving...). Discussion ensued. A few days later, Melvin committed some of his changes. http://groups.google.com/[EMAIL PROTECTED] http://groups.google.com/[EMAIL PROTECTED] PMC Compiler 2nd edition Leo applied a 'really long pending patch' which should simplify upcoming vtable changes. Melvin wondered if the time had come to replace the existing ops2c and pmc2c with the newer versions. Leo thought that pmc2c2 was definitely stable enough, but wasn't too sure about ops2c2. Jonathan Worthington pointed out a Win32 bug that was quickly fixed. http://groups.google.com/[EMAIL PROTECTED] get_pmc_keyed() in PerlString Sterling Hughes noted that, in PHP it's valid to index a string as if it were an array. He wondered it would be possible to implement get_pmc_keyed() on the PerlString vtable to allow for similar tricks with the standard string PMC. I'm confused as to what the decision was. I think Leo agreed that it was a good idea, but that it should probably be implemented in a new PMC for the time being... http://groups.google.com/[EMAIL PROTECTED] Symbolic vs. Named variable register allocation Pete Lomax stumbled over a bug in IMCC's register allocation. Melvin thinks the problem is that much of IMCC's flow analysis code doesn't yet know about the Parrot Calling Conventions and went to have a look to see if there was a quick fix available. http://groups.google.com/[EMAIL PROTECTED]
This week's summary
The Perl 6 summary for the week ending 20031130 Welcome back to the weekly Perl 6 Summary, which I'm hoping to keep on a weekly cycle for the foreseeable future. It's been a relatively low volume week this week, I'm assuming that Thanksgiving had something to do with it (I hope those of you who celebrate it had a jolly good extended weekend), and for the first time in ages perl6-language saw almost as much traffic as perl6-internals. We're still going to start with perl6-internals though. Some PIR How do I? questions Last week Dan put up a list of questions about IMCC, intending it as a bit of grit. This week Melvin Smith added a couple of layers of nacre by checking in an initial IMCC FAQ (you'll find it at imcc/docs/imcfaq.pod in your parrot directory if you're following with CVS). After an initial flurry of work on adding to the FAQ, the discussion seems to have drifted off into discussions of bike shed pigmentation. Yes, the FAQ may need to be split eventually, but splitting an FAQ into sub documents is trivial compared to actually answering the questions. Ahem. Editorial ends. http://groups.google.com/[EMAIL PROTECTED] http://www.parrotcode.org/faq/imcc -- The FAQ PIO_eof Vladimir Lipsky had a few questions about how the Parrot IO subsystem (PIO) handles error conditions. This sparked a discussion of whether the various PIO functions should make some assertions up front about their arguments. Consensus said yes, they help with debugging, and the performance 'hit' is minuscule. http://groups.google.com/[EMAIL PROTECTED] Freezing and Thawing Discussion of the details of object serialization continued this week. Judging by the amount of clarification traffic that's been going on in this thread (and others), I find myself wondering if the time has come for some generous benefactor to sponsor the principals to get together in a conference room with copious whiteboard acreage. Sponsors welcome. http://groups.google.com/[EMAIL PROTECTED] Segfault warning boxes Consider a system of test machines, all of them happily running in unattended mode, constantly checking out the latest version of parrot, compiling everything, running the tests and reporting the results to some central webserver that displays a status report for all to see. It's not just a good idea, it's the Parrot tinderbox. Now, consider an operating system that takes it upon itself to throw up a modal dialog box when a program segfaults. The two don't sit well together do they? Which is why Dan has committed a patch to disable the Your program has crashed, want to send a report to Microsoft? box that pops up on Win32 when Parrot segfaults. Still, at least it can be disabled. Dan asked for opinions on whether the (non tinderbox) default should be to put up a dialog box or not. And it appears that, if you disable the dialog box, there's no other notification (apart from the failed test, obviously) that there was a segfault. I am sure I'm not alone in boggling at this, but it looks like the default will be to display the dialog. http://groups.google.com/[EMAIL PROTECTED] Perl 6 updated Allison Randal sent in a patch to update the Perl 6 compiler to use the right operators (^+ becomes +, ~~ (meant xor) becomes ^^, making way for =~ to become ~~). She's still working on other tweaks to get the semantics of what's already been implemented right, and claims to be sufficiently annoyed by the failing regex tests that she might have to go and make them work to remove the annoyance. Which would be good. (I'm afraid that the tantalizing code I mentioned last week has actually been there for ages, as I feared it had). That capital fellow, chromatic applied the patch. http://groups.google.com/[EMAIL PROTECTED] String formatting and transformation Dan got around to specifying some details about string formatting and transformation. Essentially there will be various case changing transformations and a couple of different formatting approaches, one sprintf like and another more like traditional COBOL style formatting. Dan's not sure yet whether these formatters will get ops or simply be implemented in the standard library. http://groups.google.com/[EMAIL PROTECTED] AUTOLOAD anyone? Someone calling itself ibotty wondered if there would be a default PMC method that gets automagically called whenever a method call isn't found. To which the answer is Yes, when it's done. http://groups.google.com/[EMAIL PROTECTED] erl.org Determining PMC memory addresses Cory Spencer wanted to know if there was a PASM way of finding whether two PMCs share the same memory address. Not yet, said Leo Tötsch, but there are entries in the vtable to do it. This sparked
This week's summary
The Perl 6 Summary for the week ending 20031114 Evening all. Are you sitting comfortably? Then I'll begin. Undoubtedly, over the last week, some or all of the following happened: * Dan Sugalski thought about design, and maybe even nailed a few more things down. * Leo Tötsch wrote far more code than you'd think possible. * Luke Palmer either answered or asked a tough question or two on perl6-language. * A series of unfortunate events, involving a laptop failing twice in short order and an external firewire drive that decided that 'Write once, read once' was a sensible operating mode, and a general lack of an adequate backup regime, mean that I have lost my mail archive, my summary archive, the tools I use to publish them and, most devastatingly, a week's worth of new mail that I'd not got 'round to reading or replying to yet. Which means I'm not really in a position to write the usual summary this week. I *could* head off to Google, wrestle with an interface that really isn't suited to reading mail and knock something together that wasn't too awful, but I'm going to punt instead. Hopefully I'll have things vaguely sane next week and I'll see about doing a double summary. Acknowledgements, Apologies, Announcements I'm sorry I was stupid enough to think I'll muddle through without a backup system, there's nothing of real value on the laptop If you've enjoyed this summary then I'm amazed, but thank you anyway. You might like to show your appreciation by thinking about contributing money or time to the Perl foundation and the Perl 6 effort, or you could contribute feedback to me at [EMAIL PROTECTED] or stop by at my website, which has a small amount of new content on it at last. http://donate.perl-foundation.org/ -- The Perl Foundation http://dev.perl.org/perl6/ -- Perl 6 Development site http://www.bofh.org.uk:8080/ -- My website, Just a Summary