ugexe there aren't any windows specific code paths that i see 00:46
i wonder if its specific to msvc and not windows 00:53
01:02 Aedil left 01:38 topnep left 01:41 topnep joined 01:58 hulk joined, kylese left 02:02 soverysour joined, soverysour left, soverysour joined 02:06 soverysour left 02:15 hulk left, kylese joined 03:28 vasko4535586 left 03:29 vasko4535586 joined
Voldenet it starts failing in 2024.01, interestingly `my $j = all($ = <a b c>) ~~ Str:D; $j ~~ Str:D` is False but if you use `$j ~~ Str:D` in REPL afterwards, it's True, using `$env:RAKUDO_OPTIMIZE_NOSM=1; raku` fixes it, but also `$env:RAKUDO_RAKUAST=1; raku` fixes it 04:00
erm, I meant `my $j = all(@ = <a b c>); $j ~~ Str:D` windows terminal copying is pain 04:08
to reduce the problem `my $j = all(1); $j ~~ Str:D` doesn't work, `my $j = all(1); $j ~~ Str:D` does 04:12
ugh, running `$j ~~ Str:D` later does
I meant Int:D, either way, I've just copied the whole output with RAKUDO_OPTIMIZER_SM_DEBUG=1 04:20
pastebin.com/B6pr5kzw
`$j ~~ Int` behaves differently, has additional `Try typematch over RHS Int` output 04:49
it's actually funny, there's optimizer bug that fixes the problem with `~~ Int` on windows :D 05:09
however, on windows both Int:D and Int are broken 05:10
> use nqp; say nqp::dispatch('raku-smartmatch', $ = all(1), Int, 1) # False on windows 2026.01, True on linux 05:11
05:22 wayland joined 05:23 wayland76 left 05:28 atcroft joined
Voldenet on windows this is 0, on linux this is 1: `use nqp; say nqp::tryfindmethod($ = all(1), <ACCEPTS>).IS-SETTING-ONLY-D` 05:57
so this behaves differently github.com/rakudo/rakudo/blob/f1c1....nqp#L4294
hint for `Int:D` not working is that in case of `my $j = all(1); say $j ~~ Int`, this line is hit github.com/rakudo/rakudo/blob/f1c1....nqp#L1605 06:15
in case of `$j ~~ Int:D` it isn't 06:16
The difference between windows and linux is most likely this 06:19
m: use nqp; say nqp::tryfindmethod(Junction, <ACCEPTS>).file # on windows this is `'SETTING::'src/core.c/Mu.rakumod` 06:20
evalable6 SETTING::src/core.c/Mu.rakumod
Voldenet so it looks like that it's some sort of IO difference after all
in fact, there's plenty of files that use `.starts-with("SETTING::")` so all of these would probably be broken 06:44
06:54 soverysour joined, soverysour left, soverysour joined
patrickb Oh wow. I would've. never guessed that path differences would hit us this deep down in the guts. 07:11
Good find. Thanks,
!
07:33 Aedil joined
disbot2 <librasteve> weekly: www.reddit.com/r/CLI/comments/1sic...h_cragcli/ 07:52
notable6 librasteve, Noted! (weekly)
disbot2 <librasteve> thought I'd share some Artemis armchair physics ^^ 07:53
07:58 topnep left 08:00 topnep joined 08:06 soverysour left 08:16 soverysour joined, soverysour left, soverysour joined 08:22 soverysour left 08:33 Sgeo left 08:35 soverysour joined, soverysour left, soverysour joined 08:39 soverysour left 08:48 soverysour joined, soverysour left, soverysour joined 08:53 soverysour left 09:14 soverysour joined, soverysour left, soverysour joined 09:39 soverysour left 09:52 dakkar joined 10:03 topnep left 10:04 topnep joined 10:20 soverysour joined, soverysour left, soverysour joined 10:24 soverysour left 10:28 dakkar left 10:36 soverysour joined 10:41 soverysour left 10:45 annamalai left, annamalai joined 10:59 soverysour joined, soverysour left, soverysour joined 11:03 soverysour left 12:03 soverysour joined 12:08 soverysour left, topnep left 12:09 topnep joined 12:37 soverysour joined, soverysour left, soverysour joined 12:41 soverysour left 13:08 soverysour joined, soverysour left, soverysour joined 13:25 soverysour left
ugexe Voldenet: hmm i wonder if there are two parts to that issue then 14:14
either way nice find. claude started taking me in that direction and i insisted it check other things 14:15
but looking at github.com/rakudo/rakudo/commit/95770d31 14:16
it seems like the -U and -D candidates have their logic reversed
Voldenet well, the most important part is that raku-smartmatch not working properly
ugexe which would be the first problem. the second problem would be when they fall into that .starts-with() code 14:17
and that not working
but the -U candidate for instance has
next unless $invocant-type.^archetypes.definite
&& $invocant-type.^definite;
for a -U candidate i would expect it to s/unless/if/
the -D candidate has a similar conditional in the other direction 14:18
that should be broken on all platform presumably 14:19
14:25 soverysour joined, soverysour left, soverysour joined
ugexe maybe i'm just assuming too much. claude says i'm wrong 14:25
Voldenet hm, that part looks fine IMO, the logic is just weird to read 14:27
but it's regular search that does `for @things { next if wrong; next unless right; return 0; }; return 1`
ugexe yeah, makes sense 14:28
Voldenet hm
yeah, the only part that could fail weirdly is that 'SETTING' thing 14:29
ugexe just slap in a .starts-with("SETTING::" | "'SETTING::') and ship it :P 14:30
Voldenet i hear you like junctions, so you put a junction inside a problem with junctions ;> 14:32
ugexe On Windows, the shell doesn't use single quotes the same way. In cmd.exe, single quotes are literal characters, not string delimiters. So -p 'SETTING::' on Windows would set $prefix to 'SETTING::' (with the quotes included!).
Voldenet but the same logic would have to land in Routine.rakumod and Backtrace.rakumod
ugexe specifically `@bpm(NQP)@ @bpm(GEN_CAT)@ -p 'SETTING::' -f @nfpq(...)@` in the makefile 14:33
Voldenet i've danced around similar problem and the only sane solution on windows was to use file
probably the best solution would be not even doing any sort of string checking 14:37
but somehow marking the methods as core ones, though that would consume memory for a few rare checks 14:40
maybe simply having that `'SETTING::'` or SETTING:: as constant depending on the env would work 14:41
ugexe it'd probably work but doesn't seem ideal 14:47
Voldenet well, it'd be definitely cleaner to fix the root cause :>
ugexe i wonder if we can just remove the single quotes from the make file for that line 14:48
Voldenet that'd work, SETTING:: doesn't need to be quoted anyhow 14:50
ugexe for instance if i was writing makefile code like that i'd probably defensively add quotes like that
so they might not be there for a good reason
Voldenet "SETTING::" would probably work too 14:51
ridiculously enough, on old windows command line running raku code requires quoting code with "" (instead of '') 14:54
e.g. raku -e "my $x = 42; say $x" 14:55
ugexe that i'm actually already familiar with 15:05
although i didn't know ' was working on newer windows 15:06
Voldenet actually, on powershell 15:08
ugexe yeah, i thought ' always worked with powershell 15:09
Voldenet '' works on powershell, but "" no longer works on powershell, of course, because it's interpolated
it doesn't solve fundamental problem of having one argument to CreateProcessW, so 15:11
quoting is still as bad 15:12
ugexe the worst part is always writing out the one liner, then realizing you need to switch the quotes which means you need to switch all your other quotes 15:13
i use e.g. q|| a lot when writing one liners from all the pain that caused me years ago working on windows
Voldenet q<> is nicer, i also quote strings with <> on windows 15:16
ugexe presumably github.com/rakudo/rakudo/pull/6110 works 15:26
Voldenet btw, I'm not sure if it breaks optimizations for definite types like Str:D and Int:D 15:27
I'm sure it breaks smartmatching (optimizations aside) 15:28
ugexe i assumed optimization is involved due to that _NOSM environment variable 15:29
Voldenet I didn't check extensively what's the difference between Str:D and Str 15:30
15:45 soverysour left
Voldenet it seems that Optimizer in case of Str:D doesn't return true on this line github.com/rakudo/rakudo/blob/f1c1....nqp#L2126 15:45
15:45 soverysour joined 15:55 soverysour left 16:01 soverysour joined 16:21 vrurg_ joined 16:23 vrurg left 16:25 soverysour left, soverysour joined 16:26 soverysour left 16:27 soverysour joined, soverysour left, soverysour joined 16:38 soverysour left 18:12 soverysour joined 18:17 soverysour left 18:20 Sgeo joined 18:25 topnep left 18:26 topnep joined 18:58 abraxxa joined, abraxxa left 19:18 avuserow joined, avuserow left, avuserow joined
avuserow m: class Foo {has $.a; method test {$.a = 5}}; my $f = Foo.new; $f.test; say $f.a 19:19
evalable6 (Any)
avuserow bisect: class Foo {has $.a; method test {$.a = 5}}; my $f = Foo.new; $f.test; say $f.a; 19:20
bisectable6 avuserow, Will bisect the whole range automagically because no endpoints were provided, hang tight
avuserow, Output on all releases: gist.github.com/aff4b8b5c5faef441e...abb1a91ed8 19:21
avuserow, Bisecting by exit code (old=2025.01 new=2025.02). Old exit code: 1
avuserow, bisect log: gist.github.com/918e2993cb0d231c66...2598b94230
avuserow, (2025-02-15) github.com/rakudo/rakudo/commit/a6...c5ffe83e68
avuserow, Bisecting by output (old=2018.10 new=2018.11) because on both starting points the exit code is 1
avuserow, bisect log: gist.github.com/8630176fa5bb22327f...a3d454bcf3 19:22
avuserow, (2018-11-06) github.com/rakudo/rakudo/commit/e6...962b3f0e96
avuserow, Bisecting by output (old=2017.05 new=2017.06) because on both starting points the exit code is 1
avuserow, bisect log: gist.github.com/3fdfbc6454bd705ada...3c592f98e5
avuserow, (2017-05-26) github.com/rakudo/rakudo/commit/0c...f1a759afee
avuserow, ⚠ New output detected, please review the results manually
avuserow, Output on all releases and bisected commits: gist.github.com/aad9d33bb5bd8450d2...e38458376f
avuserow I filed github.com/rakudo/rakudo/issues/6113 (assuming this is a regression, seems LTA that it fails without a warning or anything) 19:29
I need to fix my IRC client, so feel free to ping me on GitHub or Mastodon if I'm not here :) 19:30
lucs Um, how do we get private `m:` attempts? No more camelia, and evalable6 appears not to be the way. 19:34
19:40 avuserow left 20:12 avuserow joined, avuserow left
[Coke] m: 3.say 20:25
evalable6 3
[Coke] OH, I misunderstood,
you can use #whateverable, probably
more private.
c: 577a04ae4 3.say 20:26
committable6 [Coke], ¦577a04a: «3␤»
[Coke] that bot gives you a selection of builds to try from, also
20:36 lichtkind joined 20:39 itaipu joined 20:43 avuserow joined