2018.04 It’s time for Optimism!

Andrew Shitov made my day with his It’s time for optimism blog post, in which he talks about some random things related to Perl 6 and its future. Well, not entirely random: the impetus for this blog post was the Open Letter to the Perl Community by yours truly (🔥🔥🔥Reddit🔥🔥🔥, Hacker News and p5p comments). But more about that later.

Zoffix Znet also made my day. He wrote another very sensible followup blog post called Long Live Perl 5! in which he basically did a Synopsis of the Open Letter (🔥Reddit🔥 comments). I think he did a great thing there! And I am not alone.

The Perl Conference in North America

Are you ready to get high on Perl? Well, about a mile high, that is. The Perl Conference 2018 will be held in Salt Lake City, Utah from 17 June to 22 June. Registration is not yet available, but you can already submit a talk! So let’s get some cool Perl presentations, be they Perl 5 or Perl 6, submitted. The first round for submissions is until 28 January, so that’s only a week to go!

Rakudo Perl 6 in production

Following the Open Letter blog post, the question “Is Rakudo Perl 6 used in production?” was asked again. These are some of the reactions when the question morphed to: Do you use Rakudo Perl 6 in production and can you tell us about it?:

  • Fritz Zaucker

    Not yet, but I will port the backend of the web application described at www.agrammon.ch from Perl5/Mojolicious to Perl6/Cro with the help of a Perl 6 expert (name to be published if he agrees). Not a high-volume WebApplication, but certainly one used in production by various scientists and governmental agencies in Switzerland. I will let you know when it is finished. And yes, the code will be public on GitHub. This will be the first Perl 6 application of www.oetiker.chagrammon.ch

  • Solomon Foster

    I write short Perl 6 scripts for work / personal stuff all the time. For instance, this week I wrote one script to parse Parasolid schema files looking for the highest type number in each, producing a quick report of how the set of types grew over time. Then I wrote another script which found every Parasolid file in my file collection, called a C++ program to translate the file to a simple human-readable format, scanned that to determine which types the file used, and used that to build a list of which files use each type. It feels a bit weird talking about them, because, say, the second one is only 38 lines long, and that’s with no golfing, a simple user interface, error handling, etc. It’s a utility script, doubt I will ever need it again, but it was super handy for what I was working in this week.

  • Jonathan Worthington

    Here’s an (incomplete) list of some of the Perl 6 usage at Edument (the company where I work) for external customers. Names of those and details of the problem domains excluded, because of NDAs and similar.

    • Rapid prototyping to explore solutions in a source-to-source translation problem. Grammars were, obviously, very useful for this, as was just being able to get something together very quickly: we needed to get something we could show our customer as soon as possible to help figure out if we were all on the right track.
    • The core of a remote build/debug tool (which made heavy use of Perl 6’s concurrency features).
    • Various scripts at multiple other clients, some throw-away for solving one-off problems, others that live on and are run now and then.

    I’ve another job that will be delivered using Perl 6 coming up soon too. Of course, we built the Cro website as a Cro application. 🙂 And, while I can’t say what it is yet, one product we’re building at Edument and expecting to announce in the spring involves a small compiler implemented in Perl 6 in its development.

  • Zoffix Znet

    I use it at $work for throw-away one-liners and find it a lot simpler to use than Perl 5 for the same purpose.

  • JJ Merelo

    I use it for my own pipeline for producing the books I work on. Granted, it’s a set of small scripts, but it’s in production and it’s working to create, for instance, the Perl 6 book as well as the Git, Python and other books.

  • Eugene Barsky

    I’m only a recent newcomer, but I already use Perl 6 to analyze linguistic data (collecting stats while matching different patterns, making interactive console dictionaries, morphological parsing, finding orthographic variants of the same word etc.). For me it’s the best choice because of its thorough grapheme-level Unicode support, very consistent syntax, marvelous regex and grammar features and great docs. Also, I more and more use Perl 6 for small shell scripts instead of bash.

  • Simon Proctor

    Not yet, but I’ve got permission to do new projects in it and I’m working on some coding clubs to get other people at the company involved. When we have something in production I’ll tell people.

CPAN Butterfly Plan

