[Coke] new blin has about 475G free atm 00:01
... this latest run did the myserious crash again. (had turned off the system d memory protection. will have to re-enable that, or maybe not use every single core again 00:02
Geth rakudo/main: e2fda5d9d2 | (Nick Logan)++ (committed using GitHub Web editor) | 6 files
RakuAST: sink when/default bodies whose succeed payload is unused (#6502)

Previously the body of a when or default statement was always compiled as wanted, since its value escapes as the succeed payload and normally becomes the outcome of the block the statement attaches to. That left the last statement of a CATCH or CONTROL handler unwarned even though handlers discard their result, so CATCH { default { 42; 43 } } warned ... (12 more lines)
00:04
[Coke] timo: gist.github.com/coke/5252c60964960...b71f63c7ed
any idea why that system-d command would immediately exit? 00:06
... I'm an idiot. nevermind
(new box, new working directory) 00:09
m: e2fda5d9d2 3.say 00:10
camelia ===SORRY!=== Error while compiling <tmp>
Undeclared routine:
e2fda5d9d2 used at line 1
linkable6 (2026-08-06) github.com/rakudo/rakudo/commit/e2fda5d9d2 RakuAST: sink when/default bodies whose succeed payload is unused (#6502)
[Coke] c: e2fda5d9d2 3.say
committable6 [Coke], ¦e2fda5d: «Cannot find this revision (did you mean “98dcdd6”?)»
[Coke] c: e2fda5d9d2 3.say 00:12
committable6 [Coke], ¦e2fda5d: «Cannot find this revision (did you mean “98dcdd6”?)»
[Coke] ugexe: any more commits coming tonight?
00:28 shareable6 left 00:29 shareable6 joined
[Coke] ok, got another run which gets through e2fda5d9d2 00:33
linkable6 (2026-08-06) github.com/rakudo/rakudo/commit/e2fda5d9d2 RakuAST: sink when/default bodies whose succeed payload is unused (#6502)
japhb Is there a channel tracking the development of rakupp? 00:57
Geth rakudo: ugexe++ created pull request #6526:
Carry a declared native return without settled arguments
01:04
rakudo: ugexe++ created pull request #6527:
Give a literal the native representation of its context
01:17
03:07 sivoais left 03:08 sivoais joined 05:13 Pixi` joined 05:17 Pixi left 06:05 Pixi` is now known as Pixi 08:53 vrurg_ left 08:54 vrurg joined
lizmat japhb: not as far as I know 09:06
09:24 timo left
[Coke] looks like the blin run making it through safely the first time on the box will not be the usual. :) 12:30
Finished with result: oom-kill 12:31
so, didn't finish with a bisect, but see two failures:
output_Mux_0.0.4 output_Text::Markdown::Discount_0.3.0
I'll redo it with the original # of cores I happened to use.
timo: wonder if it would make sense to do *each test* in blin in the systemd container, rather than the whole thing. 12:37
tellable6 [Coke], I'll pass your message to timo
[Coke] Would be nice for blin to be able to say what it was working on when killed by OOM. 12:44
wonder if I should do a run with a single core, and set the memory limit to something lower than the max so I can see which module is the one spiking the memory (and then potentially skip that or do it separately) 12:46
Geth rakudo/main: 669ad276d5 | (Dan Kogai)++ (committed using GitHub Web editor) | 3 files
Add %a/%A (C99 hex float) directives to the 6.e Formatter

As suggested by lizmat in the review of the nqp counterpart
  (Raku/nqp#859): make the hexadecimal floating point directives also
available in the RakuAST-based Formatter used by 6.e, so that %a keeps working when Formatter becomes the sprintf engine.
... (16 more lines)
13:46
linkable6 NQP#859 [closed]: github.com/Raku/nqp/pull/859 Add %a/%A (C99 hex float) directives to HLL sprintf
[Coke] oh, I thought that was already merged. 13:48
c: 669ad276d5 pi.say
committable6 [Coke], ¦669ad27: «Cannot find this revision (did you mean “637ba57”?)»
lizmat [Coke]: I was waiting for CI to turn green, it had a flapper turns out later 13:50
also: am working on some optimizations now in Formatter
[Coke] ah 13:52
cool.
potential issue in output_Concurrent::Stack_1.3 on this run 14:09
interesting. got another OOM kill, this time it was over 93.95% done, after 1h35min 14:11
oddly it says memory peak was 28.8G (6.2G swap) - but I had the killer set for 30G 14:12
c: 669ad276d5 pi.say 14:14
committable6 [Coke], ¦669ad27: «3.141592653589793␤»
[Coke] ok, running *again* but this time doing a ps check to see if I can figure out where the memory is going near the end there. 14:15
surely there is a better tool than me running 'ps | grep perl6' in a loop and then post-processing that file. :) 14:16
14:17 finanalyst left
[Coke] The fact that I can do nearly a complete run in 90m here is insane, though. :| 14:17
14:18 finanalyst joined
ugexe Concurrent::Stack comes up occasionally. it is a flapper 14:23
lizmat indeed... I just had a flapper after increasing the number of threads to 30 14:27
No exception handler located for catch
originating apparently at: SETTING::src/core.c/atomicops.rakumod:154
ugexe "The actual cause is a MoarVM race. A containerized $ attribute with no default leaves its P6opaque slot NULL until first access. Auto-viv cloned a fresh Scalar container per racing thread and installed it with a plain slot write. Threads racing the first cas $!head, {...} each mutated their own container, and the losing install was silently discarded, so the stack lost the losing thread's first
push and a later pop legitimately hit empty."
i didn't spend too much time looking into this solution since it isn't welcome in moarvm in the first place but in my testing (on a non-x86 arch, so the JIT changes in particular are theoretical) github.com/ugexe/MoarVM/commit/5f1...e242767349 resolves the issue. maybe someone else can fix it in moarvm though 14:57
[Coke] ah. I had a smallish swap on this new box. Cranked that up, should be better. 15:11
ab5tract ugexe: to resurrect the int/ Int dispatcher— maybe it’s worth asking what the use case of such a multi would be? The whole subject resonates on a DIHWIDT frequency for me, but probably I’m probably just missing the utility of the thing 15:21
15:23 timo2 joined
ugexe the use case is mostly CORE itself. +, div, *, etc all have (int,int) and (Int,Int) candidates so native-typed code stays on machine ops instead of boxing every operation. you hit the dispatch question every time you write my int $i; $i div 0 whether or not you ever wrote such a multi yourself, because 0 is the literal and CORE has both candidates 15:30
and the problem i was chasing wasn't really which candidate is ideal, it's that the answer changed with the optimizer. f(0) went native at default optimization if the candidate happened to be inlinable, and boxed otherwise. so my int $i = 4; my $r = $i div 0 throws by default and soft-fails at --optimize=off 15:31
lizmat I just found another case of unexpected boxing 15:34
m: use nqp; my int $a = 42; dd nqp::concat("foo",$a)
camelia "foo42"
lizmat an int coerces silently to str
m: use nqp; my int $a = 42; dd nqp::concat("foo",$a < 100 ?? $a !! "100") # but not inside a ternary
camelia This container does not reference a native string
in block <unit> at <tmp> line 1
ugexe the rule i landed on is basically dispatch follows the representation that is actually passed. the refinement is what a literal's representation is, since it has no declared type. beside exactly one native operand it takes that native form, anywhere else it is the Int it literally is. so f(0) goes to f(Int $), and $i + 1 still hits add_i. forcing the literal boxed there costs like 18x in a hot 15:36
loop when i measured it. i tried the literal just IS an int path, but it breaks anything that introspects captures because natives start flowing into code that expects objects
15:47 japhb left 15:50 japhb joined
timo2 don't forget that boxing int is not just about having a box around an int64, but covers big integers as well 16:29
16:29 timo2 is now known as timo
timo you can add_i two numbers that are just below the 64bit limit and then overflow into 65 bits of value 16:30
tellable6 2026-08-07T12:37:57Z #raku-dev <[Coke]> timo: wonder if it would make sense to do *each test* in blin in the systemd container, rather than the whole thing.
timo [Coke]: yeah that sounds reasonable
[Coke] ah, I had only 8GB swap, 32G ram before. now have 40 swap, 32 ram (added another 32GB chunk). it's going up into 10s of Gigs of swap now. 16:36
weirdly this run is much slower (and I can't blame the variance on "cloud stuff") 16:37
ugexe m: run $*EXECUTABLE, q[-e], q[my int $m = 9223372036854775807; say $m + 1]; 16:38
camelia -9223372036854775808
ugexe m: run $*EXECUTABLE, q[--optimize=off], q[-e], q[my int $m = 9223372036854775807; say $m + 1];
camelia 9223372036854775808
timo "the systemd container" is perhaps a misnomer, unless you're actually using isolation options like giving it its own /tmp, /etc, making the rest of the system read-only, stuff like that 16:41
[Coke] yah, speaking sloppily 16:51
lizmat m: use nqp; dd nqp::isbig_I(0x8fffffff) # feels this should be a higher value 16:54
camelia 1
lizmat aka, any 32bit int value with sign bit set apparently needs big Int representation 16:55
at least according to github.com/Raku/nqp/blob/main/docs...down#isbig
timo ah, that's not what it means
that refers to the smallbigint optimization in moarvm
where we can store up to 32bit big integers in the lower half of a pointer, instead of creating a real big integer
lizmat so the documentation is in error ? 16:56
timo it should be changed
it's only "technically not wrong" which is definitely not good enough for documentation
Geth rakudo/main: 63de34645e | (Elizabeth Mattijsen)++ | src/core.e/Formatter.rakumod
Streamline %a/A format in 6.e, make it about 15% faster
17:00
roast: dankogai++ created pull request #893:
Add tests for C99 hexadecimal float literals
17:31
roast: dankogai++ created pull request #894:
Add tests for the %a/%A sprintf directives
rakudo/main: b24247b0af | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
Carry a declared native return without settled arguments (#6526)

Previously a call the dispatch analysis could not settle, one with a named argument for instance, only carried its native return type when the optimize pass marked the call static. The result then changed with the optimization level:
... (11 more lines)
18:26
rakudo/main: 59a19b9d72 | (Nick Logan)++ | 2 files
Give a paired literal its native representation on the legacy frontend

Previously the dispatch analysis counted a literal argument beside a native one as native, but the emitted call passed the boxed value. The analysis could only commit its choice by inlining. So the candidate that ran depended on whether the chosen candidate's body happened to be inlinable: ... (30 more lines)
18:47
rakudo/main: 3dfd772444 | (Nick Logan)++ | 6 files
RakuAST: give a paired literal its native representation

A literal carries no declared type, so its representation comes from its context. Beside an operand or argument whose static type is a native kind the literal can hold, it is passed in that kind and dispatches accordingly. Anywhere else it stays the boxed value it literally is. ... (32 more lines)
rakudo/main: 2ac55a3095 | (Nick Logan)++ (committed using GitHub Web editor) | 8 files
Merge pull request #6527 from ugexe/ugexe/literal-native-representation

Give a literal the native representation of its context
[Coke] Latest blin results for next releasable6 19:28
*release: github.com/coke/raku-blin-release-.../2026.08.1
oops. pushed 19:29
output_Concurrent::Stack_1.3 output_Net::BGP_0.9.0 output_Text::Markdown::Discount_0.3.0 19:30
one of which we said was a flapper.
Net::BGP is pointing at the nursery size. 19:31
Text::Markdown is pointing at =ignore ? 19:32
weirdly, have 4 perl6 scripts running after the blin run ended successfully 19:34
(so, those are processes launched by blin)
ugexe: would it make sense for 'zef info .' to give a dump like zef info but based solely on the META6.json file 19:38
20:05 disbot left, disbot joined
ugexe yeah probably 20:28
maybe im missing something but i dont even see a test failure in output_Text::Markdown::Discount_0.3.0 (other than zef saying the tests failed) 20:43
Geth rakudo: ugexe++ created pull request #6528:
RakuAST: never fold a constant-string indirect lookup
21:29
rakudo/main: a5c48846b3 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
Make cmp compare collections by their values (#6517)

Previously cmp on a Seq fell through to the default candidate and compared stringifications, so (10,5).Seq cmp (7,6).Seq gave Less while (10,5) cmp (7,6) gave More, and sorting a List of Seqs ordered them by their string form.
... (22 more lines)
21:34
rakudo/main: 05c16923e4 | (Nick Logan)++ | src/core.c/TypeEnv.rakumod
Keep flattened context lexicals out of sunk statement position

Previously TypeEnv.new-from-ctx could throw "Use of RakuAST is experimental" when the CORE setting was compiled by the legacy frontend. The legacy frontend masks the RakuAST package by binding that name to an unhandled Failure in the outer scope of every compunit. flatten-ctx copies each lexical of the source context ... (9 more lines)
21:37
rakudo/main: e716a9b213 | (Nick Logan)++ | 3 files
Bind generic class parameter types via the full binder

Previously a parameter typed with a generic class, such as Array[T] in a signature like (::T $a, Array[T] $b), failed to bind with "Internal error: inconsistent bind result". Both frontends lowered the parameter to an inline type check that cannot succeed. The legacy frontend emitted a typevar lookup under the name "Array[T]", which no frame ... (29 more lines)
rakudo/main: 6dae7a9f3d | (Nick Logan)++ (committed using GitHub Web editor) | 4 files
Merge pull request #6519 from ugexe/ugexe/generic-class-param-binder

Bind generic class parameter types via the full binder
rakudo/main: 5 commits pushed by (Nick Logan)++
rakudo/main: e3630b76d6 | (Nick Logan)++ | 4 files
RakuAST: decay has (...) parameters into attribute declarations

Previously the list form `has ($.a is rw, $.b = 42)` parsed as a signature and left the per parameter metadata on the parameters, where nothing ever applied it. Traits were checked as parameter traits, defaults never ran, and the required marker in `has ($.a!)` was not enforced. A role body rejected the form outright with "no 'self' ... (17 more lines)
rakudo/main: 8bfdc2a0b3 | (Nick Logan)++ | 2 files
RakuAST: decay my (...) parameters into variable declarations

Previously the list form `my ($a is default(42), $b = 5)` parsed as a signature and left the traits and defaults as parameter metadata that nothing applied. Traits were rejected as parameter traits where the legacy frontend drops them silently, defaults never ran, and
  `my ($a = 1, $b)` was rejected with a required after optional error
... (13 more lines)
rakudo/main: 2429a7a25b | (Nick Logan)++ (committed using GitHub Web editor) | 5 files
Merge pull request #6521 from ugexe/ugexe/rakuast-has-list-attrs

RakuAST: decay has (...) and my (...) list declarations into their attribute and variable declarations
roast: 06d9288f23 | (Dan Kogai)++ (committed using GitHub Web editor) | S02-literals/numeric.t
Add tests for C99 hexadecimal float literals

Implemented in Rakudo by rakudo/rakudo#6524: 0x1.8p+1 style literals evaluate to a Num. The binary exponent is mandatory as in C99, so 0x1.abs remains a method call and 0x1.8 remains an error. Values are exact: covers max double, subnormals with ties-to-even, over/underflow to Inf/0, negative zero, and
  underscore separators.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
21:56
linkable6 RAKUDO#6524 [closed]: github.com/rakudo/rakudo/pull/6524 Add C99 hexadecimal float literals
rakudo/2429a7a25-but-build-with-rakuast: c15a634e9d | (Will Coleda)++ | src/main.nqp
Default to RAKUAST on, allow RAKUDO_LEGACY though
22:53
[Coke] doing a rakuast blin run 23:03
ugexe maybe we'll get under 100 this time 23:24
[Coke] 5 so far (pushed) with⏳ 317 out of 2499 modules processed (12.68%) 23:30
and 4/5 of those are "object doesn't exist in serialization context" 23:32
ugexe: I assume you don't need me summarizing here as we go. :) 23:41
but some of those look interesting, at lesat.
*least
(up to 9) 23:43
ugexe looks the same so far, although Acme::Polyglot::Levenshtein::Damerau is new 23:50
github.com/ugexe/Acme--Polyglot--L...erau.pm#L2 looks like i broke that line 23:51
i have no idea what the gist(...) is even for 23:52
[Coke] yah, that's just weird. 23:53
well, it's *also* weird.
ugexe the rest of it is a hack to not run the code on Perl 5, only Raku
since that module works on both perl and raku
[Coke] 18 23:54
ugexe the big ol batch of Grammar:: moarvm serialization failures 23:55
its also the initial big ol batch since the Array:: ones at the start fail for the same reason 23:56
github.com/rakudo/rakudo/issues/6507 23:57