2017.33 In Review

Evan Miller has written an extensive review about Rakudo Perl 6. And the Internet was set ablaze. Well, eh, not really, but quite extensive discussions on Hacker News and Reddit followed from it. Although he clearly was caught out by some documentation issues (e.g., you can have both positional and named parameters in a call), the review appears to be balanced and just, and did I mention extensive? Some quotes:

The Perl 6 feature I was most excited to read about — in fact the initial reason I was drawn to Perl 6, aside from morbid curiosity — is the inclusion of grammars in the language.

Perl 6’s string support, and Unicode support in particular, is the best in the business.

Perl 6 might have my favorite function-dispatching mechanism of any language I’ve used; it’s certainly the most flexible.

The most pleasant set of surprises for me with Perl 6 function-calling — in fact some of the more pleasant surprises in all of Perl 6 — is the nearly frictionless interfacing with C libraries.

Perl 6 is one-of-a-kind; no one can argue with that.

What can I add to that? Read the whole review and judge for yourself!

Welcome Aleks-Daniel Jakimenko-Aleksejev!

The number of people with a commit bit to the rakudo repository has just been incremented. Or as Zoffix Znet so partylike tweeted:

AlexDaniel++ joined the team

I can only add that AlexDaniel has already been responsible for quite a number of Pull Requests in the past years, built quite a few IRC bots and will now also be responsible for the next Rakudo compiler release the coming weekend!

Videos from TPCiA

The official videos of TPCiA are still in post-production. Below are the ones that were streamed to FaceBook using a camera in the hands of Andrew Shitov:

Core Developments

  • Jonathan Worthington mostly worked on MoarVM internals: this resulted in a 17% performance improvement of the test-t “real life” benchmark. And fixed some possible memory leaks with supply and react blocks.
  • Stefan Seifert made some NativeCall improvements, which also had a positive effect on the Inline::Perl5 version of said “real life” benchmark. He also made RAKUDO_MODULE_DEBUG output reproducible.
  • Samantha McVey fixed some issues with ignoremark and ignorecase.
  • And some more smaller fixes and changes.

Other Blog Posts

Meanwhile on Twitter

First the Perl Conference in Amsterdam related tweets:

And the other tweets:

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

What a week for the members of the organisation team and volunteers of the The Perl Conference in Amsterdam, of which yours truly happened to be one. Normalcy is scheduled to return in the coming days. Well, until the Swiss Perl Workshop of course. For which yours truly still has to start on her presentation. Ah well, it will be great on the day with a cast of presenters like Jonathan Worthington and Damian Conway! Meanwhile, see you all for the next Perl 6 Weekly!

2017.32 Weekly 101

So, one day you start writing the Perl 6 Weekly. And before you know it, you’ve done a 100 of them. Which was last week. Yours truly hopes to be writing many more of these. Well, as long as you readers let me 🙂

Benvenuto!

Yes, the famous Perl 6 Introduction website now also has an Italian version: Perl 6 Introduizone. Of course, if Italian is not your thing, you might want to try: Bulgarian, Chinese, Dutch, French, German, Japanese, Portuguese or Spanish!

Blog Posts

Core Developments

  • Most of the visible developments this week came from all of the work that Jonathan Worthington has done revamping a lot of MoarVM internals, which he describes in his most recent blog post. Apart from that, he also fixed some race conditions in the implementation of supply and whenever.
  • Nick Logan improved Version smartmatch with uneven lengths.
  • Stefan Seifert optimised NativeCall quite a bit.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

Alas, not a lot of that happening this week with The Perl Conference in Amsterdam. Yours truly hopes to see a lot of regular readers there and hear what thoughts they have on making the Perl 6 Weekly better! And if you can’t make it there, be sure to check out next week’s Perl 6 Weekly!

2017.31 Moar Smaller

Jonathan Worthington‘s work of the past weeks on MoarVM got merged, so now we have spesh running asynchronously on another thread. All of these changes have not made Rakudo Perl 6 any faster just yet: the commit message explains why. Since then he has worked mainly on making MoarVM frames smaller (sponsored by OETIKER + PARTNER AG). And if that is not enough, it is now also clear that the Perl Foundation approved another 200 hours grant extension for Jonathan. I can only say I’m looking forward to the results!

Why I’m learning Perl 6

Evan Miller, (co-)maintainer of many open source packages, posted a very positive blog in which he explains why he’s learning Perl 6. Some quotes:

