<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Parrot</title>
	<link rel="self" href="http://planet.parrotcode.org/atom.xml"/>
	<link href="http://planet.parrotcode.org/"/>
	<id>http://planet.parrotcode.org/atom.xml</id>
	<updated>2008-07-24T09:20:44+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en-us">
		<title type="html">Perl on Google's App Engine</title>
		<link href="http://use.perl.org/~chromatic/journal/36993?from=rss"/>
		<id>http://use.perl.org/~chromatic/journal/36993?from=rss</id>
		<updated>2008-07-23T06:56:39+00:00</updated>
		<content type="html">&lt;p&gt; &lt;a href=&quot;http://radar.oreilly.com/2008/07/perl-on-app-engine.html&quot;&gt;Artur Bergman discusses Perl on Google's App Engine&lt;/a&gt;, while &lt;a href=&quot;http://brad.livejournal.com/2388824.html&quot;&gt;Brad Fitzpatrick announced Perl on App Engine&lt;/a&gt;.  The important information is that Google will support the project only if the Perl community does most of the hard work.  (This position seems reasonable to me; gift horses and all that.)&lt;/p&gt;</content>
		<author>
			<name>chromatic</name>
			<uri>http://use.perl.org/~chromatic/journal/</uri>
		</author>
		<source>
			<title type="html">chromatic's Journal</title>
			<subtitle type="html">chromatic's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~chromatic/journal/rss"/>
			<id>http://use.perl.org/~chromatic/journal/rss</id>
			<updated>2008-07-23T07:00:31+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">HLL configuration directives live!</title>
		<link href="http://www.smashing.org/jeff/node/39"/>
		<id>http://www.smashing.org/39 at http://www.smashing.org/jeff</id>
		<updated>2008-07-21T19:43:09+00:00</updated>
		<content type="html">&lt;p&gt;mod_parrot now has support for HLL configuration directives!  They're still a bit tedious to configure since everything is in PIR and I'm missing a few Apache constants, but it works!  I committed a proof-of-concept directive for mod_perl6 called, well, what else, &lt;code&gt;Perl6ResponseHandler&lt;/code&gt;.  So this works now:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;Location /foo&amp;gt;
    SetHandler perl6-code
    Perl6ResponseHandler Foo::Bar
&amp;lt;/Location&amp;gt;
&lt;/pre&gt;&lt;p&gt;
The only caveat is that you have to use ParrotLoadImmediate to load the perl6 HLL layer, since ParrotLoad doesn't start the interpreter until after the configuration phase.  mod_perl has a similar setup with PerlLoadModule.  Eventually the loading of HLL layers will be automatic, or at least in their own config file so you don't have to worry about it.&lt;/p&gt;
&lt;p&gt;Now for the interesting bits.  As I noted in my previous post, I got a proof-of-concept working where I was able to create and load a module at runtime, complete with custom directives; I just needed to refactor it for mod_parrot.  It actually wasn't that bad, except for one minor thing.  Unlike modules written in an HLL which implement their own directives and modify their own configs, the directives implementing the HLL itself need to modify &lt;strong&gt;mod_parrot's&lt;/strong&gt; configuration.  In other words, one module needs to modify another's configuration! This was painful to implement, especially for the directory configuration, but I did it in about 2 days without doing anything shady, and it works.&lt;/p&gt;
&lt;p&gt;Here's what &lt;code&gt;Perl6ResponseHandler&lt;/code&gt; looks like in the perl6 HLL layer:&lt;/p&gt;
&lt;pre&gt;
.sub __onload :anon :load

    # [skip perl6 initialization code]
 
    # register apache directives
    .local pmc add_module, cmds

    load_bytecode 'Apache/Module.pbc'

    cmds = new 'Array'
    cmds = 1
    $P0 = new 'Hash'

    $P1 = new 'String'
    $P1 = 'Perl6ResponseHandler'
    $P0['name'] = $P1
    $P1 = new 'Integer'
    $P1 = 1 # TAKE1
    $P0['args_how'] = $P1
    $P1 = get_hll_global 'cmd_perl6responsehandler'
    $P0['func'] = $P1
    $P1 = new 'Integer'
    $P1 = 8 # OR_AUTHCFG
    $P0['req_override'] = $P1
    $P1 = new 'String'
    $P1 = &quot;usage: Perl6ResponseHandler handler-name&quot;
    $P0['errmsg'] = $P1
    cmds[0] = $P0

    add_module = get_hll_global [ 'Apache'; 'Module' ], 'add'
    $P1 = add_module(&quot;modparrot_perl6_module&quot;, cmds)
.end

.sub cmd_perl6responsehandler
    .param pmc args
    .local string handler
    handler = args[0]
    $P0 = get_hll_global ['Apache'; 'Module'], 'modparrot_dircfg_handler'
    $P1 = $P0('perl6', handler)
.end
&lt;/pre&gt;&lt;p&gt;
Of course it will be a bit prettier in the future when I work out the Apache constants and get this working in Perl 6 instead of PIR, but you get the picture.  With this major milestone out of the way I can focus on exposing more of the Apache internals and really start kickin' the tires!&lt;/p&gt;</content>
		<author>
			<name>Jeff Horwitz</name>
			<uri>http://www.smashing.org/jeff</uri>
		</author>
		<source>
			<title type="html">smashing.org - You can logout any time you like, but you can never leave.</title>
			<link rel="self" href="http://www.smashing.org/jeff/rss.xml"/>
			<id>http://www.smashing.org/jeff/rss.xml</id>
			<updated>2008-07-24T09:20:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">They Call This a Softball Question in Interviews</title>
		<link href="http://use.perl.org/~chromatic/journal/36968?from=rss"/>
		<id>http://use.perl.org/~chromatic/journal/36968?from=rss</id>
		<updated>2008-07-21T04:48:56+00:00</updated>
		<content type="html">&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;em&gt;Recently there has been a feeling of growing discontent: how could Ruby &amp;#8212; which felt so new and liberating two years ago &amp;#8212; get saddled with so much negative baggage, so quickly?&lt;/em&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;&amp;mdash; &lt;a href=&quot;http://www.peteforde.com/&quot;&gt;Pete Forde&lt;/a&gt;, &lt;a href=&quot;http://rethink.unspace.ca/2008/7/20/we-are-rubyfringe&quot;&gt;We are RubyFringe&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Take your pick of the &lt;a href=&quot;http://www.flickr.com/photos/planetargon/127984254/&quot;&gt;aggressively dismissive attitude toward other approaches&lt;/a&gt;, &lt;a href=&quot;http://oreilly.com/catalog/9780596100940/&quot;&gt;vigorous and self-congratulatory messianic zeal&lt;/a&gt;, &lt;a href=&quot;http://www.37signals.com/svn/posts/347-youre-not-on-a-fucking-plane-and-if-you-are-it-doesnt-matter&quot;&gt;egocentric and deliberate misunderstanding of the rest of the world of software development&lt;/a&gt;, &lt;a href=&quot;http://www.cosine.org/2007/08/16/languagepowered-domain-specific-language/&quot;&gt;verbose and willful discussion of, despite baffling ignorance of, other programming languages&lt;/a&gt;, &lt;a href=&quot;http://blog.objectmentor.com/articles/2007/11/02/active-record-vs-objects&quot;&gt;misunderstanding of MVC and the Active Record pattern&lt;/a&gt;, booing Dave Thomas at RailsConf 2007 for questioning why it was necessary to create a &quot;Women of Rails&quot; website featuring pictures of attendees, cheering at RailsConf 2007 when Chad Fowler said &quot;People call us arrogant&quot; when his point is that that's a &lt;em&gt;bad&lt;/em&gt; thing, and the baffling fourteen year old boy sensibilities of the &lt;a href=&quot;http://www.railsenvy.com/tags/Commercials&quot;&gt;Rails Envy commercials&lt;/a&gt;, including my personal favorite,
