Raku Eye

The weekly watch on fresh Raku code.

Every Monday, unattended, Raku++ is measured against what the Raku world published that week — Weekly Challenge solutions, new ecosystem releases, and the raku-corpus golden battery — with Rakudo as both control and speed reference. Updated 2026-09-07 at rakupp 1c559dd0c.

92.9%
Weekly Challenge — byte-identical of counted
1636 / 1813
raku-corpus programs matching reference
20
standing PWC mismatches (the open set)
7 green of 23 new
fresh ecosystem releases

What moved this week

3 regressions this week. A program that was byte-identical to the Rakudo reference on 2026-08-31 and is not today.
whereprogramlast week → this weekwhat differs
raku-corpus./books/raku-one-liners/12-renaming-files.rakubyte-identical → exit status differsexit 1, reference 0
stderr: Index out of range. Is: -1, should be in 0..^Inf
raku-corpus./snippets/perl6-play/1/bool.plbyte-identical → output differsline 4 — reference False, rakupp True
raku-corpus./snippets/raku-test/012/any-2.rakubyte-identical → output and exit status differline 1 — reference There are negative ints, rakupp (no more output)
exit 1, reference 0
stderr: ===SORRY!=== Parse error at line 6: Unable to parse expression in quote words; couldn't find fin…

Fixed since 2026-08-31: ./challenges/advent-of-code/2020/04/04-2.raku (output differs), ./programs/languages-in-raku/stack-based/stacky.raku (exit status differs), ./snippets/perl6-play/1/bare-sigil.pl (output differs), ./snippets/perl6tests/parallel/channel4.pl (output differs), ./snippets/perl6tests/regex/20.pl (output differs) — they match the reference again.

Weekly Challenge

New solutions since the last run, the open set re-run, and a rotating 10% of past passes.

Hover a chart for that week's numbers; click a name in the legend to switch its line off.

0 27 54 81 108 26-08-22 26-08-24 26-08-31 26-09-07 2026-08-22: 91.27 — byte-identical, % of the counted ledger 2026-08-24: 91.47 — byte-identical, % of the counted ledger 2026-08-31: 92.51 — byte-identical, % of the counted ledger 2026-09-07: 92.86 — byte-identical, % of the counted ledger

raku-corpus

1,800-odd curated programs against committed Rakudo reference outputs. This line should hold or climb; any dip names the file that broke, above.

1606 1614 1622 1630 1638 26-08-22 26-08-24 26-08-31 26-09-07 corpus moved to f3727e1a 2026-08-22: 1608 — programs matching the Rakudo reference 2026-08-24: 1608 — programs matching the Rakudo reference 2026-08-31: 1634 — programs matching the Rakudo reference 2026-09-07: 1636 — programs matching the Rakudo reference

Benchmarks — Rakudo time ÷ rakupp time

Above 1× means rakupp is faster. Measured back-to-back on the same runner each week; dashed lines mark a Rakudo release or toolchain change. Ratios are the series — absolute times from shared CI hardware are stored in the ledger but not headlined.

interpreter