If you’re feeling confused by Erlang, put off by Go, and indifferent to .NET, take a look at Perl 6. Seriously.

MoarVM, the Perl 6 virtual machine, is a fantastic piece of technology. Event loop-aware scheduler? Check. Continuations? You got ’em.

If you’re drawing up a list of programming languages to try out, do your future self a favor and put Perl 6 on the menu.

Excellent PR! This made it to the top in Hacker News, and also had quite a few comments on Reddit’s /r/programming, and a few more on r/perl.

Top Class Training

Apart from all of the presentations on the schedule of The Perl Conference in Amsterdam, there will also be training courses by Damian Conway (Parsing Perl 6 and Presentation Aikido), brian d foy (Mastering Perl and Effective Perl Programming and Jeff Goff (Introducing Perl 6). If you want to catch up on your skills with the some of the greatest names in the Perl world, this is your chance!

Game Night

Thursday evening at The Perl Conference in Amsterdam, a long held tradition from the YAPC::NA will be introduced in Europe: Game Night!. Meet your friends and play! Beer may or may not be involved.

Other blog posts

New Features

  • David Warring added a Buf.subbuf-rw method, similar to Str.substr-rw.
  • Elizabeth Mattijsen made the is default trait fully functional on attributes. If you have a class with:
    class A {
        has $.foo = 42;
    }

    replacing that by:

    class A {
        has $.foo is default(42);
    }

    can make instantiation of an object up to 30% faster. It will also have the side-effect of being able to use Nil to force the default value on an attribute, without having to know what the default value is, in:

    dd A.new(foo => Nil)  # A.new(foo => 42)

Other core developments

  • Samantha McVey improved the performance of Cool.codes upto 3.5x.
  • Zoffix Znet fixed the wording on several error messages.
  • Elizabeth Mattijsen made .unique, .repeated and .squish up to 12x faster. She also fixed all remaining issues with deleted values from Lists and Arrays, specifically with regards to is default. Finally, she also made @a[^10] (aka, using a Range to take a slice of an Array) about 3x faster.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

Quite a fruitful week yet again. And less than a week to go before the training courses start at The Perl Conference in Amsterdam. Being involved in its organisation, yours truly hopes she will have time to write the Perl 6 Weekly next week. Be sure to check nonetheless!

2017.30 Starring Fresh Produce

It was a fruitful week. We saw the release of Rakudo Star 2017.07 thanks to Steve Mynott. Apart from a source version, there are also packages for CentOS, Debian, Fedora and Ubuntu (thanks to Claudio Ramirez), as well as packages for MacOS and Win64 (thanks to Steve Mynott again). And we had a new ecosystem addition for each day of the week. And the hard copy version of Perl 6 Fundamentals by Moritz Lenz is hitting the bookshelves!

The Perl Conference in Amsterdam

The schedule is now published! In other news, the conference Wiki is being fleshed out. Specific entries of importance are:

And you can still register!

Blog Posts

Core Developments

  • Jonathan Worthington continued working on the first step of his overhaul of the MoarVM dynamic optimizer, which optimizes hot code based on collected type information. He now has a branch with optimization and JIT compilation running on a background thread rather than interrupting code, and a new means of data collection that will allow for smarter optimization decisions in the future. Along the way, he has fixed a range of optimization bugs that existed prior to these changes and which were driven out by stresstesting. With everything working again, he will now switch to tuning it ahead of a merge. Finally, he also fixed native callbacks on threads other than the one that provided them in the first place.
  • Samantha McVey worked a lot on optimizing concatenation of strings on the MoarVM backend, fixing several bugs along the way.
  • Gerd Pokorra added a --libdir parameter to the configuration of Rakudo Perl 6.
  • Elizabeth Mattijsen made the various stringifications (aka .Str, .gist and .perl) on QuantHashes (aka Set, Bag and Mix) up to 2x faster. Also, the output of .gist is now sorted. She also worked on Bag|Mix.roll making them upto 2x faster, and fixed a bug in Array.join, which ignored the is default setting of the Array on values :deleted from the Array.
  • Nick Logan made sure that :ver will be treated as a literal Version, rather than as a string. So that use Test:ver is now completely synonymous with use Test:ver(v6.*).
  • Zoffix Znet improved the TODO test handling inside TODOed subtests.
  • Stefan Seifert fixed --ll-exception, which was sadly broken (and got into the 2017.07 release unnoticed).
  • Timo Paulssen made sure that the installation of Rakudo Perl 6 will not cause execution errors in a script that is running the previous version of Rakudo Perl 6 at the same time.
  • And several other improvements and bugfixes.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

Ah, looking forward to next week when we will have many more fruity bits. Hope to see you again, then!

2017.29 Zoffix Released

This week saw the end of an era: Zoffix Znet and his trusty bots released Rakudo Perl 6 2017.07 compiler. Which will be the base of the 2017.07 Rakudo Star release within the next few days by the looks of it.

So why is that the end of an era? Well, because Zoffix decided that he would like to pass on the baton of Release Manager to someone else, which AlexDaniel graciously accepted!

I would hereby like to specifically thank Zoffix Znet for everything he has done to make the release process as easy as it is now. And to thank him for the 14 consecutive monthly Rakudo Perl 6 releases he as done, which is a record! Tip of the hat!

The Perl Conference in Amsterdam

The final list of presentations is now available: no further talks will be added. Unless you want to submit a Lightning Talk! If you’ve already registered, please mark the presentations that you want to attend, so that the organisers can have a better idea of the size of the room needed for that presentation.

Furthermore, it is now certain that there will be 2 days of Hackathon following the Perl Conference in Amsterdam (Saturday 12 and Sunday 13 August) at the same venue. Yours truly will be there for sure, and hopefully a lot of other people working on either Rakudo Perl 6 or Pumpkin Perl 5!

Core Developments

  • Stefan Seifert fixed a precompilation issue on Windows with file handles left open when an up-to-date check failed.
  • Jonathan Worthington had a deserved few days off, but nonetheless managed to fix several problems in MoarVM that would expose themselves as segfaults or causing spurious and hard to track problems. He also made sure that dynamic variables (specifically $*THREAD) are cleared from the cache whenever a halted job continues execution again (which may be on a different OS thread in 6.d).
  • Samantha McVey worked on string concatenation, making sure that no (potentially expensive) normalization of strings is done, unless it is actually necessary.
  • Nick Logan fixed an issue with :merge on a Proc object. He also made sure that done and/or quit are always called on all all taps of a Supply. He also improved the error message on use lib "".
  • Zoffix Znet removed some floating point noise in the denominator of Rat literals.
  • Elizabeth Mattijsen more or less concluded her work on the set operators by adding thorough testing, which exposed a number of issues, and fixing those.
  • And many other smaller fixes and improvements.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

  • WebService::AWS::S3 by Brian Duggan.
  • Winding Down

    A hot week ahead. Please check again in a week to see how hot it got in Perl 6 land!

    2017.28 Rakudo is Hot

    “A rose by any other name…”. It is the subtitle of Zoffix Znet‘s blog post The Hot New Language Named Rakudo, in which he describes his reasoning for wanting to tweak the name of the programming language “Perl 6” to “Rakudo Perl 6“. Which, in the view of yours truly, is not too different from earlier suggestions of tweaking the name of “Perl 5” to “Pumpking Perl 5” to differentiate Perl 5 and Perl 6 in the public eye. Some quotes from the blog post:

    (Rakudo) is a young and hip teenager who doesn’t mind breaking long held status quo. Rakudo is the King of Unicode and Queen of Concurrency. It’s a “4th generation” language, and if you take the time to learn its many features, it’s quite damn concise.

    Trying to market Rakudo language as a “Perl 6” language is like holding a great Poker hand while playing Blackjack—even with a Royal Flush, you still lost the game that’s actually being played. The truly distinguishing features of Rakudo don’t get any attention, while at the same time people get disappointed when a “Perl” language no longer does things Perl used to do.

    Rakudo has many strengths but they get muted when we call it “Perl 6“. Perl is a brand name for a product with different strengths and attempting to pretend Rakudo has the same strengths for the past 2 years proved to be a failed strategy. I believe a name tweak can help these issues and start us on a path with a more solid footing.

    The blog post sparked quite a few comments so far: blogs.perl.org, Reddit r/perl and Reddit r/perl6.

    Yours truly appreciates the effort and thought that Zoffix Znet has put into this blog post (as he has done with many other excellent blog posts in the past). It is definitely food for thought for the marketing efforts of Rakudo Perl 6. And one can only hope it will get picked up!

    Other blog posts

    Other Core Developments

    • TimToady made sure the issue described in Do all Perl 6 quoting constructs have term precedence? now produces a much more awesome error message. And Zoffix Znet made sure it will still accept the more common usage.
    • After careful deliberation and discussion with TimToady, Elizabeth Mattijsen re-instated Baggy/Mixy semantics to the subset operator family ((<=) ⊆ ⊈ (>=) ⊇ ⊉) and proper subset operator family ((<) ⊂ ⊄ (>) ⊃ ⊅). Since these families now handle Baggy/Mixy semantics, it was deemed ok that the baggy subset operator family ((<+) ≼ (>+) ≽) will be deprecated for the 2017.07 release, and removed with the 6.d release of Rakudo Perl 6.
    • Samantha McVey added full Unicode 9.0 support to MoarVM: all Emoji 4.0 sequences are now considered to be a single grapheme. She also improved raw parsing speed and the speed with which files with Unicode are slurped.
    • Lloyd Fournier fixed a problem with exporting constants assigned to routines, with the help of Zoffix Znet.
    • Timo Paulssen fixed an issue with $*EXECUTABLE not being initialized properly when Rakudo Perl 6 was being run under valgrind. He also made sure that IO::Socket passes a list of newline separators, as well as preferring files with .pm6 extension over the ones with a .pm extension if they have the same basename.
    • Jonathan Worthington fixed an issue when opening a file with :enc<ascii> for writing, and an issue with coercers on sigilless variables. As well as being very busy with a lot of spesh / JIT refactoring under the hood of which we will probably see the result after the next release of Rakudo Perl 6.
    • Daniel Green made sure that (expensive) suggestions for method not found errors are only generated when actually needed.
    • Zoffix Znet fixed a problem related to unpacking of signatures and an optimizer issue (his first!) that would lose Boolification of a sub-expression with ||.
    • And many other smaller and bigger improvements and fixes.

    Meanwhile on StackOverflow

    Meanwhile on Twitter

    Meanwhile on perl6-users

    Ecosystem Additions

    Winding Down

    Feels like summer is heating up. Check here again next week for more news about Rakudo Perl 6!

    2017.27 Inching On Speed

    Or, how to go from 2.5x slower to only 1.1x slower than Perl 5. Jonathan Worthington explains it all in his blog post titled “Optimizing reading lines from a file“. But that’s not all he’s done in the past week! Last Friday he also gave an online presentation titled “Primitives, Composition, Patterns” (slides), which was part of the sponsoring by Nick Logan. A must see if you want to get up to date on the latest in concurrency in Perl 6! And also a prime example of the quality of deliverables of sponsoring Jonathan.

    Seqs, Drugs, And Rock’n’Roll

    Zoffix Znet published part 2 of his blog post series about Iterators and Seqs. Please look at part 1, in which he discusses how a Seq can .cache its values, if you haven’t done so already. Part 2 delves into how to write your own Iterator and what you can do to optimize it for a number of use cases.

    Other blog posts

    So you want to be a Presenter

    You can still be one at The Perl Conference in Amsterdam, as the Call for Papers has been extended to 7 July. There is no schedule yet, but the list of accepted talks is available. On it, you can already find the following presentations that have some relation to Perl 6:

    Core Developments

    • Jonathan Worthington worked a lot on Proc and Proc::Async. For instance, it is now possible to get the native descriptor in Proc::Async. This was done by creating a Proc::Async::Pipe, which is a subclass of Supply with a native-descriptor method that returns a Promise that will produce the native descriptor as soon as it becomes available. Reading stdout/stderr is now also delayed until the Proc::Async::Pipe Supply is actually tapped. These changes now allow the standard output/error of one process to be chained to standard input of another process.
    • Zoffix Znet introduced the %*SUB-MAIN-OPTS dynamic hash support for tweaking the parsing of MAIN parameters.
    • Elizabeth Mattijsen continued her work on set operators, specifically on (+) (the baggy addition operator) and made sure that all set operators handle lazy lists correctly. She also reverted Baggy semantics for (<=) and (<) after it was pointed out that these changes caused problems with some of the already documented examples, and the fact that there is a special set operator for Baggy semantics: (<+).
    • And some other smaller fixes and improvements.

    Meanwhile on StackOverflow

    Meanwhile on perl6-users

    Ecosystem Additions

    Winding Down

    A nice week with some surprises. A good beginning of the second half of 2017. Be sure to check again next week for more Perl 6 news!