The main part of the Open Letter blog post is about porting as many up river Perl 5 CPAN modules to Perl 6 as possible. In the coming week this will start to get fleshed out a lot more. Meanwhile, I’m happy to say that the past week saw the arrival of quite a few new Perl 6 modules on modules.perl6.org, making that a total count of 997 modules at the moment of this writing.

The past week saw the arrival of Rakudo Perl 6 support for the each, times, tie, pack and unpack Perl 5 commands. The following Perl 5 core modules were also ported: Tie::Array, Tie::StdArray, Tie::Hash, Tie::StdHash, Sys::Hostname, List::Util, Scalar::Util, Sub::Util and Sub::Name. Some of these are re-imaginations in pure Perl 6 from XS only modules, some are ports of Perl 5 to Perl 6 source code. For the CPAN Butterfly Plan it doesn’t really matter what the inside of a module looks like, as long as the API is as close as possible to the one from the Perl 5 version. All these modules will be tagged with the CPAN5 tag.

Core developments

In preparation for the next Rakudo compiler release, which will also be a Rakudo Star release, most of the effort the past week was aimed at fixing outstanding bug reports prior to the release. So more about that next week!

Other Blog Posts

Perl 6 in comments

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Winding Down

And what a week it was. Even though yours truly worked on her Open Letter blogpost for close to a month, with reviews and comments from about 20 people in the Perl Community (which instigated two rewrites and many, many changes in wording), many of the comments on reddit showed that I hadn’t made myself clear enough. So, to be clear, let me try explain the blog post:

  • The blog post is my personal opinion.
  • My radical idea is just that: an idea suggested by me as an amicus curiae. What the Perl 5 Porters decide to do with that idea, is entirely up to them.
  • The most important thing to take away from my blog post, is the CPAN Butterfly Plan: porting as many up river Perl 5 modules to Rakudo Perl 6 to lower the threshold for Perl 5 programmers to start using Rakudo Perl 6 and possibly provide relief for the implementation of a Butterfly Perl 5 Project.
  • So that the Perl Community can start moving forward in one direction, rather than two.

Please check in again next week for less drama and more advances in the world of Rakudo Perl 6!


2018.03 Blue Note

On the Blue Monday of 2018, it is my solemn duty to inform you that things are not blue in the world of Rakudo Perl 6 at all. The only thing missing is a good main article for the Perl 6 Weekly. So that gives it a bit of a blue note. Plenty of good stuff going on otherwise. So read on!

Core Developments

  • Zoffix Znet was very busy again:
    • Several inappropriate useless use warnings were fixed
    • Sped up several parts of Perl 6 Actions
    • Fixed a problem with incrementing/decrementing RatStr allomorphs
    • Meta-operators (such as =~) got some improvements, with the R meta-operator (such as [R~]= for prepending a string) gaining the most: 160x faster!
    • Fixed issues with regards to the (incorrect) specification of traits
    • Made dd more resilient to handling low-level (NQP) values.
  • Jonathan Worthington added a lot of optimizations, specifically making :U in signatures faster. He also made several core methods smaller so that they would fall within the inline limit: so when used a lot, they will now be inlined, resulting in much better performance in some situations. Finally, he reworked a lot of the Supply, react and whenever internals: this made a Cro benchmark handle 12% more requests/second.
  • Jeremy Studer fixed an issue with .rotor pulling one too many times after the underlying iterator was exhausted.
  • Itsuki Toyota added better error messages for Perl 5-style pragmas and issues with versioning of use and need.
  • Ben Davies made sure that MoarVM can compile on OpenBSD.
  • Elizabeth Mattijsen added Bool candidates for x and xx operators, making x 2x faster, and xx 16x faster when given False, and made |(1,2,3) xx 42 about 3x as fast. She also made having a single LEAVE in a block about 5% faster, which will improve performance of Supply and whenever.
  • And many other smaller fixes and improvements.

Blog posts

Perl 6 in comments

Sometimes Rakudo Perl 6 is mentioned in comments on blog posts that do not directly relate to Perl 6 necessarily. Yours truly will attempt to collect these and present them here for your perusal. In this first edition, Perl 6 comments from Hacker News of the past month.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Winding Down

