Skip to content

Instantly share code, notes, and snippets.

@moritz
Created November 30, 2014 12:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moritz/7df64717d8dd772a87a0 to your computer and use it in GitHub Desktop.
Save moritz/7df64717d8dd772a87a0 to your computer and use it in GitHub Desktop.
The State of Perl 6 in 2014 - preview for the advent calendar
=head1 The State of Perl 6 in 2014
Welcome to the 7th annual edition of the Perl 6 advent calendar, code name I<2014>.
In 2014, L<MoarVM|http://moarvm.org/> has become the de-factor standard
backend for the L<Rakudo Perl 6 compiler|http://rakudo.org/>. Parrot and JVM
are still supported as a backend, but MoarVM provides much lower memory usage,
faster startup time, and is usually significantly faster at runtime too.
Rakudo on MoarVM also has concurrency support, including L<reactive programming|http://jnthn.net/papers/2014-nlpw-reactive.pdf>.
L<Much work has been done|http://jnthn.net/papers/2014-yapceu-performance.pdf>
to improve performance, some in MoarVM, some in Rakudo and NQP. Maybe most
notably is the JIT compiler for MoarVM that came out of the
L<http://brrt-to-the-future.blogspot.nl/|Google Summer of Code project by Bart
Wiegmans>.
Another Google Summer of Code project by L<Filip Sergot|http://filip.sergot.pl/> brought us L<HTTP::UserAgent|https://github.com/sergot/http-useragent/>, a versatile HTTP client library with SSL/TLS support.
During the Austrian Perl Workshop in fall 2014, many of the Perl 6 and Rakudo core contributors met, and identified three roadblocks for a "final" Perl 6.0 release: GLR, NFG and NSA.
Here I<GLR> stands for the I<Grand List Refactoring>, a plan to make the list-y types more transparent, list iteration faster, and more transparent when a list will flatten.
I<NFG> is the I<Normal Form Grapheme>, a plan for implementing grapheme-based string indexing.
Finally I<NSA> stands for I<Natively Shaped Arrays>, a flexible feature for declaring typed, potentially multi-dimensional arrays, potentially with pre-defined dimensions. It will make memory-efficient matrix storage and operations possible, for example.
With these three blockers defined, Larry Wall submitted a talk to FOSDEM called L<Get ready to party!|https://fosdem.org/2015/schedule/event/get_ready_to_party/>, predicting that 2015 will be the year that Perl 6 will get a production release.
Sorry, this was meant to become a summary of the current state of Perl 6, and it derailed into an outlook. To allow me to keep the "state" in the title, let me just tell you that Rakudo on the MoarVM is quite fun to work with. It's fast enough for small (and sometimes even mid-sized) tasks, module installation works fairly reliably, and the range of available modules has also increased.
Also I feel that any attempt to summarize the progress of this awesome community is bound to be very incomplete; I hope that my fellow Perl 6 hackers will in some details in the upcoming 23 posts.
Have a nice pre-Christmas time, and enjoy the show!
@smls
Copy link

smls commented Nov 30, 2014

I know you're already linking to jnthtn's performance talk, but I think it might make sense to actually go into a little more detail on the current Rakudo+MoarVM performance. After all, answers to the two questions "How complete is the language design?" and "How fast is the implementation?" are the top things that readers will expect when they see the title "The State of Perl 6".

Maybe instead of the half-sentence "It's fast enough for small (and sometimes even mid-sized) tasks", have a bullet list like:

  • Perl 6's built-in support for rational number / complex number / big integer arithmetic tends to be faster than that provided by the Math::BigRat/Math::Complex/Math::BigInt Perl 5 modules.
  • The performance overhead of classes & objects in Rakudo+MoarVM, is comparable to Perl 5's Moose.
  • In some micro-benchmarks (such as empty while loops counting up native integers), Rakudo+MoarVM performance already achieves parity with or exceeds Perl 5.
  • However, several important things (like arrays and string handling) are still very slow in Rakudo. We're aware of the reasons for that, and hope to improve those areas a lot in 2015.
  • All in all, Rakudo+MoarVM is already fast enough for many small (and sometimes even mid-sized) tasks.

@MattOates
Copy link

de-factor standard => de facto standard

potentially multi-dimensional arrays, potentially with pre-defined dimensions => potentially multi-dimensional arrays with pre-defined dimensions

@colomon
Copy link

colomon commented Nov 30, 2014

"Parrot and JVM are still supported as a backend" => Parrot and JVM are still supported backends

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment