Changes since release 2014.02

Even though the Rakudo compiler release 2014.02 was just last Thursday, there have already been a few interesting changes.

  • for-loops no longer eagerly gobble up all of the list you pass to it before starting to run. This makes for loops properly lazy in all regards.
  • in a set of branches called “moar-conc”, jnthn and JimmyZ and I have been abstracting away the JVM specific code from the concurrency classes and partially implemented the corresponding things on MoarVM. Threads, reentrant mutexes, and blocking queues are available already. ThreadPoolScheduler works, but is currently lacking its time-based scheduling functionality. The next step towards having “start” and “await” work is the Promise class itself.
  • Mouq and lue have been working on improving Pod6 support both in Rakudo’s parser and Pod::To::HTML. Among other things, lue started work on a POD to Pod6 converter that will at some point convert all the synopses to Pod6 – at least as an experiment.
  • Mouq has also contributed a bunch of documentation to, namely IO::FileTestable, IO::Handle, Mix, MixHash, Mixy, QuantHash, Set, SetHash, and Setty. moritz started the regexes reference document.
  • Coke has triaged a whole bunch of bugs in RT. There are now a bunch of tests tagged “testneeded”, which is a good starting point to get into Perl 6 development. We are aware that you are likely to receive a warning about a possible Cross-Site Request Forgery resulting from this Link. We are looking for a sensible solution to this, but as long as the warning is about “A malicious attacker may be trying to modify or access a search on your behalf.”, you can use the link “click here to resume your request” to get to the search results.

Raiph has pointed out, that there are also IRC summaries of #perl6 and #moarvm. Select a day from the list and click “summary” to find it. Usually the summary for a day is available by the next day. Another thing to look at for finding out what Perl 6ers are up to would be the Perl realm on There are also Perl5ers there, but you can somewhat easily tell which quests belong to Perl 6 and which do to Perl5.

What’s cooking?

I’ve been distracted over the Weekend, so I didn’t pick up too many hints on what our community members are up to right now, and the freenode netsplits haven’t been helping either.

One thing that I did hear is that jnthn wants to have a look at NativeCall on MoarVM soon.

Additionally, now that the JVM has NativeCall, we are going to be working on the Rakudo * infrastructure to support multiple backends properly. It’s likely, that Rakudo * 2014.03 will be available with Rakudo-JVM. It’s not quite as likely, but still possible that Rakudo * MoarVM will arrive in the same month.

Things you could do

Not only are there now a bunch of “testneeded” bugs in RT right now (see above), but a friend told me about JVM’s “SwitchPoint” functionality, which could be used to strongly hint to the JVM JIT that all the instanceof usages in are very likely to succeed and very unlikely to fail. Investigating whether or not this will give a noticable performance improvement and then actually implementing it sanely across the whole file would be a nice beginner’s project.

Another thing that’d make a decent beginner’s project would be to come up with some sane benchmarks to contribute to the perl6-bench project. It would be enough to implement the benchmarks in one of NQP or Perl 6, but if you want to port it to Perl5 as well, that would be nice. Making sure the richards benchmark works properly on nqp-moar and porting it to Perl 6 and/or Perl5 would be much appreciated.

Nobody has yet signed up as the release manager for this month’s Rakudo * release, so maybe you’d like to help? The whole process is described step-by-step with mostly copy-paste-able code snippets in that same document, and the people of #perl6 would be eager to answer any questions you come up with.

Something somewhat easier to do is to start a test suite for numeric formatting – things like floats and rats in combination with “say”, “print” and “printf”, as well as the .fmt method. Optionally, you can also fix the bugs in Rakudo, NQP, or MoarVM that you find. An approach that automatically generates either the test file or individual tests may be a good way to tackle this project.


4 thoughts on “Changes since release 2014.02

  1. Hey thanks for the update. Regarding NativeCall, that’s for invoking C/C++ stuff right? I was just wondering if there is any ongoing work making native Java classes more transparently accessible? I’ve tried a few times to use Java classes, and while it’s exciting it was a giant PITA, and I’ve been really looking forward to making that experience more seamless.

    • Hey Augustus.

      NativeCall can only do C, we don’t have anything yet to work with the name mangling rules that the different compilers have.

      For using Java classes, there’s actually use Foo::Bar::Baz:from to use the Foo.Bar.Baz class in your Perl 6 code, but I haven’t worked with that a lot yet.

      I have a bit of code to reduce the PITAness of JVM interop by generating dispatcher methods automatically if all candidates differ by arity, but I’ven’t polished it sufficiently yet. If you’re interested in that, find me on #perl6 and I’ll try to bring you up to speed on that!

      • Ah yes, good ol Name Mangling. Causing interop hassles since 1995! Hmm probably before then but people didn’t think about interop so much back then… On the Java stuff, you helped me with it a little bit in the past, and I got some stuff working, but the guess-and-check factor was driving me nuts.

        There are lots of p6 things I want to play with, but the Java interop would give me a realistic shot using p6 for day-job type work, and I figure that’s true for others as well. I wasn’t planning to work directly on the interop myself, but if I can realistically make a difference I’m happy to look into it. In order to use it for day-job it has to be really seamless. The goal (for me) is to be able to make servlets etc and be able to deploy onto Tomcat etc. Ideally, the entire web app would be written in p6, but I’m not sure if it’s realistic to extend Java classes in p6. Making some kind of Java skeleton that calls p6 helper classes would be ugly but could work.

Got something to note?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s