2018.16 SO That!

JJ Merelo would like you to ask your Perl 6 question (also) on StackOvervlow, instead of just on the #perl6 IRC channel. Why?

Most questions are answered, and with a very good answer. And it stays there for ever, and they have good SEO mojo.

Which looks like a very good thing to yours truly.

rakudo.org gets a facelift

Zoffix Znet has been working on a new version of the rakudo.org website. This includes a downloads page with a much better user interface. Kudos!

WANTED – Perl 6 Historical Items

Zoffix Znet is also working on a facelift of the perl6.org website, and he needs your help.

The Perl 6 Programming Language Museum will be part of that effort and along with interesting tidbits of Perl 6 history, it’ll showcase past implementation attempts that may no longer be in active development today. Since I don’t know much about what happened before I came to the language sometime in 2015, I need your help in collecting those tidbits.

So if you know something, or you know someone who knows something, please see his blog post for details so that we can be sure that this bit of history will be preserved for posterity.

perl6.org in Chinese

Work has recommenced on translating the perl6.org website to Chinese. This effort could definitely use more eyes and hands. If you’re capable of helping out, then please do!

Core Developments

  • Ticket status of past week.
  • Timo Paulssen fixed an issue about the interaction of spesh and deserialization of constant values. He also made sure that valgrind and similar debugging tools produce less noise during global destruction.
  • Samantha McVey made sure that MoarVM / nqp / Rakudo build on Solaris.
  • Zoffix Znet fixed the precision / value drift on Complex literals, which is causing some ecosystem fallout because tests now fail because they check against a drifted value (see also Low Hanging Numeric Fruit).
  • Tobias Leich (welcome back!) fixed a number of issues that NativeCall had when interfacing with C++ libraries.
  • And many other smaller fixes and improvements.

Other Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Meanwhile on PerlMonks

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding Down

The past week was quite exhausting for yours truly. Cancer sucks. Losing a family member to cancer, sucks. But life goes on. So see you next week for more news from the Perl 6 world!

Advertisements

2018.15 Perkenalan Bahasa Pemrograman Perl 6

Heince Kurniawan has created an Indonesian translation of Naoum Hankache‘s Perl 6 Introduction, which gives you a quick overview of the Perl 6 programming language, enough to get you up and running (Reddit comments). This now brings the total of translations to 11: Bulgarian, Chinese, Dutch, French, German, Italian, Japanese, Portuguese, Spanish, Turkish and now Indonesian. I wonder if more than half of the world’s population can now learn about Perl 6 in their native language!

Squashathon Results

This weekend saw yet another Squashaton, this time with a focus on tickets that needed tests. Aleks-Daniel Jakimenko-Aleksejev gave an overview of the results. And there is also an all-time overview of past, present and future Squashatons!

Rational Grant Proposal

Zoffix Znet has submitted a grant proposal entitled “Bugfixing and Performance of Rationals Fixing Constraints on Constants” to the Perl Foundation (Twitter announcement). Please be sure you read his plans and let TPF know what you think of it! Yours truly supports this grant request wholeheartedly.

Upcoming Perl Workshops

All of these events can use volunteers and sponsors. Please contact the organisers if you would like to help in such a capacity.

Core Developments

  • Ticket status of past week (with no more tests marked as “test needed” thanks to the Squashathon).
  • Samantha McVey significantly improved the collapsing of strands (the parts that make up a string on MoarVM), which e.g. happens when parsing a regex. This is now 4x faster by taking advantage of SIMD instructions. Also indexing has been made 50% faster when the needle is internally stored with a different number of bits than the haystack.
  • Zoffix Znet worked a lot on the efficiency of Nums and improving associated error messages. He also fixed a crash that would occur in some situations where a loop would have both a FIRST as well as a LAST phaser. And he made dispatch:<var> at least 7x faster (such as in *.&uc). And exceptions that happen in END are now shown with their backtrace.
  • Jonathan Worthington reduced the number of allocations in a number of situations, fixed an error with .native-descriptor on closed handles and fixed a problem that prohibited building of MoarVM on big-endian systems.
  • Elizabeth Mattijsen improved the performance of native arrays with regards to initialization, iterating and the use of .splice. She also improved the efficiency of .roll in many situations.
  • And many other smaller fixes and improvements.

Blog Posts

Videos

No videos from the German Perl Workshop just yet. But there is one from a recent London Perl Mongers meeting:

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

  • Wendy van Dijk:

    There’s a new Perl 5 book and it is written by Laurent Rosenfeld. It’s in French and it’s self-published. Kudos! (I got a signed copy and proud as hell): Programmation fonctionnelle en Perl: Améliorez la puissance expressive de vos programmes. Oh, and by the way, this is the first time anybody anywhere wrote & published a Perl 6 book first (Think Perl 6), and after that a Perl 5 book. Also, one book in English, and then a book in French.

  • Jeff Goff:

    ANTLR4::Grammar v0.5.0 released – it translates 45 of the grammars in the corpus to valid Perl 6 grammars. The next few releases will be making sure the grammars correspond to the original.

