28

What is the current state of Perl 6, is it production-ready? Where do we stand right now? There are many programmers curious about the current progress of Perl 6.

There are also two other topics open on on reddit and http://perlmonks.org/?node_id=835419 about this.

jjmerelo
  • 22,578
  • 8
  • 40
  • 86
Cobalt
  • 289
  • 3
  • 3
  • My personal theory is that perl 6 will always be a kind of test bed for perl 5 features which will be backported through new versions of perl 5 and modules like Moose and so on. – Matthew Lock Jun 30 '14 at 04:44
  • 2
    I’m voting to close this question because it contains information that is *WILDLY* out of date. – Elizabeth Mattijsen Apr 26 '20 at 10:38
  • for the latest Raku (the new name for Perl 6) updates, check out the blog here https://planet.raku.org/ as of 2023 it's still being updated – Matthew Lock Apr 30 '23 at 04:54

4 Answers4

23

Firstly, and most importantly, follow the Planet Six news aggregator. Perl 6 weekly meetings and blogs from the lead developers and many members of the community are included, and it's a great way to keep up on the progress of Perl 6.

To get an idea of how Rakudo Perl, the leading Perl 6 implementation is doing, check out the Perl 6 Advent Calendar. Every day shows a different facet of Perl 6, and the extent to which it has been implemented right now by Rakudo.

Update (Mar 2012): perl6.org's feature comparison shows the implementation progress of both Rakudo and Niecza (a CLR-targeting compiler, e.g. .NET, Mono).


Perl 6, as a specification, is still undergoing constant refinement and refactoring. Some examples of where the spec is unclear: the object hierarchy, what should and should not be part of the core library, date handling, laziness, 'auto-threading' of junctions. But the bulk of the language has been finalised. The spec is very ambitious, and IMHO is one of the major reasons why Perl 6 has taken so long to get going.

In terms of implementation, the leading project is Rakudo Perl 6, built on top of the Parrot VM. There are perhaps a dozen dedicated developers and many more who are helping test, write libraries, code and documentation. Most development work is funded by grants from the Perl Foundation and community, so there is no reason to expect it to peter out.

Rakudo has plenty of bugs and plenty of missing functionality. It has only recently undergone a huge refactoring - the 'ng' branch. Browse any existing Perl 6 source and you'll find plenty of comments saying "Rakudobug" or "Rakudo doesn't yet implement this..."

Even so, this paints an unfair picture of Rakudo. The Perl 6 specification is ambitious to say the least. The language has such an insane number of features that it has taken implementations years of development to get to the level they are at today. Rakudo is certainly complete enough for people to have written text-based games, wikis and other web applications in, and it's getting better every day. Developers have written around 40,000 unit tests for Perl 6 so far, so it's easy to see improvements in the implementation (Rakudo currently passes ~30k tests, or 79% of the test-suite)

The first "usable" (stable) release of Rakudo is known as 'Rakudo Star'. It is currently planned for Q2 2010 (April-June). The general idea was to implement a large portion of Perl 6 - not the whole language, but a useful subset of it - and minimise bugs. As for production ready, Perl 6 has always had a release date of "Christmas". Perhaps this Christmas, more likely something else. It's going to be a long time before you can use the whole of Perl 6, bug-free, but we're at least going to see a stable release very soon, and hopefully the hype for Perl 6 will snowball from there once people discover that it's real.

If you are interested in Perl 6, you might consider getting involved in the community. From my experience it's a very friendly community (it almost creeps me out how nice everyone is, even on IRC). Install Rakudo, try to break it, file bugs. Write testcases. Write implementations for core functions, write modules. There's plenty to do!

rjh
  • 49,276
  • 4
  • 56
  • 63
  • 4
    @rjh - excellent detail. Heck, this post just might be the straw that tips me over into trying just what you suggested (installing Rakudo and trying to implement missing stuff) if I can free up some time this summer. +1 – DVK Apr 19 '10 at 14:34
  • This is December 2013 now. Any update? Is this a dead project? I just noticed ActiveState doesn't offer Perl 6 anymore. – Uri London Dec 26 '13 at 08:42
  • 1
    @Uri last I heard, Rakudo were moving away from Parrot as a primary backend because it's causing them a lot of problems, both with implementation difficulty and performance. (Although it has caught up with the .NET competitor, Niecza.) Efforts to remove the PIR code and port the NQP backend to the JVM are underway. Other than that, it's just a lot of work to finish the whole Perl 6 spec, and that'll take a really long time. They're still putting out monthly releases, so it's far from dead. – rjh Jan 06 '14 at 17:04