&lt;a href=&quot;http://www.youtube.com/watch?v=ku3QkWcPSEw&quot;&gt;comparing the V in MVC to a drunken prom date&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I can understand arrogance from Olympians or research scientists who've just cured cancer.  It seems out of place for people writing CRUD applications, even if they're all shiny with rounded corners and Ajax fade ins.&lt;/p&gt;</content>
		<author>
			<name>chromatic</name>
			<uri>http://use.perl.org/~chromatic/journal/</uri>
		</author>
		<source>
			<title type="html">chromatic's Journal</title>
			<subtitle type="html">chromatic's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~chromatic/journal/rss"/>
			<id>http://use.perl.org/~chromatic/journal/rss</id>
			<updated>2008-07-23T07:00:31+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">The Difference Between Jazz and Programming</title>
		<link href="http://use.perl.org/~chromatic/journal/36962?from=rss"/>
		<id>http://use.perl.org/~chromatic/journal/36962?from=rss</id>
		<updated>2008-07-20T07:50:52+00:00</updated>
		<content type="html">&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;em&gt;The modern jazz small ensemble is built upon the&lt;/em&gt; rhythm &lt;em&gt;section -- piano, bass, and drums.&lt;/em&gt; &lt;/p&gt;&lt;p&gt; &lt;em&gt;The easiest parallel to programming is libraries, frameworks and patterns. These are the building blocks upon which we code. A well-designed library makes your work as a programmer easier and more enjoyable in the same way a solid, experienced rhythm section complements a soloist.&lt;/em&gt; &lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;&amp;mdash; &lt;a href=&quot;http://blog.nicksieger.com/&quot;&gt;Nick Sieger&lt;/a&gt;, &lt;a href=&quot;http://blog.nicksieger.com/articles/2008/07/19/jazzers-and-programmers&quot;&gt;Jazzers and Programmers&lt;/a&gt; &lt;/p&gt;&lt;p&gt;One important difference between programming and music is that in programming, correctness often supersedes aesthetics.  It's not that aesthetics are unimportant, or that there can or should be no joy in programming -- but if your code doesn't work, it doesn't matter how much of a punk fringe rock star you consider yourself.&lt;/p&gt;&lt;p&gt;Color me (what, two nods to my pseudonym in two paragraphs?) uninspired.  I doubt improv will pass my test suite.  See &lt;a href=&quot;http://www.idlewords.com/2005/04/dabblers_and_blowhards.htm&quot;&gt;Dabblers and Blowhards&lt;/a&gt; for a deeper debunking of similarly silly comparisons.&lt;/p&gt;</content>
		<author>
			<name>chromatic</name>
			<uri>http://use.perl.org/~chromatic/journal/</uri>
		</author>
		<source>
			<title type="html">chromatic's Journal</title>
			<subtitle type="html">chromatic's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~chromatic/journal/rss"/>
			<id>http://use.perl.org/~chromatic/journal/rss</id>
			<updated>2008-07-23T07:00:31+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Anonymous classes and meta-class stuff</title>
		<link href="http://use.perl.org/~JonathanWorthington/journal/36958?from=rss"/>
		<id>http://use.perl.org/~JonathanWorthington/journal/36958?from=rss</id>
		<updated>2008-07-18T23:01:39+00:00</updated>
		<content type="html">&lt;p&gt;Today was this week's Rakudo day, and I spent it continuing my work on the S12 (objects) implementation. The biggest new addition this week is that you can now write anonymous classes.&lt;/p&gt;&lt;p&gt;

&lt;code&gt;my $c = class {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; has $.x;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; method foo { say &quot;OH HAI&quot; }&lt;br /&gt;
};&lt;br /&gt;
my $obj = $c.new(x =&amp;gt; 42); # Instantiate it&lt;br /&gt;
$obj.foo; # OH HAI&lt;br /&gt;
say $obj.x; # 42&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;I've got tests written for anonymous classes with attributes and methods; you should be able to inherit and compose roles too, but I didn't get tests for those done yet. Anyone who feels like writing such tests, please do feel free - they go in S12-classes/anonymous.t (in the t/spec, in the Pugs repository).&lt;/p&gt;&lt;p&gt;We've been able to write multi-dispatch subs where the dispatch was type rather than arity based for a little while. As I start to think about implementing the real Perl 6 multiple dispatch algorithm soon, I wanted to make sure that multi-methods worked with the current Parrot algorithm. I'd never thought to try it, but it occurred to me that there wasn't really any good reasons why it wouldn't work either. It turns out it didn't work, but the fix wasn't hard either. So, I did what was needed and now you can write multi methods in classes. Arity based dispatch should be fine; type based has all the issues multi-subs do until I get the real Perl 6 multi-dispatch algorithm in place that knows about roles, constraints and so forth.&lt;/p&gt;&lt;p&gt;After that, I set about adding the .^ method call operator. This means &quot;call on the meta-class&quot;. S12 changed recently to make things a bit saner here. Before it was specified that you would be able to write things like:&lt;/p&gt;&lt;p&gt;

&lt;code&gt;my @methods = $obj.HOW.methods();&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;To introspect the methods of the object $obj. However, this doesn't quite work out, since you are invoking &quot;methods&quot; on the meta-class, and there's no promise that just one class will have one meta-class; the meta-class may be shared amongst many classes, depending on your meta-model. So now you have to pass in the object to introspect as the first parameter to methods on the meta-class.&lt;/p&gt;&lt;p&gt;

&lt;code&gt;my @methods = $obj.HOW.methods($obj);&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;Which is a bit of a mouthful, which is why there is the .^ operator, allowing you to write the above like this:&lt;/p&gt;&lt;p&gt;

