As some of you are aware, this week is the Nordic Perl Workshop, and in the days immediately following the workshop we will have the Oslo Perl 6 Hackathon. During the first day of the hackathon Gabor Szabo will be doing a "Hands-on Perl 6 training" course, the other two days will be for various hacking tasks (both Perl 6 and Perl 5).
I personally have three goals for my participation at the workshop and hackathon:
The big bit of progress today was that I got lexical subs working.
{
my sub foo() { say "pes" }
foo(); # pes
}
foo(); # An error; sub is lexically scoped in the block
Actually, getting that far was the easy bit. The harder bit was making leixcally scoped multi subs work, which is a good deal more interesting. That's because rather than a wholesale replacement, you have to clone the set of outer candidates and then add the new ones. That is:
For a while now there's been a kind of longing for socket I/O in Rakudo. The ever-creative users of Rakudo have even managed to get a HTTP server running in Rakudo without them anyway, using netcat! However, a few days back I started trying to make sockets happen. I'm really not a network I/O guy, so I've been very happy that all I've had to do so far is encourage bacek++ to work on getting socket I/O sorted out in Parrot, take his (large - bacek++ again) patch, write the Win32 port of it and apply it.
This is a report for my Rakudo day last week, which finished up pretty late and thus I didn't get around to writing up and posting a report. Much of the day saw me headachey and not really feeling up to working on big stuff, so I did small stuff instead - mostly bug fixes. Those were:
A few people have discussed ideas for a Rakudo logo, but there hasn't been much to look at. I'm guessing that not many people involved with Rakudo have graphic design skills. Ideally a logo would be developed by a professional graphic designer with logo expertise (ie. by someone with better skills than me - or you).
Most discussion has been about symbolism but I thought I would provide some actual visual ideas that are based on typography rather than symbols (except one includes a palm tree).
Here goes...
On behalf of the Rakudo development team, I'm pleased to announce the March 2009 development release of Rakudo Perl #15 "Oslo". Rakudo is an implementation of Perl 6 on the Parrot Virtual Machine [1]. The tarball for the March 2009 release is available from http://www.pmichaud.com/perl6/rakudo-2009-03.tar.gz.
However, because of the rapid pace of Rakudo development and addition of new features, we still recommend that people wanting to use or work with Rakudo obtain the latest version directly from the main repository at github -- more on this in a bit.
I spent most of my Rakudo day today adding state variables to Rakudo. Perl 5.10 supports them, so it's nice that they can now be used in Perl 6 - which first specified the feature - under Rakudo. As often happens, it took a first not-quite-right implementation to do one that I'm now reasonably happy with. I'm sure it can be improved in various ways, but for now it seems to get the right answers for everything we've thrown at it. So, a quick example.
Back from my conference and vacation trip (travel tip: Lviv is very pretty and cheap), I did a Vienna.pm Rakudo Day yesterday. There's one main new thing to shout about: eval can now see outer lexical variables. So this:
my $x = 42;
eval('say $x');
Will now print 42. This not only made the spectest for this particular feature pass, but also there were a bunch todo'd and skipped that needed this feature. So I reckon we'll have gained a double-figure number of tests with this, plus it should help the Web.pm effort a bit.
Rakudo is made available through a series of distributions that contain the compiler, documentation, and some modules--things that we think might be useful to some one wanting to write Perl 6 programs. These distributions are called Rakudo * or Rakudo Star.
Rakudo Star is currently available from github at http://github.com/rakudo/star/downloads/ .
(There is no MSI for the 2010.08 release yet; contributions welcome!)