Pseudoscientifically speaking it was the most depressing day of the year. So from now on, things can only get less depressing. And that’s a positive thought that yours truly would like to give you this week. See you next week for more news about Rakudo Perl 6!

2018.02 FOSDEM Nearing

With only a few weeks to go, the schedule of the Perl Programming Languages devroom at FOSDEM 2018 (on 3 and 4 February) has been finalized. These are the Rakudo Perl 6 related presentations:

Of course, there will also be a Perl booth at FOSDEM 2018 with all sorts of free goodies such as stickers, tuits and promo leaflets. And Perl books, both Perl 5 and Perl 6, available to you at cost. Please come and visit FOSDEM, it’s big, it’s crowded, it’s in Brussels and it’s free!

Core Developments

  • Zoffix Znet has been doing a lot in the past week. He made coercers of the type Int:D() (aka type-smileys) parse correctly, so they now work. He also fixed issues when hypering over a Blob or Buf, and made chainable operators 2.6x faster (42 < $a < 666 used to be slower than 42 < $a && $a < 666).
  • Itsuki Toyota made sure that the type-smileys were immediately used in a lot of the Rakudo Perl 6 source code to improve error messaging on faulty input with type objects.
  • Bart Wiegmans fixed some memory leaks in MoarVM.
  • Nick Logan improved the .perl of CompUnit::Repository::FileSystem (aka CURFS) and CompUnit::Repository::Installation (aka CURI) objects.
  • Moritz Lenz made Proc.status a read-only attribute, which it should have been from the beginning. He also improved the LTA error message when trying to interpolate a hash into a Regex.
  • Jeremy Studer made sure that negated chained operators work correctly.
  • Elizabeth Mattijsen made creation of Date and DateTime objects 1.6x faster. She also fixed .skip(*-3), which was documented to work, but didn’t.
  • And many other smaller fixes and improvements.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

Winding Down

It was a week with a lot of people on well deserved holidays. But still a lot happened in the Rakudo Perl 6 world. So this is promising for the coming week. See you then again? And be safe!

2018.01 Perl 6 Alerts

Zoffix Znet announced (Reddit comments) a new way for the Rakudo Perl 6 core development team to communicate with its users, using all of the current ways of dispatching alerts in the social media world we live in: Perl 6 Alerts, with an associated RSS and Twitter feed. And if that’s not enough, you can write your own alerter using the API with the WWW:P6lert module. All of this put together in a few days using Cro and the Rakudo Perl 6 Programming Language. So please make sure you subscribe to the desired means of alerting if you want to keep abreast of Rakudo Perl 6 core developments.

Yours truly wonders whether the publication of yet another Perl 6 Weekly would warrant an info level alert or not. Probably not.

Keeping on Adventing

It appears that Andrew Shitov can’t be stopped either: Perl 6 Inside Out is his new daily (yup, daily) blog about reading the Rakudo Perl 6 source code. As he stated on Facebook:

It was so nice to write something for this year’s Advent calendar that I decided to continue. It was a surprise to me that the sources of Rakudo are so interesting material to explore and read, and I want to share that feeling 🙂 Hopefully, daily.

So far, he has posted:

Guess what? Even yours truly learned a few tidbits from these posts, so please keep them coming!

But that’s not all: he also re-started his Russian language Вечерний Perl 6 (Evening Perl 6) daily blog posts with an overview of Rakudo Perl 6: Что где про Perl 6 (What about Perl 6?). So check it out, if you can!

Yearly Statistics

In 2017 the Perl 6 Facebook Group has gained 127 new members (from 340 to 467 members, so an increase of 35%). On the commit front: well over 10000 commits of which 2272 documentation, 1669 roast, 1829 MoarVM, 1258 NQP and 3507 Rakudo commits (and 370 Rakudo Pull Requests). On the release front: 14 MoarVM, 15 Rakudo compiler and 4 Rakudo Star releases. 842 lines in the MoarVM ChangeLog and 1368 lines of ChangeLog in Rakudo. 768 Tweets on the Perl 6 News Feed, 266 Questions on StackOverflow and at least 123 questions on the perl6-users mailinglist that got mentioned in 52 issues of the Perl 6 Weekly. 238 tickets got resolved and 241 new tickets got added in the 20 week period in 2017 when these statistics were centrally kept. Seven Perl 6 books got published. And 3 new core developers got their Rakudo commit bit. Let’s try to top these numbers in 2018!

