<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title>Rakudo.org</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/" />
    
    <id>tag:www.rakudo.org,2008-01-16://6</id>
    <updated>2009-02-28T00:02:34Z</updated>
    <subtitle>Your one stop for Rakudo Perl, Parrot and Perl 6 news: Development, blogs, docs and more</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.21-en</generator>

<link rel="self" href="http://feeds.feedburner.com/rakudo-dot-org" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <title>Perl 6 Design Minutes for 25 February 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/perl-6-design-minutes-for-25-f.html" />
    <id>tag:www.rakudo.org,2009://6.646</id>

    <published>2009-02-27T23:51:47Z</published>
    <updated>2009-02-28T00:02:34Z</updated>

    <summary>The Perl 6 design team met by phone on 25 February 2009. Larry, Allison, Jerry, Patrick, and chromatic attended. Patrick: continuing to prepare Rakudo for its next release expect that to happen today for now, the releases will be alphabetical:...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>The Perl 6 design team met by phone on 25 February 2009.  Larry, Allison, Jerry, Patrick, and chromatic attended.</p>

<p><strong>Patrick:</strong></p>

<ul>
<li>continuing to prepare Rakudo for its next release</li>
<li>expect that to happen today</li>
<li>for now, the releases will be alphabetical: words beginning with A, B, C, D, etc.</li>
<li>partially to emphasize that I don't consider these user-ready releases</li>
<li>putting a number on that may imply that</li>
<li>no easy way to tie releases to numbers right now anyway</li>
<li>some people have said "What happens when you get to X?"</li>
<li>I hope we're releasing official releases by then</li>
<li>updated Rakudo's test harness</li>
<li>no longer requires Parrot's test harness</li>
<li>it now passes over 7000 spec tests</li>
<li>Jonathan gets most of the credit for that</li>
<li>he's been closing tickets and fixing bugs while I've been working on build issues</li>
<li>totally unplanned to hit that number</li>
<li>updated the spectest progress files to show our progress</li>
<li>haven't updated the graph today</li>
<li>following along conversations and trying to keep track of various changes</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>spent the week mainly on install stuff</li>
<li>various languages can build from an installed Parrot without depending on the build directory</li>
<li>still some hard-coded paths within Parrot's configuration system for C compilation</li>
<li>Rakudo and Partcl can definitely build from an installed Parrot</li>
<li>need to do Pipp next</li>
<li>set up a languages repository on svn.parrot.org</li>
<li>waiting for some admin work on that</li>
<li>came up with a saner version number strategy</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I find it much easier to say that January and July are the memorable releases than to attach numbers to them</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>with Ubuntu, it's likely we'll get 1.0 and 2.0 into the distribution and not say 1.4</li>
<li>they have an upstream packaging freeze about a month before we put out our release</li>
<li>the release that goes into their 09.10 will be 1.0, not 1.4, because the latter won't be out in time</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>why not 1.3?</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>that's a developer release</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>we're going to have to talk about that</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>we have a final copyright assignment from the Perl Foundation to the Parrot Foundation</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>have some small pending changes to S19</li>
<li>nothing much to report there</li>
<li>Google's giving a GSoC presentation at the University of Washington</li>
<li>they've asked me to speak about our experiences last year with TPF</li>
<li>I'll invite people to join the Perl and Parrot Foundations project this year</li>
<li>hope to have an ideas page to point people at at that point</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>have you spoken to Jonathan Leto about that?</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>only heard about it yesterday</li>
<li>it's on my list</li>
<li>looking for presentations on GSoC to find slides to borrow</li>
<li>about all I've had time to do lately</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>having a really nice problem</li>
<li>a lot of people are helping to flesh out the specifications</li>
<li>the nice problem is that they have to be managed</li>
<li>trying to oversee what people are hacking into the new specs</li>
<li>want to make sure things don't go too far afield</li>
<li>weighed in on event processing and inexact numeric matches on the mailing list</li>
<li>nothing there is quite spec-worthy yet</li>
<li>doing name-whackage of various sorts</li>
<li>killed off the <code>$*DEFIN</code>, <code>$*DEFOUT</code>, <code>$*DEFERR</code> symbols which emulated Perl 5's old IO select states</li>
<li>not it relies on that those are contextual vars: <code>$*IN</code>, <code>$*OUT</code>, <code>$*ERR</code></li>
<li>any scope can override them</li>
<li>that's simplification</li>
<li>many compiler variables that were redundant and error prone with regard to nested scopes</li>
<li>you now chase links through your symbol tables to find out your lexical or package nesting</li>
<li>unhandwaved how a setting can loop around user code</li>
<li>you can mark it so that it knows how to dump the lexical scope surrounding user code</li>
<li>there's a stub in there called <code>YOU_ARE_HERE</code></li>
<li>I'm open to better names</li>
<li>clarified associativity at the same precedence level</li>
<li>that can happen with user-defined operators</li>
<li>non-associative in that case, so you get an error</li>
<li>noticed that the <code>tighter</code> and <code>looser</code> precedence generators only produced precedence levels that were close to one that exists</li>
<li>wanted the ability to define something in the middle</li>
<li>if you use both in the same precedence level, it splits the difference</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>sounds like you need a synonym: <code>between</code></li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>tried that, but you have to specify two things anyway, and there's already syntax for that</li>
<li>after the discussion of time semantics, put in two core types: <code>Instance</code> and <code>Duration</code></li>
<li>defined to be well-behaved in terms of time</li>
<li>most of my standards hacking has been in user-oriented error messages</li>
<li>now an error message that warns you if you try to use a C++ constructor</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>can we backport that one?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>it's also a valid Perl 5 constructor</li>
<li>just thought it would be more insulting to call it a C++-style constructor :-)</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>I still want it</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>previous patch to catch Haskell-style open-ended ranges where you leave out one of the terms</li>
<li>that prevented talking about any <code>..</code> operator in square brackets</li>
<li>we couldn't use the notation where you put square brackets around infix operators</li>
<li>I had to fix that</li>
<li>fixed up the warning when interpreting <code>if()</code> as a function call</li>
<li>introduced enum names into the symbol table</li>
<li>it's a bit of a hack</li>
<li>anonymous enums now parsed correctly</li>
<li>no more complaints of missing package when you use <code>CALLER::</code> or <code>CONTEXT::</code></li>
<li>can now introduce <code>term</code> symbols, as well as <code>prefix</code>, <code>infix</code>, and <code>postfix</code></li>
<li>other random warning-suppresion bugs</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>working on project management, version numbers, deprecation, triaging guidelines</li>
<li>trying to fix as many bugs as possible</li>
<li>reviewing SKIP and TODO tests</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>I read your <code>Setting</code> work this week</li>
<li>can you roll back a <code>Setting</code>?</li>
<li>can you access something outside the current <code>Setting</code>?</li>
<li>I don't have a use case</li>
<li>is it as simple as calling <code>OUTER::Setting</code>?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>if there are multiple settings, they're just enclosing lexical scopes</li>
<li>any mechanism to navigate lexical scopes works</li>
<li>the outermost is <code>CORE::</code> and so forth</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>to cut off a file in mid-stream processed with <code>-n</code>, could I close the handle in <code>CORE::</code>?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>chances are that's a dynamic variable, a <code>$*ARGV</code> equivalent</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>can I find out which <code>Setting</code> I'm currently in?</li>
<li>finding out its name</li>
<li>inside my current runloop, can I tell which <code>Setting</code>s I have loaded?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>we probably want to have a way of naming them, much as <code>CORE::</code> has a name</li>
<li>lexical scope should have a way of saying "My lexical scope has a name, and it is..."</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>O-S-C-A-R?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>... but I haven't thought about that yet</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>any status on protoregexes and stuff?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I end up being the person of last resort to do things that need doing</li>
<li>had hoped that other people would pick up the ball on build issues and stuff</li>
<li>I can make predictions for the next few months, but life catches me off guard</li>
<li>once I get back to working on PGE, it won't take too long</li>
<li>it would bug me more if the lack of those features were holding Rakudo back</li>
<li>that doesn't appear to be the case</li>
<li>we're making good progress and we're getting new features</li>
<li>we could use them for adverbs, but we can work around that now</li>
<li>if that reaches a pain threshold, it'll move it higher in the queue</li>
<li>that's where I'm focusing my efforts</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>Jonathan's very good at moving things forward</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>it's fortunate that each of us tends to like doing what the other person hates</li>
<li>with the exception of lexicals and the build system</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>no one ever wants to do a build system</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>delayed binding helps this though</li>
<li>seeing grammar changes as they come up makes it easier to figure out what to do</li>
<li>with the <code>Setting</code> code now, and features written in Perl 6, we're closer to finishing one of my milestones</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>how will the install process be for Rakudo?</li>
<li>it seems like Parrot is doing the heavy lifting there</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>I've been working on independent building</li>
<li>what would you like for installing?</li>
<li>an install script where you identify your language files, and it puts them there?</li>
<li>you have a <em>languages/</em> directory in the Parrot lib directory</li>
<li>you have configuration files that tell you where they are</li>
<li>you just copy files after that</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>certain things might need changing</li>
<li>grouping the docs?</li>
<li>cross-indexing?</li>
<li>if you're doing dynops or dynpmcs?</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>haven't been doing any doc installs, just executable files</li>
<li>maybe they should go in with the Parrot docs</li>
<li>installation works via a <em>MANIFEST</em></li>
<li>you specify the type of file with a tag in the <em>MANIFEST</em>, whether <code>doc</code> or <code>lib</code></li>
<li>are you happy to have a <em>MANIFEST</em> in your language directory</li>
<li>let the installer take care of it for you?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>if there's a script to do the install, we'll probably use that</li>
<li>I just want to get it so that people can build and run Rakudo</li>
<li>I'll probably look at installation in a month or two</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>I'll look at a simple <em>MANIFEST</em> for Rakudo</li>
<li>will patch your <em>Makefile</em> for that</li>
<li>will build a basic installer script</li>
<li>it'll be a basic, working install</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>the <em>mk_languages_shell.pl</em> script needs an update to make a <em>MANIFEST</em></li>
<li>Fran&ccedil;ois has been keeping that up to date</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>I haven't added <em>MANIFEST</em> to any other languages yet</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Perl 6 Design Minutes for 18 February 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/perl-6-design-minutes-for-18-f.html" />
    <id>tag:www.rakudo.org,2009://6.643</id>

    <published>2009-02-26T00:56:19Z</published>
    <updated>2009-02-26T01:05:26Z</updated>

    <summary>The Perl 6 design team met by phone on 18 February 2009. Larry, Patrick, Allison, Jerry, Nicholas, and chromatic attended. Larry: fixed STD so that if you added A::B, it added A as a subpackage so as not to complain...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>The Perl 6 design team met by phone on 18 February 2009.  Larry, Patrick, Allison, Jerry, Nicholas, and chromatic attended.</p>

<p><strong>Larry:</strong></p>

