Update, Oct 2014: Concurrency in P6 has developed a long way since I wrote this post. This video briefly runs through the Functional Programming paradigm features that have been implemented, including Promises, before discussing the latest Object Oriented paradigm work, including Monitors, Actors, and Evject.


Thread and Promise prototypes in Perl 6.

Some background:

Evidently the time has come to fully develop concurrency and parallelism features in Perl 6.

The Perl 6 language design team led by Larry Wall has discussed concurrency and parallelism for over a decade. So every element of the P6 language has been considered in the light of concurrency and parallelism, from variable assignment on up. But that's just design.

There's also been implementation work done. However, Rakudo (the leading P6 compiler) has surfaced very little of this work (gather/take is about it) and while Niecza (another compiler) has long exposed continuations, coroutines, and threads, Niecza's author Stefan O'Rear basically stopped working on Niecza a year ago. (Imo this is good news; read on.)

Until recently the Rakudo compiler only worked on one backend, the Parrot VM. While it supports concurrency, Parrot's support has never been considered reliable enough by the Rakudo team for them to develop more of the concurrency features in Rakudo.

Recently the Rakudo team began porting it to work on the JVM. One of the primary motivations claimed was to unblock development of concurrency and parallelism features.

Starting at YAPC::NA 2013, at the start of June, Stefan O'Rear began working on the JVM port. In the last week or so he made JVM concurrency primitives available to NQP, which is what's needed to implement them in Rakudo. And thus, in the last few days, jnthn published an initial prototype. It already looks promising...


In reply to Thread and Promise prototypes in Rakudo by raiph

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.