Meanwhile on perl6-users

Meanwhile on PerlMonks

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding down

Quite a busy week for yours truly again. Being at the excellent German Perl Workshop for 5 days sorta messes up your schedule. Fortunately there was plenty of WiFi and 4G to be able to do some work as well, especially at Saturday’s Hackathon. Two Perl 5 books were sold at the Perl swag booth ran by Wendy van Dijk. And more than 30 Perl 6 books! The times, they are a-changing. See you next week for even more changes!

2018.14 A Perl 6 IDEA

Jonathan Worthington and his Edument team have announced an Integrated Development Environment for Rakudo Perl 6 named Comma, based on the JetBrains IDEA platform. And this is no April Fool’s joke (unlike the previous version of this edition of the Perl 6 Weekly). Check out the features, the FAQ, roadmap and Reddit comments. Exciting times indeed!

Larry in the Wild

It appears that Larry Wall will be giving a presentation titled “It’s the End of the World as We Know It, and I Feel Fine” at the Academic IT Festival in Cracow, Poland on 5-7 April. Too bad this overlaps with the German Perl Workshop (4-6 April) otherwise yours truly would have had a compelling reason to finally visit Cracow.

Core Developments

  • Ticket status of past week.
  • Jonathan Worthington provided support for the PID of the asynchronously running process in Proc::Async. Elizabeth Mattijsen made the same feature available to Proc.
  • Timo Paulssen changed the interface of the nqp::getrusage op so that it uses a given native integer array, rather than create a new one each time nqp::getrusage is called. This significantly lowered the number of allocations for the supervisor thread.
  • Jonathan Worthington also made Supply.interval a serial Supply (which it should have been from the start). And he fixed a pesky rooting bug in MoarVM, which resolved more than a handful bug reports.
  • Zoffix Znet introduced a fails-like in Test.pm6, with semantics similar to throws-like, but for Failures rather than Exceptions.
  • Bart Wiegmans fixed some spesh related issues.
  • Jeremy Studer made List cmp List about 17x faster.
  • Elizabeth Mattijsen did many micro-optimizations that may or may not be visible in your code. She also implemented Array.grab with semantics similar to Array.pick but actually immediately removing the value from the Array. She did the same for native arrays.
  • And many other smaller fixes and improvements.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

  • JJ Merelo:

    We just reached 600 questions with the tag Perl6 in StackOverflow. My own experience says that in a few hours you usually have excellent answers by Brad, Jonathan, brian d foy, Elizabeth, and many others. However, we need more questions; I need not tell you that one question a day in Stack Overflow is a drop in the water; so please as soon as you bump into some little trouble just go there and ask away. Answers help us improve documentation, and we are all enriched by the experience. Will we be able to reach The Number of The Beast before the end of May? (that would effectively double the going asking rate).

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 Modules

6 New Modules:

11 Updated Modules:

Winding Down

I think that the way Jonathan Worthington has set up Comma will work better than several other Kickstarter-like projects, because it will deliver something from the start. Can’t wait to actually get my hands on Comma. And for me, as a staunch vim user, that’s saying a lot. See you next week!

2018.14 Singularity Released

Jonathan Worthington already mentioned a few times in the past weeks that his team had been working on a new project to be released soon. We’re glad to announce it is now ready for beta-trials: Singularity will allow you to download your brain into the database of your choice asynchronously, ready to be queried by many simultaneously afterwards. All based on Rakudo Perl 6, Cro and a NativeCall interface to TensorFlow. These are truly exciting times for the world, and the Perl community in particular!

April 1

This edition was a prank edition. Please check out the real Perl 6 Weekly of this week for real Perl 6 related information.

Winding Down

Jonathan Worthington‘s announcement has been a fine example of ADD at work, as opposed to CDD, which yours truly is subjected to for the German Perl Workshop starting this Tuesday!

2018.13 Apply Perl 6

Patrick Spek has written an excellent tutorial (Reddit comments) on how to create an application with Rakudo Perl 6. Apart from a command-line interface, this tutorial shows you how to create a GUI for the application as well. Cool stuff!

Perl 6 Tutorials at TPCiSLC

Two whole-day Perl 6 tutorials will be given at The Perl Conference in Salt Lake City:

Be sure to register soon, as places are limited!

Additional Perl 6 presentation at GPW

Yours truly will be giving a keynote titled The Future of Perl is here at the coming German Perl Workshop, hoping it will be received by a lot of open minds.