<ul>
<li>fixed STD so that if you added <code>A::B</code>, it added <code>A</code> as a subpackage</li>
<li>so as not to complain about a missing package declaration</li>
<li>can now have <code>$!</code> as a parameter</li>
<li>mostly working over a lot of the error messages to be friendly to Perl 5 programmers</li>
<li>if you use <code>do</code>/<code>while</code> or <code>do</code>/<code>until</code> it now complains</li>
<li>if you use <code>if</code> or one of the keywords as if it's a function, it tells you what the problem is without saying "I don't recognize that function name"</li>
<li>people coming from a Haskell background think they can write <code>1..</code> to get an indefinite range</li>
<li>it now tells them what they should write instead</li>
<li>fixed a bug which reported runaway strings which start and stop on the same line</li>
<li>not really a runaway</li>
<li>now it reports that only if the string crosses a newline</li>
<li>in the spec space</li>
<li>to accompany the ability to use a bare sigil in declarations as an anonymous name, now you can use a bare <code>::</code> to signify an anonymous package name or type</li>
<li>allows us to have a package named <code>is</code> without ambiguity</li>
<li>blew away the <code>Main</code> package; combined it with the <code>GLOBAL</code> package</li>
<li>everything in the main program comes up starting in the <code>GLOBAL</code> namespace</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>oh, I'm happy!</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>thought the distinction served no useful purpose</li>
<li>continued doing spec work combining context variables with globals</li>
<li>at least in terms of twigils</li>
<li>realized that filehandles belong to the <code>PROCESS</code> namespace, not the <code>GLOBAL</code> namespace</li>
<li>continuing on the vein of <code>.Whatever</code> on most normal operators builds a closure of one argument</li>
<li>made <code>*.method</code> do the same thing</li>
<li>even in places which are not syntactically special, we can use <code>*.prime</code> in a <code>grep</code> for example</li>
<li>equivalent to putting <code>.prime</code> in the curlies</li>
<li>now we have a fairly general mechanism of writing closures of a single argument</li>
<li>actually reads pretty well if you don't want the curlies</li>
<li>we could go as far as to undo the special syntax on <code>when</code>s and <code>~~</code> so you have to say <code>*.foo</code> to call a method</li>
<li>still thinking about that</li>
<li>would regularize the syntax slightly</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>had a little emergency over the weekend, but things are fine</li>
<li>improving Rakudo's build process to make it easier to build</li>
<li>someone who wants to build it can get a copy of the repo and pass a special option to Rakudo's <em>Configure.pl</em></li>
<li>that'll download a copy of Parrot from the right revision and build it for you</li>
<li>people who want to play with Rakudo don't have to play with Parrot dependencies</li>
<li>Jonathan and I have most of the guts ready to start writing <code>Setting</code> code</li>
<li>we can start to write methods in Perl 6 instead of in PIR</li>
<li>we'll gradually migrate methods which make sense to rewrite in Perl 6</li>
<li>moving those over into the <code>Setting</code> code</li>
<li>that'll make it easier for people to hack on</li>
<li>some things will remain in PIR, but we don't know what those are yet</li>
<li>most of my plans for this week is doing more cleanups in the build process</li>
<li>rewriting Rakudo's <em>t/harness</em> to remove dependencies on Parrot files</li>
<li>have that mostly done</li>
<li>writing some articles discussing Rakudo's new home</li>
<li>how to get it, how to build it, and updating websites</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>working on Parrot's install process</li>
<li>making it so that Patrick doesn't have to build and install a whole copy of Parrot to build Rakudo</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>we'll need that for some time</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>trying to make it so that people who build and install packages have an easier time</li>
<li>you won't have to depend on a Parrot build directory</li>
<li>you can run against an installed Parrot</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I would like to get rid of the build tree dependency</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>the patch I have gets rid of most of the build tree dependencies</li>
<li>there are a few header files in weird locations</li>
<li>they don't get included in PMCs and dynops</li>
<li>I've fixed all of the build tools</li>
<li>all that's left is C-level stuff</li>
<li>should probably send you to the patch to experiment with</li>
<li>lots of stuff preparing for the release</li>
<li>seems to be encouraging that we've been getting more novice questions</li>
<li>seems to be an influx of interest here</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>talking to Richard Blackwell about YAPC</li>
<li>Parrot and Perl 6 hackathon needs</li>
<li>working on TODO/SKIP test review for Parrot</li>
<li>also pondering bug triaging guidelines for Parrot</li>
<li>having some discussions about release policies and deprecations (though mostly Perl 5)</li>
<li>setting expectations early seems to help a lot</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>what projects did you look at, or did you look at things afresh?</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>Subversion's really early milestone release process was a real inspiration</li>
<li>the Linux kernel's backwards compatibility policy was also</li>
<li>not much besides that</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>Ubuntu's long term support is pretty nice</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>I'm a little less thrilled there</li>
<li>even six months time is a long span between releases</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>that's kind of a corporate support guideline</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I like knowing that Hardy will be supported for a few years</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>that's a risk for them</li>
<li>how long are they going to support KDE 3 when upstream doesn't?</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>RHEL and other enterprise distributions support Perl 5.8 until 2011 or so</li>
<li>but we haven't heard anything from downstream there</li>
<li>and we only support critical security fixes there</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>I put in expicit language about vendors promising long-term security fixes</li>
<li>that's your vendor's problem, not the problem of volunteers</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>in Perl 5, you used to do <code>package;</code> with no namespace</li>
<li>removed somewhere in 5.8.x</li>
<li>was such a thing considered for Perl 6?</li>
<li>you basically banned all unqualified variables</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>it was a hack in Perl 5</li>
<li>I want to make new mistakes</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I expect to do Rakudo's next release next Wednesday</li>
<li>that's a target anyway</li>
<li>I'll be out of town this weekend</li>
<li>we'll start its regular release clock with that release</li>
<li>we'll do monthly releases</li>
<li>that exact date will vary by a few days here or there until we get the release process down</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>will you have a similar release structure as Parrot</li>
<li>multiple release managers?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>yes</li>
<li>I don't want to be the single release manager</li>
<li>I'll probably do the first couple</li>
<li>I want at least one other person to do some by May or June</li>
<li>ideally a team</li>
<li>the Rakudo release needs to happen very quickly after the Parrot release</li>
<li>we won't be able to do this this month</li>
<li>what do we need to think about for POD in Perl 6?</li>
<li>what we have now is "DRAFT DRAFT DRAFT"</li>

</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>can you say "We'll target this version and update if necessary?"</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>that's exactly what I've done so far</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>I agree</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I expect to generate or write a fair bit of POD</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>it's amenable to mechanical translation</li>
<li>someone should write a standard parser for POD</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>Parrot might as well stick with the standard</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>are you suggesting a Parrot-based POD6 parser?</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>if you develop a POD6 parser in Perl 6, could we compile it back down to PIR and use it?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>we'd more likely target NQP</li>
<li>Rakudo expects the Perl 6 runtime available</li>
<li>it'd be nice to say that that's just a PBC, but it's also PMCs and dynops</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>makes me wonder how small we can make a Parrot distribution that only contains NQP as a language</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>that's the Parrot 2 proposal</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>I meant ripping out all ops and PMCs you don't need</li>
<li>maybe no IMCC</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>it's not PBC compatible though</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>he's talking about a version of Parrot built on as few basic opcodes as possible</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>no PMCs or ops written in C</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>I thought the computer scientists proved that you only need one operation to make things work, sort of a compare and jump</li>

</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>then you have Lisp</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>but you need infinite storage space</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>disk space is cheap, and getting cheaper</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>but not infinite</li>
<li>you can climb that asymptote all you want, but it keeps getting steeper</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>the ultimate slippery slope argument</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Rakudo: More bugs squished, over 7000 passing spectests</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/rakudo-more-bugs-squished-over.html" />
    <id>tag:www.rakudo.org,2009://6.642</id>

    <published>2009-02-25T22:21:24Z</published>
    <updated>2009-02-25T22:22:40Z</updated>

    <summary>Today was Rakudo day, and I used it to get a bunch of fixes in place as well as applying some patches from other folks. Before digging in to the details, I'm happy to point out that we're now passing...</summary>
    <author>
        <name>Jonathan Worthington</name>
        <uri>http://jnthn.net</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bugs" label="bugs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="spectests" label="spectests" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>Today was Rakudo day, and I used it to get a bunch of fixes in place as well as applying some patches from other folks. Before digging in to the details, I'm happy to point out that we're now passing over 7,000 spectests - in fact, we got past that last night, before today's round of fixes, so we're well over it now.</p>

<ul>
  <li>Fixed a bug involving the === operator and proto-objects; specifically, if you 

had an attribute "has Foo $!x" and in a method - without ever having changed $!x - 

did "$!x === Foo", it wrongly gave False.</li>
  <li>Whatever wrongly inherited from Object rather than Any, as S02 says it should. 

Changed this, which allowed me to resolve a ticket.</li>
  <li>Was happy to find an enums related bug report that had already been fixed - 

this time, by the type registry coming into existence last month. Added a couple of 

tests to make sure the bug didn't come back and closed the ticket.</li>
  <li>Got bare sigils in signatures working. This turned out to be quite easy, 

resolved an RT ticket and made ten or so tests that were skipped in assign.t pass 

too. So you can now do things like:<br>
<code>my ($, $, $, $four) = 1..4;<br>
my ($one, $two, *@) = 1..4;<br></code>
To only assign some things. Note that *@ is just the slurpy array * - it's a 

signature (and in fact you would now be able to write *@ in a signature on a sub 

too).</li>
  <li>masak discovered that:<br>
  <code>say "a".."c" Z "?", "a".."b"<br></code>
  Gave the wrong output and reported it. bacek sent in a patch. Mortiz wrote a test. 

Which just left me to review and apply the patch and untodo the test. Teamwork for 