12.17× 24.35× 36.52× 48.69× 26-08-22 26-08-24 26-08-31 26-09-07 2026-08-22: 2.858× — arrayops 2026-08-24: 2.839× — arrayops 2026-08-31: 2.881× — arrayops 2026-08-24: 1.625× — arraypush 2026-08-31: 1.471× — arraypush 2026-08-22: 6.931× — bigint 2026-08-24: 6.606× — bigint 2026-08-31: 6.919× — bigint 2026-08-22: 0.6283× — fib 2026-08-24: 0.7064× — fib 2026-08-31: 0.6319× — fib 2026-08-22: 4.021× — hash 2026-08-24: 5.302× — hash 2026-08-31: 4.5× — hash 2026-08-22: 1.897× — hashfill 2026-08-24: 2.581× — hashfill 2026-08-31: 2.142× — hashfill 2026-08-22: 0.9192× — loopsum 2026-08-24: 1.81× — loopsum 2026-08-31: 1.821× — loopsum 2026-08-24: 0.3272× — objects 2026-08-31: 0.3638× — objects 2026-08-24: 0.8879× — rats 2026-08-31: 0.8895× — rats 2026-08-22: 3.035× — regex 2026-08-24: 3.336× — regex 2026-08-31: 3.199× — regex 2026-08-24: 4.252× — sortby 2026-08-31: 4.158× — sortby 2026-08-22: 5.419× — sortnums 2026-08-24: 5.39× — sortnums 2026-08-31: 5.144× — sortnums 2026-08-22: 42.3× — startup 2026-08-24: 39× — startup 2026-08-31: 45.11× — startup 2026-08-22: 6.845× — strcat 2026-08-24: 11.15× — strcat 2026-08-31: 11.71× — strcat 2026-08-22: 0.4654× — streq 2026-08-24: 0.5842× — streq 2026-08-31: 0.5813× — streq 2026-08-24: 3.06× — textsplit 2026-08-31: 2.791× — textsplit

native (--exe)

12.34× 24.67× 37.01× 49.34× 26-08-22 26-08-24 26-08-31 26-09-07 2026-08-22: 2.784× — arrayops 2026-08-24: 2.81× — arrayops 2026-08-31: 2.813× — arrayops 2026-08-24: 4.009× — arraypush 2026-08-31: 3.605× — arraypush 2026-08-22: 7.488× — bigint 2026-08-24: 7.211× — bigint 2026-08-31: 7.485× — bigint 2026-08-22: 4.399× — fib 2026-08-24: 4.484× — fib 2026-08-31: 4.326× — fib 2026-08-22: 16.95× — hash 2026-08-24: 16.78× — hash 2026-08-31: 17.16× — hash 2026-08-22: 5.215× — hashfill 2026-08-24: 5.521× — hashfill 2026-08-31: 5.233× — hashfill 2026-08-22: 12.38× — loopsum 2026-08-24: 10.47× — loopsum 2026-08-31: 11.86× — loopsum 2026-08-24: 0.5816× — objects 2026-08-31: 0.5604× — objects 2026-08-24: 1.836× — rats 2026-08-31: 1.83× — rats 2026-08-22: 5.761× — regex 2026-08-24: 6.145× — regex 2026-08-31: 5.699× — regex 2026-08-24: 6.503× — sortby 2026-08-31: 6.388× — sortby 2026-08-22: 8.685× — sortnums 2026-08-24: 8.332× — sortnums 2026-08-31: 8.98× — sortnums 2026-08-22: 45.73× — startup 2026-08-24: 44.2× — startup 2026-08-31: 43.89× — startup 2026-08-22: 41.35× — strcat 2026-08-24: 36.1× — strcat 2026-08-31: 37.41× — strcat 2026-08-22: 8.579× — streq 2026-08-24: 7.481× — streq 2026-08-31: 8.043× — streq 2026-08-24: 4.709× — textsplit 2026-08-31: 4.41× — textsplit
kernelinterpnativerakudospeedup-interpspeedup-nativeflags
startup4.5ms3.8ms
loopsum171.3ms24.0ms
fib722.1ms104.3ms
strcat15.8ms5.1ms
arrayops109.8ms110.7ms
arraypush332.2ms127.1ms
sortnums58.3ms32.6ms
sortby71.3ms46.1ms
regex103.3ms57.7ms
hash58.4ms14.1ms
hashfill329.3ms134.2ms143.7
bigint12.3ms10.7ms
streq652.4ms41.7ms
textsplit132.9ms82.5ms20.6
rats452.9ms222.2ms
objects953.6ms635.0ms

Ecosystem — this week's releases

Every distribution the ecosystem published since the last run, installed and run against its own test suite by rakupp test — with Rakudo as the control for anything that failed.