15

Note: Please check the date of the original answer. As of April 2020, this is no longer the case.

Perl 6 is not production ready using most common definitions of "producion ready" as per SO's own thread - the implementations are not stable and possibly lack full features of the specification.

Please see this SO answer for details on the status as of 2008. The language specification seems stable (at least as per brian d foy in the linked post) but the implementation is not there yet.

As for specific dates, as per this post on 04/08/2010, the first major release of the most far-ahead Perl 6 implementation - Rakudo (on Parrot VM) - named "Rakudo Star 1.0" is tentatively aimed at Q2 2010 (original plan was around April 2010 but was shifted due to personal circumstances involving lead developer).

Of course, YMMV - I have seen people use a LOT less stable code/projects in production (including what they themselves wrote) than Perl 6's current state. But I personally wouldn't even begin to dream about deploying Perl 6 until it's been widely released for a while.

However, please note a very important point: the above does not mean that Perl 6 is vaporware or that it should not be learned - it does sound like it's progressing well and therefore I personally intend to start digging into it (well, already have thanks to SO) ahead of time so I'm ready to use it when it's stabilized a bit.

In addition, I'd like to add that a large chunk of great Perl 6 functionality was back-ported to Perl 5 (in 5.10-5-12, and see Perl6:: modules), so the above point about learning Perl6 is extremely relevant even if you don't have immediate plans to deploy Perl 6 itself.

jjmerelo
  • 22,578
  • 8
  • 40
  • 86
DVK
  • 126,886
  • 32
  • 213
  • 327
  • 2
    thanks, because a lot of people involved with Perl6 tend to say "depends what your definition of production-ready is" which kind of bullshit because there's not much dissension about that ... it's kind-of clear what production-ready means – Cobalt Apr 19 '10 at 10:13
  • Yes, it's so clear. Perl 6 isn't production ready and DVK has seen much less stable code in production. – Quentin Apr 19 '10 at 11:14
  • 2
    @David - no contradiction at all. Something being in production doesn't qualify it as "production ready". Not according to my definition but definition voted as the accepted answer on SO. – DVK Apr 19 '10 at 11:35
  • None of those answers have more than two votes, hardly a ringing endorsement. – Quentin Apr 19 '10 at 11:39
  • @David - if you have a different definition of "production ready" (which is of course a bit subjective, hence my YMMV hedge), please cite it and indicate how Perl 6 relates to that. If you are disputing my assessment of the code that I have reviewed (and some, heck, written) that went into production and was WAY rawer/greener than current Rakudo seems to be, please indicate the basis of such a dispute. Thanks. – DVK Apr 19 '10 at 14:32
  • My point is just that there *are* different definitions of production ready, so it isn't all that clear cut, and accusing "a lot of people involved with Perl6" of talking "bullshit" is unfair as well as rude. – Quentin Apr 19 '10 at 14:39
  • 1
    @David - who specifically accused "a lot of people involved with Perl6" of talking "bullshit"? Either you're confusing me with someone else, or you're reading a context in my answer which is completely opposite from one I actually tried to convey. Also, you didn't provide your own definition backed up by, say, and example of a production (as per your definition) project implemented on Rakudo – DVK Apr 19 '10 at 15:00
  • @DVK — Cobalt did, in the first comment on this answer. – Quentin Apr 19 '10 at 15:10
  • @David - ok, I agree that this was rude, didn't recall that comment. – DVK Apr 19 '10 at 15:36
  • 1
    However, in the absence of specific proof - such as a big production (you can read that as "money ride on it") project stably and successfully implemented on Rakudo - stating "it depends on your definition of what is is" does sound entirely Clinton-esque; and had I gotten such an answer, I'd politely reply that it should not be done by the project team. That just turns people who actually DO care about such things as stability and uptime completely off; instead of welcoming them to help like "we are missing X, Y and Z, and appreciate help" would do. – DVK Apr 19 '10 at 15:37
  • By saying "depends on your definition" they are trying to highlight uses of Perl 6 outside of enterprise, for example open source projects, personal scripts, use in academic fields etc. – rjh Apr 19 '10 at 18:14
  • @rjh - are the first 2 really what majority of people would include in "ready for production" without any other context? I could be wrong but I would say no. "Ready for some use" is a lot less misleading. – DVK Apr 19 '10 at 18:22
  • BTW, I added my own somewhat rambling answer to the "production ready" question, hopefully this will somewhat clarify what I meant without creating over-long discussion thread in this question. – DVK Apr 19 '10 at 18:45
  • 1
    My own personal answer for "is Perl 6 production ready" would be "it will be when i can point my management to several examples of major projects stably running on it at big companies, with no major stream of bug reports and with a settled/finalized API and close to 100% test coverage". Because without all of these, the management will reject any requests by me to even remotely consider using Perl 6 in production. – DVK Apr 19 '10 at 18:49
  • @DVK - I think most modern languages fail your own personal definition of production ready. Bug reports are far more often associated with the quality of the code written than the compiler that executed said code. That said, I think I could make an argument against PHP on almost all grounds you cite, but would not say it's not production ready. Then again, your organization may have higher standards than that, and if so, I applaud you for it. It may be important to distinguish that certain subsets of an implementation may be considered production ready while others not. – kbenson Apr 19 '10 at 22:58
  • @kbenson - I agree with the last part (certain subsets of an implementation may be considered production ready while others not), but again, I'd love to hear which subsets of Perl6 fit that. And I mean "love" - i'm just looking for an excuse to finally try out Perl 6 which I was looking forward to for many years. – DVK Apr 20 '10 at 01:10
  • @DVK - Whatever is in Rakudo Star, which I admit I'm a bit hazy on, should quickly become stable if not already so at release. Indeed, the whole purpose of that release is to produce a stable subset of features that can be used without worry to get perl6 in use. It was due out this month, but the project lead had family health problems, so it's been pushed back (hopefully not far). The best I can find for a release date now is Q2. – kbenson Apr 20 '10 at 06:44
  • @kbenson: it was always planned for Q2 2010, just shifted from April to June. – rjh Apr 20 '10 at 11:14
  • "when i can point my management to several examples of major projects stably running on it at big companies" is something that is entirely out of the hands of Perl 6 developers. How can anyone possibly predict that? – Andy Lester Apr 20 '10 at 14:09
  • @Andy - that was meant as a litmus test for when I can agree that "Perl 6 is production ready" for my own use; and not as a "what is the deadline when it will be true?" question to the Perl 6 team. I fully agree with you that answering "and when will that happen?" is not really possible, at least at this early point – DVK Apr 20 '10 at 14:14
