The Raku Foundation
Anyone with an active interest in the success of Raku is welcome to Register their interest in membership of The Raku Foundation community – details of participation are being thrashed out by the newly appointed Executive Board and will be communicated in due course.
Rakudo Release #194 Announcement
On behalf of the Rakudo development team, I’m happy to announce the June 2026 release of Rakudo #194. Rakudo is an implementation of the Raku language.
Improvements:
- Make Duration based on an Int rather than Real [9c322706]
- Create Array.fmt candidates with more precise handling [7cb5a193]
- Add :end named argument to .split with limit [f628473b]
- Disable macros in 6.e [e93a9dfa]
- Allow “unit sub foo” in 6.e and higher [79788ffe]
- Make smartmatch dispatch a lot DRYer [f3351476]
Fixes:
- Properly support %g in 6.e sprintf [883770dd]
- Gate @/% shadowing semantics on language revision [9044b0d0]
- Fix infinite recursion in Hash::Typed/Object INSTANTIATE-GENERIC [c08667c4][427f1f1d]
- Break self-resolution loop in GenericHOW.instantiate_generic [d845850a]
- Fix sql profiler output with too many entries in one table
- Fix datagram memory leak [931393bd]
- Make sure .assuming passes on slurpy hashes [8ec11ecc]
- gettid fix for older linux installs [5fae814f]
- Allow GC to run while decoding large buffers of utf8/c8 [20b6c745]
- Fix smallint branch of MVM_bigint_mod for values that wrap [0870b473]
- Break up large SQL profiler output strings [c46a0f13]
- Fix Array.pop, .shift on holes in arrays [415fa4b0][69b25922]
- Change all TWEAK methods to submethods [c15ee3da]
- Default object hash value type to Mu under 6.e, Any otherwise [d29b32a2]
- Fix my %h is Set|Bag|Mix = 1,2,3 [e78c5a7e][0918c055]
- Fix deprecation message on return value error message [52e1c248]
- Remove some stray .perl method calls [48ccbea7]
- Make sure precompilation stores are keyed per compiler frontend [0e412620]
- Give all package installers is-stub and defuse-stub [61cd0abc]
- Stop crash when resizing the pty of a non-started Proc::Async [1964cf38]
- Make ‘has %.a is Set’ work [5eee34b5]
- Make .return check the routine it actually returns from [78c9e9d4]
- Fix IS-SETTING-ONLY-U so a user ACCEPTS is not skipped [66b4e535]
Additions:
- Introduce RAKUDO_ASSUMING_DEBUG environment variable [434bb30b]
- Add native int/num method “bits” [cbc3852b]
- Add :translate-nl named arg to IO::Path.slurp [46fc8602]
RakuAST:
Editor’s note: Last time I thought 52 RakuAST items was a lot – this time there are 83!!! Rather than list them all here, I provide a screengrab in fine print – go to https://rakudo.org/post/announce-rakudo-release-2026.06 for a proper review. RakuAST work is on fire!