the win.</li>
  <li>Calling .parse on a grammar that is in a namespace did not work. I fixed it and added a test.</li>
  <li>Our multi-method dispatch has never been quite right, and has long been on my fix list. Now it's at least a lot more correct, in that if it finds no applicable candidates in the current class it now goes looking up the MRO.</li>
  <li>While I was in the multi-dispatcher, I realized that every time we got a cache miss, we leaked a little memory. Fixed the leak. Was glad that Rakudo only has a little bit of C...I'm too stupid to get manual memory management right.</li>
  <li>Did some tweaks to the way we construct subsets to make them act a bit more type-ish, and make sure that the type object works like a proto-object (that is, it's undefined). May need some more tweaks, but it fixes what .defined does and passes all the current spectests for this.</li>
  <li>Applied some documentation patches from leto and Chris Dolan. Easy work thanks to the github fork queue.</li>
</ul>

<p>Additionally, I tracked down where the perl6 executable often crashes with a double free or got into an infinite loop on exit (it was a problem that only showed when using the executable, and not when using the bytecode file on Parrot - not because the problem wasn't there, but because Parrot didn't bother to reclaim the memory on exit so it never ran the cleanup code that exploded). I wrote a patch which sucked, but prevented the double frees. I showed it on #parrot, at which point pmichaud - now knowing where in Parrot the problem lay - churned out a much smaller patch that was more correct and more efficient. It's in, we bumped up the recommended Parrot version for Rakudo and I closed some tickets about segfaults.</p>

<p>So, thanks to Vienna.pm for sponsoring Rakudo Day this week. There won't be one next week, since I'll be taking some vacation. This weekend is the Belgian Perl Workshop, and the weekend after is the Ukrainian Perl Workshop, so I'm going to spend a bit of time in each of those countries between them, relaxing and enjoying the sights, the beer and the food. And of course, very much looking forward to seeing folks and talking about Perl 6 and Rakudo at the workshops too!</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Perl 6 Design Minutes for 11 February 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/perl-6-design-minutes-for-11-f.html" />
    <id>tag:www.rakudo.org,2009://6.641</id>

    <published>2009-02-24T01:21:25Z</published>
    <updated>2009-02-24T01:22:17Z</updated>

    <summary>The Perl 6 design team met by phone on 11 February 2009. Larry, Jerry, Patrick, Nicholas, and chromatic attended. Larry: hacking symbol table support into the STD parser so that I can tell when things have and haven't been defined...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="Parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="Perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="Rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[The Perl 6 design team met by phone on 11 February 2009. Larry, Jerry, Patrick, Nicholas, and chromatic attended.

<p><strong>Larry:</strong></p>

<ul>
<li>hacking symbol table support into the STD parser</li>
<li>so that I can tell when things have and haven't been defined</li>
<li>largely complete</li>
<li>started moving the lexical pads out to a separate file</li>
<li>they have more information in them</li>
<li>the Setting file, formerly the Prelude, is now parameterized so that other Settings can be set for the lexical settings</li>
<li>lots of work on various error messages associated with declaration, non-declaration, and redeclaration errors</li>
<li>just checked in a unification of the <code>+</code> and <code>*</code> twigils</li>
<li>threatened that for a long time</li>
<li>prototyped that in the STD parser</li>
<li>it seemed to work</li>
<li>hacked that in</li>
<li>now we only have the <code>*</code> twigil</li>
<li>it essentially does the contextual variables</li>
<li>it looks in global and process symbol tables if it doesn't find them locally</li>
<li>it looks in the environment only after failing to find it in global and process</li>
<li>it's very easy to hide that, or substitute a vetted environment table somewhere in your dynamic scope</li>
<li>cleaned up the definition of how environment is passed on to the subprocess</li>
<li>dealing with the twigil changes in the Spec</li>
<li>cleaning up the pseudopackage names somewhat</li>
<li>regularizing the setting and file scope and current compilation unit and their relationships</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>went to Frozen Perl this weekend</li>
<li>gave one major presentation on Perl 6</li>
<li>a couple of lightning talks on PCT</li>
<li>had a hackathon on Sunday</li>
<li>that went well</li>
<li>there's a lot of enthusiasm for Rakudo and Perl 6</li>
<li>Andy Lester focused on that for his keynote</li>
<li>lots of people talking about it outside of that</li>
<li>lots of people starting to look at Perl 6 again</li>
<li>"We're getting to an implementation"</li>
<li>"These features are nice"</li>
<li>"I'm looking forward to using this in my business"</li>
<li>trying to update the instructions to download and build Rakudo from its new repository</li>
<li>coming along more slowly than I'd like</li>
<li>noticed at the hackathon that invoking Rakudo with the Parrot command line &mdash; <code>parrot perl6.pbc</code> &mdash; is confusing for folks</li>
<li>Parrot's not in a common location they can get to it from</li>
<li>we'll try to focus more on the executable form</li>
<li>people can understand that more</li>
<li>noticed that <code>pbc_to_exe</code> took an inordinately long time to do its work</li>
<li>hacked on that, and the new version is a lot faster</li>
<li>learned a lot about IO in Parrot</li>
<li>tweaking the build scripts for Rakudo</li>
<li>plan to do more of the same</li>
<li>will write up more documentation, <em>README</em>s, guides, blog posts, etc</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>interested in the work on the Setting</li>
<li>might work with one of the S19 options I've toyed with</li>
<li><code>-E</code> to include an environment variable</li>
<li>can be generalized into a one-liner to add a setting</li>
<li>had some minor updates to S19</li>
<li>don't have the <code>split</code>/<code>comb</code> update quite right yet</li>
<li>been fighting with Parrot's Windows compatibility through changes in the config system</li>
<li>discovering some things this week about static and shared library linking</li>
<li>working toward a solution there</li>
<li>started creating an Ubuntu VM for distribution to interested hackers</li>
<li>has all sorts of Perl 6-related projects</li>
<li>Pugs, Rakudo, Parrot, November, Apache, mod_parrot</li>
<li>VMWare image that should fit on a 16 GB thumb drive</li>
<li>will make that online</li>
<li>should make it easier for people who want to hack on Rakudo to do so</li>
<li>provided we can set up tools to manage and update these distributions</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>closed some bugs</li>
<li>checked in the support, deprecation, and release policy</li>
<li>brainstorming ideas on how to make a VM with less C code</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>does a VM really take 16 GB?</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>I don't think it will</li>
<li>that's how big I have it now</li>
<li>it can probably be smaller</li>
<li>I'm not familiar enough with a minimal install of Ubuntu with enough space for GCC and the build tools</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>it wouldn't fit on a CD</li>
<li>it might fit on a DVD</li>
<li>assumed that burning a DVD is a more disposable way of giving it away</li>
<li>they're effectively free</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>I'll consider that</li>
<li>hadn't thought terribly about distribution</li>
<li>I can resize it smaller at any time</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>just did an Ubuntu install yesterday</li>
<li>GCC, Git, Subversion... no Parrot yet</li>
<li>it's a fresh install</li>
<li>looks like 3.5 GB</li>
<li>I can generally work in 6 GB</li>
<li>that'd fit on a dual-layer DVD</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>maybe look at a live DVD</li>
<li>add to that</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>Ubuntu lets you boot off a USB drive</li>
<li>you keep your storage with you</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>want to give Jesse credit for Prophet and SD, which syncs with RT, Hiveminder, and Trac</li>
<li>offline access to bug queues and TODO lists</li>
<li>it's nice to travel to a venue and then sync so everyone sees how productive you are when you're not connected</li>
<li>going to put that in the Perl 6 dev VM</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I want that!</li>
<li>especially with all of the traveling I'm doing</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Rakudo Built-ins Can Now Be Written In Perl 6</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/rakudo-built-ins-can-now-be-wr.html" />
    <id>tag:www.rakudo.org,2009://6.640</id>

    <published>2009-02-18T22:30:38Z</published>
    <updated>2009-02-18T22:31:34Z</updated>

    <summary>Rakudo day today was mostly about getting going with a Perl 6 setting (what other languages tend to call a prelude) for Rakudo. This allows us to write built-ins in Perl 6 rather than in PIR, which will speed development...</summary>
    <author>
        <name>Jonathan Worthington</name>
        <uri>http://jnthn.net</uri>
    </author>
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="rakudo" label="rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="setting" label="setting" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>Rakudo day today was mostly about getting going with a Perl 6 setting (what other languages tend to call a prelude) for Rakudo. This allows us to write built-ins in Perl 6 rather than in PIR, which will speed development and, we hope, encourage more contributions. It is also a needed step on the way to other things.</p>

<p>After Patrick told me The Plan that he'd worked out for this, I dug in to doing the grunt work. The first task was to split the compilation into two steps: first, compile the core of Rakudo, then use that to compile the Perl 6 prelude, then bundle the two together to get the final Perl 6 compiler. It turned out that this step was fairly easy. We'd done plenty of work leading up to this to provide features that would make it possible, so within a couple of hours I had the changes to make this work comitted. The first two Perl 6 methods in the prelude were .perl and .ACCEPTS on the class Whatever - easy, for sure, but enough to prove the concept.</p>

<p>I thought things were looking good - but then it all came to a screeching halt when I discovered that because of the way we were building things, we were ending up with duplicates of some things that were supposed to be unique per compilation unit. Happily, Patrick jumped on the PCT changes required to fix this one up while I had dinner and did some shopping, and when I was back from all of that I was able to continue porting a few more things over to Perl 6. It's a start, but of course there's a long way to go yet. Help is very welcome - I really do hope this will help more people to get involved with Rakudo, since now you don't have to learn PIR to write built-ins!</p>

<p>As well as working on the setting, I dealt with a few RT  tickets, to pull our queue back under the 250 mark that it had sneaked above again.</p>

<ul>
  <li>Recently masak pointed out that you couldn't create an anonymous class that inherited from another class, or had traits and so forth. The syntax "my $x = class is Foo { }" gave a parse error, since the 'is' was taken as the name and then it didn't know what to do with the Foo. Larry tweaked STD.pm and declared that the way to do this is "my $x = class :: is Foo { }" - the :: token indicating anonymity. Today I put the matching change into Rakudo's grammar, did the work to support it and added a couple of tests.</li>
  <li>Getting good test coverage isn't always so easy. There is some syntax for initializing the parent attributes of a class when calling new ("Child.new( Parent{ x => 42 })"), which worked. Well, in that simple case - but as soon as you got two different parents in there, it wouldn't work, or you'd end up putting the wrong values in the wrong places. A little effort later, I found the logic bug in our BUILDALL implementation and corrected it.</li>
  <li>As well as "class Foo does Bar { }" you should be able to say "class Foo { does Bar }". Now you can.</li>
  <li>Did some tweaks to get Rakudo building better on Win32, including the perl6 executable, which didn't really work on Win32 since we moved out to GIT.</li>
  <li>Applied a patch from bacek++ to get "min= and "max=" working ("$foo min= 100" will assign 100 to $foo if it's smaller than what is in $foo).</li>
  <li>Applied another bacek patch to fix the aossiciativity of the ** infix operator - it's right associative.</li>
</ul>

<p>Thanks to Vienna.pm for funding my work on Rakudo today.</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Perl 6 Design Minutes for 04 February 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/perl-6-design-minutes-for-04-f.html" />
    <id>tag:www.rakudo.org,2009://6.639</id>

    <published>2009-02-18T21:40:22Z</published>
    <updated>2009-02-18T21:44:02Z</updated>

    <summary>The Perl 6 design team met by phone on 04 February 2009. Larry, Jerry, Will, Patrick, Nicholas, and chromatic attended. Allison: successful migration of the Subversion repository to svn.parrot.org took up chromatic's ticket challenge and closed a handful a day,...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="Parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="Perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="Rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>The Perl 6 design team met by phone on 04 February 2009.  Larry, Jerry, Will, Patrick, Nicholas, and chromatic attended.</p>

<p><strong>Allison:</strong></p>

<ul>
<li>successful migration of the Subversion repository to svn.parrot.org</li>
<li>took up chromatic's ticket challenge and closed a handful a day, applying patches, fixing bugs, clearing out some old TODOs that don't fit with current architecture</li>
<li>started, completed, and merged in the second string refactor branch, a large-scale function name cleanup</li>
<li>a few fixes on the POD parser, mostly handed it off to kj</li>
<li>updated the <a href="https://launchpad.net/~parrot-dev/+archive/ppa">Parrot Ubuntu packages on the PPA with instructions for using it</a></li>
<li>speaking about Parrot at IBM tomorrow</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>enjoyed the lively discussion with mtnviewmark, timtoady, and others about metaops</li>
<li>really like where that ended up</li>
<li>Jonathan should be making some rakudo commits shortly to clean up the cross metaop spectest failures</li>
<li>thanks to Larry's comments, i'm polishing S19</li>
<li>haven't had much uninterrupted time lately, so progress has been slower than I like</li>
<li>keep thinking that's going to clear up soon... but that hasn't been</li>
the case for weeks now
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>completely revamped <em>STD.pm</em>'s metatoken parsing</li>
<li>treating generated metaoperators as longest tokens did not scale</li>
<li>chasing the implications of that through</li>
<li>LTM occurs on the metaoperator itself separately from the base operator</li>
<li>(most of the base operators are infixes)</li>
<li>what it modifies gets parses as a separate token</li>
<li>has implications on the order you check things</li>
<li><code>!=</code> isn't a separate token</li>
<li>has to be parsed with the combination of the <code>!</code> metaoperator</li>
<li>cuts the number of tokens way down</li>
<li>the lexer runs a fair bit faster</li>
<li>invented a new notation for disambiguating infix operators</li>
<li>they may now all be put in <code>[]</code>, the same form as reduce operators</li>
<li>internal to a metasequence (need a new name for that) sometimes need to identify which operator to apply in which order</li>
<li><code>&amp;[]</code> now refers to the infix function itself</li>
<li>makes it easy to pass binary operators into various functional programming primitives</li>
<li>reduce operator still stays out in front with square brackets</li>
<li>just generalized the notation</li>
<li>made more comments on S19</li>
<li>moving away from the notion of a Prelude</li>
<li>provisionally now called a Setting</li>
<li>it implies things before and after the text of a program</li>
<li>the <code>-n</code> and <code>-p</code> loops put a scope around the scope of your file</li>
<li>invented several new pseudo-package name prefixes to refer to the Setting</li>
<li><code>PERL</code> is the outermost setting as well as <code>LANG</code> for  the sublanguage the file is actually parsed in (such as from <code>-n</code> or <code>-p</code>)</li>
<li>just changed the Prelude to the Setting option in S19</li>
<li>chopped out the old, non-trie lexer since we're not using it</li>
<li>thought it might clean up the looks of the LTM for anyone interested in implementing his own</li>
<li>not that mine is a parallel matcher yet....</li>
<li>still something I'd like to do</li>
<li>maybe I won't have to</li>
<li>working with Mark on revisions to the new metaops (old minus metaops from last week)</li>
<li>many binary operators could use a metaop which reverses their arguments</li>
<li>would have the same effect on comparison operators as reversing the sense of the test</li>
<li>mutated into a <code>R</code> operator</li>
<li>and the <code>X</code> operator lost its second <code>X</code> to work the same</li>
<li>started a trend: adding more metaoperators with a prefix capital letter is a good approach</li>
<li>might end up with <code>Z</code> for a <code>zip with</code> operation</li>
<li>working on moving some of the preludey/settings stuff out of <em>STD.pm</em> into a separate file</li>
     - working over the various symbol tables to do lexical scoping more sanely
     - this is prep work for parsing a real Setting file and dumping out the symbols such that they can be slurped in for the user's file compilation
</ul>

<p><strong>Will:</strong></p>

<ul>
<li>minor station keeping on Parrot</li>
<li>no major progress on cleaning up deprecated stuff</li>
<li>hope to release a copy of This Week in Parrot</li>
<li>trying to resurrect that</li>
<li>lots of questions in IRC about why things are happening</li>
<li>we don't have a good way to answer that</li>
<li>will try to post short articles on front page of parrot.org</li>
<li>hope to do so every Sunday until at least 1.0</li>
<li>then hope to hand it off to someone else</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>moved Rakudo out of the Parrot repository</li>
<li>its official location is github</li>
<li>the old Rakudo stuff is still in the Parrot repository</li>
<li>it'll be gone tomorrow</li>
<li>decided on Git because there weren't many pros for sticking with Subversion</li>
<li>getting everyone up to speed on using Git isn't super easy</li>
<li>haven't run into any major blockers yet either</li>
<li>usually just reorienting ourself to different commands</li>
<li>hacked up a new Configure.pl for Rakudo out of the Parrot tree</li>
<li>making it work with an installed Parrot</li>
<li>Parrot isn't quite there yet</li>
<li>if someone doesn't have Parrot but downloads Rakudo, what's the best way to get them an appropriate revision of Parrot to run on?</li>
<li>looking at options for that</li>
<li>very pleased to see Larry's changes to metaops and other pieces</li>
<li>pleased that Prelude is now Setting</li>
<li>equally pleased that I haven't worked on any of these pieces yet....</li>
<li>hooray for delayed binding</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>Alan Kay is smiling somewhere</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>late binding wins again!</li>
<li>laziness is paying off</li>
<li>Rakudo is close to having its own Setting written in Perl 6</li>
<li>part of the repository</li>
<li>probably won't happen by Frozen Perl this weekend</li>
<li>have some documentation to write for that</li>
<li>should have it by the next Rakudo release, sometime in February</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>finishing the draft Parrot support policy</li>
<li>pretty aggressive, but what we discussed at PDS</li>
<li>will be in the repository today</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>what's the schedule on Rakudo releases?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I expect that they'll occur timed with Parrot releases</li>
<li>but not simultaneous</li>
<li>Parrot releases on the third Tuesday</li>
<li>Rakudo will release the weekend after that</li>
<li>this'll give us time to tie it to that specific release</li>
<li>we'll continue the monthly release cycle</li>
<li>for most of 2009, I expect many people won't want to play with the released version of Rakudo</li>
<li>they'll want to play with the head version</li>
<li>all of the cool features and bugfixes</li>
<li>it'll track Parrot, but not necessarily Parrot's head</li>
<li>it'll make sure you have a sufficient version of Parrot, but not necessarily the latest one</li>
<li>January has shown that when Rakudo and Parrot are separated, changes to Parrot trunk can easily break Rakudo</li>
<li>we update a file in the repository now</li>
<li>we'll update that whenever something happens in Parrot that we need to update it with</li>
<li>that version will always include at least a Parrot monthly release</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>Parrot's starting to get to the point of Perl 5</li>
<li>changes can break CPAN modules</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>we need to be more aggressive about adding those tests to the core test suite</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Many more Rakudo fixes</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/many-more-rakudo-fixes.html" />
    <id>tag:www.rakudo.org,2009://6.637</id>

    <published>2009-02-13T22:47:18Z</published>
    <updated>2009-02-13T22:48:23Z</updated>

    <summary>Since I had no time for Rakudo day last week, this week I'm doing two of them, in order to get caught up a bit! So, here's what I got done today. Some of the tickets I dealt with today...</summary>
    <author>
        <name>Jonathan Worthington</name>
        <uri>http://jnthn.net</uri>
    </author>
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bugs" label="bugs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="io" label="IO" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="smartmatch" label="smart match" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="types" label="types" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>Since I had no time for Rakudo day last week, this week I'm doing two of them, in order to get caught up a bit! So, here's what I got done today. Some of the tickets I dealt with today weren't just a clear-cut case of "this is wrong", but often needed careful checking against the spec, or clarifications to it; I even rejected one bug report, since it expected something to work that went against the spec (plus there was a failing test for it, which I now removed).</p>

<p>Anyway, here's a list of the things that got fixed.</p>

<ul>
  <li>Fixed the 'is copy' trait on parameters when applied to array and hash parameters; now it does the Right Thing on them. Wrote some tests.</li>
  <li>Fixed a couple of Null PMC accesses that could show up when you had empty blocks (which took some subtle placement, given that if you get it wrong hash composers break...) Anyway, "my $x = -&gt; {}; my $y = $x()" and "my $x = do given 5 {}" will just give you an undef in $x now, not a Null PMC access.</li>
  <li>Fixed :x($n) in .subst - both the string and regex variants - to handle the case where $n is greater than the number of matches that can be done (it should hand back the original string; before it would do as many as it could and then hand back the string).</li>
  <li>Fixed a couple of different bugs when using the Whatever (*) when doing smart-matches with arrays, plus added them to the test suite.</li>
  <li>where clauses on parameters in routines would not allow you to just write something to smart-match against, but instead required a block. This is now fixed, so you can write "sub foo($bar where /baz/) { }" and such things.</li>
  <li>Subtypes (anonymous and otherwise) did not enforce that parameters to blocks were read-only by default. This is now fixed and tested.</li>
  <li>Implemented the prompt built-in.</li>
  <li>When you use a role as a class, it should "pun" a class that does that role and nothing else. This is still something we're working on, but today I fixed a missing case: you can now pun a role into a class and use the punned class to inherit from.</li>
  <li>Implemented the special smart-match form for a method call on the RHS, which calls the method on the RHS on the thingy on the LHS and gives a boolean result. This is nice for doing predicate tests on an object using given/when.<br>
<code>class A {<br>
&nbsp;&nbsp;&nbsp;&nbsp;has $.x;<br>
&nbsp;&nbsp;&nbsp;&nbsp;method nothing { $.x == 0 }<br>
&nbsp;&nbsp;&nbsp;&nbsp;method large { $.x &gt; 100 }<br>
};<br>
for 0,100,200 -&gt; $x {<br>
&nbsp;&nbsp;&nbsp;&nbsp;say "Considering $x";<br>
&nbsp;&nbsp;&nbsp;&nbsp;given A.new(:$x) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when .nothing { say "nothing" }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when .large { say "large" }<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
}<br></code>
Output:<br>
<code>Considering 0<br>
nothing<br>
Considering 100<br>
Considering 200<br>
large</code></li>
</ul>
<p>I have also reviewed quite a lot of tickets, and closed quite a few that related to issue that had now been fixed (either as a side-effect of fixing other tickets, or thanks to ongoing development). Between the fixes on this Rakudo Day and the one earlier in the week (along of course with the input and help of others) we have gone from over 270 tickets on Wednesday morning to 245 tickets now. So while we've some way from the more manageable size of queue that I'd like - one that I can review fairly quickly and mostly keep in my head - we're some steps closer. :-) Thanks very much to Vienna.pm for funding this work.</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Rakudo Day: Many bug fixes</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/rakudo-day-many-bug-fixes.html" />
    <id>tag:www.rakudo.org,2009://6.636</id>

    <published>2009-02-11T20:38:05Z</published>
    <updated>2009-02-11T20:38:54Z</updated>

    <summary>So, back to the regular-ish Rakudo days! The RT queue for Rakudo has swelled enormously, so I'm planning to use my Rakudo days in the near future to focus on resolving tickets there rather than doing any cool new features....</summary>
    <author>
        <name>Jonathan Worthington</name>
        <uri>http://jnthn.net</uri>
    </author>
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bugs" label="bugs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>So, back to the regular-ish Rakudo days! The RT queue for Rakudo has swelled 

enormously, so I'm planning to use my Rakudo days in the near future to focus on 

resolving tickets there rather than doing any cool new features. While I doubt this 

will make as exciting reading, Rakudo will be less buggy as a result, which I hope 

will make up for it by giving everyone a nicer product to play with.</p>

<p>The first bug I fixed today was one related to proto-object definedness. They are 

meant to be undefined, something which I accidentally broke in dispatcher changes a 

while back and that, oddly, was untested. So I fixed that and added tests to make 

sure we don't regress on it again.</p>

<p>Next up was a more subtle one.</p>
<code>class A {<br>
&nbsp;&nbsp;&nbsp;&nbsp;has $.b;<br>
};<br>
while shift [A.new( :b(0) )] -&gt; $a {<br>
&nbsp;&nbsp;&nbsp;&nbsp;say $a.b;<br>
&nbsp;&nbsp;&nbsp;&nbsp;my $x = $a.clone( :b($a.b + 1) );<br>
&nbsp;&nbsp;&nbsp;&nbsp;say $a.b;<br>
&nbsp;&nbsp;&nbsp;&nbsp;last;<br>
}<br></code>
<p>Clearly, the output should have been two zeroes, but it was giving zero and one - 

the original object was being modified. The cause was that we were getting some 

(internal) reference chains, and clone was only dereferencing one level, so we 

didn't properly clone the object after all. I ripped out the custom dereference code 

and put in a call to !DEREF, which does the Right Thing. So now clone is shorter and 

also fixed, at least in this aspect. I added something very much like the above as a 

test case.</p>

<p>In fact, we have some wider issues with clone in Rakudo. We can directly call 

Parrot's clone v-table method on things, but since it doesn't know about ObjectRef 

chains, that doesn't always work out so well. This example:</p>
<code>sub foo($a) { say $a .. 5 }<br>
foo(5)<br></code>
<p>Gave a warning and no output before I fixed it; the fix was making postfix:&lt;++&gt; (and I did postfix:&lt;--&gt; while I was at it) call .clone() rather than directly using Parrot's clone v-table. I found that this fix also fixed one of our integration tests.</p>

<p>I then moved onto some work to incorporate various bits of STD.pm error checking 

to make things that should die at parse time do so. Therefore, the following, all of 

which actually parsed and did weird things at runtime, no longer do so:</p>
<code>my DoesNotExist $x;<br>
regex Foo {}; # Empty regex not allowed<br>
regex Foo = { bar }; # Should barf on the = sign, now we do<br></code>
<p>Dealing with these allowed to to resolve a few RT tickets.</p>

<p>I then moved onto a couple of tickets about grammars. One of them reported a hang 

instead of an error message if you invoked .parse on a grammar that had no TOP rule. 

I corrected that, and also implemented .parsefile, which slurps the passed filename 

and invokes the TOP rule of the grammar on that. Since pmichaud++ had already done 

.parse, that was pretty trivial. I added some tests for both methods, including one 

covering the hang, to the spectests too.</p>

<p>We've been getting readonly variables right for a while mostly, but we still 

didn't catch modifications through ++ and --. I put in a fix for that, and then 

realized that some tests for &lt;-&gt; (the lambda that makes things rw by default) were now failing, since they had worked "by accident" before rather than through &lt;-&gt; being implemented. So I implemented that also, and - after pmichaud++ pointed out a corner case - tweaked it to handle those and added more tests.</p>

<p>There were a couple of bug reports relating to optional parameters which had type 

constraints. When the parameter was not passed, they failed the type check. One was 

about positional parameters, another about named. Happily, there was a single fix 

that dealt with both cases. I unfudged a few existing tests for the positional 

optional typed case, and wrote some for the named case since I didn't find any 

existing spectests for that.</p>

<p>We've been adding lots of compile-time detection of bad stuff of late. One that 

was missing was checking that if you "is also" a class that doesn't exist, it should 

complain. So I fixed that and added a test.</p>

<p>Throughout the day, I've also closed up a few other tickets that were already 

dealt with, but hadn't been closed. So, a busy day. Thanks go to Vienna.pm for funding all of this. Happy hacking, and keep those bug reports coming in! :-)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Funding, Bulgarian Perl Workshop and Rakudo News</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/02/funding-bulgarian-perl-worksho.html" />
    <id>tag:www.rakudo.org,2009://6.634</id>

    <published>2009-02-02T22:10:41Z</published>
    <updated>2009-02-02T22:12:53Z</updated>

    <summary>Sorry for not writing for so long. This time I've been burying myself not just in code, but also in conference preparation, travel and attendance. Anyway, I'm going to try and catch up a little bit here - more detailed...</summary>
    <author>
        <name>Jonathan Worthington</name>
        <uri>http://jnthn.net</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="classes" label="classes" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="funding" label="funding" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multipledispatch" label="multiple dispatch" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="roles" label="roles" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="types" label="types" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>Sorry for not writing for so long. This time I've been burying myself not just in code, but also in conference 

preparation, travel and attendance. Anyway, I'm going to try 

and catch up a little bit here - more detailed posts about individual features to follow.</p>

<p>First, I'd like to thank Vienna.pm. After funding a great 

deal of my Rakudo hacking last year, they have kindly agreed 

to continue the arrangement into this year, which is funding 

me a day a week. I expect that due to attending workshops 

there will be some weeks I miss and others that I will do two 

days, but it should come out to a day a week on average. So, a 

big thanks to Vienna.pm! I plan to use some of the initial 

days to go through RT and try to cut down the number of 

tickets there, most of which are bug reports. It will be a 

nice complement to my Hague Grant, which is mostly focused on 

feature development (though implementing those has of course 

been closing existing tickets, and I've been doing other bits 

on RT tickets too - but having time I can dedicate to fixes 

and improving the quality of Rakudo in a wider sense is 

great).</p>

<p>I am writing this from Sophia in Bulgaria, where I've been 

attending the first Bulgarian Perl Workshop. It's been a 

wonderful time for many reasons - not least because of the 

hospitality of the Bulgarians I have met during my time here. 

Marian has been especially wonderful, taking me out the day 

after the conference to see the beautiful mountains and a 

stunning monastery. I enjoyed speaking too - the room was full 

and there were lots of good questions, which always makes it 

much more fun and helps me feel that people are getting it. 

So, to all who organized the conference and to all those I met 

and talked with - thanks for making this a great time.</p>

<p>My Hague Grant is going well. In the world of parametric roles, I've done a range of enhancements to make sure you can use type parameters as types in the places you'd expect, and written more tests, plus have done some minor fixes that were needed to let us have roles parameterized on parameterized roles, so you will be able to build nested typed data structures. I also implemented the "of" keyword, and made roles pun to classes if you tried to instantiate them. This actually puts me well ahead of schedule so far as parametric roles go. My remaining work for during February mostly consists of using it to make typed arrays and hashes work. I plan to implement these directly in Perl 6 so far as I can, with some bits of inline PIR here and there. They won't be usable until we have the Perl 6 prelude, but that is high on pmichaud++'s schedule to work on too, so I hope we'll have that before February is out.</p>

<p>The other big-ticket item I've now done is junction auto-threading. For now, we still have the custom code in place to thread operators, and auto-threading for built-in functions and methods does not yet work, but again once we get the Perl 6 prelude in place they will also Just Work based upon what I've already done and the custom code can go away. I've done various tests to make sure auto-threading with multis works out nicely, that we auto-thread over the invocant during method calls (to methods not defined in Junction). I will write a more detailed post on junction auto-threading shortly.</p>

<p>I've done a few other bits, too. The handles trait verb will now accept pairs, a class or role name, a regex or the Whatever *. (In fact, the rule is that it's just a smartmatch with the method name as the topic, so regex and * fall out of the same code, and I'm sure folks will come up with other delightful things to write there). I am missing the s/// variant, since we don't parse that yet in Rakudo and I'm not quite sure yet how to do it. But otherwise, that's the handles work about done too, I think.</p>

<p>I also did some improvements to let us write nested classes, though there's some way to go on that. Further, declaring a proto makes all subs of the same name not marked multi be multis, and this works for upgrading methods to multi-methods too when composing roles if there is a proto in the class (in fact, composing roles that had multis in them before didn't work properly, since a Parrot addition was needed; I did that as part of this work, and added Parrot tests for it as well as then doing the Rakudo bits on top). Finally, I've added redeclaration of types detection at compile time, plus a better error if you try do inherit from a non-existent class or do a non-existent role.</p>

