| [Coke] will kick off a regular blin run | 00:19 | ||
| Geth | rakudo/main: 94ae304e51 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files Intern curried roles created by generic instantiation (#6567) Previously CurriedRoleHOW.instantiate_generic built its instantiated curry with CurriedRoleHOW.new_type. Instantiating the Positional[TValue] that Array::Typed does thus produced a Positional[Int] distinct from the interned one that writing Positional[Int] in source returns. Type-check caches match on object identity, so a typed array never got a cache hit ... (12 more lines) |
00:40 | |
| rakudo: ugexe++ created pull request #6568: Cache interpolated regex compilations by pattern source |
00:50 | ||
| ugexe | [Coke]: 👍 | ||
| [Coke] | missed that one, i think. | 00:54 | |
| ugexe | i'm still working on fixing one legacy regression i found so we'd need another legacy run in the near future anyway | 01:00 | |
| [Coke] | ok | 01:04 | |
| blin runs are cheaper these days, no worries. ;) | |||
| releasable6: next | |||
| releasable6 | [Coke], Next release in ≈8 days and ≈17 hours. There are no known blockers. 152 out of 152 commits logged (⚠ 1 warnings) | ||
| [Coke], Details: gist.github.com/dabe83d9eabd8c5c48...1c938a7c95 | |||
| [Coke] | ... again, why does it use a previous output from that command when I fixed the warning/did all the commits already | ||
| ⏳ 641 out of 2509 modules processed (25.54%) | 01:05 | ||
| 62% done, no new fails | 02:15 | ||
| ugexe | nice | 02:25 | |
| [Coke] | output_Test::Selector_zef:lucs_0.4.1_0 | 02:59 | |
| "No unspace allowed in regex; if you meant to match the literal^M" | 03:01 | ||
| "Fail, Bisected: 1a08ca762010ff035c3ee106c842464a68d301e6": 1, | 03:02 | ||
| 1a08ca762010ff035c3ee106c842464a68d301e6 ? | |||
| linkable6 | (2026-08-03) github.com/rakudo/rakudo/commit/1a08ca7620 Do not apply unspace to whitespace inside regexes | ||
| japhb | ugexe++ # 94ae304e51 -- Holy moly, 40x is *huge*! | 03:04 | |
| linkable6 | (2026-08-15) github.com/rakudo/rakudo/commit/94ae304e51 Intern curried roles created by generic instantiation (#6567) | ||
| ugexe | [Coke]: does it say what line? | 03:05 | |
| [Coke] | [Test::Selector] # at /home/coke/sandbox/blin/data/zef-data/tmp/6d1ca6b4c6990bb293ba310faaca1e4400a6674b.tar.gz/lib/Test/Selector.rakumod (Test::Selector):614^M | 03:06 | |
| I can post the whole file, one sec. | |||
| github.com/coke/raku-blin-release-...cs_0.4.1_0 | 03:08 | ||
| ugexe | ah, module needs to be updated to be like / ^ \s* ok ' ' / || | 03:16 | |
| m: say "ok x" ~~ /ok\ x/ | 03:21 | ||
| camelia | ===SORRY!=== Error while compiling <tmp> No unspace allowed in regex; if you meant to match the literal character, please enclose in single quotes (' ') or use a backslashed form like \x20. at <tmp>:1 ------> say "ok x" ~~ /ok\ <HERE>x/ |
||
| ugexe | m: say "okx" ~~ /ok \ x/ | ||
| camelia | ===SORRY!=== Error while compiling <tmp> No unspace allowed in regex; if you meant to match the literal character, please enclose in single quotes (' ') or use a backslashed form like \x20. at <tmp>:1 ------> say "okx" ~~ /ok \ <HERE>x/ |
||
| ugexe | ah must have that commit | ||
| raku -e 'say "okx" ~~ /ok \ x/' | |||
| 「okx」 | |||
| which shows that if there was a space before unspace it wasn't erroring before when it should have | 03:22 | ||
| [Coke] | 3 more failures | 03:48 | |
| ugexe | 3 of them are the same thing from the same source | 03:52 | |
| Cro::FCGI is different though | |||
| did it bisect? | |||
| [Coke] | 2 more fails, ⏳ 2240 out of 2509 modules processed (89.27%) | 04:03 | |
| "Fail, Bisected: 1a08ca762010ff035c3ee106c842464a68d301e6": 4, "Fail, Bisected: 2b05993c58a7884f262f61cb81340e5ed58381b3": 1, "Fail, Bisected: 4b4af55da39bb255f1e540b869e16d338073698b": 1, | |||
| it's one of those | |||
| oh, wait | 04:04 | ||
| 435:Cro::FCGI – Fail, Bisected: 4b4af55da39bb255f1e540b869e16d338073698b | |||
| which is a rakuast commit. maybe a false fail | 04:05 | ||
| ugexe | github.com/lucs/Test-Selector/pull/3 | 04:10 | |
| man git.sr.ht does not like me... just trying to view some source code and it hits me with multi second bot detection proof of work for every page hit | 04:13 | ||
| Geth | rakudo: ugexe++ created pull request #6569: Let a boxed value reach a native-only multi candidate by unboxing |
04:21 | |
|
07:37
lizmat joined
|
|||
| Geth | rakudo/main: 0561c5c333 | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Fixups.rakumod The Hashray class is also an implementation detail |
08:28 | |
|
09:13
lizmat left
09:14
lizmat joined
|
|||
| Geth | rakudo/main: 7d95b754a8 | (Elizabeth Mattijsen)++ | src/core.c/Hash/Ordered.rakumod Make Hash::Ordered.raku produce pairs in correct order |
09:14 | |
|
09:19
lizmat left
10:45
sivoais left
13:05
Pixi left
13:06
Pixi joined
|
|||
| [Coke] | 9 failures total, pushed | 13:44 | |
| oooh. | 13:46 | ||
| Nifty. github.com/coke/raku-blin-release-...ng_0.1.5_0 | 13:47 | ||
| actually reports it was killed by the OOM killer | |||
| That might make some flappers explainable. | |||
| and I can specifically rerun the OOM tests (since blin is running things under more pressure than solo) | 13:50 | ||
| timo | I think with a `systemctl status blablablablablabla.service` or `.scope` or whatever you can also get the maxrss of something you ran with systemd-run, and also things like the total used CPU time and what-not | 13:54 | |
| [Coke] | timo: it's in the output | ||
| timo | oh, that's there | ||
| nice | |||
| [Coke] | e.g. github.com/coke/raku-blin-release-...cs_0.4.1_0 shows Memory peak: 1.3G (swap: 277.9M) | ||
| (and that was a success!) | 13:55 | ||
| CSS::Stylesheet, IntlPromptYesNo, Resend had OOM issues if someone want to open tickets for those. | 13:56 | ||
| those 3 all retested fine. | 14:26 | ||
| I'll open a blin ticket with the rest. | |||
| timo | if we record the memory peak for modules, we can try using them in a future run to be a bit smarter with how we schedule multiple things at the same time | 14:28 | |
| alternatively and/or additionally, re-run things killed by OOM on their own at the end of the run | 14:29 | ||
| [Coke] | We have flap protection, could make it smarter. | 14:33 | |
| I had been thinking of flapper support as bad, because it encourages tests that fail sometimes, but wasn't thinking about issues on the host machine running the test as opposed to a bad test. | 14:34 | ||
| also retesting the two that weren't regex unspace related. | 14:35 | ||
| Cro::FCGI seems ok on rerun (noted on ticket) | 14:54 | ||
| Geth | rakudo: coke assigned to ugexe Issue blin issue 2026.08 run github.com/rakudo/rakudo/issues/6570 coke assigned to MasterDuke17 Issue blin issue 2026.08 run github.com/rakudo/rakudo/issues/6570 |
15:01 | |
| [Coke] | Wonder if some of the random failures are due to a whateverable lock on a checked out rakudo. | 15:02 | |
| not checked out literally, but in use. Maybe it's just timing out trying to run a bisect and then giving us the wrong answer. | |||
| a5c48846b310c4e79e785b473f32dc928776d47f is a broken archive, per Whateverable | 15:08 | ||
| linkable6 | (2026-08-07) github.com/rakudo/rakudo/commit/a5c48846b3 Make cmp compare collections by their values (#6517) | ||
| ugexe | The net bgp one points at a nqp bump | 15:13 | |
| [Coke] | yes, rerunning now to make sure that's real. | 15:14 | |
| during that it said your cmp commit wasn't a real archive, so couldn't test it. | |||
| rerun brought it to the same commit (MasterDuke) | 15:15 | ||
| ugexe | It does use that nativehelpers distribution I think l which does a bunch of hacky stuff that isn’t fully gc friendly | 15:16 | |
|
15:17
sjn left
|
|||
| [Coke] | thought I had dialed down flap protection, but blin is still using 4 runs to check a flapper | 15:20 | |
| | AlwaysFail | 728 | ⋯ | from the recent full run | |||
|
15:24
sjn joined
|
|||
| [Coke] | eventually want to go through that list and open tickets/skip those. | 15:35 | |
| Maybe I can finally get to work on JSON::Class now that it doesn't take 13 hours to do a run) | 15:36 | ||
|
15:38
sjn left
15:40
sjn joined
|
|||
| ugexe | fwiw it installs fine for me | 15:40 | |
| plan :skip-all("Non-Linux Host") unless $*KERNEL.name eq 'linux'; | 15:49 | ||
| guess that would explain why | |||
| "It's a latent double-close bug in TCP::LowLevel, not a rakudo regression — the nursery commit just moved GC timing enough to make it land inside a test." | |||
| it has two finalizers that try to close the same socket | 15:50 | ||
|
15:52
guifa left
15:53
guifa joined
16:02
finanalyst joined
|
|||
| ugexe | github.com/jmaslak/Raku-TCP-LowLevel/pull/2 | 16:04 | |
|
16:32
Geth left,
Geth joined
16:42
committable6 left
16:43
committable6 joined
16:44
evalable6 left,
evalable6 joined
16:46
tellable6 left,
tellable6 joined
17:43
bisectable6 left,
bisectable6 joined
|
|||
| ugexe | "IntlPromptYesNo's blin OOM isn't a rakudo bug — its test is just use Intl::Prompt::YesNo, which pulls in Intl::CLDR (122 modules) uncompiled, and rakudo precompiles each uncompiled dep by spawning a child rakudo that stays resident while its own deps spawn grandchildren, so you get ~12 nested rakudo procs at ~220MB each = 2.5G (I reproduced 2581MB locally, matching the log exactly). Same on | 17:59 | |
| RakuAST (2605MB), and coke's REDO.md already notes it passes on a solo rerun." | |||
|
18:10
donaldh left
18:15
finanalyst left
|
|||
| ugexe | github.com/rakudo/rakudo/blob/94ae...#L367-L383 uses 12 procs with 2592 MB rss. if it does a topological sort it goes down to 6 procs and 1176 MB rss. however the topological sort is based on just grepping the code for use/need which is a bit naive... not sure how we'd do it The Right Way | 18:19 | |
| The other thing is raku -e '' alone is 163 MB, and each level of the process chain is ~225 MB. So ~75% of every level is fixed CORE.setting + compiler baseline and not from the module being compiled. | 18:20 | ||
|
18:37
lizmat joined
18:56
sjn left
18:57
sjn joined
18:59
finanalyst joined
|
|||
| timo | at the very least some files are mmapped instead of read, so are eligible for being shared between processes | 19:24 | |
| but of course we do deserialize stuff out of these files into live objects that live on the heap, those can not be shared | 19:25 | ||
| maybe it'd be worth looking at in-process precomp again; maybe processes that already got spawned in order to precompile dependencies should try to precompile without launching child processes? | 19:28 | ||
| ugexe | i don't see how in-process precomp could ever work | 19:29 | |
| compilation mutates process global state | 19:30 | ||
| timo | anything in particular you think is problematic? we would have to work on making the state in question be correctly clearable / resettable | 19:33 | |
| japhb | ugexe: How much of that was improved by getting rid of $*W? | 19:34 | |
| ugexe | SC repossession | 19:37 | |
| augmenting core types | 19:38 | ||
| japhb: how much of what was improved? | |||
| japhb | ugexe: "compilation mutates process global state" -- my (admittedly very old) understanding is that $*W was a large chunk of that compilation-related global state, but I have no idea what fraction it was of the overall problem. | 19:40 | |
| ugexe | i think $*W would cause problems moreso because it touches global state. and $*W isn't exactly going away in rakuast... rakuast has $*R which also pokes at global state | 19:45 | |
|
19:48
sjn left
19:50
sjn joined
|
|||
| timo | the thing in $*W is an instance of Perl6::World; we should be storing stuff only in its instance, not the class itself, so making a fresh World should give us some amount of freshness already | 19:51 | |
| I guess we want an op that kicks compunits completely out of memory, as deeply as needed | 19:52 | ||
| could be complicated | |||
| I guess you can mixin to stuff relatively deep into the metamodel | 19:53 | ||
| though repossession should mean we actually have kind of a "record" of what has been changed in other SCs | 19:54 | ||
| ugexe | the main reason I don't think it can work is repossession. `augment class Int` moves Int's STable out of CORE's SC into whatever compunit is compiling, | 19:57 | |
| and if we do that in process that will ultimately end up with the wrong sc_id | |||
|
20:00
lizmat left
|
|||
|
20:48
finanalyst left
20:54
sivoais joined
|
|||
| ugexe | we could get like 6mb if we didnt eager load the legacy frontend under rakuast | 21:11 | |
| timo | yeah I had a tentative patch for that for a moment | 21:17 | |
| github.com/rakudo/rakudo/commit/82...26d17ec0be | 21:19 | ||
|
21:50
kurahaupo left,
kurahaupo joined
|
|||
| Geth | rakudo/main: 050230cb27 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: intern the Callable mixin for constant return values (#6571) Previously a routine with a constant return value such as `--> ''` mixed a Callable parameterized with the literal value itself into the routine. Parameterizations intern by argument identity, so every distinct literal produced its own curried Callable, mixin type, and mixin cache type. In the core setting this serialized several hundred ... (9 more lines) |
21:57 | |
| rakudo: ugexe++ created pull request #6572: RakuAST: name stub packages without their container |
22:04 | ||
| rakudo: ugexe++ created pull request #6573: Share the revision gate mixin across gated routines |
22:16 | ||
| [Coke] | ok - one week out to release. Anything we're trying to get merged before then? | 22:17 | |
| Need to test reverting the nursery size on a branch and see if that fixes Net::BGP | 22:25 | ||
| ugexe | github.com/jmaslak/Raku-TCP-LowLevel/pull/2 | 22:27 | |
| that fixes it | |||
| changing the nursery size just tickled it out since it was relying on two different DESTROY methods to close a socket in a racey way | 22:28 | ||
| s/that fixes it/that fixes Net::BGP/ | 22:29 | ||
| if you reran it enough times it would presumably work | 22:31 | ||
| [Coke] | 4 not enough. :) | 22:38 | |
| OK - so patches for all impacted modules out there, so not a release blocker. | 22:39 | ||
| ugexe++ | |||