newpassself-faildep-failtimeoutotherupstream-brokenours
237880035
new
distributions that appeared in the REA index since the previous run. This leg sweeps exactly that set: the ecosystem is measured as it is published, week by week, not re-swept whole.
pass
installed under rakupp test, and the distribution’s own test suite came out green.
self-fail
it installed, but its own suite fails.
dep-fail
a dependency broke first, so the distribution itself never got as far as being tested. The dependency is named in the table below.
timeout
still running after 180 seconds, and killed.
other
it failed for a reason the classifier does not recognise; the raw log line is in the table below.
upstream-broken
of the failures rakupp could be answerable for, the ones Rakudo cannot install either. The run re-tries each of them with zef install under Rakudo: if that fails too, the distribution is broken on its own account and is out of scope here.
ours
…and the ones where Rakudo installs and tests it fine. These are rakupp’s to fix — the single actionable number in the row.

The control runs over self-fail, build-fail, timeout and other only — a dep-fail is charged to the dependency, and shows up under its own name in a later week.

distributionverdictfirst error
Lingua::Stem::Portugueseself-failFAILED: 01-stem-word.rakutest | Undefined routine 'ns'
Lingua::Stem::Portugueseself-failFAILED: 01-stem-word.rakutest | Undefined routine 'ns'
CSS::Minifierself-failFAILED: 01-plugins.rakutest | Cannot resolve caller uc(Any:U); the invocant is a type object, not an instance
LLM::Resourcesdep-fail (Data::Importers)FAILED: 03-harwell-boeing-roundtrip.rakutest | # Failed test 'g05.rua round-trip is byte-identical' at t/03-harwell-boeing-roundtrip.rakutest line 16
BSONself-failFAILED: Document-all-types.rakutest | ===SORRY!=== Parse error at line 182: Error while compiling module BSON::Decode (line 182): expected ] (got ';')
LLM::Graphdep-fail (LLM::Functions)FAILED: 04-LLM-chats.rakutest | # Failed test at t/04-LLM-chats.rakutest line 50
ORM::ActiveRecorddep-fail (NativeLibs)FAILED: 02-cannon-name.t | # Failed test 'In CWD' at t/02-cannon-name.t line 19
Sitemapdep-fail (IO::Socket::Async::SSL)FAILED: client-server.rakutest | The socket was closed during negotiation
LLM::Graphdep-fail (LLM::Functions)FAILED: 04-LLM-chats.rakutest | # Failed test at t/04-LLM-chats.rakutest line 50
NotoFonts-OTdep-fail (OO::Monitors)FAILED: BUILD.rakutest | Variable '$cond' is not declared
Syndicateself-failFAILED: 01-roundtrip.rakutest | No such method 'new' for invocant of type 'FeedFormat'
Syndicateself-failFAILED: 01-roundtrip.rakutest | No such method 'new' for invocant of type 'FeedFormat'
Dawadep-fail (LibraryCheck)FAILED: 010-basic.t | # Failed test 'not ok for a bogus one' at t/010-basic.t line 11
CellularAutomataself-failFAILED: 03-scan-1D.rakutest | ===SORRY!=== Parse error at line 143: Error while compiling module CellularAutomata::Scan (line 143): unexpected operato…
Syndicateself-failFAILED: 01-roundtrip.rakutest | No such method 'new' for invocant of type 'FeedFormat'
Drakudep-fail (Log::Async)FAILED: 12-context.rakutest | # Failed test 'Got context' at t/12-context.rakutest line 23

Things to improve — this week's mismatch clusters

Mechanically grouped by normalized error signature; ranked by files affected.

filessignature
9(output differs)
4# Failed test '…' at <file> line N
4# Failed test at <file> line N
1# Failed test '$(\
1# Failed test '…'[this] [this]'), a common problem <- \
1Cannot convert string to number: '…' is not a valid base-N number