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-10-05 at rakupp 06f9384b5.

93.6%
Weekly Challenge — byte-identical of counted
1696 / 1813
raku-corpus programs matching reference
22
standing PWC mismatches (the open set)
2 green of 29 new
fresh ecosystem releases

What moved this week

3 regressions this week. A program that was byte-identical to the Rakudo reference on 2026-09-28 and is not today.
whereprogramlast week → this week
Weekly Challengechallenge-388/athanasius/raku/ch-1.rakubyte-identical → differs
what differs: line 4 — Rakudo (no more output), rakupp Running the test suite
exit 0, Rakudo 1
Weekly Challengechallenge-389/athanasius/raku/ch-1.rakubyte-identical → differs
what differs: line 4 — Rakudo (no more output), rakupp Running the test suite
exit 0, Rakudo 1
raku-corpus./snippets/perl6-play/1/bool.plbyte-identical → output differs
what differs: line 4 — reference False, rakupp True
7 fixed since 2026-09-28. A program that differed from the Rakudo reference on 2026-09-28 and is byte-identical today — raku-corpus is +6 on the week, at 1696 of 1813 matching.

./challenges/perl-weekly-challenge/021/ch-1.raku (output and exit status differ), ./programs/lingua/misc/calc.raku (output and exit status differ), ./snippets/perl6tests/exceptions/09-2.pl (exit status differs), ./snippets/perl6tests/regex/24.pl (output differs), ./snippets/perl6tests/regex/25.pl (output differs), ./snippets/perl6tests/regex/27.pl (output differs), ./snippets/perl6tests/subroutines/operator.pl (output and exit status differ)

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-31 26-09-14 26-09-28 26-10-05 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 2026-09-14: 92.28 — byte-identical, % of the counted ledger 2026-09-23: 93.4 — byte-identical, % of the counted ledger 2026-09-28: 93.33 — byte-identical, % of the counted ledger 2026-10-05: 93.6 — 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.

1601 1626 1652 1678 1703 26-08-22 26-08-31 26-09-14 26-09-28 26-10-05 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 2026-09-14: 1641 — programs matching the Rakudo reference 2026-09-23: 1665 — programs matching the Rakudo reference 2026-09-28: 1690 — programs matching the Rakudo reference 2026-10-05: 1696 — 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

