This month’s Rakudo Star release – and what’s coming next

So, we made it – a Rakudo Star release based on the “nom” development branch has landed. It’s based on the compiler release moritz++ cut earlier this week, and pmichaud++, masak++ and myself have been involved in getting the Star-specific build and installation scripts in shape.

Getting to this release has been a lot of work; in many sense this is a revolution in Rakudo’s development rather than a small evolutionary step over what we had before. It’s taken a while (indeed, longer than I’d first hoped) and has been a lot of work – but it was worth it. Not just because of the many improvements that are in this release, but because of the enormous future potential that we now have.

Here’s some of the things I’m happiest about in the release.

  • The performance improvements in many areas. Yes, we’ve plenty of work to do here – but this is a solid step forward for a wide range of scripts, and in some cases an order of magnitude improvement.
  • That 6model – something I started designing a year and a half ago – has not only cleanly supported all of the things we needed to do in Rakudo, but also opened up so many other doors. For example, the new NativeCall module uses its representation polymorphism support to great effect.
  • Protoregexes doing real NFA-driven Longest Token Matching rather than the cheating version we had before that only operated on literals.
  • The optimizer, along with the various extra compile time error reporting it gives. This will be an important future area for Rakudo.
  • Initial native type support, and bigint semantics for the Int type.
  • The POD6 support, thanks to tadzik++’s Google Summer of Code grant in summer.

So, what’s next? Currently I’m working hard on getting true bounded serialization support in place. This should further improve BEGIN time support (including constructs that depend on BEGIN time), greatly cut down resource consumption during CORE.setting compilation (both time and memory) and give us faster startup. It’s hard to guess at figures for the improvement, but I’m expecting it to be a noticeable improvement in all of these areas. I’m aiming at getting this landed for the next Rakudo compiler release (which I expect us to do a Star release based on too), though largely it depends on whether I can get it working and stable enough in time; while some parts are a simple matter or programming, other parts are tricky.

That aside, we’ve already got various other new features in the pipeline; even since last weekend’s compiler release, there are multiple new regex-related things in place, moritz++ has continued with his typed exceptions work, we’re catching a couple more errors at compile time rather than letting them slip through until runtime, and there’s various other miscellaneous bug fixes. Also, masak++ is working on macros in a branch, and I’m optimistic that we’ll have some initial macro support in place by the next release also. Busy times! :-)

This entry was posted in Uncategorized. Bookmark the permalink.

6 Responses to This month’s Rakudo Star release – and what’s coming next

  1. babu says:

    How can i use this perl6?

  2. nmishin says:

    I like perl6, can anybody help me to build perl6 under win7?

  3. go_fire says:

    This program (first on “Using Perl6”):

    use v6;
    my $file = open ‘/home/gogo/perlsrc/scores’;
    my @names = $file.get.words;
    my %matches;
    my %sets;

    for $file.lines -> $line {

    my ($pairing, $result) = $line.split(‘ | ‘);
    my ($p1, $p2) = $pairing.words;
    my ($r1, $r2) = $result.split(‘:’);

    %sets{$p1} += $r1;
    %sets{$p2} += $r2;
    if $r1 > $r2 {
    %matches{$p1}++;
    } else {
    %matches{$p2}++;
    }
    }
    my @sorted = @names.sort({ %sets{$_} }).sort({ %matches{$_} }).reverse;

    for @sorted -> $n {
    say “$n has won %matches{$n} matches and %sets{$n} sets”;
    }

    Not working in Debian (2.6.32-5-686 #1 SMP Wed Jan 11 12:29:30 UTC 2012 i686 GNU/Linux; gcc version 4.4.5 (Debian 4.4.5-8); perl 5.10.1-17squeeze2). Processor up to 100% and noting. Program stop on: for $file.lines -> $line.

  4. go_fire says:

    In old Rakudo (2011.7) not a problem.

  5. Moritz says:

    go_fire, I can’t reproduce your hang here. I’ve tried it both the sample script from Using Perl 6 and from the script you posted here (though I had to adjust some quotes because the blog engine here turns them into “fancy” quotes). I’m a bit at a loss about how to help you if when I can’t reproduce the problem.

  6. go_fire says:

    Is it possible the CPU is?

    gogo@debian-2:~$ cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 6
    model : 13
    model name : Intel(R) Pentium(R) M processor 1.20GHz
    stepping : 8
    cpu MHz : 1200.000
    cache size : 2048 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 2
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up bts est tm2
    bogomips : 2394.30
    clflush size : 64
    cache_alignment : 64
    address sizes : 32 bits physical, 32 bits virtual
    power management:

    cat /etc/debian_version
    6.0.3

Leave a reply to go_fire Cancel reply

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