| [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 | ||