[Coke] bisected to github.com/rakudo/rakudo/commit/95770d31 00:24
timo return 0 unless &cand.file.starts-with: 'SETTING::'; - filenames being different on windows maybe? 00:28
i guess those were already in there before the change 00:29
[Coke] timo: any pointers on how to debug raku on windows? Building a copy from HEAD with --debug right now 00:41
Or, is there some way to emit tons of debug output about the dispatchers? 00:42
wonder if dispatcher combined with RAKUDO_OPTIMIZE_NOSM helps. 00:43
timo there is. you can flip a define inside moarvm's source in disp/program.c IIRC 00:44
what's NOSM?
it can dump programs as well as recordings. not sure which one will be the interesting one, and it's really really chatty 00:45
[Coke] no smartmatch, probably
ah RAKUDO_OPTIMIZER_DEBUG=1 will give me something to work with
timo if turning the optimizer off completely, or down to 0 at least, should tell us if the optimizer has a part in the bug 00:48
[Coke] ... RAKUDO_OPTIMIZE_NOSM=0 avoids the bug, yes 00:50
timo i seem to recall you looked whether the output of --target=optimize was the same or not? 00:51
oh, you only checked --target=ast 00:52
[Coke] lovely, getting non-utf8 rendering from target=optimize. 01:02
timo isn't that just because windows terminal isn't utf8 by default? 01:04
redirect to a file, perhaps that helps?
[Coke] found the arcane output encoding invocation 01:06
here's the target=opt outputs: gist.github.com/coke/965fed0b3161b...8d52535904 01:07
they are definitely different on mac vs. win
timo can also try diffing windows with NOSM and without 01:08
the one on the top doesn't use the raku-smartmatch dispatcher, instead writing the logic out into nested ifs 01:11
[Coke] updated gist 01:12
so maybe the optimizer is broken and it's just not in use on mac? 01:14
(gist now has a run with NOSM enabled on win)
walking away from $worktop for the night.
timo ah, I guess the smartmatch part of the optimizer is also what's responsible for spitting out a dispatch op if it can't write it all out by itself?
so we kind of have three different kinds, mac, windows with nosm, and windows without nosm are all different 01:15
mac with nosm would look like windows with nosm i'd expect. just a call to &infix:<~~>
you can now ask moar to spit out covered edges as they are first hit, and also what file + frame + BB each number corresponds to so you can actually figure out what each edge it spits out refers to 03:37
except of course you would want to `moar --dump thefilename` to go to the frame by its CUID, but then you only see instructions by their index. you would have to figure out yourself where BBs go. and I could instead of the BB index spit out the PC at the start of the block but of course that's different from the instruction index because instructions are different lengths 03:40
the spesh log can give you what you need but of course it doesn't spit out every frame, just the ones that end up speshed 03:43
that also has the bb indices right there in its own output
but my dumping code and the coverage reporting spits it out as unsigned ints because negative numbers don't really make sense here, and in the spesh log output it's showing as singed so some of the numbers are negative and you wouldn't find them in the coverage log ... haha :( 03:46
patrickb Just to understand the implication: The compilation output should be the same on Win Mac Unix. But for some reason it isn't. Correct? 07:07
08:35 finanalyst joined
lizmat also for my understanding (as the author of the bisected commit): it is *tickling* an underlying bug, but the code itself is correct ? 08:43
11:19 finanalyst left 12:02 finanalyst joined
Geth roast: 90eb9e8b07 | (Elizabeth Mattijsen)++ | S32-exceptions/misc2.t
Fix .return value test
12:20
12:43 finanalyst left
Geth rakudo/main: 1d991f95fe | (Elizabeth Mattijsen)++ | src/core.c/Str.rakumod
Fix .index(@needles)