&lt;code&gt;my @methods = $obj.^methods();&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;This operator sorts out getting the meta-class by calling HOW, and inserting $obj as a parameter to the meta-class method. Note that &quot;methods&quot; on the meta-class isn't implemented yet, though it's probably not far off being done. Today I modified our existing meta-class methods to match the new S12 changes, then implemented the .^ operator. So this gets us on the way towards more introspection support. While I was in that area of the code, I moved the auto-vificiation (WHENCE) stuff out of the P6Object code (which is meant to be more generic than what Rakudo needs) and put it into the Rakudo code, which should make some upcoming refactors pmichaud has planned on P6Object a tad easier.&lt;/p&gt;&lt;p&gt;I also looked at starting to get a few other things in place to flesh objects out. One of them is .WHERE, which simply returns the memory address of an object. That didn't take long. Then I read up on .WHICH, which returns an object's identity value, which is what will allow us to implement value type semantics to go with the &quot;===&quot; comparison operator. For normal objects, it just returns the memory address of the object; I put this in place. Next us is to override it in the value types, and then the &quot;===&quot; operator can be added. This is probably fairly low hanging fruit for anyone who fancies digging into Rakudo some, by the way.&lt;/p&gt;&lt;p&gt;In other bits, I've applied a patch from Carl Masak during the day, and this evening helped Chris Fields, who has happily implemented transliteration for us and is now working on .match on strings, to debug a rather subtle Rakudo bug. I got to the bottom of what's wrong, but resolution is to be discussed. But hopefully we have one soon and then we can have .match defined on strings - another piece in the S05 puzzle! We've a long way to go yet, but bit by bit, day by day, Rakudo is coming together. And last but not least, I'd like to thank to Vienna.pm for funding my weekly Rakudo day.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Worthington</name>
			<uri>http://use.perl.org/~JonathanWorthington/journal/</uri>
		</author>
		<source>
			<title type="html">JonathanWorthington's Journal</title>
			<subtitle type="html">JonathanWorthington's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~JonathanWorthington/journal/rss"/>
			<id>http://use.perl.org/~JonathanWorthington/journal/rss</id>
			<updated>2008-07-23T23:40:05+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Parrot 0.6.4</title>
		<link href="http://use.perl.org/~Bernhard/journal/36914?from=rss"/>
		<id>http://use.perl.org/~Bernhard/journal/36914?from=rss</id>
		<updated>2008-07-15T11:17:32+00:00</updated>
		<content type="html">&lt;p&gt;On behalf of the Parrot team, I'm proud to announce Parrot 0.6.4
&amp;quot;St. Vincent Amazon.&amp;quot; &lt;a href=&quot;http://parrotcode.org/&quot;&gt;Parrot&lt;/a&gt;
is a virtual machine aimed at running dynamic languages.&lt;/p&gt;&lt;p&gt;Parrot 0.6.4 is available via &lt;a href=&quot;http://search.cpan.org/dist/parrot&quot;&gt;CPAN&lt;/a&gt;
(soon), or &lt;a href=&quot;http://parrotcode.org/source.html&quot;&gt;follow the download
instructions&lt;/a&gt;.  For those who would like to develop on Parrot, or help
develop Parrot itself, we recommend using &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt;  on
&lt;a href=&quot;https://svn.perl.org/parrot/trunk/&quot;&gt;our source code repository&lt;/a&gt; to get the latest
and best Parrot code.&lt;/p&gt;&lt;p&gt;Parrot 0.6.4 News:&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt; &lt;tt&gt;- Documentation&lt;br /&gt;&amp;nbsp; + removed a lot of old information from the FAQ&lt;br /&gt;&amp;nbsp; + improved function level documentation&lt;br /&gt;- Configuration&lt;br /&gt;&amp;nbsp; + removed the configuration item 'has_gnu_m4'&lt;br /&gt;&amp;nbsp; + refactored ICU-detection&lt;br /&gt;- Languages&lt;br /&gt;&amp;nbsp; + ChitChat&lt;br /&gt;&amp;nbsp; &amp;nbsp; - improved the Smalltalk implementation&lt;br /&gt;&amp;nbsp; + Pipp&lt;br /&gt;&amp;nbsp; &amp;nbsp; - renamed Plumhead to Pipp&lt;br /&gt;&amp;nbsp; &amp;nbsp; - support for a lot of builtin functions.&lt;br /&gt;&amp;nbsp; &amp;nbsp; - Pipp now uses PHP specific data types.&lt;br /&gt;&amp;nbsp; &amp;nbsp; - converted from PCT with TGE to PCT with NQP actions&lt;br /&gt;&amp;nbsp; &amp;nbsp; - improvements in the PCT variant by using optok parsing&lt;br /&gt;&amp;nbsp; &amp;nbsp; - start of object support&lt;br /&gt;&amp;nbsp; + pir&lt;br /&gt;&amp;nbsp; &amp;nbsp; - simple assignments work&lt;br /&gt;&amp;nbsp; + json&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added a PCT-based implementation of JSON parsing&lt;br /&gt;&amp;nbsp; + lolcode&lt;br /&gt;&amp;nbsp; &amp;nbsp; - improved handling of symbols&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added support for block handling&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added support for globals&lt;br /&gt;&amp;nbsp; + Lua&lt;br /&gt;&amp;nbsp; &amp;nbsp; - more tests&lt;br /&gt;&amp;nbsp; + Rakudo&lt;br /&gt;&amp;nbsp; &amp;nbsp; - updated Range implementation&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added enums&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added generic type declarations (::T)&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added runtime mixing of roles with 'does' and 'but'&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added generic type declarations&lt;br /&gt;&amp;nbsp; &amp;nbsp; - fixed handling of implicit lexicals ($_, $!, and $/)&lt;br /&gt;&amp;nbsp; &amp;nbsp; - fixed implicit method calls on $_&lt;br /&gt;&amp;nbsp; &amp;nbsp; - improved complex math builtins, added Complex&lt;br /&gt;&amp;nbsp; &amp;nbsp; - moved many builtins to class Any&lt;br /&gt;&amp;nbsp; &amp;nbsp; - declaration of lists of variables now work&lt;br /&gt;&amp;nbsp; &amp;nbsp; - improved test infrastructure&lt;br /&gt;&amp;nbsp; &amp;nbsp; - 910 additional passing spec tests since last release&lt;br /&gt;&amp;nbsp; &amp;nbsp; - more convergence with STD.pm grammar&lt;br /&gt;&amp;nbsp; &amp;nbsp; - added named 0-ary parsing and ops&lt;br /&gt;- Compilers&lt;br /&gt;&amp;nbsp; + PCT:&lt;br /&gt;&amp;nbsp; &amp;nbsp; - allowed subroutine and method names to be a PAST tree that produces the name&lt;br /&gt;&amp;nbsp; &amp;nbsp; - Improved lexical handling&lt;br /&gt;- Tools&lt;br /&gt;&amp;nbsp; + pbc_disassemble renamed from disassemble&lt;br /&gt;- Implementation&lt;br /&gt;&amp;nbsp; + allowed .macro_const in PIR&lt;br /&gt;&amp;nbsp; + added the flag :lexid(...) for subroutines&lt;br /&gt;&amp;nbsp; + made multiple dispatch work for sub types&lt;br /&gt;&amp;nbsp; + fixed garbage collection bug related to the metadata attached to a PMC_EXT structure&lt;br /&gt;&amp;nbsp; + added a warning when using deprecated opcodes&lt;br /&gt;&amp;nbsp; + simplified the stacks implementation&lt;br /&gt;&amp;nbsp; + fixed C++ build&lt;br /&gt;&amp;nbsp; + improved closure and lexical support&lt;br /&gt;&amp;nbsp; + improved IMCC register allocator&lt;br /&gt;&amp;nbsp; + added cache for all runtime-constant strings, reducing memory usage&lt;br /&gt;- Miscellaneous&lt;br /&gt;&amp;nbsp; + improved OpenGL/GLU/GLUT bindings&lt;br /&gt;&amp;nbsp; + added a standard profile for Perl::Critic coding standard testing&lt;br /&gt;&amp;nbsp; + added support for smoke testing with Smolder&lt;br /&gt;&amp;nbsp; + enabled use of Test::Harness 3.0 if available, but don't require it for 'make test'&lt;br /&gt;&amp;nbsp; + added the executable 'parrot_config' to query Parrot configuration&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;p&gt;Thanks to all our contributors for making this possible, and our sponsors
for supporting this project.  Our next release is 19 Aug 2008.&lt;/p&gt;&lt;p&gt;Enjoy!&lt;/p&gt;</content>
		<author>
			<name>Bernhard Schmalhofer</name>
			<uri>http://use.perl.org/~Bernhard/journal/</uri>
		</author>
		<source>
			<title type="html">Bernhard's Journal</title>
			<subtitle type="html">Bernhard's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~Bernhard/journal/rss"/>
			<id>http://use.perl.org/~Bernhard/journal/rss</id>
			<updated>2008-07-23T09:00:38+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">HLL Configuration Directives</title>
		<link href="http://www.smashing.org/jeff/node/38"/>
		<id>http://www.smashing.org/38 at http://www.smashing.org/jeff</id>
		<updated>2008-07-12T16:31:18+00:00</updated>
		<content type="html">&lt;p&gt;For the first time in a long while I have copious amounts of free time over the weekend.  So I decided to look at what I had long considered the most difficult part of mod_parrot: HLL configuration directives.  Turns out they're not so hard after all.&lt;/p&gt;
