[Tux] Rakudo v2024.09-46-g2e3050325 (v6.d) on MoarVM 2024.09-5-g174aa1ba9
csv-ip5xs0.260 - 0.261
csv-ip5xs-201.113 - 1.115
csv-parser1.519 - 1.541
csv-test-xs-200.141 - 0.144
test1.835 - 1.844
test-t0.401 - 0.402
test-t --race0.267 - 0.271
test-t-204.892 - 4.913
test-t-20 --race1.174 - 1.190
06:36
tux.nl/Talks/CSV6/speed4-20.html / tux.nl/Talks/CSV6/speed4.html tux.nl/Talks/CSV6/speed.log
09:59 sena_kun joined 10:04 lizmat_ joined
lizmat . 10:05
10:06 lizmat_ left 10:14 lizmat_ joined 10:15 lizmat_ left
lizmat m: my $a := (1,my $ = 2,3); my $b := $a.clone; $b[1] = 42; dd $a, $b # meh, entanglement of cloned lists, an issue ? 11:39
camelia (1, 42, 3)
(1, 42, 3)
Geth roast: bb8de71453 | (Elizabeth Mattijsen)++ | 10 files
Add tests for #2167
12:02
timo we don't do deep cloning in the .clone method, this should be expected 12:05
with arrays it's more of A Thing since array has the property of putting stuff into scalars for you, so there you might perhaps expect cloning to give you fresh scalars? though i'd still argue you'd want to use list assignment for that instead of cloning 12:06
lizmat m: my @a =1,2,3; my @b := @a.clone; @b[1] = 42; dd @a, @b
camelia [1, 2, 3]
[1, 42, 3]
lizmat also: github.com/rakudo/rakudo/issues/1997 12:07
timo interesting. yeah i'd say we should look into making Hash.clone behave similarly. that feels like a change that can break user code though, so may want to go behind 6.e? 12:08
if we make cloning give fresh scalars, do we want an "extra-shallow" cloning that binds the scalars for the user? 12:09
m: my @a = 1,2,3; my @b := @a.clone; @b[$_] := @a[$_] for @a.keys; @b[1] = 42; dd :@a, :@b
camelia :a([1, 42, 3])
:b([1, 42, 3])
timo you know, it would be pretty dope if we gathered coverage info in our blin runs 12:10
it's not so easy to grep for "does Hash.clone ever end up getting called" with just string search 12:11
but if we have line-based or even just sub-based coverage info from the tests of modules, that'd be a different story
coverable6: my @a = 1,2,3; my @b := @a.clone; @b[$_] := @a[$_] for @a.keys; @b[1] = 42; dd :@a, :@b 12:17
coverable6 timo, and I oop! Backtrace: gist.github.com/ee755fd7ab19659055...a2a1648246
ab5tract Yeah that would definitely be pretty killer 12:18
timo coverable6: 2024.08 my @a = 1,2,3; my @b := @a.clone; @b[$_] := @a[$_] for @a.keys; @b[1] = 42; dd :@a, :@b
coverable6 timo, gist.github.com/6450119b473afe9e24...76fea7e0a3
timo ah, i think "SETTING::" is probably not the right default any more 12:19
coverable6: 2024.08 grep=SETTING my @a = 1,2,3; my @b := @a.clone; @b[$_] := @a[$_] for @a.keys; @b[1] = 42; dd :@a, :@b 12:20
coverable6 timo, gist.github.com/87a1d8f1ed74b81e77...39b263d5be
timo coverable6: 2024.08 grep=. my @a = 1,2,3; my @b := @a.clone; @b[$_] := @a[$_] for @a.keys; @b[1] = 42; dd :@a, :@b
coverable6 timo, gist.github.com/2f4afdcaf9f68bafec...b00ed81ddc
timo no, that doesn't seem to be it
ab5tract timo: not to reopen fresh wounds, but what was the end result of the windows compilation stuff again? 12:21
timo so, i've been able to verify with the help of my windows-using friend that the crash happens when we try to longjmp, which on newer versions of MSVC (or the windows c library or something else that changed) uses SEH aka Structured Exception Handling (mostly unrelated to things like c++ exceptions) in order to unwind the stack, and when there's a frame from our jit on the stack that has to be 12:24
unwound, it violently asplodes because we don't provide the data used by SEH to do the unwinding
ab5tract Ahhh 12:25
timo fortunately, our jit is pretty simple in that regard. the C stack always looks the same, as long as we're not in a jitted frame ta the very top of the stack, which if we're calling into something that longjmps we are not, kind of by definition 12:26
fixing this is now essentially a SMOP for someone with a correctly shaped tuit, though it would be great if someone who already did all this research wrote this down for someone to pick up effectively (me. i'm talking about me) 12:27
what worries me more than the windows issue is how moarvm crashes on 32bit powerpc and that other arch i forgot which one it was 12:32
because that one i can't reproduce, and even though there was definitely a bug there that i found and fixed, that didn't help yet 12:33
TIL colrm(1) 12:34
> The colrm command appeared in 3.0BSD.
this is *old*
ok i'm not sure why coverable doesn't output any lines; when i run rakudo with MVM_LINE_COVERAGE i definitely get a file that looks correct, then i run grep with "SETTING" and the flags that coverable uses and the output looks good, then the sort command also looks good, and finally the colrm command also looks good 12:37
of course it does a bunch more conversion before it actually lands in the table, so i guess that's where the problem lies? 12:38
i need to do more fun stuff with the whateverables 12:41
Geth rakudo/main: 391e3b507d | (Elizabeth Mattijsen)++ | src/core.c/Exception.rakumod
Add "quit" as an obsolete alternative to "exit"

And make the lookup hash compile time.
In response to github.com/rakudo/rakudo/issues/2214 so that people in the REPL get the suggestion to use "exit" instead, as per
  AlexDaniel++ suggestion
13:12
roast: b79213fe17 | (Elizabeth Mattijsen)++ | S32-temporal/DateTime-Instant-Duration.t
Add test for #2221
13:25
timo i don't think i understand why it's exploding with the dependency error 14:21
i think i was looking wrong, and i was accidentally using a package that was not the one i had just built 14:26
14:51 kjp_ left
ugexe imo having quit as an alias to exit is not ideal 15:29
We are further overloading what “quit” means, as such a method is already used for supplies 15:30
The OP even appears to have been convinced their idea was less ideal than having it. That seems to be the general consensus I got from the issue at least 15:35
than not having it ^ 15:36
github.com/rakudo/rakudo/issues/22...-413000196
timo ok i have the powerpc 32bit nativecall test failure reproduced locally at least 16:18
ehehe. when i change the value that the C code writes to the variable to something with all bytes set to some value, the value spills over into the next variable 16:29
wtf, i can't use gdb on this? >_> 16:38
oh, ok, i need to use the qemu gdbstub for this purpose 16:41
lizmat m: quit 16:51
camelia ===SORRY!=== Error while compiling <tmp>
Undeclared routine:
quit used at line 1 (in Raku please use 'exit' instead)
lizmat ugexe: there is no sub called "quit", there's just extra feedback referring to 'exit' 16:52
should you happen to want to call a sub called "quit" and it doesn't exist
ugexe ah ok. i wonder why there isn't a quit() similar to done() 17:37
17:48 vrurg_ joined 17:50 vrurg left
Geth rakudo/main: 7faddfd2f9 | (Elizabeth Mattijsen)++ | 2 files
Require a mutable container for .substr-rw

and return a Failure instead of a Proxy if there's no mutable container.
Fixes #2304
17:57
rakudo/main: 91c9302979 | (Elizabeth Mattijsen)++ | src/core.c/Rakudo/Internals.rakumod
Allow cool values in .trans specification

Fixes #2305
21:06
roast: 1f99a76372 | (Elizabeth Mattijsen)++ | S05-transliteration/trans.t
Add test for #2305
21:09
rakudo/main: 1660d96f21 | (Elizabeth Mattijsen)++ | src/core.c/Int.rakumod
Produce correct result for atomicint.Range

Fixes #2317
21:35
roast: afeb5b38cd | (Elizabeth Mattijsen)++ | S17-lowlevel/atomic.t
Add test for #2317
21:38 kjp joined 21:59 sena_kun left 22:01 kjp left, kjp joined
timo can we replace t/spec/S32-io/socket-test.bin with something else? 22:13
lizmat++ # big number of tickets addressed 22:21
lintian be like "hey why do you have a prebuilt binary in your source package? and why is its sections chopped off? 22:22
[Coke] (coverage in Blin) because blin is not slow enough! :) 23:09