It had a (I'd say premature) optmization in it that produced the wrong results, as spotted by David Schultz++ in #6104.
On closer inspection, I'd say the overhead of creating a substring to search in, is overkill.
In any case, the code is much simpler now, has fewer moving parts and will probably inline better than before.
12:53
rakudo: ugexe++ created pull request #6110:
Fix SETTING:: prefix having literal single quotes on Windows
15:25
16:21 vrurg_ joined
Geth rakudo/main: ef3975df55 | (Elizabeth Mattijsen)++ | t/02-rakudo/03-corekeys.t
Fix test for 6.e setting entries

245d07274c1df76939e5ad added infix:<mod> and infix:<div>
16:23
16:23 vrurg left
gfldex m: my ($foo, Any:D, $buzz) = (42, Any, 'lightyear'); 16:30
evalable6
gfldex This feels wrond and I don't even know what it means. 16:31
lizmat more worringly, the same code has a different result with RAKUDO_RAKUAST=1 16:35
gfldex: please make an issue for this :) 16:36
gfldex m: my ($foo, Any:D $, $buzz) = (42, 'Any', 'lightyear'); 16:45
evalable6
gfldex This makes sense to me. "I want to drop the value, but only if it is defined." 16:46
lizmat yeah, that's why your first example should be a typecheck error 16:47
gfldex I'm still looking at Roast if list assigments with type objects on the LHS show up at all.
[Coke] tries ugexe's PR... 16:56
gfldex S06-signature/tree-node-parameters.t contains `my (Point $ ($a, $b)) := getpoints();`. So type checks on destructuring assigment is desired. However, every time I see a type check without a `:D` type smily, I'm included to ask where the code path is to handle bare type objects. 17:00
lizmat the list assignment code is .... special 17:01
the last time I worked on that, I had nightmares at one point :-)
m: my $a = 42; my $b = 666; ($a,$b) = ($b,$a); dd $a, $b 17:05
evalable6 $a = 666
$b = 42
lizmat ^^ it also needs to be able to handle that
m: my @a = ^10; @a[1,4,6,2] = <a b c d>l dd @a # and this 17:10
evalable6 (exit code 1) ===SORRY!=== Error while compilin…
lizmat, Full output: gist.github.com/d3c1901b4a6ef8e468...75786e4d41
lizmat m: my @a = ^10; @a[1,4,6,2] = <a b c d>; dd @a # and this
evalable6 [0, "a", "d", 3, "b", 5, "c", 7, 8, 9]
lizmat m: my ($a,$b,$c) = "a"...*; dd $a, $b, $c # and this 17:12
evalable6 $a = "a"
$b = "b"
$c = "c"
Geth rakudo/main: 1e9352870c | (Nick Logan)++ (committed using GitHub Web editor) | tools/templates/Makefile-backend-common.in
Fix SETTING:: prefix having literal single quotes on Windows (#6110)

The Makefile template used shell-style single quotes around the SETTING:: prefix passed to gen-cat.nqp. On Unix the shell strips these, but on Windows cmd.exe passes them literally, causing .file to return
  'SETTING::'src/core.c/Mu.rakumod instead of SETTING::src/core.c/Mu.rakumod.
This broke IS-SETTING-ONLY-D checks which compare .file.starts-with('SETTING::'), ... (6 more lines)
17:17
rakudo/coke/tests: 83c23a4db9 | (Will Coleda)++ | 2 files
Add test for #6109
18:07
timo holy shit that's so bad 18:09
new rule: if you want to use raku on windows, you first have to uninstall windows and either install linux or macos. sorry! 18:20
say, in order to build rakudo you already have to have strawberry perl anyway right? maybe there's a lightweight but fully (or at least sufficiently) gnu make compatible implementation of make written in pure perl? 18:22
gfldex filed as #6111 18:30
ENODOC filed as #4800 18:44
Geth rakudo: coke++ created pull request #6112:
Add test for #6109
18:45
linkable6 RAKUDO#6109 [closed]: github.com/rakudo/rakudo/issues/6109 [Windows][junctions] Junctions not working properly on windows
[Coke] Glad we got there. wish I had opened that ticket last february, sorry. :| 18:54
timo oh shit, i think if i had told you to try MVM_COVERAGE_LOG we would have spotted the 'SETTING::'blabla issue 18:58
do the single quotes show up in backtraces? 18:59
patrickb I'm pretty sure the Junction issue wasn't the only symptom of this bug. I've seen strange warnings pop up from time to time on Windows exclusively. 21:28
If I had all the time I wanted, I'd write a parallel execution able make impl in Perl and just use that for all of our builds. 21:29
Geth rakudo/main: d8aeb7eeb8 | (Will Coleda)++ (committed using GitHub Web editor) | 2 files
Add test for #6109 (#6112)
21:42
timo how about instead of being clever and having "rules" in the makefile, we turn it into a maximally normalized really stupid thing that's barely smarter than one big shell script 21:45
no way for anything to go wrong
[Coke] ... you can't fool me, there's always a way 21:47
timo true, we didn't have the issue with ' because the makefile was "too smart" 21:49
it was because it uses cmd instead of sh 21:50
[Coke] Looks that 'SETTING' has been that way since it was added Date: Sun Dec 11 23:20:50 2022 -0500 23:50