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