&lt;p&gt;What is an HLL configuration directive?  Well, consider what you have to do now to declare a Perl 6 response handler (in httpd.conf):&lt;/p&gt;
&lt;pre&gt;
&amp;lt;Location /foo&amp;gt;
  SetHandler parrot-code
  ParrotLanguage perl6
  ParrotHandler My::Handler
&amp;lt;/Location&amp;gt;
&lt;/pre&gt;&lt;p&gt;
These directives violate one of the goals of mod_parrot: stay invisible.  But with HLL configuration directives, we could have something like this:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;Location /foo&amp;gt;
  SetHandler perl6-code
  Perl6ResponseHandler My::Handler
&amp;lt;/Location&amp;gt;
&lt;/pre&gt;&lt;p&gt;
This makes configuration much simpler, more familiar to current mod_perl developers, and completely hides mod_parrot from view.&lt;/p&gt;
&lt;p&gt;One Apache module implements this functionality, and that's mod_perl2, where you can add custom Apache directives from your modules.  I did a lot of research on how this is accomplished, and it's actually quite simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write a thunking layer for the various configuration signatures to pass configuration info from Apache to the HLL
&lt;li&gt;Create a new Apache module dynamically at runtime
&lt;li&gt;Create a &lt;code&gt;command_rec&lt;/code&gt; structure containing your directives and pointers to the thunking layer
&lt;li&gt;Associate the &lt;code&gt;command_rec&lt;/code&gt; with the new module
&lt;li&gt;Register the module with Apache
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Of course the actual implementation is the difficult part, but today I was able to write a simple proof-of-concept.  It creates a new module at runtime and adds a directive that writes to the error log when it's encountered in the configuration.  Hard part done!&lt;/p&gt;
&lt;p&gt;What's next?  I have to refactor everything I've done to make it extensible and callable from Parrot.  Then I can write the PIR interface for HLLs to add their directives.  And if I'm careful about the design,  modules like mod_perl6 will be able to reuse the interface to add directives for their own handlers, like mod_perl2 does today.  My goal is to have this in a usable state by OSCON.  My fingers are crossed!&lt;/p&gt;</content>
		<author>
			<name>Jeff Horwitz</name>
			<uri>http://www.smashing.org/jeff</uri>
		</author>
		<source>
			<title type="html">smashing.org - You can logout any time you like, but you can never leave.</title>
			<link rel="self" href="http://www.smashing.org/jeff/rss.xml"/>
			<id>http://www.smashing.org/jeff/rss.xml</id>
			<updated>2008-07-24T09:20:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Enums and the &quot;but&quot; operator</title>
		<link href="http://use.perl.org/~JonathanWorthington/journal/36895?from=rss"/>
		<id>http://use.perl.org/~JonathanWorthington/journal/36895?from=rss</id>
		<updated>2008-07-10T23:19:33+00:00</updated>
		<content type="html">&lt;p&gt;This week's Rakudo day (Tuesday was catching up last week's) came around and this time I worked on some more high level, visible stuff. A while ago I quickly implemented the anonymous enum constructor, which essentially is a hash constructor on steroids. This week I got a lot of progress in on the (rather more advanced) named enums. This means that you can now write things like:&lt;/p&gt;&lt;p&gt;

&lt;code&gt;enum Day &amp;lt;Mon Tue Wed Thu Fri Sat Sun&amp;gt;;&lt;br /&gt;
say Mon; # 0 - the underlying value&lt;br /&gt;
say Day::Wed; # 2 - the underlying value&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;Notice how the names lie under the Day namespace, but are also imported into the current namespace too (and if you have an enum from some external library in the future, and you import that, the same thing will happen). There are some subtleties relating to symbol collisions that we aren't handling yet (we need a type name registry in Rakudo first). You can also use pairs to set the starting values or the values at any point in the enum too, as with the anonymous ones. A cool thing is that we evaluate the list at compile time to get the set of values, and then can construct the role/class and so forth at compile time too, rather than having to work that all out at runtime.&lt;/p&gt;&lt;p&gt;One of the trickier bits of enums is working out what they actually are. You are in fact introducing a role named Day in the above example, and that means you can mix it into anything else using &quot;does&quot; or &quot;but&quot;. The &quot;but&quot; keywords a like &quot;does&quot;, but it knows how to take one member of an enumeration and generalize it to the enumeration role, then mix than it. Additionally, it operates on a copy of the original value rather than being destructive. So we can do things like:&lt;/p&gt;&lt;p&gt;

