|Perl Monk, Perl Meditation|
Thread and Promise prototypes in Rakudoby raiph (Hermit)
|on Jul 15, 2013 at 23:15 UTC||Need Help??|
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.
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...