With this Christmas being The Christmas™, there was no way we’d pass up the opportunity to bring you daily blog posts until Christmas on the Perl 6 Advent Calendar! If you’re unfamiliar with the Perl 6 Advent Calendar, feel free to have a look through each Table of Contents post for each previous year. There is quite a lot of really good content in there, even though some of the older posts may be outdated by now. On a similar note, a page called “Advent of Code” has been mentioned multiple times on the Perl 6 IRC channel. It offers a little programming puzzle every day. Could be great to try out Perl 6 with 😉

Advent Posts So Far

Perl 6 In The News

Blog Posts

Ecosystem Additions

Math::Random by bluebear94

Subsets::Common by Brad Clawsie

Chronic by Jonathan Stowe (RabidGravy)

WebService::GoogleDyDNS by cbk

Acme::GiveUp by Zoffix Znet

NQP::Eval by cygx

Unicode::UTF8-Parser by krunen

Acme::WTF by Skarsnik

IRC::Client by Zoffix Znet

by Zoffix Znet WWW::Google::Time by Zoffix Znet

WWW::You’reDoingItWrong by Zoffix Znet

On top of the additions, Math::Tau got thrown out of the ecosystem, as rakudo now ships tau in core.

Notable Changes

After the curli branch merge, module loading, installing and precompilation wasn’t quite perfect yet, so nine++ put in a lot more work to fix bugs found after people finally started testing the code. If you experience more trouble with latest rakudo/nom — which is not unlikely — you’re welcome to report them on #perl6 on irc.freenode.net or via mail to rakudobug@perl.org. Perhaps deleting the folder your Rakudo is installed to (for example, using rakudobrew nuke) helps you, though.

Array subscripting with listy objects is now more consistent. When you have a lazy thing (like an infinite range or something marked with “lazy”), the current size of the array will be used to cut off the subscripting, whereas anything non-lazy will give you assignable containers past the end. In other words, my @a; @a[^2] = 1, 2; will now work.

The ** operator (exponentiation) now throws errors in case an under- or overflow happens. (TimToady)

When making a socket listen, the backlog parameter can now be passed. (JimmyZ)

The “earliest” syntax is now gone. The much simpler to understand supply/react blocks have taken its place. On that note, Channel now has a proper Supply implementation, so Channel objects can be used inside supply/react blocks. Inside “earliest” blocks, trying to multiplex multiple channels forced busy waiting. (jnthn)

For more lovely things jnthn has done you can read his blog post, too (find the link in the “Blog Posts” section above.)

Parameters to MAIN that have a .WHY attached will now show it in the auto-generated USAGE. (donaldh)

NativeCall now supports arguments of type Pointer with an “is rw” attached. (FROGGS)

pmurias has been working on nqp-js for a long time and I’m sure he hasn’t been given enough shout-outs from the weekly yet!

Of course there have also been changes in our doc. Of note, jonathanstowe replaced examples for “earliest” with examples of “react”. Other contributions from dha, Zoffix Znet, Skarsnik, gfldex, awwaiid, molecules, lizmat, flussence, stmuk, and raiph are of course also much appreciated!

And I must never stop mentioning usev6 (Christian Bartolomaeus) going through the bug tracker making sure to try to reproduce older bugs regularly to point out bugs that have long been fixed and close corresponding tickets. Thanks!

Don’t forget there’s a WANTED document in the doc repo that could surely benefit from your input!

Back to the Cryo Chamber

It’ll be another week until the next post on this blog. Until then it gets to rest in its cryo chamber 🙂

Except, maybe not this time. I just stumbled upon an idea I had earlier in the year: To go through all evaluated pieces of code in the irclog and highlight some of them in this blog on some other day of the week. Maybe I’ll have a look at that again and actually do it this time!

Have a splendid week, and see you again after the 3rd advent has passed!