To see what is currently happening visit http://www.perl6.org/
Monday morning, all's well, and Piers sits down at his desk to bash out another in his ongoing series of Perl 6 Summaries.
I've just realised that I missed noting the second anniversary of my writing these summaries. It came up a month ago. On my last anniversary I hoped I wouldn't be celebrating many more of them before we have a real, running Perl 6; I'm still hoping. It looks like we may well have a real, running Python interpreter on Parrot before Perl 6.
But we won't have it this week. Read on.
First, the bad news. Dan's conceded.
Now, the good news. Dan and Leo still got an awful lot done in a surprisingly short time; who knows where we'd be if Dan hadn't been stuck without a working laptop for most of June. In 5 weeks, we went from nothing at all running to having four out of seven running, and 3 of those running faster than Python. Leo estimated that, once everything was done, Parrot should be averaging about twice the speed of Python. Next week (or possibly the week after) should see some post mortem documentation from Dan and Leo discussing what they've learnt from the exercise, and what needs to be done to get a 'proper' python implementation up on Parrot.
So yes, Dan's going to get a pie in the face and be out a round of drinks. If you're at OSCON, you might like to drop in on the Python lightning talks and watch.
Joshua Gatcomb pointed out that JITted programs were dumping core on Cygwin. Again. He and Leo tracked down a problem with the flags used on the cygwin version of GCC. Joshua made a plea for experienced Cygwin programmers to help out with issues of getting various things working on the Cygwin parrot. He also called himself a 'bumbling idiot' but none of us (apart, possibly, from his wife) believed him.
Leo and Dan had a long discussion about a proposal of Leo's that Dan had rejected without commenting on. Leo's not exactly happy about Parrot's subroutine call speed and had proposed something which he thought would make things go faster. Dan disagreed, and pointed out that it was actively thread dangerous (there's a difference between not optimizing for threads and not making threading possible).
In a lighter hearted part of the thread, Larry suggested embedding python in Parrot as a way to get all the pie-thon tests running at least as quickly as python. Leo hacked something up which piped the Python code to python itself. But we're too honest to do that at OSCON.
Michel Pelletier announced the release of Parakeet 0.1, a small Parrot language which he hopes will eventually expose all of the OO features of the Parrot VM. Judging by the description he posted, it's a fascinating Forth like language. Kudos to Michel.
Pushing onto lazy lists continued to exercise the p6l crowd (or at least, a subset of it). Larry said that if someone wanted to hack surreal numbers into Perl 6.1 then that would be cool.
Remember Dave Whipp's proposal to get rid of user visible filehandles in favour of something like tied scalars? It sparked a good deal of discussion this week. A few people were pro, a few anti, with Larry seeming to position himself somewhere in the middle.
Austin Hastings made me laugh when, following my announcement that I'm off to train to be a maths teacher, he wrote a spoof 'Mathematics summary'. Thanks Austin.
The string interpolation subthread of last week broke out into it's own first class thread this week. Larry said that he was seriously considering incrementing the Ruby-o-meter some more by saying that the only interpolators in double quotes would be
\n, \t etc.
$foo
@foo[$i]
%foo{$k}
{ EXPR }
where the last provides a list context to EXPR. Damian thought that
the current solution with $(...) and @(...) was still the best
way to go. He didn't relish having to escape every { double quoted
strings (code that writes code for execution by eval is hard enough
to read without a whole bunch of extra quoted characters being
required).
As is usual with p6l, the discussion was wide ranging and touched on a whole bunch of other entertaining subjects. He who must not be capitalized, chromatic brought up curried and first class roles, and Larry shied away from allowing the (IMHO) eminently sensible
$foo does $bar
Where do we stand now? Well, I can safely say that some stuff will interpolate in double quoted strings.
=head xx and re-running
James Mastros made my head hurt slightly as I first read his post about
the x operator. For a large chunk of his post I was reading x as
an algebraic x which stood for an arbitrary operator before it dawned
on me that he was talking about the repetition operator (which becomes
xx in Perl 6), using the particular example:
@list = int(rand 100) xx 100
His contention was that people expected the rand part to be
evaluated 100 times and that they were surprised when it wasn't
(frankly, I'd be surprised if it were, but I might be too
indoctrinated). He proposed that either a new xxx be introduced
which reevaluated its LHS multiple times, or that xx be altered so
that, if its LHS was a closure, it would execute the closure multiple
times to get values.
Joseph Ryan pointed out that that was what map was for.
A question arose about what modules would come as standard with Perl 6. Larry's argued previously for an utterly minimal basic distribution so as to encourage people to make use of CPAN rather that relying on the (possibly old, broken) that came with their Perl. Others were not convinced that this was a good idea.
Over the next few weeks I'll be moving the cut off day for these summaries from Sunday to Friday. Writing summaries on a Monday when you don't have to drive to Middlesbrough for work is pretty easy, but less easy when you do. So, by moving the cut off day I hope I'll be able to continue writing the summaries while I'm busy doing my teacher training.
If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. You might also like to send me feedback at mailto:pdcawley@bofh.org.uk
donate.perl-foundation.org -- The Perl Foundation
dev.perl.org -- Perl 6 Development site