The Raku Programming Language Collect, Conserve and Remaster Project
Originally published on 2014-01-08 by Jonathan Worthington.
Almost exactly a month ago, I reported that Rakudo on MoarVM could do “Hello, world”. Despite the general slow-down as folks took Christmas and New Year breaks (myself very much included), progress has been very good. Here are the key things to know:
The work has been taking place in the moar-support branch. We didn’t merge it yet, but that should happen within the next week or so.
MoarVM itself has been improving steadily, also. Here are a few of the features that have landed in the last weeks:
However, another extremely important bit of work has been taking place that is focused on stability. Nicholas Clark has been conducting garbage collection torture tests, by now down to forcing a GC run every single object allocation and using memory protection to catch illegal accesses to moved objects. Most of the things we call GC bugs are not actually inside the garbage collector implementation, but rather are other places in the codebase where mistakes have been made that break invariants that must be upheld for the GC to do its job correctly. I’ve not been counting, but I’d estimate that a bit over a dozen bugs have been turned up by this work so far – bugs that would have been a real pain to find if they had just happened to crop up some weeks, months or years down the line in some user’s code. At this point, NQP can be built and tested under the toughest torture test that exists so far without showing any issues. The Rakudo build is the current torture subject. I’m incredibly happy this work is taking place; it means that by the time Rakudo on MoarVM starts getting used more widely, we can be reasonably confident that users are unlikely to run into GC-related issues.
So, what’s the path from here? Here’s what I’m hoping for in the coming month:
I’ll be back with some updates in a couple of weeks, to let you know how we’re getting on. :-)