Core Developments

  • Ticket status of past week.
  • Elizabeth Mattijsen properly marked produce and reduce as is nodal. This correction in behaviour however broke two tests, that have been deemed incorrect and thus fixed. This may have some ecosystem fallout.
  • Samantha McVey added support for the Shift JIS encoding of the windows-932 variety, as well as fixing some edge-cases in the windows1252/windows1251 encoding.
  • Stefan Seifert made sure that a change in the underlying NQP will automatically cause a re-compilation of Rakudo Perl 6 itself. He also fixed a race-condition on concurrent access of arrays, as well as an optimization issue with zombie conditionals (such as 42 ?? "answer" !! "huh").
  • Zoffix Znet did extensive research into the state of the art of stringification of Nums (aka floating points) and completely reimplemented it using the Grisu3 algorithm. As well as fixing long standing errors in some edge cases of stringification, it also made stringification of Nums twice as fast!
  • Timo Paulssen worked on optimizing the supervisor so that it doesn’t allocate anything if nothing is happening. He also changed the nqp::getrusage op so that it takes an integer array as a parameter, instead of allocation a new one each time.
  • Jonathan Worthington made sure that Proc::Async.ready now returns the PID of the started process. Just like the more self-documenting new Proc::Async.pid method.
  • Daniel Green had several Pull Requests merged to internally use nqp::splice rather than explicit loops doing the copying.
  • Jeremy Studer improved the documentation of several NQP ops.
  • Aleks-Daniel Jakimenko-Aleksejev made sure that, when building the MoarVM Rakudo Perl 6 backend, the (unnecessary) availability of the JVM is no longer checked.
  • Paweł Murias improved the parsing of scientific numerals.
  • Elizabeth Mattijsen also did many micro-optimizations to specifically reduce the overhead of code run with hyper or race.
  • And many other bigger and smaller improvements and additions.

Other Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

  • J.J. Merelo:

    I’ve just officially started the TPF grant about curating and taking care of the Perl 6 documentation repository. I’ve set up this repo for reports, issues and anything that can’t or shouldn’t go to the doc repo, and of course for your suggestions, offers of help, and so on. Set a watch on it if you want to follow my progress.

  • Roland Schmitz:

    Reasons to visit the 20th German Perl-Workshop

    • three authors of recent Perl 5 & Perl 6 books are giving talks
    • Perl 5 & Perl 6 core hackers also give talks
    • we have 4 all-day Workshops, where you can dive into a subject matter with a “hands-on” experience for a whole day each
    • lots of nice people from 10 countries are coming

Meanwhile on perl6-users

Meanwhile on PerlMonks

Perl 6 in comments

Perl 6 Modules

5 new modules:

14 updated modules:

Winding Down

Quite a nice number of developments in the shortest week of the year (at least where yours truly lives)! Next week’s Perl 6 Weekly will not contain any Easter Eggs. Or will it? Please check in again to find out!

2018.12 Remotely Edument

The Perl 6 Team at Edument has been quietly working on remote debug support for MoarVM, the most developed backend for Rakudo Perl 6. Jonathan Worthington describes in a blog post (Reddit comments) why and how this new feature came to be, and how stable it is. The current set of features at least include:

  • Suspending and resuming all threads, or individual threads.
  • Getting stack traces of suspended threads.
  • Setting breakpoints and getting notified if they are hit (and, optionally, suspending execution).
  • Reading the lexical variables of a callframe, object attributes, array and hash elements.

Timo Paulssen has been working on the Perl 6 language part of the remote debugger: App::MoarVM::Debug, which currently is still a little rough around the edges, but since it is an ecosystem module, can be updated / fixed / improved without needing a Rakudo Perl 6 compiler release!

Truly exciting times for Perl 6 core developers, and everybody else who is getting their work done using Rakudo Perl 6!

Rakudo Compiler Release 2018.03

Samantha McVey created the 2018.03 MoarVM release, and Aleks-Daniel Jakimenko-Aleksejev used that as a cue to do the 2018.03 Rakudo Compiler Release. Which Claudio Ramirez then took as a cue to create new Linux packages. Good work all around again! Only one release to go before the next Rakudo Star release!

Javascript backend progress

Paweł Murias reports on the progress he’s made on the Javascript backend for Rakudo Perl 6: a lot of refactoring to make it more compatible with the MoarVM and JVM backends. Making precompilation work while being able to introspect the original source code, e.g. when an execution error occurs. Some of the work is now unearthing bugs on other backends, which is always a good thing!