&lt;code&gt;enum Maybe &amp;lt;No Yes&amp;gt;;&lt;br /&gt;
my $x = 0 but Yes;&lt;br /&gt;
say $x; # 0&lt;br /&gt;
say $x.Maybe; # 1, since it's Yes&lt;br /&gt;
say $x.No; # 0, because $x.Maybe is not 0&lt;br /&gt;
say $x.Yes; # 1, because $x.Maybe is 1&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;Note here that .No and .Yes return true only if .Maybe (the property, which you can also assign to) matches that value.&lt;/p&gt;&lt;p&gt;

&lt;code&gt;enum Maybe &amp;lt;No Yes&amp;gt;;&lt;br /&gt;
my $x = 0 but No;&lt;br /&gt;
say $x; # 0&lt;br /&gt;
say $x.Maybe; # 0, since it's No&lt;br /&gt;
say $x.No; # 1, because $x.Maybe is 0&lt;br /&gt;
say $x.Yes; # 0, because $x.Maybe is not 1&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;Note that you can use the &quot;but&quot; operator whenever you would use &quot;does&quot; but want a copy of the value operated on rather than the original (the expression as a whole evaluates to the copy that had the mixin applied). The &quot;but&quot; operator actually is implemented in terms of the &quot;does&quot; operator under the hood.&lt;/p&gt;&lt;p&gt;Also note that &quot;0 but True&quot; doesn't quite work yet, or at least isn't affecting the outcome of if statements. This isn't a problem in the enumerations implementation, but rather seems an inconsistency in the spec. Hopefully a mail to perl6-language will get that cleared up - I'll write it tomorrow, when I've got some sleep.&lt;/p&gt;&lt;p&gt;In other minor happenings today, I found and fixed a segfault in Parrot, helped trace a couple of other Parrot issues and fixed the Rakudo &quot;does&quot; operator bug where it lost the association with the proto-object in the modified object. Yesterday, I had some quite long and detailed discussions with both Larry and Patrick over signatures. I think we've got the spec side of things, where it wasn't completely clear before, worked out. However, we still have some details of the implementation left to completely work out (basically, issues about how data-ish and how procedural-ish signatures really are). I'm hopeful we can resolve these in the next week, so I've got a good base to start building the Perl 6 MMD implementation on top of.&lt;/p&gt;&lt;p&gt;As usual, thanks to Vienna.pm for funding my Rakudo hacking.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Worthington</name>
			<uri>http://use.perl.org/~JonathanWorthington/journal/</uri>
		</author>
		<source>
			<title type="html">JonathanWorthington's Journal</title>
			<subtitle type="html">JonathanWorthington's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~JonathanWorthington/journal/rss"/>
			<id>http://use.perl.org/~JonathanWorthington/journal/rss</id>
			<updated>2008-07-23T23:40:05+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Signature Objects</title>
		<link href="http://use.perl.org/~JonathanWorthington/journal/36875?from=rss"/>
		<id>http://use.perl.org/~JonathanWorthington/journal/36875?from=rss</id>
		<updated>2008-07-08T22:57:34+00:00</updated>
		<content type="html">&lt;p&gt;The first of this week's two Rakudo days (as I catch up from not having one last week) was today, and I dedicated it to working on signature objects. These are something I need to implement MMD, but also come into play in various other situations. For example, if you write something like:&lt;/p&gt;&lt;p&gt;

&lt;code&gt;my ($a, $b);&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;Then this is constructing a signature object on the left hand side, which you can bind to; assignment to it will also work at some point in the future (but not yet). Signatures also appear, of course, on methods and subs, and we've had those working in some form for quite a while in so far as you could pass parameters, get them type-checked and so forth. We weren't constructing real signature objects, however. And to provide the rich information about the signature and the types that an implementation of Perl 6 MMD needs, we need to start constructing them. This will also allow you to introspect the signatures of subs amd methods at runtime (it's not a lot more work to get that in place from what I've got done today).&lt;/p&gt;&lt;p&gt;While a lot of todays work was beneath the surface - actually constructing the signature objects rather than using them - there is some visible stuff. For one, you can now write declarations like this:&lt;/p&gt;&lt;p&gt;

&lt;code&gt;my ($a, $b, $c); # declares all three variables&lt;br /&gt;
class Foo { has ($.x, $!y); } # declare both attributes&lt;br /&gt; &lt;/code&gt;

