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!

    2018.10 Pragmatic Perl

    Viacheslav Tykhanovskyi made all of the interviews he has done for the (Russian language) Pragmatic Perl website from 2013 to 2015 available in English as a single PDF for easy offline reading (Reddit comments). Although the interviews are at least 2 years old, they still feel very up-to-date. Of the 17 interviewees, these 10 had something to say about Perl 6: Sawyer X, Stevan Little, chromatic, Marc Lehmann, Tokuhiro Matsuno, Randal Schwartz, Ricardo Signes, Renée Bäcker, David Golden and Philippe Bruhat. A very interesting (at 120+ pages maybe long) read! Kudos to Viacheslav Tykhanovskyi!

    Rakudo Perl 6 in Alpine

    Rakudo Perl 6 is now part of the Alpine Linux distribution in edge/testing. Another step towards easy availability of Rakudo Perl 6 in the Linux world!

    Performance Analysis Tooling

    Timo Paulssen was finally able to start on his Rakudo Perl 6 Performance Analysis Tooling Grant. So now running your asynchronous code with --profile will produce some real results! He describes the progress in a blog post titled Delays and Delights.

    Curating And Improving Perl 6 documentation

    The TPF Grants Committee has approved JJ Merelo’s grant proposal for improving the Perl 6 documentation. Can’t wait to see the improvements to documentation that it will bring us!

    Polishing Rationals

    Zoffix Znet created a proposal to make Rationals work better in Rakudo Perl 6. Apart from making Rationals more consistent, he also expects to see some performance gains as well! And to make this all happen sooner rather than later, he drafted a Grant Proposal for the next round of TPF grants.

    Other Core Developments

    • Ticket status of past week.
    • Jonathan Worthington changed the extension of the setting files from .pm to .pm6 to follow the advice of the documentation.
    • TimToady decided that say() will not autothread. This after a long discussion on whether it should or not.
    • Zoffix Znet made Num.Bool about 9x faster. He also fixed a scoping issue with Blocks in regexes, and fixed .grep on HyperSeq/RaceSeq. But that’s not it yet: he also fixed an issue with NativeCall and precompiled modules.
    • Christian Bartolomäus again fixed various old and new issues specific to the JVM backend.
    • Elizabeth Mattijsen changed substr() to be a frontend to Str.substr, instead of vice-versa. She also made substr() upto 1.5x and Str.substr upto 3x faster. She did the same with substr-rw, which only got upto 20%/30% faster. She also made sure that Unicode aliases of several operators (, , and ) are now just as fast as their ASCII counterparts.
    • And many other smaller fixes and improvements.

    Blog Posts

    Meanwhile in StackOverflow

    Meanwhile in Twitter

    Meanwhile on perl6-users

    Meanwhile on PerlMonks

    Perl 6 in comments

    Winding Down

    The weather has turned from record breaking cold for the time of the year, to a nice spring. In the matter of a day! Feels to me we’re going to see some exciting budding buds in the coming weeks, if the weather is any indication. So please check in again next week for more budding!

    2018.09 Say Cheese.d

    Zoffix Znet has given an excellent insight into how Perl 6 developers introduce changes to the compiler and the language in his blog post On Specs, Versioning, Changes, and… Breakage (Reddit comments). It makes clear that over time, the story of Perl 6 will have fewer and fewer plot holes. A recommended read!

    Are you near Brno this Thursday?

    Then that’s your change to see Jonathan Worthington give a presentation on Cro and Perl 6’s concurrency features. Wish I could be there!

    Rakudo Compiler Release 2018.02

    The past week saw not one, but two Rakudo Perl 6 compiler releases. Aleks-Daniel Jakimenko-Aleksejev did all the hard work to do a 2018.02 as well as a 2018.02.1 release. The latter contains a hot fix for a boo-boo. Fortunately, all Linux packages have already been updated by Claudio Ramirez.

    Other Core Developments

    As promised last week, an overview of developments of the past 2 weeks:

    • Ticket status of past week and the week before that.
    • Jonathan Worthington fixed a memory leak with one-shot timers, such as Promise.in(2). He also implemented a nqp::tryfindmethod op as an optimization to nqp::can and nqp::findmethod.
    • Bart Wiegmans fixed an (apparently long-standing) problem with nqp::if in spesh: “It is amazing we got away with this hack for so long”.
    • Samantha McVey worked on the strict decoding of the windows-1251 and windows-1252 encodings.
    • Nick Logan added a nqp::getppid op to get the pid of the parent process.
    • Timo Paulssen did some more preparations for the work on the multi-threaded profiler.
    • Zoffix Znet fixed various issues with eof detection on zero-sized files on MoarVM. He also made the gist of a Backtrace more informative, and made the return value of Str.subst-mutate(:g) consistent whether or not the underlying match succeeded. On the efficiency front, he did some amazing performance improvements on Uni.list (15x to 653x). And he implemented IO::CatHandle.handles, which gives you a Seq of the IO::Handles of which it consists. And fixed an issue with the last statement of a for loop not being sunk.
    • Tom Browder added a lot of tests and documentation to nqp. He also renamed the spew sub in nqp to spurt to align with how that functionality is called in Rakudo Perl 6. And he added a run-command sub to nqp.
    • Christian Bartolomäus fixed various old and new issues specific to the JVM backend.
    • Elizabeth Mattijsen made sure that Cool.subst-mutate will not actually convert the object to a Str if the underlying match failed. And she started working on converting all public only subs to multi subs, allowing candidates to be added by developers in their programs without losing the built-in one.
    • And many, many other smaller error fixes and improvements.

    Other Blog Posts

    Meanwhile on StackOverflow

    Meanwhile on Twitter

    Meanwhile on FaceBook

    • Andrew Shitov:

      I wrote a “Blinking LED Hello World” in Perl 6 for Orange Pi today.

      for True, !* ... * {
           shell("gpio write $pin " ~ +$_);
           sleep 0.5;

      It is cool that you can use such a sequence True, !* ... *
      It would be nice to have fresh packages for major OSes beyond Windows and OS X listed on the official site.

    Meanwhile on perl6-users

    Meanwhile on PerlMonks

    Perl 6 in comments

    Winding Down

    Plenty of excitement in the world of Perl 6 again this week. And yours truly feeling a bit better yet again. Looking forward to being able to do next week’s Perl 6 Weekly. Hope you are too. See you then!

    2018.08 Perl 6’ya Giriş

    Yalın Pala has created a Turkish 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. This now brings the total of translations to 10: Bulgarian, Chinese, Dutch, French, German, Italian, Japanese, Portuguese, Spanish and now Turkish. A fine body of work!

    German Perl Workshop

    The German Perl Workshop 2018 will be happening on 4-6 April, at the Campus Gummersbach of the Technische Hochschule Köln, followed by a Perl 6 Hackathon on the 7th of April. Although not yet on the program officially yet, there will be a full day Perl 6 workshop given as well. And the Call for Papers has been extended to the 10th of March! So this is the moment to propose your Perl 6 related presentations! Please check it out!

    Granada Perl Workshop

    It appears yours truly completely missed the Granada Perl Workshop last weekend. JJ Merelo had this to say about it on FaceBook:

    We have had a fine day in front of the Alhambra loving Perl. Several talks on Perl and Perl 6, including great introductions, history, Perl for Windows and programming IRC bots, concurrency in Perl 6, all in all, a great experience. It’s been the second conference we’ve had in Granada, won’t be the last one. Here’s the album I have created, you can also check the #love4perl hashtag in social networks.

    Curating and Improving Perl 6 Documentation

    JJ Merelo has submitted a grant proposal for the improvement of the Perl 6 documentation. Please check out the discussion about the pro and cons of this proposal.

    More Perl 6 Performance and Reliability

    The grant that Jonathan Worthington requested has been approved by the Board of Directors of the Perl Foundation. So expect some really cool things to happen in the coming weeks/months on top of the excellent work that so many others are already contributing to Rakudo Perl 6.

    UDP Datagram API, an RFC

    Timo Paulssen would like to see comments on his proposal for an API providing source address and port of UDP datagrams. If you’d like to say anything about that, now is the time!

    Blog Posts

    Meanwhile on Twitter

    Meanwhile on StackOverflow

    Meanwhile on perl6-users

  • Open files by given name and extension and ask for deletion by mimosinnet.
  • Swiss Perl Workshop 2018 Call for Perl 6 Keynotes/Talks/Tutorials by Lee Johnson.
  • Perl 6 in comments

    Winding Down

    Unfortunately, yours truly is still recovering from a bad cold. Enough to have a woolly head that is incapable of handling complex information. So no core developments section from me this week, will cover this week’s core developments next week. See you then!

    2018.07 A Quick One from Apopka

    While recovering from the long-planned PR&R, yours truly got a bad cold. I guess heat, alcohol and air-conditioning don’t mix too well 😦 So a short Perl 6 Weekly this time, from the town of Apopka, although it feels a bit like being in Pawnee.

    New Bots

    Aleks-Daniel Jakimenko-Aleksejev created two new IRC bots: Notable (for noting things, which is helping yours truly writing this already) and Shareable (for making builds of the Whateverable bot publicly available). By the way, the Whateverable repo saw its 500th commit!

    Better documentation

    JJ Merelo has worked hard on the doc repository which, by the way, has now surpassed the 8000 commits mark! On Facebook, he said:

    We are past the mark of the 800 issues closed in the perl6/doc repository. There’s still a lot of work to do, with 290 outstanding issues. Full disclosure here: I have applied for a Perl6 core grant to deal with this documentation.

    Cro Release 0.7.3

    Cro released version 0.7.3, with as most notable changes:

    • Support for HTTP/2.0 push promises (server and client side)
    • HTTP session support
    • body parser/serialization support in WebSockets
    • a UI for manipulating inter-service links in cro web

    It’s exciting to see these new developments making Cro the place to go to for implementing all sorts of web services.

    Blog Posts

  • push-all optimisation of List.roll by Andrew Shitov.
  • How does 0 but True work by Andrew Shitov.
  • Dumping 0 but True by Andrew Shitov.
  • Perl 6 is better CoffeeScript than CoffeeScript by ktown007.
  • Colonpair in Perl 6’s Grammar, part 1 by Andrew Shitov.
  • Colonpair in Perl 6’s Grammar, part 2 by Andrew Shitov.
  • An attempt to understand how [*] works by Andrew Shitov.
  • Other core developments

    • After having done the Perl 6 Weekly last week, Zoffix Znet continued to be very busy: among many other things, he fixed the use of slurpies in if statements (aka if 42,43,44 -> *@a { }, sprintf on type objects, optimization on native pre/post increment/decrement, implemented support for .= to initialize sigilless variables, allow for parameterized constraints when initializing attributes with .= and generally optimized the dispatch of .=.
    • Jeremy Studer removed an extranous push in code object creation.
    • Jan-Olof Hendig spotted some missing deconts in cmp handling.
    • Fernando Correa de Oliveira fixed Parameter.usage-name in the case that the name had a twigil.
    • Stefan Seifert fixed an issue in multi-threaded pre-compilation of modules.
    • And many other smaller changes and improvements.

    Meanwhile on Twitter

    Meanwhile on StackOverflow

    Perl 6 in comments

    Winding Down

    A bit shorter than usual, maybe. Please check again next week when yours truly has returned to her regularly scheduled programming. See you then!

    2018.06 Whatever FOSDEM Squashed

    As lizmat++ is currently enjoying a well-deserved rest in the Caribbean, today’s Weekly is guest-written by a Zoffix! Hopefully, it’s still going to be good…

    It’s been a slow week, as many Sixers are attending the Free and Open Source Software Developers’ European Meeting (FOSDEM). As was mentioned in an earlier Weekly, there will be some Perl 6 talks. The videos for them already started rolling in: Perl 6 on Jupyter by Brian Duggan (slides and code).

    So far, the event seems to be going well:

    <tyil> the perl stand at fosdem was awesome, much more people that
    showed interest in Perl 6 than I imagined


    This weekend saw our 6th Monthly SQUASHathon happen. This month’s topic was squashing tickets marked with testneeded label and the participants made 47 commits towards that effort.

    2018.01 Rakudo Star Binaries, Still Pending

    stmuk++ is still testing the binary Release Candidates for 2018.01 release of Rakudo Star. You can help out by downloading the RC0 binaries and reporting any problems you find.

    Core Developments

    This week, 48 tickets were handled, with 26 of them resolved.

    • ash++ implemented a push-all optimization to List.roll
    • nine++ made several improvements to start up speed, by improving code of Stash.merge-symbols, optimizing CompUnit::PrecompilationUnit::deserialize, as well as moving setup of certain objects like $*PERL and $*VM to compile time (this work is still ongoing)
    • MasterDuke++ continued working on implementing JIT templates for various ops, merging 30 more this week.
    • ugexe++ fixed CompUnit::RepositoryRegistry to point to correct location for home repository
    • samcv++ added support for windows-1251 (Cyrillic) encoding on both MoarVM and JVM backends, and fixed several bugs in windows-1252 encoding with several characters not being correctly encoded
    • pmurias++ continued working on the JS backed, dealing with utf8-c8 encoding
    • Kaiepi++ improved docs and Configure.pl option for building MoarVM
    • jstuder-gh++ fixed a bug with state variables inside a do loop
    • titsuki++ and jnthn++ de-bittrotted nqp repository’s files and documentation
    • dogbert17++ fixed segfaults when errors were encountered while opening MVM_*_LOG files
    • brrt++ added a NOOP expr JIT operator
    • timotimo++ made sure PHI were not output into expr JIT log as well as made a proposal for datagram-oriented API for UDP sockets
    • zoffix++ redesigned the Whatever, WhateverCode, and HyperWhatever currier, fixing a number of bugs, as well as making nested Whatever closures faster to compile and run (a 5-arg Whatever now runs 2.2x faster and compiles 8% faster). He also made .= method calls 39x-64x faster.

    Other assorted work core devs performed included:

    • Fixed a bug in sorting a 2-element list with arity-2 sorter
    • Fixed crashes in compile-time executed where thunks
    • Changed semantics of :b quoter tweak, to behave more like qq quoter, fixing a bug in :b:s quoter combination
    • Fixed bogus error in REPL when a none Junction was a result of the expression
    • Fixed crash with ENTER phaser nested inside LEAVE phaser
    • Fixed crash in Proxy.perl

    Learning Perl 6

    The Learning Perl 6 book by brian d foy has reached a milestone in its production: all of the research has been completed. All that remains to do is cleaning everything up and doing a bit of rework on some chapters.

    Blog Posts

    ash++ continued the DAILY Perl 6 Inside Out blog posts (while also writing for the Russian-language perl6.ru):



    Winding Down

    That’s about it for the week! Hope you enjoyed the guest-written Weekly. It’s a tough job writing these, so be sure to thank lizmat++ for doing them.