<p>So, quite a list of things that have got done, which is nice. :-) And lightens the load a bit for me in February, so I'm optimistic that I am going to be able to complete my Hague grant on schedule. Well, hopefully I didn't just jinx it...</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Perl 6 Design Minutes for 28 January 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/01/perl-6-design-minutes-for-28-j.html" />
    <id>tag:www.rakudo.org,2009://6.632</id>

    <published>2009-01-29T23:00:07Z</published>
    <updated>2009-01-29T23:01:56Z</updated>

    <summary>The Perl 6 design team met by phone on 28 January 2009. Larry, Allison, Patrick, Will, Jerry, and chromatic attended. Larry: still working through various operator questions thinking about a better model for preventing unfortunate backtrackings current commit model is...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="Parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="Perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="Rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>The Perl 6 design team met by phone on 28 January 2009.  Larry, Allison,
Patrick, Will, Jerry, and chromatic attended.</p>

<p><strong>Larry:</strong></p>

<ul>
<li>still working through various operator questions</li>
<li>thinking about a better model for preventing unfortunate backtrackings</li>
<li>current commit model is too simple-minded</li>
<li>otherwise thinking about various questions people are asking me</li>
<li>they're on the backburner, mulling in my subconscious</li>
<li>heading up to Seattle this next week</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>cleaned up library loading</li>
<li>generated Debian packages</li>
<li>trying to get Parrot 1.0 into Debian</li>
<li>working on documentation, especially <code>make html</code></li>
<li>decided to try a POD parser in Parrot</li>
<li>in PGE, a full POD parser takes about four hours</li>
<li>wrote the PCT AST nodes, but didn't write the action rules</li>
<li>seems like kjs took a stab at those</li>
<li>merged in half of the STRING refactors</li>
<li>resolved a handful of tickets last night</li>
</ul>

