2017.14 The IO Front Advances

Zoffix Znet really hit the ground running this week! After announcing his IO plan, publishing his progress report for the month of March and waiting for the end of the comment period, he published the IO Upgrade Information, and after some late insights, IO Upgrade Information, Part 2, which contain an up-to-date account how things are progressing. And there’s of course the list of IO issues he’s working on. If you’re interested in these developments, please check these out. And contact Zoffix with any feedback, the sooner the better!

Improving the Robustness of Unicode Support

Samantha McVey put up a grant proposal covering the following deliverables:

  • Programmatic determination of Unicode names.
  • Implement Unicode collation algorithm.
  • Properly support grapheme breaking in Unicode 9.0 and beyond.
  • Improvements on Unicode database generation.
  • Documentation of deficits in the support.

Check it out and give her your opinion!

Camelia in the Wild

A new section in the Perl 6 weekly where spottings of Camelia in the wild can be reported. This week’s spotting was at a concert of ARW in Brussels.

Try out Perl 6 online

If you would like to try out some Perl 6 code without wanting to install Rakudo, you can now also go to https://tio.run/nexus/perl6! Just type in your code, click the play button and see the result! Too bad it currently runs the 2017.01 release, which is now over 2 months old! Still, if you just want to test some code, that is pretty recent and beats many packages provided by some distributions.

NativeCall Introduction

Naoum Hankache‘s excellent Perl 6 Introduction now has a chapter introducing the NativeCall interface (explaining how you can easily call code from external libraries from your Perl 6 source code). For now that chapter is available in English only, but I have no doubt the other languages (Bulgarian, Chinese, Dutch, French, German, Japanese, Portuguese and Spanish) will follow soon!

Coverage reports

The Rakudo Perl 6 core has up-to-date coverage reports again. And now we also have coverage reports for Moar, thanks to Samantha McVey. So if you’re looking to add some tests to get better coverage, that’s where you can find which parts of the system are not tested yet!

Other Core Developments

  • Jan-Olof Hendig fixed a problem with the total number of tests run using the harness6 (aka the Perl 6 version of prove) while doing a spectest or stresstest. Which brings us one step closer to running spectest using Perl 6 by default (instead of Perl 5).
  • Fernando Correa fixed a problem with multi-dimensional hash slices (such as %h{"foo","bar"; "baz"}.
  • Daniel Green and Timo Paulssen fixed a problem with unsigned native ints that at some VM level, were not marked as unsigned.
  • Samantha McVey improved the speed m:i/ / regex matching between 1.8x and 3.3x (depending on not finding a match / finding a match at the beginning).
  • Jonathan Worthington improved error reporting on Parameter binding, allowing for a slightly better error message that includes the non-matching value and, where the constraint is a named subset type, that type name.
  • Apart from all of the work on IO, Zoffix also fixed a problem with matching in loops and $/ that affected ~~ as well as .subst, .subst-mutate, Grammar.parse and Grammar.parsefile.
  • Elizabeth Mattijsen made a lot of set operators, as well as coercions to Set(Hash), Bag(Hash) or Mix(Hash) from 30% to 25x faster, mostly by avoiding (where possible) potentially expensive calls to .WHICH. She also made sure that set(), bag() and mix() (aka the empty immutable Set, Bag and Mix) only exist in memory once. Finally, she also improved TAI / epoch conversions, e.g. making now about 20% faster.
  • And as usual many other smaller fixes and improvements.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

  • Paul Bennett mentioned STOKE, an interesting approach to optimisation:

    The ACM has a paper on a new compiler optimization called STOKE. It calls itself “stochastic”, but they seem to mean something other than “random” … more like “capable of working outside the explicit order of operations as given”. It beats gcc -O3 by a significant margin.

  • Ecosystem Additions

    Winding Down

    Wow, what a busy week again. Please check in again next week for more Perl 6 news!

    Got something to note?