Changes during Week 9 of 2014

Last week didn’t pack quite as many individual changes, but there are a couple really nice bugfixes in there. Let’s dig in!

  • Fewer methods on List will force eager evaluation of said list (some of them used List.end indirectly, which forced eagerness erroneously)
  • The combinations method of List will now also contain the empty List in the full Powerset.
  • The X and Z metaops (“Cross” – the cartesian product – and “Zip” respectively) will now correctly refrain from flattening itemized things, such as Arrays.
  • The reduction metaoperator now recognizes operators with list infix precedence like the X and Z metaops. This makes things like [Z+] work as expected on lists of lists.
  • Unary hyperops will now only distribute among the outermost level of nested list structures. Additionally, there are now “deepmap” and “duckmap” methods in addition to “flatmap”. “duckmap” first tries to apply the operator directly to any object in the list. If that fails, it’ll fall back to descending into substructures.
  • A whole bunch of spectest failures on Rakudo MoarVM that related to unicode properties have been fixed and we’ve now passed Rakudo Parrot in number of passing test cases. Rakudo Parrot is now at approximately 99.8%, Rakudo Moar is at 99.83% and Rakudo JVM is still the baseline of 100% against which we compare. As soon as the moar-conc branches get merged into their respective master branches, we expect the number of spectest passes to go up yet another bit.
  • On the topic of Rakudo MoarVM: the “moar-support” branch of panda has landed and you can now install modules for Rakudo MoarVM using panda. Unfortunately there is at least one known pre-compilation bug that prevents URI among others to be installed. You can install panda for MoarVM by running the “bootstrap.pl” or “rebootstrap.pl” scripts with perl6-m.
  • On the topic of module installation, FROGGS has been working hard on pushing the “eleven” branches forwards. Those aim to implement the much improved module installation, versioning and loading handling as specified in Synopsis S11.
  • I’ve built a fast path into the “string flattening” routine of MoarVM, that causes string concatenation, joining and repetition to become quite a bit faster. Ideally, the flattening will be gone completely soon, but the speed boost is nice to have until then. These operations still suffer from very bad asymptotical behavior.
  • Mouq and lue have been continuing their work on Pod6 and documentation.
  • Mouq also added shorthands @<foo> for @($<foo>) and %<foo> for %($<foo>) and @1 for @($1) as well as %1 for %($1). These are now useful, since $<foo> will – just like the sigil suggests – be itemized.
  • raydiak and smls have been spending time prettying up the style of the rakudo documentation website some more.

An interesting thing to point out is that the first 6 items on this list have been done by TimToady, who has left his self-imposed exile from the implementor’s side of Perl 6. Jnthn didn’t have much time during the week, so I have no big achievements to report for the multithreading support on MoarVM.

Got something to note?