<p><strong>Will:</strong></p>

<ul>
<li>finished the release manager document through May</li>
<li>ripping out a lot of deprecated items again</li>
<li>seems like our list gets longer every release</li>
<li>we really need to make a push to rip it out in February</li>
<li>working on Tcl, on and off</li>
<li>all of the details are on the partcl blog</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>mostly making plans to move Rakudo to its new repository</li>
<li>should have that all decided in the next few hours</li>
<li>will make that happen, so that Parrot will make its move tomorrow with no trouble</li>
<li>suspect that we'll work on that over the next couple of days</li>
<li>responding to some questions</li>
<li>have a new laptop, which is 33% faster at building Parrot than my desktop</li>
<li>getting ready for Frozen Perl next week</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>added portable NaN/Inf support to Parrot and Rakudo</li>
<li>the 60 or so spectests which failed on non-Linux platforms now pass</li>
<li>all tests pass for Parrot and Rakudo on Windows</li>
<li>working a little on the infrastructure</li>
<li>trying to get e-mail to Trac installed</li>
<li>opened 14 tickets yesterday</li>
<li>challenging others to join in on closing them</li>
<li>S19 could use Larry's review</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>working on the support, release, and deprecation policies</li>
<li>will submit that draft for review this afternoon</li>
<li>have a couple of bugs to fix</li>
<li>will close as many tickets as possible</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>the Open Group's C99 model suggests <code>inf</code> or <code>INF</code></li>
<li>should we follow that or the dynamic language model of <code>Inf</code>?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>I like the latter</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>the Open Group says when you parse a string, it's case insensitive</li>
<li>when you produce a string, it's all uppercase or lowercase</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>Perl 6 doesn't care what other standards groups say</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>if we stringify infinity, we get <code>Inf</code></li>
<li>if we numify <code>inf</code>, do we get zero or infinity?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>infinity</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Perl 6 Design Minutes for 21 January 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/01/perl-6-design-minutes-for-21-j.html" />
    <id>tag:www.rakudo.org,2009://6.630</id>

    <published>2009-01-24T21:42:04Z</published>
    <updated>2009-01-24T21:44:56Z</updated>

    <summary>The Perl 6 design team met by phone on 21 January 2009. Larry, Patrick, Allison, Jerry, Nicholas, and chromatic attended. Larry: working at the list of observations posted to p6l operators, precedence, associativity looking at rationalizing changes between the spec...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="Parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="Perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="Rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>The Perl 6 design team met by phone on 21 January 2009.  Larry, Patrick, Allison, Jerry, Nicholas, and chromatic attended.</p>