10

Perl 6 was just officially released a few days ago, this Christmas 2015. Two very important things were released actually.

First and most importantly the official and now stable language specification, Perl 6.c (c for Christmas), was released. The specification is a suite of over 120,000 tests known as the Perl 6 Roast (Repository of All Spec Tests) which can be found on Github under perl6/roast.

Second, a new version of an implementation of Perl 6, known as Rakudo, was released. Rakudo is a Perl 6 compiler running on the MoarVM and JVM virtual machines. This new version of Rakudo targets the 6.c language specification and passes all tests on several major architectures. More information about the release can be found at on Github at rakudo/rakudo and in particular in the 2015.12 announcement under rakudo/rakudo/blob/nom/docs/announce/2015.12.md.

Rakudo is fairly straightforward to install, I personally recommend using rakudobrew which is a Rakudo installation manager. Follow the instructions here https://github.com/tadzik/rakudobrew. In addition to installing Rakudo and MoarVM it can also install Panda which is a Perl 6 module installer.

As a long-time Perl 5 and Python software developer I have to say Perl 6 looks to be an extremely powerful and deep language that solves many of the problems I find with existing dynamic languages. To take directly from the Rakudo announcement:

  • Retains the core values of Perl: expressiveness, getting the job done, taking influences from natural language, and pushing the boundaries of language design.
  • Has clean, modern syntax, rooted in familiar constructs but revisiting and revising the things that needed it.
  • Is truly multi-paradigm, enabling elegant object-oriented, functional, procedural, and concurrent programming
  • Serves as a great glue language, allowing for easy calling of C/C++ (using NativeCall) and staying compatible with Perl 5 (via Inline::Perl5).
  • Provides composable constructs for working with asynchronous data and parallel computations
  • Dramatically reforms and sets a new standard in regex syntax, which scales up to full grammars, powerful enough to parse Perl 6 itself
  • Has outstanding Unicode support, with strings working at grapheme level
  • Values lexical scoping and encapsulation, enabling easy refactoring
  • Is extensible through meta-object programming, user-defined operators, and traits

All the information you want to know about Perl 6 can be found here http://perl6.org/.

hermidalc
  • 498
  • 4
  • 12
2

Interesting blog posted today by Leon Timmermans about some of the differences coming out in Perl 6.
Why Perl 6 Is Different Not much talk about when those differences will come out.

Stedy
  • 7,359
  • 14
  • 57
  • 77