&lt;/p&gt;&lt;p&gt;Note that you can't do assignment to many things at once just yet - that's part of list assignment. It's high on Patrick's todo list, so we should have that soon. I'll probably get some parts of it in (implementing assignment to the signature) next Rakudo day.&lt;/p&gt;&lt;p&gt;I also implemented the :(...) syntax which parses what is between the parens as a signature and creates a signature object. This works now, though not all signature syntax is parsed yet.&lt;/p&gt;&lt;p&gt;Finally, you can get hold of the constructed Signature object by doing something like &amp;amp;foo.signature, though at the moment you can't do much at all with it. Well, I guess you can &quot;say &amp;amp;foo.signature.WHAT&quot; and see that it's a Signature object. The introspection interface isn't fully specified, but I asked about it on list and Larry provided an idea as to what he expects to see, so I'll use that to guide my implementation.&lt;/p&gt;&lt;p&gt;Signatures can be incredibly powerful; once we get a full implementation, you will be able to unpack trees nodes right there in a signature and all sorts. For now, I just want to get an initial implementation that builds signature objects holding all the information needed to get on with an MMD implementation, though I'm sure things like smart-matching against them and the more advanced features of them will follow in the not too distant future too.&lt;/p&gt;&lt;p&gt;Thanks to Vienna.pm for funding today's work, and also for knowing a really nice Mexican restaurant to go to after their tech meet last night. Good food, good beer, good fun. I like living in a city with a Perl Mongers group, and just an hour down the road from Vienna, which also has a good, active one. :-)&lt;/p&gt;</content>
		<author>
			<name>Jonathan Worthington</name>
			<uri>http://use.perl.org/~JonathanWorthington/journal/</uri>
		</author>
		<source>
			<title type="html">JonathanWorthington's Journal</title>
			<subtitle type="html">JonathanWorthington's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~JonathanWorthington/journal/rss"/>
			<id>http://use.perl.org/~JonathanWorthington/journal/rss</id>
			<updated>2008-07-23T23:40:05+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Lexical Fixes</title>
		<link href="http://use.perl.org/~JonathanWorthington/journal/36844?from=rss"/>
		<id>http://use.perl.org/~JonathanWorthington/journal/36844?from=rss</id>
		<updated>2008-07-02T23:47:30+00:00</updated>
		<content type="html">&lt;p&gt;First of all, sorry that it has taken me so long to write up last week's Rakudo day. Normally I write the report at the end of the day, but I stayed up debugging and fixing stuff until I was too tired to do anything, but sleep. I'd also been having some insomnia over that week, and had been down with some virus (as in, me personally, not my computer) around the start of last week, so by the time the weekend arrived I just wanted to rest. I'm happy to say that I'm now in much better shape, so there's nothing to worry about. The last couple of days have just been full of catching up with $DAYJOB stuff I couldn't do at the start of last week.&lt;/p&gt;&lt;p&gt;Second, I'm sorry to have nothing much exciting to speak of. Thursday was one of those days spent doing needed stuff rather than fun stuff. Patrick had discovered various issues with Parrot's lexicals implementation that were in the way of making progress on various things in Rakudo. Since getting that right was important in getting some fairly fundemental stuff fixed, and given I have Parrot internals knowledge, I took the day away from doing the cool stuff and focused on these issues. Along the way I fixed at least one other long-standing issue. With some additional contributions from chromatic++ and NotFound++, I think we are now free of the issues that were blocking things.&lt;/p&gt;&lt;p&gt;One of the issues I solved was that methods were unable to see lexicals in enclosing scopes. That is now resolved at a Parrot level, and Patrick did the changes in PCT too and thus it should be resolved in Rakudo. The more serious issue was that outer scopes weren't being identified uniquely enough in the emitted code. This was mostly seriously an issue for multi-subs, but also could be exposed when multiple namespaces were used in one file (a common occurence). This is now resolved.&lt;/p&gt;&lt;p&gt;I also started laying the foundations for getting us to be able to identify Subs, Blocks and Methods as different types, and having somewhere to attach signatures. I'm not completely there with this just yet, and have an uncommitted patch that does some work on this (there is checked in some initial work on it too that sort of works, but not entirely). Getting signatures attached is working towards mutli-method dispatch, which I will be working on this month.&lt;/p&gt;&lt;p&gt;This week I'm overseeing the launch of a fairly big project for one of my clients, and won't get a good day's peace this week for Rakudo hacking. So, rather than having a Rakudo day this week where I keep getting distracted, I'll push it to next week and have two then. I will also be working on the MMD grant this month, so after the slow start to the month this week I will be working on Rakudo two days a week throughout the rest of the month and probably into August too. I will also be at YAPC::Europe::2008.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Worthington</name>
			<uri>http://use.perl.org/~JonathanWorthington/journal/</uri>
		</author>
		<source>
			<title type="html">JonathanWorthington's Journal</title>
			<subtitle type="html">JonathanWorthington's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~JonathanWorthington/journal/rss"/>
			<id>http://use.perl.org/~JonathanWorthington/journal/rss</id>
			<updated>2008-07-23T23:40:05+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Welcoming Pipp</title>
		<link href="http://use.perl.org/~Bernhard/journal/36838?from=rss"/>
		<id>http://use.perl.org/~Bernhard/journal/36838?from=rss</id>
		<updated>2008-07-02T15:26:03+00:00</updated>
		<content type="html">&lt;p&gt;
The PHP on Parrot implementation used to be called Plumhead, after the Plum-Headed Parakeet. As this name is somewhat goofy, a new name was sought. Some more or less sane variants were discussed, &lt;a href=&quot;http://www.perlfoundation.org/parrot/index.cgi?plumhead_renaming&quot;&gt;http://www.perlfoundation.org/parrot/index.cgi?plumhead_renaming&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
And the winner is &lt;b&gt;Pipp&lt;/b&gt;.
&lt;/p&gt;&lt;p&gt;
Thanks to Christoph Otto for getting this rolling.
&lt;/p&gt;</content>
		<author>
			<name>Bernhard Schmalhofer</name>
			<uri>http://use.perl.org/~Bernhard/journal/</uri>
		</author>
		<source>
			<title type="html">Bernhard's Journal</title>
			<subtitle type="html">Bernhard's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~Bernhard/journal/rss"/>
			<id>http://use.perl.org/~Bernhard/journal/rss</id>
			<updated>2008-07-23T09:00:38+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Where's the goal line?</title>
		<link href="http://use.perl.org/~pmichaud/journal/36834?from=rss"/>
		<id>http://use.perl.org/~pmichaud/journal/36834?from=rss</id>
		<updated>2008-07-01T16:41:33+00:00</updated>
		<content type="html">&lt;p&gt;From a &lt;a href=&quot;http://www.rakudo.org/2008/07/rakudo-perl-6-on-parrot-progre.html#comment-10336&quot;&gt;comment on rakudo.org&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p&gt;dstar said:&lt;br /&gt;
