Day 1 – State of Perl 6 in 2012

Welcome to another edition of your annual Perl 6 advent calendar.

As is tradition on the first of December, you can read a short overview over what has changed in the past year, and where we are standing now.

The list of major changes to the specification is pretty short. The IO subsystem has undergone a rewrite, and now much better reflects the realities in implementations, and actually has a measure of common sense applied. S32::Exceptions has gone through lots of changes (mostly extensions), and now there is a decent core of exception classes in Perl 6.

Both Rakudo and Niecza, the two major Perl 6 compilers, have matured a great deal. Contrary to last year, chances are pretty good that if your program works on one of the compilers, it also works on the other. Niecza also temporarily overtook Rakudo on the count of passing tests.

Niecza had a revamp of the roles implementation, has gained constant folding, awesome Unicode support in regexes, list comprehensions and a no strict; mode. To name just a few of the major changes.

Rakudo now supports heredocs, all phasers (special blocks like BEGIN, END, FIRST, …), longest-token matching in regexes, typed exceptions, much nicer backtraces and operator adverbs. And it now has a debugger, which is shipped with the Rakudo Star distribution.

The module ecosystem has grown a lot, and there is much more documentation for Perl 6 than a year ago.

So, after all these changes, where are we now?

Reports from production uses of Perl 6 are slowly starting to trickle in, and these days if your Perl 6 code has bugs, the chances are much higher that your code is to blame than the compilers. Perl 6 has never been this much fun to use. It surely has been a good and productive year for Perl 6, and we’re sure that this last month will continue the tradition. Have fun!

7 thoughts on “Day 1 – State of Perl 6 in 2012

  1. Macros! (Just kidding. Carl will be covering those on the 23rd.)

    Rakudo’s nice FFI (for calling C libs) matured enough to support things like DBIsh and SDL games. And it’s now part of the official specification.

    Perl 6 compilers are still very slow. As Larry Wall said in November: “performance is still the main blocker to widespread adoption of Perl 6”.

    Ian Hague donated $200K to the Perl 6 project in 2008. Moritz Lens recently said he thinks about three quarters of this money is still available.

  2. I am really looking forward to the advent this year. My new years resolution is to use Perl6 for all my casual coding projects.

  3. Thanks to everyone who has worked on Perl 6 and Rakudo. I’ve used Rakudo for some simple programs and like it.

  4. I actually would like to know what Rakudo Perl will have in 2013. But it probably will be faster, better. I really would like Rakudo Perl to have STD.pm-style warnings that Niecza already has (like while interpreted as function call).

    1. For the 18 months I’ve been paying particularly close attention, the Rakudo team has been fairly good about adding to their roadmap, and following it, and admirably (or is it accidentally?) slow to remove an item unless it’s pretty solidly implemented:

      https://github.com/rakudo/rakudo/blob/nom/docs/ROADMAP

      Based on the rate of progress in these last 18 months, and subject to the still disconcerting bus number, I’d guess that 2013 will bring the only priority 1 item (“basic Perl 5 interop”), well over half the priority 2 items, a good portion of priority 3, and a bunch of stuff not in the roadmap.

      In particular, corresponding to your stated wishes:

      Compiler Performance/Portability Improvements (jnthn)
      2 ** finish up any remaining s/pir::/nqp::/
      2 ? re-organize Rakudo, build process, etc. for multi-backend
      3 ** Optimizing multis for `[+] 1..10` and `[<=] 1..10` etc.

      STD Convergence (needs more exploration)
      2 *** adopt STD's highwater error handling
      2 ** align error handling approach more with STDs
      2 *** more of STDs TTIAR error handling

      1. We still haven’t finished 2012 and jnthn has implemented (and thus removed from the roadmap) two of the three STD Convergence items listed above and knocked the remaining item (“more of STD’s TTIAR error handling”) down one notch in difficulty to just 2 stars.

        These changes in Rakudo have led to comments such as “exceptionally helpful perl6 error message”.

        (STD has had exceptionally helpful error handling for years, and Niecza has always used STD, so it too has had great error handling from the get go. But now Rakudo’s finally converging on STD’s approach, as has been the plan for many years.)

  5. I dream of a sleek Perl 6 running my high traffic database driven webapp. Realistically (from a business–not developer–perspective) maybe as soon as 2-ish years … which is not so much relative to the herculean decade plus effort.

Leave a reply to Mark Senn Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.