2017.23 Fulfilled TAP

Zoffix Znet published his IO Grant Completion Report, signalling the end of his extensive work on the IO subsystem in Rakudo Perl 6. Apart from writing a lot of code and tests, he also provided a lot of documentation. Most notably the Input/Output – The Definitive Guide (Correctly use Perl 6 IO), which should be a good read for newbies and hard-core developers alike. And he also added meta-introspection tools such as the Map of Perl 6 Routines. Talk about value for money!

TAP.pm6 no longer core

The Perl 6 implementation of the Test Anything Protocol (TAP), originally written by Leon Timmermans, has been moved out of core by Zoffix Znet. This will allow updating the TAP module without needing to update Rakudo. It will be automatically installed/updated whenever you do a spectest/stresstest using the t/harness6 (activated by setting environment variable HARNESS_TYPE=6).

Passing file handles between threads

Jonathan Worthington refactored NQP‘s IO to have a file handle object, which then uses the VM-backed decoder, just like the Rakudo file handles now do. He also eliminated the char-level IO ops from MoarVM, thus finishing the work to decouple IO and encodings. Finally, he reworked synchronous file IO in MoarVM to no longer use libuv: this now makes it possible to pass file handles (such as $*IN) between threads, which is a pre-requisite for many GUI-type applications that want to do things with files in the background.

Other Core Developments

  • Daniel Green awesomified the “Too many positionals” error by also showing the name of the routine receiving the incorrect number of positional parameters. But more importantly, he made sure that if an attempt is made to call a non-existing method, it will now suggest similarly named methods, just like it was already when calling a non-existing subroutine.
  • Tom Browder made sure that the POD6 specification can actually be rendered without warnings.
  • Samantha McVey made sure that the REPL no longer suggests installing rlwrap when it is actually installed already. Less visible was her work on the Unicode grant, which she describes in her first grant update.
  • Julien Simonet awesomified the error when no candidates are found when calling a subroutine / method.
  • Zoffix Znet also fixed an infiniloop with deepmap. He speeded up access to $*KERNEL functionality and fixed various race conditions with Proc::Async.kill. Finally he made smartmatching with allomorphs more sane and made sure dynamic variables are not lost to Promise.then blocks.
  • Elizabeth Mattijsen made sure that a lone bail-out in a test-file will actually stop testing for the right reason. She also fixed some smaller issues with the (|) (AKA set union) operator.
  • And many other smaller fixes and improvements.

Other Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Meanwhile on FaceBook

Jeffrey Goff:

Okay, here’s a radical notion. Perl 6 can now start to compile to JS. I don’t know how far along that is, but one of the reasons I can see for JS’ popularity is that it’s by now end to end. Most of the tools are built around a compiler of sorts. Maybe it’s time to try beating the Node people at their own game and figure out a wedge strategy to market Perl 6 as another alternative to React/Angular.

Ecosystem Additions

Winding Down

The past week yours truly has been busy with a lot of things other than Perl 6. So it was a bit of a surprise to see the amount of activity this week. Wow! Looking forward to reporting happenings in the Perl 6 world again. So please check in again next week!

Got something to note?