&amp;nbsp; &lt;em&gt;One thing I'm not clear on -- Rakudo is passing 1100 tests out of how many? IE, where's the goal line?&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;Well, the &quot;goal line&quot; is by definition a moving target.  There's not a hard number we can cite -- even in Perl 5 the size of the test suite constantly changes as new features are added and new bugs are found.  There will be a point at which we declare a particular set of tests as being the &quot;official test suite&quot; for Perl 6.0.0, but we're really not close to that point yet.  Here's what I &lt;em&gt;can&lt;/em&gt; say about the test suite thus far:&lt;/p&gt;&lt;p&gt;The &quot;official test suite&quot; is being built from the test suite that was created for Pugs -- the Pugs test suite has approximately 19,000 tests in it.  But, the Pugs suite itself was somewhat disorganized and thus difficult to determine test coverage.  It also has many tests that are incorrect, either because the language specification has changed since they were written or because they were incorrect in the original.&lt;/p&gt;&lt;p&gt;Thus, Adrian Kreher (mentored by Moritz Lenz and Jerry Gay) is in the process of conducting a complete review and reorganization of the Pugs test suite into the &quot;official test suite&quot;, or what we call the &quot;spectests&quot; (in t/spec/ of the Pugs repository).  We estimate that about 5,000 (25%-30%) of the tests in Pugs have been reviewed and migrated into t/spec/.  And just because a test appears in t/spec/ doesn't mean it's necessarily correct -- we continue to find places where the test doesn't exactly match the language specification (or the language specification is ambiguous and needs clarification in the test).&lt;/p&gt;&lt;p&gt;Within the 5,000 or so spectests, there's a subset of 75 test files (~1,500 tests) that have been identified as the &quot;&lt;a href=&quot;http://svn.perl.org/parrot/trunk/languages/perl6/t/spectest_regression.data&quot;&gt;spectest regression suite&lt;/a&gt;&quot; for Rakudo.  These are test files that we expect Rakudo to pass at any given moment in time, such that someone can do &quot;make spectest_regression&quot; and get back &quot;All tests successful.&quot;  The developers also use this to make sure that any changes to Rakudo don't break existing functionality.  Of course, the spectest_regression suite is itself a rapidly moving target as Rakudo acquires more features and as the test suite evolves.  For example, at the beginning of June there were 52 files (892 tests) in the spectest regression suite, today (July 1) we have 75 files (1522 tests) in the regression suite.&lt;/p&gt;&lt;p&gt;And beyond all of this have been comments from Larry and others that eventually the official test suite will likely be double or triple the current size of the Pugs suite -- I think I've heard estimates of 40,000-50,000 tests in the suite when we're &quot;finished&quot;.&lt;/p&gt;&lt;p&gt;So, return to the original question of &quot;Where's the goal line?&quot;, you can see that there's not really a straightforward answer.  This is why I haven't been saying things like &quot;passing 1100 out of &lt;em&gt;N&lt;/em&gt; tests&quot;, because the exact value of &lt;em&gt;N&lt;/em&gt; depends on what's being measured to depend on what one considers important, and until more of the official test suite is ready any useful &lt;em&gt;N&lt;/em&gt; doesn't really correspond to the &quot;goal line&quot; of a released Perl 6.  So, the number I tend to focus on at the moment is the absolute rate of increase in passing tests -- currently it's about 100 new passing tests per week.  I expect that trend to continue or improve in the coming months.  As long as the number of passing tests is increasing, we're making progress.&lt;/p&gt;&lt;p&gt;An obvious intermediate goal is to have Rakudo passing at least the tests in the Pugs test suite.  This depends not only on Rakudo development progress, but also progress in reviewing the Pugs tests and migrating them into t/spec/ .  This is also why the Perl 6 developers are constantly inviting and encouraging people to help with building and reviewing the test suite.  As mentioned above, only about 25%-30% of the Pugs test suite has made it into t/spec/, and many of those have been simply moved into t/spec/ without significant review or verification against the Synopses.  Once we have most of the Pugs test suite migrated to t/spec/ I'll probably start reporting passing tests relative to the size of overall suite.  (But I'll also continue reporting the passing rate increase as well.)&lt;/p&gt;&lt;p&gt;Lastly, this is a good place for me to repeat an invitation I made at YAPC::NA:  For those who are interested in helping with the test suite but don't know where to start, I suggest &quot;adopting&quot; a particular Perl 6 feature or Synopsis section and saying &quot;I'm going to develop the tests for that feature.&quot;  This doesn't require learning all of Perl 6, it only requires learning those parts of Perl 6 that are necessary for testing that particular feature.  It also gives a sense of ownership for a part of Perl 6, as in &quot;I did that part of the test suite&quot;.&lt;/p&gt;&lt;p&gt;I'll undoubtedly add more information about Perl 6 testing in the near future, as it's an area where many hands can help make light work.&lt;/p&gt;&lt;p&gt;Thanks to dstar for asking the question that prompted this post. :-)&lt;/p&gt;&lt;p&gt;Pm&lt;/p&gt;</content>
		<author>
			<name>Patrick Michaud</name>
			<uri>http://use.perl.org/~pmichaud/journal/</uri>
		</author>
		<source>
			<title type="html">pmichaud's Journal</title>
			<subtitle type="html">pmichaud's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~pmichaud/journal/rss"/>
			<id>http://use.perl.org/~pmichaud/journal/rss</id>
			<updated>2008-07-24T07:40:34+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Rakudo (Perl 6 on Parrot) progress report</title>
		<link href="http://use.perl.org/~pmichaud/journal/36826?from=rss"/>
		<id>http://use.perl.org/~pmichaud/journal/36826?from=rss</id>
		<updated>2008-07-01T04:59:40+00:00</updated>
		<content type="html">&lt;p&gt;This is the third &quot;monthly&quot; report for my development grant from
