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 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<6.c> 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!

    2017.26 Half Way There

    Feels like everybody is either preparing for a conference, at a conference or recovering from a conference. A quiet week, with record temperatures at various Perl 6 core developers locations, which was not helping productivity.

    Core Developments

    • Stefan Seifert made starting of installed scripts significantly faster by providing a faster, more specific interface to the CompUnit::Repository API (starting zef is now typically 1.5x faster).
    • Nick Logan made sure that the right %?RESOURCES is used for modules that get loaded using a CUR::FileSystem repository.
    • Zoffix Znet made .tail up to 2x faster by using the information of a count-only method if available in the iterator (e.g. when doing %hash.keys.tail).
    • Elizabeth Mattijsen did some more speedup work: calling BUILD or TWEAK is now 15x faster if objects are created without specifying any parameters. She also fixed some issues with inter-QuantHash coercers, such as coercing a mutable SetHash to an immutable Set. Finally she did a lot of work on the (-) (aka ) set difference operator, making it between 2x to 100x faster (depending on arguments).
    • Jonathan Worthington is working on a lot of low-level I/O improvements. This is a work in progress which I’m looking forward to tell more about next week.

    Blog Posts

    The Perl Conference – US

    Last week saw The Perl Conference US (formerly known as YAPC::NA). The videos of the presentations are available on YouTube. The following videos are Perl 6 related. Or I find them in need of more exposure:

    Meanwhile on Twitter

    Meanwhile on StackOverflow

    Meanwhile on perl6-users

    Ecosystem Additions

    Winding Down

    Well, compared to the weeks before, not as much happened. But under the hood, things are brewing. And it’s not necessarily beer. So check in again next week for more freshly brewed Perl 6 news!

    2017.25 [*] @perl-6-books

    Yes, it looks like the Perl 6 books are multiplying! Almost a month ago, Gábor Szabó announced his crowdfunding campaign for “Web Application Development in Perl 6”. In the past week we also saw J.J. Merelo‘s book “Learning to program with Perl 6” appear on Amazon in a Kindle edition. And we saw Moritz Lenz publish the first chapters of his new “Searching and Parsing with Perl 6 Regexes” book. It’s great to see this many books arriving!

    2017.06 Compiler Release

    Zoffix Znet released Rakudo Compiler 2017.06 with his trusty bots and a full ecosystem toast. Claudio Ramirez was hot on his tail with the release of packages for several Unix systems. There is no Rakudo Star release planned for this month: next month should see one!

    for ^1000 optimization is back

    The optimization of for loops that run for a set number of times, has been re-instated by Timo Paulssen and then further refined by Jonathan Worthington (graph). So there will now be more situations where the overhead of running such a loop will be greatly reduced.

    Proc overhauled

    The internals of Proc have been completely overhauled by Jonathan Worthington, and is now also completely supported on the JVM backend as well.

    Optimizer and JIT improvements

    Jonathan Worthington also spent a lot of time on several static optimizer and spesh improvements, as well as adding more possibilities for code to get JITted. It has caused the canary in the goldmine benchmark to go almost go down below 4 seconds. Which means it got about 1.5x faster in the past 6 months!

    Grant Extension Proposal

    If you like the work that Jonathan did the past week, you should probably leave a comment at his proposal for extension of his Perl 6 Core Development Grant!

    Other Core Developments

    All of these developments made it to the 2017.06 compiler release, except where noted.

    • Zoffix Znet fixed an issue with labelled next‘s. He also fixed all of the methods on Proc that expect the Proc to be done. And fixed the debugger (but alas not in time for 2017.06).
    • Samantha McVey made sure that improper values for RAKUDO_MODULE_DEBUG do not break module loading in nqp. She also provided a new set of Collation features (alas also not in time for 2017.06).
    • Nick Logan made sure a source file of a module is only slurped once during installation. He also made sure the :merge functionality on run() and shell() no longer deadlocks.
    • Stefan Seifert added more checksum related information for when RAKUDO_MODULE_DEBUG is set.
    • Steve Mynott optimized $*KERNEL initialization for OpenBSD.
    • Elizabeth Mattijsen made sure that the default .WHY returns a Nil value that will point to the appropriate section of docs.perl6.org when being gisted (e.g. when it is being shown in the REPL). She also fixed some issues with Map (<) Map and made Str.subst(Str,Str) (substitute a string once in another string) 12x faster.
    • And many other smaller fixes and improvements.

    Blog Posts

    Meanwhile on Twitter

    Not a lot going on that wasn’t already covered in this issue:

    Meanwhile on StackOverflow

    Meanwhile on perl6-users

    Ecosystem Additions

    Winding Down

    From a sweltering place in the south of the Netherlands, it’s yours truly wishing you all a good week. Please check in again next week for more Perl 6 news!

    <plug>Oh, and if you want to attend The Perl Conference in Amsterdam, you can now order tickets at the price-level you want / need!</plug>

    2017.24 Synchronicity Sorted

    In his latest blog post Jonathan Worthington elaborates about the upgrading of synchronous I/O in Rakudo Perl 6 (Reddit comments). If you’re interested in knowing more about I/O and other internals of Rakudo Perl 6 and MoarVM without it getting too technical, this is a MUST READ!

    Suggestions for unknown Methods

    Daniel Green implemented method suggestions when a method is not found during execution. This great awesomization now shows:

    > 42.Rar
    No such method 'Rar' for invocant of type 'Int'. Did you mean 'Rat'?

    A great addition for developers with slippery fingers and/or a slippery mind. Dyslexics Untie! 🙂

    Infinite Range.elems Changed

    The behaviour of Range.elems on ranges that are infinite (as in either end-point is a type of Inf) has changed to a Failure rather than returning Inf, as before. This to get it more in line with the behaviour of .elems on lazy Iterables (IRC discussion).

    Other Core Developments

    • Zoffix Znet implemented Complex.cis. He also implemented Failure.self which provides a concise mechanism to explosively filter out unhandled Failures while letting all other values through. Finally he fixed a pesky issue with recursive calls to indir.
    • As part of the Unicode Grant Samantha McVey fixed a long standing issue with the use of ignorecase and ignoremark that would give false positive matches if the first grapheme of the needle matched any of the graphemes in the haystack. She also added support for the new Unicode 9.0 Prepend property and better Regional Indicators.
    • Elizabeth Mattijsen made sure lazy Iterables are no longer attempted to be coerced to Set, Bag or Mix, but return a Failure instead. She awesomified the throwing of Failures a bit and normalized the handling of coercion methods on Seq and Supply type objects.
    • And many other smaller fixes and improvements.

    Other Blog Posts

    Perl 6 Presentations at the Perl Conference

    From 18 June until 23 June at the US Patent and Trademark Office in the Washington D.C. Metro area. So if you didn’t plan on attending yet, these might change your mind!

    Meanwhile on Twitter

    Meanwhile on StackOverflow

    Meanwhile on perl6-users

    Ecosystem Additions

    Winding Down

    With the conference season almost completely upon us, it feels like some people have less time to do development. But that’s only partly true as it appears we’re going to see quite some nice stuff before the next compiler release scheduled this Saturday. So there will be plenty to talk about next week. Please check in again then to verify yours truly is not just making things up!