Other Core Developments

  • Ticket status of past week.
  • All of these fixes made it to the 2018.03 release, unless otherwise noted.
  • Samantha McVey added proper support for replacements in decodestream for windows1251/2.
  • Daniel Green added many, many more JIT-templates for better JITting of nqp::ops.
  • Timo Paulssen created the initial version of the new remote debugging support for MoarVM over the past months, and he continued development / debugging the past week.
  • Stefan Seifert made sure that precompiled files using NativeCall no longer contain absolute paths: this should make packaging of Rakudo Perl 6 easier for Linux distributors, such as openSUSE. He also made NQP module builds reproducible. This means it can now much more easily be packaged (some distributions require reproducible builds), but it also means that simple rebuilds (without source changes) will no longer lead to “Missing or wrong version of dependency” messages (this did not make it to the 2018.03 release).
  • Elizabeth Mattijsen focused on some general improvements that would help in the serial pre- and post-processing of hyper and race.
  • Jonathan Worthington fixed a pesky spesh bug related to how the first argument to a Block was incorrectly considered to be constant (the invocant if the Block happens to be a Method). He also made sure that samewith can never be inlined.
  • Will Coleda worked on indentation in pod tables.
  • Zoffix Znet fixed many, many bugs and release blockers. He e.g. fixed the discrepancy between say and note with regards to the handling of Junctions.

Other Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

Perl 6 in comments

  • Subclassing and parameterizing grammars by b2gills.
  • Backward compatible syntax by bmn__.
  • Completely different language by smcl.
  • Changed much less by bhaak.
  • Hygienic macros by kamaal.
  • Indirect influences by lispm.
  • More readable pattern matching by dash2.
  • Perl 6 Modules

    It’s been a while since Perl 6 CPAN modules (now at 1064 distributions) were mentioned in the Perl 6 Weekly. From now on yours truly will be reporting on new and updated Perl 6 modules. To catch up, here’s a list of 68 new Perl 6 modules uploaded to CPAN in 2018:

    The following 29 Perl 6 modules have been updated at least once in 2018:

    Winding Down

    Wow. What a week! Hope this wasn’t too overwhelming / boring for the reader. Sometimes less is more. Don’t worry, I don’t think we will beat the number of uploads of the past 11 weeks in the coming week. So the module listing will be a lot smaller in the next Perl 6 Weekly. Or will it? Only one way to find out. See you next week! 🙂

    2018.11 Lockless Gems

    During and shortly after a well-deserved holiday, Jonathan Worthington created some nice modules for concurrent, but lockless, data-structure primitives:

    So, strictly this has not been work that is part of the Rakudo Perl 6 core, but they definitely have a core functionality feel to them! As many of the other modules which Jonathan already made.

    Perl 6 tidy

    Jeff Goff has uploaded the very first public version of a perltidy for Perl 6. I’m sure it’s not going to be the last one: release early, release often!

    German Perl Workshop

    The schedule of the German Perl Workshop 2018 (4 to 6 April) shows quite a number of Perl 6 related items:

    And Andrew Shitov is giving three days of Perl 6 related training sessions:

    So, this is your chance to be deeply immersed in Perl 6 for three whole days! And on the Saturday after the workshop, there will be a hackathon where no doubt some Rakudo Perl 6 hacking will take place!

    The Perl Conference in Salt Lake City

    The Perl Conference 2018 (19 – 22 June) has released the latest newsletter. In it are shown the presentations that already have been accepted. Of those, the following are Perl 6 related:

    You can still submit a (another) talk until the 28th of March!

    Core Developments

    • Ticket status of past week.
    • Zoffix Znet published the 3rd revision of his Polishing Rationals proposal. He also straightened up the handling of $/ with regards to Str.subst and Str.subst-mutate.
    • Daniel Green improved the optimizability of the infix: List operator for 2 elements.
    • Timo Paulssen made sure that a closing the last .tap on a Supply that was created by signal() (such as signal(SIGINT).tap: { }) will restore the original low-level signal handler. He also added a :datagram named parameter to IO::Socket::Async.udp.Supply to allow easy access to .hostname and .port of any received datagram.
    • Christian Bartolomäus continued his quest to de-bitrot the JVM backend.
    • Jan-Olof Hendig chased up quite a few old tickets, closing 7 and marking 22 as fixed, needing to have tests made to prevent regressions.
    • Elizabeth Mattijsen optimized the (elem) set operator for the 42 (elem) ^100 case so that it no longer depends on the size of the Range.
    • And many other smaller fixes and improvements.

    Blog Posts

    Meanwhile on Twitter

    Meanwhile on StackOverflow

    Meanwhile on perl6-users

    Perl 6 in comments

    Winding Down

    More and more development in Rakudo Perl 6 is not happening in the core anymore. This is a good thing! Yours truly will try to expand on the scope of reporting in the Perl 6 Weekly in the future. So please check in again next week for more and broader Perl 6 related news!