the Mozilla Foundation and The Perl Foundation.  As regular readers
will have surmised by now, the definition of &quot;month&quot; has been stretched
a bit for a variety of reasons, but as this report and the other
reports will show, it's not been a hindrance to our progress.
&lt;/p&gt;&lt;p&gt;To review, the primary goals of this grant are:
&lt;/p&gt;&lt;ol&gt; &lt;li&gt;To have a Perl 6 on Parrot implementation that supports commonly-used Perl 6 constructs;
&lt;/li&gt;&lt;li&gt;Improvements to the Perl 6 test suite;
&lt;/li&gt;&lt;li&gt;To substantially complete the Parrot Compiler Toolkit, including documentation;
&lt;/li&gt;&lt;li&gt;Increased community participation in Perl 6 and Parrot development, including development efforts on other languages utilizing Parrot and the Parrot Compiler Toolkit.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;It's now clear that the work under this grant has been (or otherwise
shortly will be) successful in meeting all of the above goals.  As before,
in this report I'll highlight the major events and milestones that
have been reached since the previous report, and let my other
article postings provide increased details.
&lt;/p&gt;&lt;p&gt;
Progress, April 2008 to June 2008
&lt;/p&gt;&lt;p&gt;* Of course, one of the biggest news items is that in May 2008 The
Perl Foundation received a $200,000 &lt;a href=&quot;http://news.perlfoundation.org/2008/05/tpf_receives_large_donation_in.html&quot;&gt;philanthropic donation&lt;/a&gt; from
Ian Hague, roughly half of which will be used to support further
development of Perl 6 and to build upon the work performed under
this grant.
&lt;/p&gt;&lt;p&gt;* In addition, Jonathan Worthington received &lt;a href=&quot;http://use.perl.org/article.pl?sid=08/04/23/2314234&quot;&gt;a grant from Vienna.pm&lt;/a&gt; to continue his work on developing Rakudo; this grant led to implementations of type checking, multimethod dispatch, regex and grammar support, public and private methods, Ranges, scalar variables, runtime role composition, enums, and a lot more.
&lt;/p&gt;&lt;p&gt;* During this period we continued to improve the documentation
for the Rakudo (Perl 6 on Parrot) compiler, although more focus
in this area is definitely needed.  In April we published a &lt;a href=&quot;http://svn.perl.org/parrot/trunk/languages/perl6/ROADMAP&quot;&gt;list of Rakudo milestones&lt;/a&gt; as a basic &quot;road map&quot; to guide continued development.  We also generated
numerous articles and blog postings that describe the various
features of the compiler and how it's all being put together.
&lt;/p&gt;&lt;p&gt;* In May we started measuring progress on Rakudo by the number of
passing tests from the official test suite.  As of June 30, Rakudo Perl
is passing 1126 tests from the official test suite, and we're averaging
100 new passing tests per week.  I'm hoping this trend will continue.
&lt;/p&gt;&lt;p&gt;* To facilitate development Moritz Lenz and Jerry Gay
refactored the test harness to provide a &quot;make spectest_regression&quot; target.
Now Rakudo developers can verify that changes to the compiler are not
breaking any tests that were previously passing.  Based on this we're
able to to maintain a &lt;a href=&quot;http://svn.perl.org/parrot/trunk/languages/perl6/docs/spectest-progress.csv&quot;&gt;spectest-progress&lt;/a&gt; file, and Moritz created an excellent utility
to display the  progress as a graph:
&lt;/p&gt;&lt;p&gt; &lt;a href=&quot;http://www.pmichaud.com/perl6/rakudo-tests-2008-06-30.png&quot;&gt;http://www.pmichaud.com/perl6/rakudo-tests-2008-06-30.png&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;* Work on refactoring, improving, and updating the Perl 6 test suite is being handled by Adrian Kreher, Moritz Lenz, and Jerry Gay under a &lt;a href=&quot;http://auzon.blogspot.com/search/label/gsoc2008&quot;&gt;Google Summer of Code grant&lt;/a&gt;, along with test contributions and suggestions from many others.  We now have a better process in place for reviewing and updating tests; this has enabled progress in other areas to also proceed more rapidly.
&lt;/p&gt;&lt;p&gt;* Many of the basic Perl 6 statement types and constructs are now in place -- the primary notable exception being list assignment and lazy list operations.  Implementing list assignment properly will require some modifications to the underlying grammar engine -- that work is expected to occur later this summer.  Lazy lists and operators are awaiting some improvements to Parrot's exception subsystem (expected in early July).
&lt;/p&gt;&lt;p&gt;* The Parrot Compiler Toolkit (PCT) and Not Quite Perl (NQP) tools developed in the first months of this grant continues to demonstrate its power and effectiveness.  Most of the HLL translators for Parrot have either adopted or are planning to using PCT/NQP for their underlying code generation.  In particular, both the Ruby and PHP implementations (Cardinal and Plumhead) have made significant progress by using the Parrot compiler tools.  PCT now has support for basic &quot;return&quot; control exceptions -- other types of control exceptions will be added shortly.
&lt;/p&gt;&lt;p&gt;* We continue to gather more active contributors to Parrot and Rakudo Perl.  There has been a substantial increase in patch submissions -- so much so that we've held discussions about how we might improve our ability to respond to code contributions more quickly.  I've given presentations about the recent improvements at &lt;a href=&quot;http://www.fosdem.org/&quot;&gt;FOSDEM 2008&lt;/a&gt;, &lt;a href=&quot;http://www.texasoss.org/&quot;&gt;The Texas Open Source Symposium&lt;/a&gt;, &lt;a href=&quot;http://dfw.pm.org/&quot;&gt;DFW Perl Mongers&lt;/a&gt;, and &lt;a href=&quot;http://conferences.mongueurs.net/yn2008/&quot;&gt;YAPC::NA 2008&lt;/a&gt;.  Each of these presentations have increased participation and enthusiasm about Rakudo Perl and Parrot.  More presentations about the project will be made at &lt;a href=&quot;http://en.oreilly.com/oscon2008/&quot;&gt;OSCON 2008&lt;/a&gt; and &lt;a href=&quot;http://www.yapceurope2008.org/ye2008/&quot;&gt;YAPC::Europe 2008&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;* At YAPC::NA 2008 Jim Keenan, Will Coleda, and others on the Parrot team organized a &quot;Perl 6 and Parrot Workshop&quot;, in which we helped approximately 20 people download and build Parrot and Rakudo Perl and run through the basic test suite.  This has further increased interest in the project; indeed, some of the participants came across some bugs (and filed bug reports and/or patches), and many are planning to hold similar workshops in their local user groups.  We plan to repeat the workshop at other venues, including the &lt;a href=&quot;http://pghpw.org/ppw2007/&quot;&gt;Pittsburgh Perl Workshop&lt;/a&gt;, YAPC::EU, and likely other workshops and user groups.
&lt;/p&gt;&lt;p&gt;* All of the &quot;specific tasks&quot; targeted in the end of the last grant report have been achieved.
&lt;/p&gt;&lt;p&gt;
Where things are headed next
&lt;/p&gt;&lt;p&gt;The goal for the next few weeks will be to continue (and perhaps improve) the excellent development momentum achieved during the past couple of months.   In particular, we will continue improving the test suite and Rakudo's ability to pass tests from the suite.  In addition, as some new Parrot features become available (e.g., improved exception and lexical variable handling) we will be able to take advantage of them in the compilers and compiler toolkits.  We will also begin identifying the specific individuals and tasks to be engaged under grants from the Ian Hague donation.
&lt;/p&gt;&lt;p&gt;Specific tasks for the remainder of this grant:
&lt;/p&gt;&lt;ul&gt; &lt;li&gt;Continue improving the official test suite
&lt;/li&gt;&lt;li&gt;Develop a more complete implementation of Perl 6's exception model
&lt;/li&gt;&lt;li&gt;Implement basic lazy lists and operators
&lt;/li&gt;&lt;li&gt;More refactoring of basic operators, functions, and classes according to recent changes in the language specification
&lt;/li&gt;&lt;li&gt;Allow compiler and builtin library components to be written in Perl 6
&lt;/li&gt;&lt;li&gt;Continue convergence efforts with other Perl 6 implementations
&lt;/li&gt;&lt;li&gt;Write the final grant report, documenting the work performed, quantifying results achieved, and outlining the next phases of development
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As things stand today, I expect to publish the final report for this grant
sometime around OSCON 2008 (July 2008).  Of course, I will continue to post articles at &lt;a href=&quot;http://use.perl.org/~pmichaud/journal&quot;&gt;use.perl&lt;/a&gt;, &lt;a href=&quot;http://rakudo.org/&quot;&gt;rakudo.org&lt;/a&gt;, and &lt;a href=&quot;http://parrotblog.org/&quot;&gt;parrotblog.org&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;Thanks for reading!
&lt;/p&gt;&lt;p&gt;Pm
&lt;/p&gt;</content>
		<author>
			<name>Patrick Michaud</name>
			<uri>http://use.perl.org/~pmichaud/journal/</uri>
		</author>
		<source>
			<title type="html">pmichaud's Journal</title>
			<subtitle type="html">pmichaud's use Perl Journal</subtitle>
			<link rel="self" href="http://use.perl.org/~pmichaud/journal/rss"/>
			<id>http://use.perl.org/~pmichaud/journal/rss</id>
			<updated>2008-07-24T07:40:34+00:00</updated>
			<rights type="html">use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.</rights>
		</source>
	</entry>

</feed>