Other Blog Posts

Core Developments

  • Zoffix Znet was very busy again: among other things, he fixed some dispatch issues with .is-prime and fixed Whatever.ACCEPTS handling of type objects. IEEE-style Rationals for ±Inf/NaN Num conversions got overhauled, fixing 3 tickets in one blow. And he improved the USAGE message of MAIN quite a bit. And he fixed an issue with the flushing of TTYs on Win10.
  • Zoffix Znet also did some performance enhancements: Blob.subbuf is now 1.8x faster, and an if in sink context that evaluates to False, is now 3.4x faster.
  • Jeremy Studer made sure that interpolated quotewords (qqww or « ») don’t produce a Slip if they only consist of a single word, and that assigning to an element of a Range produces a better error.
  • Christian Bartolomäus continued his quest to keep the JVM backend, and the testing of it, in working order.
  • Dan Zwell made sure the %zu printf format is not used on Windows, as it’s unsupported there.
  • Timo Paulssen made sure the nqp::isprime op gets JITted. This removes any unnecessary overhead of determining primality on a large set of numbers. He also made adding an Int to a Rat 22% faster, and fixed a problem with Buf.subbuf‘s handling of degenerate Ranges such as 10..2.
  • Elizabeth Mattijsen sanitized the behaviour of Range.pick and Range.roll on degenerate Ranges.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Meanwhile on Perl Monks

Winding Down

It’s always weird in the first Perl 6 Weekly of the new year to be reporting about things in the previous year. Especially when the first Perl 6 Weekly of the year is published on the first day of the new year. To yours truly it feels that all of this is a bit of old news, in preparation for some pretty amazing things that will come to the world of Rakudo Perl 6. So, please check in again next week for some serious new stuff of 2018!

2017.52 When it is no more

Leon Timmerman notified the community about upcoming changes in Pumpking Perl 5 with regards to the removal of when (blogs.perl.org, reddit, Hacker News comments). brian d foy reacted with a blog post of his own (Reddit comments).

Looking at these events (sort of) from the outside, yours truly can’t help but think that Pumpking Perl 5 is about to make a mistake similar to one that Rakudo Perl 6 has made: breaking compatibility. But without the advantages that Rakudo Perl 6 brings now. In other words: the proposed changes to Pumpking Perl 5 will only turn people away from Perl, rather than pulling in new users. Yours truly feels that would be detrimental to all languages in the Perl family. And that it is always better to make new mistakes.

Parsing with Perl 6 Regexes and Grammars

Nikos Vaggalis extensively reviewed Moritz Lenz‘s excellent Parsing with Perl 6 Regexes and Grammars book. Some quotes from the review:

You can easily infer that Mortiz is the definitive authority to talk to about the subject, and this book is his attempt to impart this knowledge accumulated throughout the years

Perl 6 is a magnificent language whose depth is only starting to emerge and the more you look the more you find something new

So get it, read it, get it and use it! 🙂

White Camel Awards 2017

brian d foy has announced the White Camel Award winners of 2017 (blogs.perl.org comments). Yours truly would hereby like to congratulate Laurent Boivin, Rob Masic and Kurt Demaagd on behalf of the Perl 6 Weekly readers!

Rebirth of Perl.com

Jim Brandt and David Farrell describe how Perl.com came to be and how it will evolve again in the future. Kudos to both, hoping to see good new content there in the not too distant future!

The Last of Adventing

Compiler Release 2017.12

Aleks-Daniel Jakimenko-Aleksejev released yet another Rakudo Compiler Release, in close coordination with Samantha McVey and Zoffix Znet.