0× 16.39× 32.79× 49.18× 65.57× 26-08-22 26-08-31 26-09-14 26-09-28 26-10-05 Rakudo v2026.09 2026-08-22: 2.858× — arrayops 2026-08-24: 2.839× — arrayops 2026-08-31: 2.881× — arrayops 2026-09-07: 2.812× — arrayops 2026-09-14: 3.005× — arrayops 2026-09-23: 2.714× — arrayops 2026-09-28: 2.645× — arrayops 2026-10-05: 4.282× — arrayops 2026-08-24: 1.625× — arraypush 2026-08-31: 1.471× — arraypush 2026-09-07: 1.369× — arraypush 2026-09-14: 1.362× — arraypush 2026-09-23: 1.26× — arraypush 2026-09-28: 0.9266× — arraypush 2026-10-05: 11.4× — arraypush 2026-08-22: 6.931× — bigint 2026-08-24: 6.606× — bigint 2026-08-31: 6.919× — bigint 2026-09-07: 21.46× — bigint 2026-09-14: 21.07× — bigint 2026-09-23: 21.1× — bigint 2026-09-28: 20.29× — bigint 2026-10-05: 22.57× — bigint 2026-08-22: 0.6283× — fib 2026-08-24: 0.7064× — fib 2026-08-31: 0.6319× — fib 2026-09-07: 0.7293× — fib 2026-09-14: 0.6554× — fib 2026-09-23: 0.6658× — fib 2026-09-28: 0.4525× — fib 2026-10-05: 28.92× — fib 2026-08-22: 4.021× — hash 2026-08-24: 5.302× — hash 2026-08-31: 4.5× — hash 2026-09-07: 4.111× — hash 2026-09-14: 3.812× — hash 2026-09-23: 3.613× — hash 2026-09-28: 3.186× — hash 2026-10-05: 16.18× — hash 2026-08-22: 1.897× — hashfill 2026-08-24: 2.581× — hashfill 2026-08-31: 2.142× — hashfill 2026-09-07: 2.116× — hashfill 2026-09-14: 2.042× — hashfill 2026-09-23: 1.908× — hashfill 2026-09-28: 1.731× — hashfill 2026-10-05: 2.388× — hashfill 2026-08-22: 0.9192× — loopsum 2026-08-24: 1.81× — loopsum 2026-08-31: 1.821× — loopsum 2026-09-07: 1.821× — loopsum 2026-09-14: 1.835× — loopsum 2026-09-23: 1.799× — loopsum 2026-09-28: 1.407× — loopsum 2026-10-05: 57.3× — loopsum 2026-09-23: 2.168× — mainwhen 2026-09-28: 1.944× — mainwhen 2026-10-05: 60.73× — mainwhen 2026-09-23: 0.2493× — multiwhere 2026-09-28: 0.2123× — multiwhere 2026-10-05: 0.6357× — multiwhere 2026-08-24: 0.3272× — objects 2026-08-31: 0.3638× — objects 2026-09-07: 0.3282× — objects 2026-09-14: 0.4717× — objects 2026-09-23: 0.4634× — objects 2026-09-28: 0.2779× — objects 2026-10-05: 0.7966× — objects 2026-08-24: 0.8879× — rats 2026-08-31: 0.8895× — rats 2026-09-07: 0.8097× — rats 2026-09-14: 0.801× — rats 2026-09-23: 0.7708× — rats 2026-09-28: 0.6112× — rats 2026-10-05: 15.22× — rats 2026-08-22: 3.035× — regex 2026-08-24: 3.336× — regex 2026-08-31: 3.199× — regex 2026-09-07: 2.962× — regex 2026-09-14: 3.009× — regex 2026-09-23: 2.847× — regex 2026-09-28: 2.563× — regex 2026-10-05: 4.282× — regex 2026-08-24: 4.252× — sortby 2026-08-31: 4.158× — sortby 2026-09-07: 5.097× — sortby 2026-09-14: 4.108× — sortby 2026-09-23: 4.622× — sortby 2026-09-28: 3.898× — sortby 2026-10-05: 4.167× — sortby 2026-08-22: 5.419× — sortnums 2026-08-24: 5.39× — sortnums 2026-08-31: 5.144× — sortnums 2026-09-07: 5.199× — sortnums 2026-09-14: 5.159× — sortnums 2026-09-23: 5.067× — sortnums 2026-09-28: 4.406× — sortnums 2026-10-05: 5.972× — sortnums 2026-08-22: 42.3× — startup 2026-08-24: 39× — startup 2026-08-31: 45.11× — startup 2026-09-07: 35.87× — startup 2026-09-14: 40.37× — startup 2026-09-23: 38.98× — startup 2026-09-28: 37.4× — startup 2026-10-05: 36.49× — startup 2026-08-22: 6.845× — strcat 2026-08-24: 11.15× — strcat 2026-08-31: 11.71× — strcat 2026-09-07: 12.28× — strcat 2026-09-14: 11.19× — strcat 2026-09-23: 10.74× — strcat 2026-09-28: 10.68× — strcat 2026-10-05: 38.96× — strcat 2026-08-22: 0.4654× — streq 2026-08-24: 0.5842× — streq 2026-08-31: 0.5813× — streq 2026-09-07: 0.5066× — streq 2026-09-14: 0.5037× — streq 2026-09-23: 0.5137× — streq 2026-09-28: 0.4173× — streq 2026-10-05: 11.06× — streq 2026-08-24: 3.06× — textsplit 2026-08-31: 2.791× — textsplit 2026-09-07: 2.652× — textsplit 2026-09-14: 2.693× — textsplit 2026-09-23: 2.571× — textsplit 2026-09-28: 2.049× — textsplit 2026-10-05: 2.553× — textsplit

native (--exe)