<p><strong>Larry:</strong></p>

<ul>
<li>working at the list of observations posted to p6l</li>
<li>operators, precedence, associativity</li>
<li>looking at rationalizing changes between the spec and <em>STD.pm</em></li>
<li>discovered a big bug in the latter</li>
<li>it assumed that the lack of associativity indicated a unary function</li>
<li>that doesn't jibe with the spec</li>
<li>I tried adding associativity and it blew up spectacularly</li>
<li>lots of red, green, and white</li>
<li>I'm sure that's somebody's flag</li>
<li>thinking about various requests for clarification</li>
<li>still very busy at work and home</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>had a lot of stuff going on this weekend</li>
<li>not a lot to report</li>
<li>mostly working on planning for moving Rakudo out of the repository</li>
<li>where we'll move it to</li>
<li>talking about the various aspects of that move</li>
<li>I expect we'll make something happen by next Monday</li>
<li>that'll free Parrot to do its move whenever it wants</li>
<li>we'll keep the version of Parrot that we want in the Rakudo repository</li>
<li>that's not a long-term answer</li>
<li>we'll expect to run against an installed Parrot in the future</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>including it might be tough, copyright-wise</li>
<li>can you include instructions for downloading it like the spectests?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I don't want to complicate things by requiring a different VCS</li>
<li>or figuring out what kind of downloader people have</li>
<li>we'll point people to the real Parrot repository to work on that</li>
<li>I don't think the monthly releases will be up to date enough</li>
<li>we've had a lot of cases recently where Parrot changes have broken Rakudo briefly</li>
<li>biggest challenge is deciding what to do with the spectests</li>
<li>there've been a variety of discussions about that</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>mostly disconnected from the net this past week, visiting family</li>
<li>have some work squirreled away on my laptop</li>
<li>made some S19 progress in defining the command-line parsing library</li>
<li>have a rough outline and some pseudocode</li>
<li>hopefully will commit that this week</li>
<li>can move on from there</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>finished the patch review for installation</li>
<li>applied the <code>make install</code>-related code</li>
<li>made a few additional changes to get it working</li>
<li>now it's mostly working</li>
<li>there a couple of issues in library priority that still need changes</li>
<li>gave a talk at UC Davis the other night</li>
<li>otherwise trying to stay on top of the mailing list</li>
<li>starting a couple of cleanups I didn't want to do before the release</li>
<li>string and file sanity</li>
<li>the change to get rid of extensionless library loading</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>released 0.9.0 yesterday</li>
<li>someone's going to have to clean up a lot of bugs</li>
<li>fear that's probably going to be me</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>Larry, I really appreciate the changes to the standard grammar in the past week</li>
<li>they look good</li>
<li>they make my life easier</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>I'm still vaguely interested in simplifying things</li>
<li>added a warning on using a <code>for</code> loop</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>we'll get something like that in Rakudo too</li>
<li>it'll be a common brain-o</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Perl 6 Design Minutes for 14 January 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/01/perl-6-design-minutes-for-14-j.html" />
    <id>tag:www.rakudo.org,2009://6.629</id>

    <published>2009-01-24T02:20:18Z</published>
    <updated>2009-01-24T02:21:48Z</updated>

    <summary>The Perl 6 design team met by phone on 14 January 2009. Larry, Allison, Patrick, Will, Jerry, Jesse, Richard, and Nicholas attended. Allison: spent the week working on pumpking stuff again merged in several branches that I and others had...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="Parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="Perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="Rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>The Perl 6 design team met by phone on 14 January 2009.  Larry, Allison, Patrick, Will, Jerry, Jesse, Richard, and Nicholas attended.</p>

<p><strong>Allison:</strong></p>

<ul>
<li>spent the week working on pumpking stuff again</li>
<li>merged in several branches that I and others had been working on</li>
<li>did a lot of patch review</li>
<li>planning on doing the migration to parrot.org today</li>
<li>I'd said today because we had three days where we could figure it out; what works, and what doesn't, and delay it if necessary</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>been doing spec work, and answering questions</li>
<li>things are hectic at work right now, so I don't have a lot of time for my true vocation</li>
<li>keeping my nose above water on the mailing lists and IRC channels</li>
<li>removed the old <code>.contains</code> method, that was standing in for the .exists modifier on hash lookups in a hash.</li>
<li>mostly answering questions and hoping that someone else will clarify the specs for me, when I answer questions about functions and pod.</li>
<li>trying to use my spec writing time for clarifying things that other people can't do themselves</li>
<li>I have trips planned in April</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>worked on getting the branch merged in that refactored variable handling in Rakudo</li>
<li>got it done on Friday. It worked out well.</li>
<li>... though not for people who were relying on misfeatures of Rakudo</li>
<li>I've been helping people by pointing out ways to fix it</li>
<li>it's a stronger basis from which to continue</li>
<li>passing 60 more tests than this time last week. 6233 now passing.</li>
<li>we lost 30 when we merged the branch, but gained 90 back, so a net plus for the week</li>
<li>I've closed a bunch of tickets, or put a note on that we can close when we have a test</li>
<li>done over over 2 dozen. Still more that could be closed like that.</li>
<li>it just takes time to find them. It feels good closing tickets that way.</li>
<li>I've also been helping others</li>
<li>I was going to read PGE refactors, but now figuring out what to do with
Rakudo repository is a higher priority</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>it doesn't matter if Rakudo's repository moves, just that it's not in the same repository as Parrot.</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I'd rather not move it and then move it straight back.</li>
<li>there have also been some discussions about moving Rakudo to git</li>
<li>I don't want to go to the community and say "Oh, this week it's here" and then the next week "Oh this week's it here", and have the documentation on where to get Rakudo be constantly out of date</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>let's get you cc'd on the list discussion with the admins</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>we will now be figuring out a Rakudo plan for this so that we can notify the Rakudo community about the changes coming up</li>
</ul>

<p><strong>Will:</strong></p>

<ul>
<li>I have one task assigned for Parrot this week -- rip out all the deprecated items. There are about half a dozen left; a depressing number.</li>
<li>trying to get volunteers to look through and remove what is just a hack and slash</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>nothing to report</li>
</ul>

<p><strong>Richard:</strong></p>

<ul>
<li>I had dropped out of the calls about mid way last year because I didn't feel that I had anything to contribute</li>
<li>before I dropped out around June 2008, we did a huge amount of TPF work on how it would improve things until I had things to say</li>
<li>then I backed off, at least partly because in July 2008 my wife had a baby</li>
<li>in the past month or so, I'm coming back on the radar</li>
<li>we have a 5.10.1 release grant going on right now</li>
<li>Dave working on it, Nick the grant manager</li>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>I watch him commit things. I don't know more more detail than that, as I've not communicated with him recently.</li>
</ul>

<p><strong>Richard:</strong></p>

<ul>
<li>even an revised expected release date would be good</li>
<li>when I was talking with him setting it up it was "late Jan, early Feb"</li>
<li>would be good to know if there is updated information</li>
<li>Also Hague grants. A lot of good things are happening about that.</li>
<li>I took a trip last month to New York to see Ian, to say thanks, and give him an update. It was an excellent meeting. He is happy with the progress going on, feels respected as a donor, and is happy with the amount and level of communication.</li>
<li>I'm looking into the legal details of splitting apart what is Parrot and Rakudo. Drawing up the assignment agreement with Roberta (the TPF lawyer)</li>
<li>TPF got a nice donation from booking.com ($50,000) booking.com asked TPF to be vocal. Tell the world.</li>
<li>they did not put a specific requirement on the donation. They said "we hope to support Perl 5.10 with this", but not the level of surety on it that I had with Ian on his donation.</li>
<li>I'm sure that some 5.10 support will come out of that, but after that we have a general donation to work with. Could well be part of the grants through the grants committee. There is a growing desire for funding there. Even a couple of quarters there would not exhaust it, so we will figure out other good ideas for what to do with it.</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>as mentioned last week, it's time for me to step back as project manager type person. Do we want a replacement project manager, or is it more a community organiser type person?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>all I did was write code last week, so I didn't have time to think</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>we can't be having that!</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>I think we're okay without a project manager</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>as long as everyone is okay with that, I'm happy not to foist someone else upon you</li>
<li>I will update the world on my blog next week. It's likely to get flameage just because it contains the term "Perl 6".</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>"Oh no!  Perl 6 is dead. It doesn't have a project manager!"</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>I wonder if I can get to Reddit number one on that</li>
</ul>

<p><strong>Richard:</strong></p>

<ul>
<li>maybe "The Perl 6 implementation efforts are so strong right now they're basically self managing to good effect."</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>I might pop by the call in the future to see how you are</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>it would feel much better if you went out with a major rant</li>
</ul>

<p><strong>Richard:</strong></p>

<ul>
<li>it is traditional</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>it should be "career limiting"</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>rant that the implementations are doing so well without your input</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>and "I'm just not useful any more"</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>and rant how you've tried to kill it but it's [just too strong to die]</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>I've enjoyed this. It's been fun and interesting, and I hope it's been helpful. At times it's been maddening, but that's true of any project.</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>thanks for everything that you have done</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>thank you for actually making it happen</li>
</ul>

<p><strong><p><em>Missing a discussion on <code>.trim</code> and gilding the lily.</em></p>
</ul>

<p><strong>Nicholas:</strong></p>

<ul>
<li>if I wanted PHP I know where to find it</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>wasn't aware that <code>.trim</code> is not a Perl 5 built in</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>PHP has 3000+ functions, so we have a way to go yet</li>
<li>seeking to strike the right balance</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>my question for the day "To what extent do unary hyperoperators descend into containers?" I think that they do, to some degree.</li>
<li>also the exact definition of what <code>.perl</code> means.</li>
<li>been doing a lot of thinking on that</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>that's a good question to be thinking about, from a Rakudo implementor's position</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>that's why I might appear to be ignoring mailing lists</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>can I <code>.perl</code> a sub?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>you won't get the exact the same object back</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>but a representation that compiles to the same sub?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>I think it would be good if we could</li>
<li>but at some point a lot of businesses are going to say "Oh, you just made it very easy to reverse engineer my sacred code".</li>
<li>I don't think we can guarantee it, but whether it's strongly encouraged, but turn offable, or similar</li>
<li>at least the types of code that are idempotent, or otherwise stateless such that they can be easily reconstituted</li>
<li>in some ways we already have to be able to do that to save the state of the current language, as we have to save the current grammar and all the methods on it, to do prelude snapshots, or do an eval, without having to rebuild all from scratch</li>
<li>I don't know where the balance point on that is</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>sounds good. Aiming at the point I'm thinking of.</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>need to think about it</li>
<li>do what's reasonable. not do doing something that will set the whole project back a whole year</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I mailed the list about pairs. Didn't spot a reply.</li>
<li>if I iterate over a list of pairs, are the values of those pairs...?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>those are references back to the original</li>
<li>likewise pairs coming out of a hash should be references</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>by "References" you meant the values, as the keys are immutable?</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>yes</li>
</ul>

