2016.43 Shining Star

This week saw the release of Rakudo Star 2016.10, the latest and greatest version of Rakudo Perl 6 for the end-user. Thanks again to Steve Mynott for making this happen! One should also note that after each Rakudo compiler release, Claudio Ramirez makes deb and rpm packages available to the general public.

Performance of Perl 6 string operations over the last year

Cygx created a nice overview of how the performance of string matching has evolved over the past year. The trend is definitely positive, but there is still a lot of work to do!

London Perl Workshop

Neil Bowers points out in a nice blog post that this is the moment for you to submit your Perl 6 presentation for the London Perl Workshop on the 3rd of December. Even if it would be the very first time in your life you would give a presentation!

The Perl 6 Job Market

Julie Bort describes in an interesting article (reddit comments) how being an experienced Perl programmer should ensure you a good paycheck. Combine this with the O’Reilly’s 2016 European Software Development Salary Survey that shows that being proficient in either Perl 5 or Perl 6 gives you an advantage of +$2,636 on a yearly basis (page 28). Interesting stuff, although you need to register before getting the actual report. Mind you, these are statistics, which may or may not apply to you personally.

Incompatible Changes

While Elizabeth Mattijsen worked on optimizing Str.match, it became clear that the :nth adverb handling had some issues. In light of this TimToady indicated how he would like to see it. Basically, :nth will always return as many matches as it can, and non-monotonically increasing indexes (such as :nth(1,4,3,5) will result in an exception being thrown (instead of being silently ignored). This is now implemented.

Other Core Developments

  • This week, Zoffix Znet looked at a lot of trigonomic edge cases and how they behave in Rakudo Perl 6. So now atanh(1) returns Inf instead of throwing an exception, and ∞ ≅ ∞ returns True instead of False (to name but a few things he worked on). He also fixed the behaviour of Test.pm‘s is-approx to be more like the old (and deprecated) is_approx test function. Finally, he fixed an issue with SetHash, BagHash and MixHash type objects not correctly autovivifying.
  • Jonathan Worthington fixed a MoarVM crash in callframe(), a problem when using code blocks in grammars running in multi-threaded code and a missing close in IO::Path.slurp.
  • Jimmy Zhuo fixed a recently introduced bug with mkdir() on Windows.
  • Elizabeth Mattijsen introduced support for 3 new Iterator methods: skip-one, skip-at-least and skip-at-least-pull-one. She also finally committed the refactoring of Str.match, which resulted in speed increases of 1.2x to 14x, depending on the mix of named variables given. This also made Str.comb(Regex) about 7x faster.
  • And many other smaller fixes and ameliorations.

Blog Posts

Only one left that wasn’t already mentioned this week.

Ecosystem Additions

Only one this week also. I guess everybody is working on Pull Requests for the Hacktoberfest!

Winding Down

An interesting week again with a lot of goodies. And don’t forget, there’s only one week left in October, so be sure to submit your Pull Requests for the HacktoberFest!

2016.42 Release Time

Welcome back! The answer, in case you wondered, is of course 42:
$ perl6 -e 'say "Life, the Universe and Everything".WHY'
See WHY for more information.


Zoffix Znet and his robobuddies released yet another Rakudo Compiler Release: 2016.10. Steve Mynott took it upon himself to create yet another Rakudo Star release (candidate for now) from this compiler release. Please test this release candidate!

Core Developments

A rather quiet week just before the release. The items marked * did not make it in this month’s release, so will be found in next month’s release.

  • Jonathan Worthington continued his work on the Unicode encoding/decoding re-factor, now allowing for Proc::Async to choose the encodings of the input and output handles. He also fixed a problem with a too eager optimization of .return.
  • Zoffix Znet, among many other things, fixed a number of Mix and Bag related coercers.
  • Tobias Leich fixed a problem with .roll on MoarVM with values larger than 2**32, which turned out to be a problem in the underlying libtommath, which got fixed upstream*.

Blog Posts

Ecosystem Additions

Quite a nice crop this week!

Winding Down

Brought to you from OSCON Europe in London, UK. See you again next week!

2016.41 The Answer Is Near

Next week, everything will become clear. Otherwise, the past week felt like a slow week. I guess I should stop playing debate-bingo.

Core developments

  • Zoffix Znet made the Exception that is thrown when no matching candidate is found in a multi-dispatch, MMA (Much More Awesome). He also fixed many other errors.
  • Elizabeth Mattijsen made dir() about 20% faster. She also made use lib 'dir' more than 20x faster, which is especially important if the 'dir' is actually a large directory structure. Finally, she also fixed an easter egg.
  • Dominique Dumont has done a lot of work creating Debian packages of Rakudo Perl 6 and its dependencies.
  • cygx made sure that Enums will smartmatch correctly with the roles that they do.
  • Christian Bartolomäus and Pepe Schwarz continued their work on fixing stuff on the JVM backend.
  • Tobias Leich fixed many problems with NativeCall, amongst one that now allows the use of NativeCall on the Raspberry Pi.
  • Daniel Green worked on replacing low-level BOOTSTRAPATTRs by more high-level Attributes to allow for better manipulexity.

Blog Posts

Ecosystem Additions

Only 3 this week 😦

Winding Down

As I said, a slow week. This coming weekend we will see another release of Rakudo Perl 6 again. With a ChangeLog of 58 items already, it’s looking up to be a nice one again! And of course, don’t forget to work on your Pull Requests for the Hacktoberfest!

2016.40 Pull up to the Hacktoberfest

Autumn is upon us. And you’re in desperate need of a new T-shirt. Look no further, but get yourself into the Hacktoberfest! The only thing you need to do is to submit four Pull Requests to win a free T-shirt. Zoffix Znet has taken the liberty of marking quite a few Perl 6 related issues on Github that will allow you to quite easily get your T-shirt, doing interesting Perl 6 related stuff. But before you start on that, please read the rest of this Perl 6 Weekly first! Or read brian d foy‘s blog post about his experience with the Hacktoberfest (reddit comments).

Cluj.PM meets MST on 3 Nov ’16

The Cluj.pm people are at it again. Be sure to submit your Perl 6 talks and visit lovely Cluj once again, especially if you didn’t get enough of it at the YAPC::Europe this year.

London Perl Workshop on 3 Dec ’16

And let’s not forget the London Perl Workshop exactly one month later. And be sure to submit your Perl 6 talks here as well!

Core Developments

  • Christian Bartolomäus has continued to get the JVM backend in better shape.
  • Jonathan Worthington has added basic Unicode 9 support for the MoarVM backend. He also fixed signature cases such as -> |c where { c }.
  • Daniel Green made sure that multiple *s produce an error when they are in a double closure.
  • Pepe Schwarz has fixed many NativeCall issues on the JVM backend.
  • Last, but not least, Zoffix Znet has been very busy fixing many, many smaller bugs and improving error messages and generally add tests to get better coverage.

Blog Posts

A nice crop of blog posts this week!

September Documentation Efforts

Wenzel P. P. Peppmeyer contributed this report about the 155 commits that were done in the Perl 6 documentation repository:

  • Explain why smartmatching against exception categories work.
  • Changed references to deprecated Order::Increase and Order::Decrease to Order::Less and Order::More.
  • Show how a LEAVE can be used in conjunction with Channel.close.
  • Document the trap of ~~ in conjunction with .method-name.
  • Document CALL-ME.
  • Clarify what arguments are defined in what where-clause.
  • Document :st, :nd, :rd, and :th adverbs on .subst.
  • Document Code.of.
  • Document Hash.categorize-list and Hash.classify-list.
  • Show anonymous subsets.
  • Document class WrapHandle.
  • Add documentation for Range.reverse.
  • Document that role arguments can have constraints.
  • Document Whatever|Callable argument forms of .splice.
  • Document subroutine take-rw.
  • Add documentation for method Mu.take.
  • Correct and expand the documentation of ords.
  • Changed =~= operator example to drive home the fact that the =~= operator is not arithmetically symmetrical (doesn’t do ± Δ).
  • Clarify argumentless .pick/.roll behaviour.
  • Added documentation on function return types.
  • Document .split(@delimiters) form.
  • Indicate types of values given by :v|:p in .split.
  • Added documentation of dynamic variable $*TOLERANCE.
  • Added documentation for the :close adverb in .slurp-rest.
  • Add :123abc form to Pair description.

Ecosystem Additions

Not too many new modules this week, but some interesting ones nonetheless!

Winding down

Sometimes serendipity will let SMBC post an applicable cartoon on the day of the Perl 6 Weekly’s release. Hope that’s a good way to wind down this week. See you again next week!

2016.39 Keys To Cover Moar Tests

“Key” appears to be the keyword of the week. gfldex has several blog posts about it while Zoffix Znet has been doing a lot of work on getting test coverage completed by using the new code coverage reports available for MoarVM. This has resulted in about 200 more spectest tests in the past week. Way to go!

Core Developments

  • Pepe Schwarz has been busy fixing many, many JVM backend related issues.
  • Jonathan Worthington made it possible to use native attributes for binding in a signature (typically submethod BUILD(:$!a) { ... } where the attribute is defined as has int $!a).
  • Elizabeth Mattijsen made it possible to use an Enum as a shape in a (native) array declaration, such as my @a[Bool], as suggested by gfldex++‘s blogpost. Relatedly, she also added a .^elems method on Enums.
  • Zoffix Znet fixed a number of issues with Hash|Baggy.classify|categorize-list and improved the code on the fly as well.
  • Stefan Seifert fixed an issue which would throw a GLOBAL symbols clash when re-compiling because of a repo change.
  • Jan-Olof Hendig made sure that duckmap no longer recurses indefinitely in some situations.
  • And of course many other smaller bug fixes, efficiency and error reporting improvements.

Blog Posts

Quite a lot this week!

Ecosystem Additions

Not too many this week.

Winding Down

The end of the Indian summer is now in sight, at least in Western Europe. Hope everybody will be able to break free from the lethargy it may have caused.

2016.38 We Are The Robots

This weekend saw the first fully automated release of the Rakudo Perl 6 compiler, version 2016.09. Thanks to Zoffix Znet for teaching the robots how to do this.

Core Developments

Most of the past week’s changes made it into the compiler release!

  • Jan-Olof Hendig fixed an issue with adverbs not working on Cool.trans.
  • Jonathan Worthington fixed a memory leak involving EVAL and a multi-dispatch cache unbounded growth bug involving calls with many named arguments.
  • Daniel Green made sure unicode digits can now be used with Match variables (), quote pairs (), negative numbers (), and radix bases (:۳("22")).
  • Zoffix Znet fixed , ???, and !!! yadas not working to stub classes. He also fixed an issue with .tree not calling the correct candidate.
  • Rob Hoelz fixed tab-completion issues with non-identifiers in the REPL. He also made sure that LEFT/RIGHT DOUBLE PARENTHESIS characters can now be used with q and other quoting constructs.
  • Timo Paulssen fixed an issue when NativeCall structures were set up concurrently and an issue in the optimizer with unhandled Failures.
  • Stefan Seifert has worked a lot on Inline::Perl5 making some benchmarks about 2x as fast.
  • Elizabeth Mattijsen made Blob/Buf.reverse about 1.5x as fast, auto-threading (calling a sub with a junction as a parameter) about 10% faster, and List.reverse about 5% faster. She also fixed an issue with .first and junctions.
  • And many others smaller fixes, better error messages and optimizations.

Blog Posts

Ecosystem Additions

Winding Down

That’s it again for this week. Please tune in again next week!

2016.37 Warmen Up Das YouTuben!

This week saw the uploading of quite some Perl 6 related videos. From the YAPC::Europe:

And from the Alpine Perl Workshop (all English spoken unless otherwise indicated):

And some stragglers from the German Perl Workshop that also got uploaded last week:

Further Funding of Jonathan Worthington

After Jonathan Worthington delivered his Rakudo Performance and Reliability Grant Progress Report, he has asked for an extension of the grant from the Perl 6 Core Development Fund, for another 200 hours of work. Yours truly fully supports this idea, as apparently do many other from the looks of the comments🙂 Please feel free to add your comment!

Core Developments

  • Stefan Seifert provided many improvements in pre-compilation and module loading, making loading of modules a lot faster. A fact that also shows up in the infamous test-t benchmark (now below 7 seconds, down from 257 seconds in October 2014, and down from 13 seconds since last Christmas).
  • Timo Paulssen speeded up path parsing logic, making the opening of files a lot faster in the case of simple path specifications.
  • Jonathan Worthington fixed various issues with reading chars from an async socket (uncatchable exceptions on decode errors, and mis-handling of graphemes and multi-byte sequences over packet boundaries).
  • Elizabeth Mattijsen improved the efficiency of several functions: Junction.Bool (2x), Junction.ACCEPTS (2x), permutations(n) (5x), List.permutations (40x), combinations(n,k) (1.8x) and List.combinations(n) (7x).
  • Zoffix Znet made sure that all possible quote pairs now work everywhere in Perl 6. He also blogged about this.
  • Daniel Green fixed numification of non-ASCII tokens in regexen and grammars.
  • Christian Bartolomäus fixed several issues specific to the JVM backend.
  • TimToady fixed an issue with variable lookup inside quotes.

Blog Posts

Only the one this week, looks like everybody was recovering from the conference season, or was trying to catch up with the videos? But what a blog post it is!

Ecosystem Additions

A nice batch.

Winding down

Seems to me we got a nice batch of core improvements in the past week, and plenty to watch as well. Be sure to tune in again next week!