Alexander Kiryuhin again did all the hard work to create a new Rakudo Compiler release: the Rakudo Compiler 2020.11 Release! With a bunch of new features, such as new coercion semantics, support for the [|| ]
and {|| }
postcircumfix operators, a new is test-assertion
trait for better error reporting during testing. Plus some efficiency improvements and quite a number of bug fixes and improvements.
Sadly, shortly after the release it became clear that some typical workloads seem to be affected by a noticeable performance regression. This appears to be caused by the new coercion semantics inadvertently disabling some runtime optimizations. Fixing this has now become a blocker for the next release. It just goes to show that in Raku, it’s important to first make it work, and then make it work fast. And that a lot of users are already relying on those runtime optimizations.
A history of Raku
Thibault Duponchelle has written an extensive history of the Raku Programming Language for a French Linux Magazine: Raku en 2020 (en Français, bien sûr). It is a trip down memory lane, but also gives an excellent technical overview of current Raku. Kudos to Thibault for the extensive research!
Porting from Go
JJ Atria has published another nice blog post, this time about their experience porting a helper program to Raku: Porting from Go. It even comes with a new module: Timer::Stopwatch!
New Coercion Semantics explained
Vadim Belman has written an extensive blog post about how the new coercion semantics came to be, and what they bring to the average (module) developer. And how “I can probably do it in a week or two!” turned into many month’s of work (/r/rakulang comments).
Advent getting closer!
It’s almost that time of the year again: Raku Advent Blog Post Time! Be sure to submit your ideas, or even better a PR with a completed Advent post to make sure there’s a slot available for you. Less than 10 left now!
From The Perl Foundation
Makoto Nozaki has published the TPF Meeting Minutes of the Board/Community meeting of last October.
Weekly Challenge
Weekly Challenge #88 is available for your perusal. Andrew Shitov did a full review of the Raku solutions of Challenge #84.
Core Developments
- Nicholas Clark reduced some algorithmic duplicity in MoarVM, and fixed an issue with big integers not being handled correctly by the spesh thread.
- Jonathan Worthington fixed an issue related to precompilation of modules that use
NativeCall
. - Stefan Seifert added some additional internal debug information for easier identification of common data structures.
- Vadim Belman fixed some issues found with the new coercion semantics, in time for the 2020.11 release.
- Peter du Marchie van Voorthuysen fixed some flattening issues with the sub version of
push
andunshift
, madecas()
about 15% faster and added some Windows-specific build instructions. - Christian Bartolomäus fixed some recently introduced issues on the JVM backend.
- Patrick Böker tweaked the build process some more again, specifically on Windows, making it possible to build Rakudo on Windows with MinGW again.
- Ben Davies made
IO::Socket::Net.new
only accept typed family/type/protocol values. - Elizabeth Mattijsen added a
%*SUB-MAIN-OPTS<coerce-allomorphs-to>
to have allomorph values automatically converted to non-allomorph values prior to dispatch toMAIN
. They also added adeterministic
method toIterator
s indicating whether an iterator will always produce the same results given a set of input parameters. And fixed a few long-standing issues withREPL
usage (and possibly replaced them by other issues). - Daniel Mita improved the rendering of attributes in
Pod::To::Text
. - And quite a few smaller fixes and improvements.
This week’s new Pull Requests:
- Minimally exact bigint/bigint => num conversion, including rounding
- Add a test configuration for MinGW on Windows
- Align behaviour for NQP hash on JVM with MoarVM
Please check them out and leave any comments that you may have!
Questions about Raku
- How to use capturing group inside lookaheads by Julio.
- Why does multiple use of
<( )>
token withincomb
not behave as expected? by chenyf. - Is it possible to do boolean assertions with a regex? by Julio.
- Smooth Operator: Rename a file while writing to it by jakar.
- What’s the equivalent for the following Python code? by Salt-Region7283.
- Anti-matching against an infinite family of
<!before>
patterns by littlebenlittle.
Meanwhile on Twitter
- Rakufile specification by Alexey Melezhik.
- Easy testing of different commits by Alexey Melezhik.
- Introducing
Test::Assertion
by Elizabeth Mattijsen. - Looks fun! by 八雲アナグラ.
- Getting away from GitHub by Dr. Roy Schestowitz (罗伊).
- Raku Fundamentals for ACM members by ACM Education & Learning Center.
- Full support for module installation by Alexey Melezhik.
- Moved to GitLab? by Dr. Roy Schestowitz (罗伊).
- Only 10 left! by JJ Merelo.
- Grammars as a language feature by (have-YER! Candeira).
- Containers good to go! by JJ Merelo.
- Time to learn it by DeWitt Clinton.
- Is like it was by Stuart Langridge.
- Wanting it to be possible by Dam H..
- Can’t do tests like
a == b | c
by Liminal Warmth. - Excellent overview! by Luc St-Louis.
- 10 responses received by Dr. Roy Schestowitz (罗伊).
- No built-on set operators? by yo yehudi stays away from humans! 🌈.
Comments about Raku
- Huge game changer by aletennaub.
- Cool quote characters by andrewl-hn.
- Rational numbers by athenot.
- Supporting Unicode for over a decade by andrewl-hn.
- A word, please by bmn__.
- Being multi-paradigm by williadc.
Useful code examples
It has come to the attention of yours truly that many people have a collection of useful Raku code examples stored as gists. Not quite enough to turn into a distribution for the ecosystem, but handy to know about anyway. If new gists are available, they will be listed in this section! So here we go:
- Add track numbers to your .mp3 files by Clifton Wood.
New Raku Modules
- Stache by Ben Little.
- Test::Assertion by Elizabeth Mattijsen.
- CRDT by Fernando Correa.
- App::Lorea by José Joaquín Atria.
Updated Raku Modules
- Sparrow6 by Alexey Melezhik.
- Terminal::ANSI by Brian Duggan.
- LibXML, PDF by David Warring.
- Memoize, Hash::LRU by Elizabeth Mattijsen.
- Red by Fernando Correa de Oliveira.
- Math::Libgsl::Matrix by Fernando Santagata.
- HTTP::Tiny by José Joaquín Atria.
- Gnome::Cairo, Gnome::Gtk3 by Marcel Timmerman.
- zef by Nick Logan & Tony O’Dell.
- Config::Parser::toml, Config, Dist::Helper by Patrick Spek.
Winding down
Being able to announce a new release is always cool. A nice set of blog posts this week, with an opportunity to brush up on your French 🙂 And an impressive number of core improvements. Pretty sure there will be more of them in next weeks Rakudo Weekly News about the Raku Programming Language! And please: stay safe and stay healthy!