<p><strong>Will:</strong></p>

<ul>
<li>Tcl question</li>
<li>for Parrot, I was going to have an attribute to save the high level source. It was going to return the text of the sub and let the user recompile it</li>
<li>this is sane?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I had that as a fallback, but wasn't what I really wanted to do</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>it's a good degenerate solution as a minimal solution that can serve as a backstop</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>but that would mean that my PBC files would have the entire source code in them</li>
<li>hence my question about <code>.perl</code> and subs was "Do we have to do that?"</li>
</ul>

<p><strong>Will:</strong></p>

<ul>
<li>there's another language out there that needs to do that</li>
<li>we could share infrastructure</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>you run into the Deparse problem</li>
<li>what you see is after the optimiser got at the code</li>
<li>it might be what you want, but it's not the original source</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>is it possible that the spec could say that? The default is a sane default?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>you're forgetting that one of the Perl 6 mottoes is that it exists to torture implementation on behalf of the users</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>not so much that it never happens</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>who defines that? I might have quit back in 2004.</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>with a rant preferably. :-)</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>I've finished most of the technical details of S19. It needs a re-write.  It doesn't read well.</li>
<li>as far as a working copy goes (from my perspective, as the implementor) it's in a good place</li>
<li>there may be some ambiguities, but I've moved onto the implementation</li>
<li>next deliverable is a set of spec tests</li>
<li>to implement them properly I'm building a test harness, so I'm coding before I can write the tests</li>
<li>eager parsing,  eager meaning <code>.*?</code>, as opposed to greedy, which would be <code>.*</code> behavior</li>
<li>no one likes the terminology "eager"</li>
<li>pulled it from S19</li>
<li>didn't want to define something as non-greedy</li>
<li>found "eager" in S5.</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>especially as in the rest of the language "eager" means "greedy"</li>
<li>"frugal"?</li>
<li>"parsimonious"?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>that was the term Mastering Regular Expressions uses</li>
<li>lazy would be bad also</li>
<li>yes, it's called Lazy</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>probably okay. Eager : Lazy :: Greedy : Parsimonious.</li>
<li>that is how the rest of the language treats lists. "Eager" vs "Lazy".</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>in the context of regular expressions, we'd call that <code>?</code> qualifier lazy</li>
<li>the association doesn't immediately come to me</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>it can be implemented with lazy lists. That's how <em>Cursor.pm</em> works.</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>will take a stab at changing POD</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I'm going to be in S5, so I could</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>if Jeff Friedl uses that term too, that's good</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>noticed that Larry weighed in on some issue relating to preludes that I'd mentioned in S19, so it looks like that part has been approved</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>well, I suggested it in the first place.</li>
<li>I don't know if it makes *sense*. :-)</li>
<li>maybe an alternate prelude doesn't make sense</li>
<li>I don't think of preludes as actually preludes -- instead they're the surrounding lexical scope</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>really we're waiting on the implementation so that we can see how it works in practice</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>I'm thinking of the same way an eval works</li>
<li>the outer language is serving as a prelude for that eval</li>
<li>it's the same thing, except that the current language can be frozen into the file, and then you're effectively starting up again from there</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>it's layers, all the way down</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>well, all the way up</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>the core compiler does an eval of the prelude, which brings a bunch of things into scope, which then does an eval of your code</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>it's more the parse of the eval. We use this to implement <code>-n</code> and <code>-p</code></li>
<li>it's not eval in the sense of recompiling each time through the loop.</li>
<li>it's that eval does a sub-parse. That's what needs to be generalised</li>
<li>Make good use of the ability to wrap compilations in one or more outer contexts. Whether we call it, prelude, or outer-lude</li>
<li>what's the opposite of an interlude?</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>environment variables also</li>
<li>I considered a switch which let you set an environment variable</li>
<li>this would let you do it on the same line for shells that don't provide such behavior</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li><code>rn</code> had one of those</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>same as adding it in the prelude</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>except that environment variables are scoped dynamically</li>
<li>another question about environment variables, which are essentially global</li>
<li>can a dynamic scope override them?</li>
<li>how easily within perl 6 code, just for that dynamic scope</li>
<li>we speculated about connections between contextual variables and environment variables, or the globals</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>I was under the impression that something was decided, and then changed</li>
</ul>

<p><strong>Larry:</strong></p>

<ul>
<li>we can give that appearance :-)</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>thank you everyone for the last few years. Enjoy your call next week.</li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Perl 6 Design Minutes for 07 January 2009</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/01/pelr-6-design-minutes-for-07-j.html" />
    <id>tag:www.rakudo.org,2009://6.628</id>

    <published>2009-01-22T20:40:27Z</published>
    <updated>2009-01-23T00:55:37Z</updated>

    <summary>The Perl 6 Design Team met by phone on 07 January 2009. Larry, Jerry, Allison, Patrick, Jesse, and chromatic attended. Larry: real life has been hectic some family sickness lots of meetings at work mostly just sniping at various design...</summary>
    <author>
        <name>chromatic</name>
        <uri>http://wgz.org/chromatic/</uri>
    </author>
    
        <category term="Parrot" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="parrot" label="Parrot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="Perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rakudo" label="Rakudo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>The Perl 6 Design Team met by phone on 07 January 2009.  Larry, Jerry,
Allison, Patrick, Jesse, and chromatic attended.</p>

<p><strong>Larry:</strong></p>

<ul>
<li>real life has been hectic</li>
<li>some family sickness</li>
<li>lots of meetings at work</li>
<li>mostly just sniping at various design issues</li>
<li>not a lot of bandwidth to think through deeper questions</li>
<li>periodically running tests on STD to make sure it keeps passing tests</li>
<li>not much exciting coming up until April</li>
<li>going to Oslo, and then a tour of Ivy League colleges</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>continuing to work in S19</li>
<li>expect to have all of the TODO items addressed this week</li>
<li>should be ready for another review</li>
<li>hopefully close to approval as a working draft</li>
<li>I won't wait for that approval; will start on the tests as soon as I finish the incomplete sections</li>
<li>occasionally offering helpful suggestions and doing small bits of work on Parrot and Rakudo</li>
<li>recent modifications to Rakudo's makefile</li>
<li>added some targets and reorganized for maintainability</li>
<li>also working on parrot.org infrastructure, now that the holidays are over</li>
<li>working on moving Parrot's SVN to parrot.org at the end of January</li>
<li>will probably be able to get a Smolder server set up too</li>
<li>there's some talk of getting a Git mirror available</li>
<li>haven't worked on that yet</li>
</ul>

<p><strong>c:</strong></p>

<ul>
<li>minor bug fixes and improvements</li>
<li>hope to merge in the GC reorganization refactor tonight or tomorrow</li>
<li>also participating in a discussion with Allison and Patrick about referring to types in other HLLs</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>mostly working on my variable handling branch refactoring</li>
<li>Jonathan's working on that too</li>
<li>it's going very well</li>
<li>the code ends up much shorter, and we get better and more correct behavior all around</li>
<li>upgrading PCT and the Perl 6 object system to support changes that we want for Rakudo</li>
<li>they're all minor changes</li>
<li>they're useful for other languages too</li>
<li>Stephen Weeks updated Parrot so that we can have multiple HLLs running in the same interpreter</li>
<li>they run in their own space</li>
<li>we now have the <code>:lang</code> option to <code>eval</code>, where you can run a language other than Perl which Parrot understands</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>how much can you pass between the various languages?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>it depends on the other language at the moment</li>
<li>you can get an object back</li>
<li>the other language can't see your lexical variables yet</li>
<li>that's just Rakudo at the moment</li>
<li>you can send messages to those objects</li>
<li>he's reimplementing Pheme to use PCT which should make that easier</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>that only works for <code>eval</code> right now and not <code>use</code></li>
<li>that's just a matter of syntax</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>we don't have the ability to define custom quote operators from within Perl 6 yet</li>
<li>it wouldn't be too hard to add a special one</li>
<li>or a function which did that for you</li>
<li>continuing on the variable branch</li>
<li>Jonathan and I are in alignment on how we expect things to work</li>
<li>expect to merge in the next day or two</li>
<li>that'll close a bunch of tickets</li>
<li>especially in dealing with parameter oddities and such</li>
<li>then I'll update the roadmap</li>
<li>it's kind of out of date, thanks to our progress in December</li>
<li>we can mark a lot of things as done now</li>
<li>I'll revise it to be something more prose-y</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>will you need to add tasks to the roadmap?</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>I can't think of any we need to add</li>
<li>we can update timelines on a lot of them</li>
<li>because we finished some prerequisites</li>
<li>some things we thought wouldn't be possible for a while are now within the realm of possibility</li>
<li>we fixed lexicals, for example</li>
<li>I continue to be surprised at things which do get working</li>
<li>some of the things that Jonathan and Stephen do, I can't believe we're there already</li>
<li>there's been a lot of talk online about people using Rakudo and Perl 6 to solve their problems</li>
<li>things are definitely progressing</li>
<li>lots of them say "Not everything works, but the progress is amazing!"</li>
</ul>

<p><strong>Jerry:</strong></p>

<ul>
<li>your post on the Winter Scripting Games sparked a lot of activity</li>
</ul>

<p><strong>Patrick:</strong></p>

<ul>
<li>that was the intended effect</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>mainly working on integrating patches and reviewing tickets</li>
<li>concentrated on Reini Urban's install branch</li>
<li>finished integrating changes to the calling conventions branch</li>
<li>now we need to test that and use new features throughout the code</li>
<li>speaking about Parrot this Thursday in San Francisco</li>
<li>two weeks from now will speak at UC Davis</li>
<li>three weeks from now at IBM's research center in New York</li>
</ul>

<p><strong>Jesse:</strong></p>

<ul>
<li>pondering quite a bit lately</li>
<li>looking for suggestions for people to take over Perl 6 coordination</li>
<li>make sure projects talk to each other</li>
<li>have someone moderately impartial to moderate when heads bang together</li>
</ul>

<p><strong>Allison:</strong></p>

<ul>
<li>more like Jono Bacon's community manager role in Ubuntu</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Parametric Roles</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/01/parametric-roles.html" />
    <id>tag:www.rakudo.org,2009://6.627</id>

    <published>2009-01-17T18:09:04Z</published>
    <updated>2009-01-17T19:43:35Z</updated>

    <summary>I meant to blog about what I was working on a bit more this week, but have ended up with my head in the code all week instead. The end result of this "codeathon" is that I'm now much further...</summary>
    <author>
        <name>Jonathan Worthington</name>
        <uri>http://jnthn.net</uri>
    </author>
    
        <category term="Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rakudo Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl6" label="perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="roles" label="roles" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>I meant to blog about what I was working on a bit more this week, but have ended up with my head in the code all week instead. The end result of this "codeathon" is that I'm now much further forward on my Hague grant. While some of the smaller tasks scheduled for December remain to be done, I have taken parametric roles from non-existent to doing everything I aimed to get them to do during January and some of the February aspects of them now work too. I've also done some work on the dispatcher refactor, got us distinguishing different routine types and have also used the end result to get submethod dispatch working as it should too. So, some details on the parametric roles.</p>