Other Core Developments

  • Zoffix Znet was very busy again this week. He fixed an issue with zeroing out elements of Buf and native arrays. He also fixed a problem with IO::CatHandle switching handles too early. And fixed various issues with the slightly changed semantics of the bool-only and count-only Iterator optimization. And he introduced uniparse as the 6.d equivalent of parse-names.
  • Elizabeth Mattijsen introduced a new .WHICH type: ValueObjAt. If an object has a .WHICH of this type, it indicates that the object is a value type. Which means that different objects with the same value should be considered interchangeable. She also made sure that lists are considered value types if they consist of value types only. This makes List more DWIM in the light of things likes Set, object hashes and .unique.
  • Ben Davies made sure that Configure.pl uses gmake on BSD‘s.
  • Timo Paulssen made sure that is-prime is JITted.
  • And many other smaller fixes and error message improvements.

Other Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Winding Down

Writing the Perl 6 Weekly on Christmas Day is a bit weird. Yours truly hopes that everybody enjoys their days off (if any) and hopes this will only be read a few days from now. And also hopes to see you all again in the New Year with many more Perl 6 goodies to report on!

2017.51 🎂 Thirty Years 🎂

It was 30 years ago today. Larry Wall released the very first version of Perl to the world. Lee Johnson gives his interpretation of the 30 years that followed that first release in an excellent blog post TPC and The End of Language Dominance:

…the commit logs for the perl git repository read like a book, so they’re a pleasure to look through.

Yours truly is glad that he’s done that, so she doesn’t have to. In any case, a well written and researched blog post, and thus well recommended!

Adventing Along

Final Batch of TPCiA Videos

Amanda Crow has finished the immense job of making all of the videos shot at The Perl Conference available for viewing. For the fans of Damian Conway, there’s a treat:

Ticket Overview

Aleks-Daniel Jakimenko-Aleksejev has created a semi-automatically maintained wiki page that keeps track of the state of Rakudo Perl 6 tickets (both in RT as well as GitHub Issues). It e.g. shows that in the past week, 60 tickets were resolved! A great place to see how Rakudo Perl 6 is doing, and a source of inspiration for those of you willing to do some bug hunting!

Core Developments

  • Zoffix Znet fixed a crash when using allomorphs as enum values. He also implemented TR///, the non-destructive version of tr/// (analogous to S/// and s///).
  • Zoffix Znet also fixed make test on Windows. And WhateverCode currying with respect to respecting use fatal.
  • Christian Bartolomäus removed some no-longer needed JVM backend specific workarounds.
  • Zoffix Znet and Elizabeth Mattijsen fixed various issues of Junctions with respect to say, put, note, warn and their counterparts in IO::Handle.
  • Elizabeth Mattijsen made using substr instead of an intended subst give a much better error message.
  • Tim Smith fixed various whitespace related issues with tables in pod.
  • And some other smaller fixes and improvements.

Other Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Winding Down

Yours truly will get something nice to drink now to celebrate 30 years of Perl. Regardless of whether you prefer to work with Perl 5, Perl 6 and/or rperl, cperl, perlito, or SPVM, it’s all from the same mindset made with a love for Perl. And that’s always something to celebrate!

2017.50 Of Quasi and Injectile

Carl Mäsak reports on the progress of 007, the toy language he is developing as a proving ground for full-blown Rakudo Perl 6 macro support. Check it out if you want to keep abreast of developments in this area. Or even better, want to help Carl and his compatriots in this effort!

Adventing Along

The following advent blog posts flocked our way this week:

Core Developments

  • Bart Wiegmans fixed a problem in the JIT expression compiler that was tickled by multi-dimensional array slices.
  • Samantha McVey improved the Unicode database compiler, aka ucd2c.pl.
  • Alex Chen and Paweł Murias worked on fixing an incorrect optimization of || in nqp.
  • Zoffix Znet made some meta-operations on Rats 30%-50% faster. He also fixed a generic issue with .tail and the count-only and bool-only optimizations.
  • Elizabeth Mattijsen improved the inlinability of several internal methods. She also fixed List.new, which would not decontainerize values when it should, and a bug in multidimensional slices that would not allow Cool values as indices.
  • Tom Browder fixed some more issues with regards to tables in pod.
  • And a lot of other smaller fixes and documentation and test additions.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Winding Down

Feels like the dark days before Christmas. With a lot of snow, at least for yours truly. Hoping to see everybody again next week for another scoop of Rakudo Perl 6 goodies!