0× 37.47× 74.95× 112.4× 149.9× 26-08-22 26-08-31 26-09-14 26-09-28 26-10-05 Rakudo v2026.09 2026-08-22: 2.784× — arrayops 2026-08-24: 2.81× — arrayops 2026-08-31: 2.813× — arrayops 2026-09-07: 2.79× — arrayops 2026-09-14: 3.027× — arrayops 2026-09-23: 2.755× — arrayops 2026-09-28: 2.56× — arrayops 2026-10-05: 4.436× — arrayops 2026-08-24: 4.009× — arraypush 2026-08-31: 3.605× — arraypush 2026-09-07: 3.577× — arraypush 2026-09-14: 3.575× — arraypush 2026-09-23: 3.133× — arraypush 2026-09-28: 2.661× — arraypush 2026-10-05: 3.789× — arraypush 2026-08-22: 7.488× — bigint 2026-08-24: 7.211× — bigint 2026-08-31: 7.485× — bigint 2026-09-07: 24.66× — bigint 2026-09-14: 27.35× — bigint 2026-09-23: 26.55× — bigint 2026-09-28: 25.12× — bigint 2026-10-05: 28.98× — bigint 2026-08-22: 4.399× — fib 2026-08-24: 4.484× — fib 2026-08-31: 4.326× — fib 2026-09-07: 5.049× — fib 2026-09-14: 5.343× — fib 2026-09-23: 5.303× — fib 2026-09-28: 5.177× — fib 2026-10-05: 63.09× — fib 2026-08-22: 16.95× — hash 2026-08-24: 16.78× — hash 2026-08-31: 17.16× — hash 2026-09-07: 17.03× — hash 2026-09-14: 17.83× — hash 2026-09-23: 15.52× — hash 2026-09-28: 17.04× — hash 2026-10-05: 18.26× — hash 2026-08-22: 5.215× — hashfill 2026-08-24: 5.521× — hashfill 2026-08-31: 5.233× — hashfill 2026-09-07: 5.193× — hashfill 2026-09-14: 5.323× — hashfill 2026-09-23: 5.001× — hashfill 2026-09-28: 5.269× — hashfill 2026-10-05: 7.862× — hashfill 2026-08-22: 12.38× — loopsum 2026-08-24: 10.47× — loopsum 2026-08-31: 11.86× — loopsum 2026-09-07: 13× — loopsum 2026-09-14: 14.65× — loopsum 2026-09-23: 13.23× — loopsum 2026-09-28: 12.97× — loopsum 2026-10-05: 96.44× — loopsum 2026-09-23: 6.713× — mainwhen 2026-09-28: 6.241× — mainwhen 2026-10-05: 138.8× — mainwhen 2026-09-23: 0.2464× — multiwhere 2026-09-28: 0.2157× — multiwhere 2026-10-05: 0.637× — multiwhere 2026-08-24: 0.5816× — objects 2026-08-31: 0.5604× — objects 2026-09-07: 0.4929× — objects 2026-09-14: 0.9007× — objects 2026-09-23: 0.8848× — objects 2026-09-28: 0.5114× — objects 2026-10-05: 0.8743× — objects 2026-08-24: 1.836× — rats 2026-08-31: 1.83× — rats 2026-09-07: 1.65× — rats 2026-09-14: 1.811× — rats 2026-09-23: 1.756× — rats 2026-09-28: 1.421× — rats 2026-10-05: 2.716× — rats 2026-08-22: 5.761× — regex 2026-08-24: 6.145× — regex 2026-08-31: 5.699× — regex 2026-09-07: 5.303× — regex 2026-09-14: 5.307× — regex 2026-09-23: 5.342× — regex 2026-09-28: 4.991× — regex 2026-10-05: 6.631× — regex 2026-08-24: 6.503× — sortby 2026-08-31: 6.388× — sortby 2026-09-07: 7.883× — sortby 2026-09-14: 6.434× — sortby 2026-09-23: 7.234× — sortby 2026-09-28: 6.215× — sortby 2026-10-05: 6.628× — sortby 2026-08-22: 8.685× — sortnums 2026-08-24: 8.332× — sortnums 2026-08-31: 8.98× — sortnums 2026-09-07: 9.298× — sortnums 2026-09-14: 9.417× — sortnums 2026-09-23: 9.907× — sortnums 2026-09-28: 9.617× — sortnums 2026-10-05: 10.48× — sortnums 2026-08-22: 45.73× — startup 2026-08-24: 44.2× — startup 2026-08-31: 43.89× — startup 2026-09-07: 42.47× — startup 2026-09-14: 47.29× — startup 2026-09-23: 44.39× — startup 2026-09-28: 43.46× — startup 2026-10-05: 38.27× — startup 2026-08-22: 41.35× — strcat 2026-08-24: 36.1× — strcat 2026-08-31: 37.41× — strcat 2026-09-07: 38.06× — strcat 2026-09-14: 36.86× — strcat 2026-09-23: 35× — strcat 2026-09-28: 37.9× — strcat 2026-10-05: 45.16× — strcat 2026-08-22: 8.579× — streq 2026-08-24: 7.481× — streq 2026-08-31: 8.043× — streq 2026-09-07: 7.926× — streq 2026-09-14: 8.954× — streq 2026-09-23: 9.083× — streq 2026-09-28: 9.446× — streq 2026-10-05: 26.85× — streq 2026-08-24: 4.709× — textsplit 2026-08-31: 4.41× — textsplit 2026-09-07: 4.272× — textsplit 2026-09-14: 4.453× — textsplit 2026-09-23: 4.065× — textsplit 2026-09-28: 3.582× — textsplit 2026-10-05: 4.238× — textsplit
kernelinterpnativerakudospeedup-interpspeedup-nativeflags
startup4.3ms4.1ms156.9ms36.5×38.3×ok
loopsum6.9ms4.1ms395.4ms57.3×96.4×ok
fib19.2ms8.8ms555.2ms28.9×63.1×ok
strcat5.1ms4.4ms198.7ms39.0×45.2×ok
arrayops80.6ms77.8ms345.1ms4.3×4.4×ok
arraypush51.6ms155.2ms588.0ms11.4×3.8×ok
sortnums53.0ms30.2ms316.5ms6.0×10.5×ok
sortby67.6ms42.5ms281.7ms4.2×6.6×ok
regex84.4ms54.5ms361.4ms4.3×6.6×ok
hash16.7ms14.8ms270.2ms16.2×18.3×ok
hashfill274.9ms83.5ms656.5ms2.4×7.9×ok
bigint11.3ms8.8ms255.0ms22.6×29.0×ok
streq28.4ms11.7ms314.1ms11.1×26.8×ok
textsplit157.2ms94.7ms401.3ms2.6×4.2×ok
rats29.3ms164.2ms445.9ms15.2×2.7×ok
multiwhere678.8ms677.4ms431.5ms0.6×0.6×ok
objects563.4ms513.3ms448.8ms0.8×0.9×ok
mainwhen9.6ms4.2ms583.0ms60.7×138.8×ok

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
29277130218
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
LLM::Characterdep-fail (LibraryMake)FAILED: 01-basic.t | Unknown VM; don't know how to build
MCP::Servertimeout—
Monadself-failFAILED: 01_maybe.t | ===SORRY!=== Parse error at line 60: unexpected operator in term position (got '>>=')
ONNX::Nativeself-failFAILED: 01-ffi.rakutest | # Failed test 'no error set for cpu provider'
Roaring::Tagsdep-fail (CRoaring)FAILED: 02-bitmap.rakutest | # Undefined routine 'from-handle'
Template::Jinja2timeout—
ComfyUI::APItimeout—
JSONLtimeout—
Notcurses::Nativeself-failFAILED: 22-windows-load-contract.rakutest | No such method 'find_private_method' for invocant of type 'Metamodel::ClassHOW'
OpenRouter::APItimeout—
Elucid8::Buildtimeout—
GOTOtimeout—
Math::NIntegratetimeout—
KeyNub::LicDongleself-failFAILED: 01-basic.rakutest | # Could not find symbol '&Ok' in 'GLOBAL::Status'
L10N::LVself-failFAILED: 01-latvian.t | Two terms in a row across lines (missing semicolon or comma?)
L10N::RUself-failFAILED: 01-russian.t | Two terms in a row across lines (missing semicolon or comma?)
L10N::UKself-failFAILED: 01-ukrainian.t | Two terms in a row across lines (missing semicolon or comma?)
Math::NIntegratetimeout—
Router::Rightdep-fail (P5quotemeta)FAILED: 01-basic.rakutest | # Failed test 'Codepoint 0 [0] # using $_'
Router::Rightdep-fail (P5quotemeta)FAILED: 01-basic.rakutest | # Failed test 'Codepoint 0 [0] # using $_'
Map::Leaflettimeout—
WWW::Ollamatimeout—
Image::PNG::Portabledep-fail (Compress::Zlib::Raw)FAILED: 01-basic.t | Invalid typename 'OpaquePointer' in parameter declaration.
Net::Ethereumdep-fail (LibraryMake)FAILED: 01-basic.t | Unknown VM; don't know how to build
RakuPMtimeout—
Router::Rightdep-fail (P5quotemeta)FAILED: 01-basic.rakutest | # Failed test 'Codepoint 0 [0] # using $_'
Math::NIntegratetimeout—

Things to improve — this week's mismatch clusters

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

filessignature
11(output differs)
4# Failed test at <file> line N
1# Failed test '…'
1# Failed test '…'[this] [this]'), a common problem <- \
1Cannot convert string to number: base-N number must begin with valid digits or '…' in '…' (indicated by ⏏)
1Cannot resolve caller flip(Any:U); the invocant is a type object, not an instance
1Start argument to substr out of range. Is: -N, should be in N..N; use *-N if you want to index relative to the end
1Type check failed for return value; expected Result but got List
1Use of uninitialized value of type Any in string context.