<p>In Perl 6, roles can take parameters. Roles exist to enable greater re-use of code than we could get through having plain old classes, and by allowing them to be parameterized we open the door to even more re-use. Taking a simple example, imagine we wanted to factor out a "greet" method into a role, which takes somebody's name and greets them. We want to parameterize it on the greeting.</p>
<code>role Greet[Str $greeting] {<br>
&nbsp;&nbsp;&nbsp;&nbsp;method greet() { say "$greeting!"; }<br>
}<br>
class EnglishMan does Greet["Hello"] { }<br>
class Slovak does Greet["Ahoj"] { }<br>
class Lolcat does Greet["OH HAI"] { }<br>
EnglishMan.new.greet(); # Hello<br>
Slovak.new.greet(); # Ahoj<br>
Lolcat.new.greet(); # OH HAI<br></code>
<p>Similarly, we could do a role for requests.</p>
<code>role Request[Str $statement] {<br>
&nbsp;&nbsp;&nbsp;&nbsp;method request($object) { say "$statement $object?"; }<br>
}<br>
class EnglishMan does Request["Please can I have a"] { }<br>
class Slovak does Request["Prosim si"] { }<br>
class Lolcat does Request["I CAN HAZ"] { }<br>
EnglishMan.new.request("yorkshire pudding");<br>
Slovak.new.request("borovicka");<br>
Lolcat.new.request("CHEEZEBURGER");<br></code>
<p>Sadly, the Slovak output sucks here. Borovicka is the nominative form of the word, and we need to decline it into the accusative case. But some languages don't care about that, and we don't want to have to make them all supply a transform. Thankfully, you can write many roles with the same short name, and a different signature, and multi-dispatch will pick the right one for you. So we write something to produce the accusative case in Slovak and pass it in. Here's the new code.</p>
<code>role Request[Str $statement] {<br>
&nbsp;&nbsp;&nbsp;&nbsp;method request($object) { say "$statement $object?"; }<br>
}<br>
role Request[Str $statement, &transform] {<br>
&nbsp;&nbsp;&nbsp;&nbsp;method request($object) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say "$statement " ~ transform($object) ~ "?";<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
}<br>
module Language::Slovak {<br>
&nbsp;&nbsp;&nbsp;&nbsp;sub accusative($nom) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# ...and before some smartass points it out, I know<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# I'm missing some of the masculine animate declension...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $nom.subst(/a$/, 'u');<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
}<br>
class EnglishMan does Request["Please can I have a"] { }<br>
class Slovak does Request["Prosim si", &Language::Slovak::accusative] { }<br>
class Lolcat does Request["I CAN HAZ"] { }<br>
EnglishMan.new.request("yorkshire pudding");<br>
Slovak.new.request("borovicka");<br>
Lolcat.new.request("CHEEZEBURGER");<br></code>
<p>Which means we can now properly order our borovicka in Slovakia, which is awesome. Until you do it in a loop and find the Headache['very bad'] role got mixed into yourself overnight, anyway...</p>

<p>I'll post more on the other bits I'm working on, or have worked on, soon. But parametric roles are the biggy. I'm not at all finished with them yet, but all of the code examples I gave here today now work. :-)</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Leaving the Parrot nest</title>
    <link rel="alternate" type="text/html" href="http://www.rakudo.org/2009/01/leaving-the-parrot-nest.html" />
    <id>tag:www.rakudo.org,2009://6.625</id>

    <published>2009-01-15T02:54:44Z</published>
    <updated>2009-01-15T14:41:50Z</updated>

    <summary>As many of you will have gathered from discussions on other mailing lists and IRC, it's time for Rakudo Perl to "leave the Parrot nest" and move to its own repository. I think we should also take this opportunity to...</summary>
    <author>
        <name>pmichaud</name>
        <uri>http://www.pmichaud.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.rakudo.org/">
        <![CDATA[<p>As many of you will have gathered from discussions on other mailing
lists and IRC, it's time for Rakudo Perl to "leave the Parrot nest" 
and move to its own repository.  I think we should also take this
opportunity to re-evaluate the entire Rakudo Perl infrastructure
and decide what will be most productive for the community for
the upcoming year.  Indeed, as part of any move we need to
communicate the details of the changes to others, which brings
to the surface some of the shortcomings of what we have now.
</p>

<p>By "infrastructure" I'm primarily referring to the following items:
</p><ul><li>source code repositories (note: plural)
</li><li>web sites
</li><li>blog / news
</li><li>wiki
</li><li>issue tracking
</li><li>mailing lists
</li></ul>
<p>Currently these things are spread in many different locations with
different tools, and while I don't believe it's necessary for them
completely unified, we should at least aim to reduce the overall 
complexity of what we do have so that we can better serve those 
who are interested (or are yet to become interested) in Rakudo Perl.
In fact, it may be that in many cases we'll keep what we have now,
but at least it'll be a confirmed decision instead of simply going
along with what we've had in the past.
</p>

<p>Also, I'm sure it will be easy and tempting to address
larger issues about Perl 6 as a whole (as opposed to just
"Rakudo").  I'm not at all opposed to seeing that larger discussion
take place, but for my purposes I'll be tending to focus on Rakudo's 
immediate needs.
</p>

<p>Here's my off-the-cuff inventory of where things are in Rakudo today
and where things might head.  It's entirely possible that my
description below misunderstands or misrepresents reality in
some areas -- but I'm dedicating this week to resolving that.
Indeed, that's the primary purpose of this message, to help us
all clear up confusion surrounding Rakudo (and Perl 6).
</p>

<p><strong>Source code repository</strong>
</p>

<p>This is the immediate issue at hand, because we need to move Rakudo
out of the Parrot repository so that it can cleanly move to its new
home at parrot.org.  Currently Rakudo Perl lives at
<a class='urllink' href='http://svn.perl.org/parrot/trunk/languages/perl6/' rel='nofollow'>http://svn.perl.org/parrot/trunk/languages/perl6/</a> , while the 
spectest suite (on which development/testing depends) lives at
<a class='urllink' href='http://svn.pugscode.org/pugs/t/spec/' rel='nofollow'>http://svn.pugscode.org/pugs/t/spec/</a> .
</p>

<p>Many people have strongly suggested that we switch to
using "git" as our version control system.  At the moment I'm
neither strongly in favor of nor strongly opposed to switching
version control systems, but we have to recognize that at least
two of Rakudo's "dependencies" (Parrot and the spectest suite) 
are using Subversion and are likely to remain that way for 
a while.  We don't want to require non-developers to install a 
lot of different source code control systems simply to run and 
test the latest incarnation of Rakudo Perl.
</p>

<p>I have a lot more comments on source code management for
Rakudo Perl, but to keep to the "overview" nature of this post
I'll save the rest for a longer post.  Feel free to start
submitting your opinions, however!
</p>

<p><strong>Web site / blog / wiki</strong>
</p>

<p>Currently Rakudo really does not have a dedicated website
providing basic information about it.  There is the 
<a class='urllink' href='http://rakudo.org/' rel='nofollow'>http://rakudo.org/</a> site, but it's currently more of a
blog than a true web site.  For example, someone visiting
rakudo.org would not be able to easily find out how to 
download and run Rakudo Perl.
</p>

<p>Here's what we <em>do</em> have at the moment (as best as I can recall):
</p>
<ul><li>Rakudo.org is run by Andy Lester and currently provides a
"blog" for Rakudo Perl.  Andy has mused about switching
rakudo.org to Drupal instead of Movable Type, which could
enable us to more easily have "introductory content" 
information instead of just blog-type entries.
</li><li>Of course, many of us regularly post to journals at 
<a class='urllink' href='http://use.perl.org/' rel='nofollow'>http://use.perl.org/</a> .  This is good for keeping in touch 
with the wider Perl community and provides a good blog-like
interface, but again isn't useful at basic Rakudo information
and orientation.
</li><li>The Perl Foundation hosts a "Perl 6 wiki" at
<a class='urllink' href='http://www.perlfoundation.org/perl6/index.cgi?perl_6' rel='nofollow'>http://www.perlfoundation.org/perl6/index.cgi?perl_6</a> ,
and Rakudo has a few pages there.  Currently I find the
wiki to be not very well organized, and it's difficult to
find Rakudo out of the many other items that appear there.
Beyond that, I'm not impressed with the wiki engine the
site uses, but if a sizable group of people think that's
where Rakudo information should be centered then I can
live with it.
</li><li>TPF also hosts the "Perl 6" website at 
<a class='urllink' href='http://dev.perl.org/perl6/' rel='nofollow'>http://dev.perl.org/perl6/</a> , but "Rakudo Perl" isn't even 
mentioned there, and I don't even really know the correct 
procedure for getting updates or modifications to those pages.  
My impression is that this site isn't really conducive to 
frequent updates or lots of contributors (but perhaps I'm 
incorrect about that).
</li><li>Planet Perl 6 (http://planetsix.perlfoundation.org<a class='apprlink' 
  href='http://www.pmwiki.org/wiki/Perl6/RakudoMigration?action=approvesites'>(approve links)</a>) is an
excellent aggregator of Perl 6 related posts, including those
involving Rakudo Perl.  
</li></ul>
<p>Also, for the record, I currently own the "rakudoperl.org"
and "rakudoperl.com" domains, so if we want to do something
somehow separate from any of the existing domains cited above, 
we can use those domains, and I may have (or be able to acquire)
additional server resources to support it.
</p>

<p><strong>Issue tracking</strong>
</p>

<p>Currently issue tracking for Rakudo is being done using RT
at <a class='urllink' href='http://rt.perl.org/' rel='nofollow'>http://rt.perl.org/</a>  (the same RT instance that does Perl 5 
bug tracking).  In the past I've stated that Rakudo bugs will
continue to use this tracker, and I'm still planning for that
to be the case, but in recent weeks I've encountered a
number of times were rt.perl.org was too slow/unreachable
to be an effective tool.  I'm not (yet?) advocating that we
switch to a different issue tracker, but since we're looking
at the whole of infrastructure items I did want to leave the
possibility open for discussion.
</p>

<p><strong>Mailing list</strong>
</p>

<p>Currently Rakudo's primary mailing list is &lt;perl6-compiler@perl.org&gt;.
I see no major reason to change anything here, as it works
well and is a good companion to the other "official"
Perl 6 mailing lists.
</p>

<p>----------
</p>

<p>Throughout all of this, I'm looking at things from a very
practical perspective -- i.e., what can we achieve with the
resources currently at our disposal.  It's also important
to consider the needs of the various audiences -- not only
the Rakudo developers, but also people who want to experiment
with Rakudo and those who want to start building applications
for it.  So, we need to keep in mind the many perspectives on
the issue as we go through the discussion.
</p>

<p>Also, I'm expecting that some of the decisions I eventually
make may disappoint some; apologies in advance, but such is
the nature of decisions.
</p>

<p>With that background in place, I'll now (with great trepidation)
open the discussion for others to comment and/or make suggestions
of what they'd like to see changed about the way we currently
manage Rakudo Perl.
</p>

<p>Thanks in advance,
</p>

<p>Pm
</p>
]]>
        
    </content>
</entry>

</feed>