The following people contributed to this release:
Nick Logan, Elizabeth Mattijsen, Will Coleda, Timo Paulssen, Daniel Green, Patrick Böker, comborico1611, raiph, rir
Steve’s Corner
I resumed the Slangify posts with one showing the Restaurant Booking LLM workflow.
Ralph’s Corner
Ralph Muschall shared their Gotoh (advanced string comparison) algorithm implemented in Raku. This is a string comparison algorithm that counts matches/mismatches as well as deletions/insertions (with affine penalty), all four weights are real numbers (the first one is usually positive, the others are negative).
Weekly Challenge
Weekly Challenge #380 is available for your progression.
Raku Tips ‘n Tricks
This week, the IRC #raku-beginner channel picked up an excellent question. In trying to answer it, I took a deep dive into routine list and learned a lot. Thanks to Time Melon for their curiousity.
The challenge was:
Why does list(Seq(1,2,3)) NOT return a List?
(In fact, it returns a Seq).
TLDR; routine list does its best to give you a listy thing since that is what you have requested, usually that’s something of type List, but here Seq is considered listy enough to suffice.
The docs explain best:
Although the Seq class does provide some positional subscripting, it does not provide the full interface of Positional, so an @-sigiled variable may not be bound to a Seq, and trying to do so will yield an error. This is because the Seq does not keep values around after you have used them. This is useful behavior if you have a very long sequence, as you may want to throw values away after using them, so that your program does not fill up memory.
It is possible to hide a Seq inside a List, which will still be lazy, but will remember old values. This is done by calling the .list method. Since this List fully supports Positional, you may bind it directly to an @-sigiled variable.
And the docs example captures it neatly:
my @s := (loop { 42.say }).list;
repl;
@s[2]; # says 42 three times
@s[1]; # does not say anything
@s[4]; # says 42 two more times
Yeah – takes some getting the head round it. But worth the effort to fully appreciate the power of List and Seq types.
[I have inserted the repl line here since that gave me a better feel for what was going on. If you go say @s[2] again then you get True since that is the value returned by the loop {}]
The docs have a few things to say about Lists in general and routine list if you would like to read further:
And note that list() (the subroutine form) and .list (the method form) are not to be confused with .List which is a coercion method that tries to convert your item to a List type (as are all Title Case built-in methods).
Your contribution is welcome, please make a gist and share via the #raku channel on IRC or Discord.
Comments about Raku
- This is an interesting #Elixir pipes operator experiment in #Ruby. #Python has also been experimenting with such an operator. Raku… by Paul Buetow
New Modules
- GOTO by Francis Grizzly Smit
- Chart::Gnuplot by Itsuki Toyota
- MVC::Keayl, ORM::Factory, WWW::Playwright, ORM::ActiveRecord, BDD::Behave::Playwright by Greg Donald
- GD, NativeHelpers::Blob, NativeLibs by Various Artistes
- Qwiratry by Tim Nelson
- Kubernetes, Rmv::JIRA by Rui Vieira
- JSON::Collector, JSON::Webhook by Elizabeth Mattijsen
- Air::Plugin::MailForm by Steve Roe
Updated Modules
- Rainbow by Patrick Böker
- OpenMPT::Bindings by Sasha Abbott
- Air::Examples, Contact, Air by Steve Roe
- Template::HAML, BDD::Behave by Greg Donald
- Cro::WebApp by cro
- Slang::Roman, JSON::Path by Various Artistes
- YAMLStar, YAMLScript by Ingy döt Net
- MoarVM::Bytecode, Text::Emoji, auto-dynamic, DateTime::strftime, Needle::Compile, uniname-words, unprint, vars, CodeUnit, Commands, Random::Names, REPL, Edit::Files, from, under-version-control, Prompt, hide-methods, Prompt::Expand by Elizabeth Mattijsen
- Sparky, Sparrowdo by sp1983
- Blin by Core Mongers
- WWW::Gemini, WWW::OpenAI, LLM::Functions, WWW::Ollama by Anton Antonov
- GnomeTools by Marcel Timmerman
- Rakuast::RakuDoc::Render by Richard Hainsworth
- ASTQuery, Test::Time by Fernando Correa de Oliveira
- ComfyUI::API, LLM::Chat, MCP::Server, Selkie by Matt Doughty
Winding down
OMG – the RakuAST commits are on fire. I note that the RakuAST testing is now moving out to “Blin” which is a test jig that applies new Rakudo builds to a set of Raku modules – so testing against eco-system code.
A double crop of new and updated Raku modules this week since we had to skip last week.
The European heatwave this week had temperatures are high as 37ºC. [I am not going to translate this into ºF so that the Americans don’t mock us.]
Keep up the great work! And Keepeth thy cooleth. Even after week 74 of hopefully only 209.
~librasteve
