MasterDuke | earlier today i noticed an occasional fail in t/spec/S17-supply/interval.t, not sure if this is a known thing, but got some valgrind output here: gist.github.com/MasterDuke17/5f071...0f388b51d4 | 05:14 | |
Geth | roast: ce7fb0f723 | (Moritz Lenz)++ | S02-magicals/sub.t RT #130761: if-block confuses &?ROUTINE |
07:24 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130761 | ||
[Tux] | This is Rakudo version 2017.01-204-g266f34571 built on MoarVM version 2017.01-49-g7ff91dbb | 07:47 | |
csv-ip5xs 2.917 | |||
test 12.739 | |||
test-t 5.027 - 5.068 | |||
csv-parser 13.873 | |||
Geth | rakudo/nom: 98413136df | (Elizabeth Mattijsen)++ | src/core/Int.pm Make Int.WHICH about 1.7x faster This should help when using Ints as keys in typed hashes, Sets, Bags or Mixes. |
14:14 | |
timotimo | yes! very good! | 14:16 | |
ah, so just constant-folding "Int|" if the type is actually Int | |||
nice catch | |||
Geth | rakudo/nom: aac9efcbda | (Zoffix Znet)++ | src/core/Rational.pm Fix Rational.norm It assumes the Rationals are always reduced, however, that's not the case for optimization reasons. Fix by reducing before returning self. Bug find: irclog.perlgeek.de/perl6/2017-02-13#i_14092899 |
14:24 | |
jnthn | I think !REDUCE-ME probably has to go | 14:25 | |
Yeah, it does, it's a data race | |||
Rat is meant to be immutable | 14:26 | ||
IOninja | oh :( | ||
jnthn | So we can't have a REDUCE-ME that works in-place | ||
timotimo | well, we can. but only if we call it just after (for example) cloning the one we were called on | ||
in which case, REDUCE-ME can just go ahead and do that, too | |||
jnthn | Right, it can only work in-place if we didn't leak the thing yet...immutability is really about outward behavior | 14:27 | |
m: say (1/6 + 1/6).perl | |||
camelia | rakudo-moar 266f34: OUTPUT«<1/3>» | ||
jnthn | m: say (1/6 + 1/6).numerator | ||
camelia | rakudo-moar 266f34: OUTPUT«2» | ||
jnthn | m: say (1/6 + 1/6).denominator | 14:28 | |
camelia | rakudo-moar 266f34: OUTPUT«6» | ||
jnthn | m: say (1/6 + 1/6).nude | 14:29 | |
camelia | rakudo-moar 266f34: OUTPUT«(1 3)» | ||
Geth | roast: 7d0daf5286 | (Zoffix Znet)++ | 2 files Test Rational.norm actual returns reduced form Rakudo fix: github.com/rakudo/rakudo/commit/aac9efcbda |
||
jnthn | m: for ^100 { my $a = 1/6 + 1/6; (start { die if $a.nude ne (1, 3) }) xx 2 } | 14:30 | |
camelia | ( no output ) | ||
jnthn | m: for ^10000 { my $a = 1/6 + 1/6; (start { die if $a.nude ne (1, 3) }) xx 2 } | ||
camelia | ( no output ) | ||
jnthn | m: for ^10000 { my $a = 1/6 + 1/6; (start { die if $a.nude ne (1, 3) }) xx 2 } | ||
camelia | ( no output ) | ||
jnthn | oh, wait | ||
m: for ^10000 { my $a = 1/6 + 1/6; await (start { die if $a.nude ne (1, 3) }) xx 2 } | |||
camelia | ( no output ) | ||
jnthn | Guess it's tricky to trigger | 14:31 | |
IOninja | s: 1.5, 'nude', \() | 14:44 | |
SourceBaby | IOninja, Sauce is at github.com/rakudo/rakudo/blob/9841...nal.pm#L43 | ||
IOninja | I don't get why it'd be triggered that way. | 14:45 | |
$a => 2/6; you then start two calls to .nude that race to .REDUCE-ME and update it with reduction, which in both cases would end up as 1/3 | 14:46 | ||
Or is there a crash that could happen? | |||
s: 1.5, 'REDUCE-ME', \() | 14:47 | ||
SourceBaby | IOninja, Sauce is at github.com/rakudo/rakudo/blob/9841...al.pm#L213 | ||
IOninja | there's a race between methods that do REDUCE-ME and stuff that doesn't. | 14:49 | |
m: for ^10000 { my $a = 1/6 + 1/6; await start { die if ($a + 1/6) != .5 }, start { $ = $a.nude } } | 14:50 | ||
camelia | ( no output ) | ||
IOninja | m: for ^10000 { my $a = 1/6 + 1/6; await start { die if ($a + 1/6) != .5 }, start { $ = $a.nude } } | ||
camelia | ( no output ) | 14:51 | |
IOninja | m: for ^100000 { my $a = 1/6 + 1/6; await start { die if ($a + 1/6) != .5 }, start { $ = $a.nude } } | ||
camelia | rakudo-moar aac9ef: OUTPUT«(signal )» | ||
jnthn | Not a crash so much as a wrong answer | ||
IOninja | Ah, OK, now I see it | ||
jnthn | my $gcd = $!denominator gcd $!numerator; | ||
IOninja | One REDUCE-ME updates numerator and the other uses the updated value in that ^ | ||
jnthn | Even within REDUCE-ME | ||
We could read the denominator here, in another thread denominator and numerator would be updated, and then we'd read the new numerator | 14:52 | ||
IOninja | yeah | ||
jnthn | And various other permutations :) | ||
lizmat | commuting a bit& | 15:35 | |
Geth | nqp: b2c0b3cbbe | MasterDuke17++ | docs/ops.markdown FH output ops return the number of bytes written |
16:07 | |
nqp: 3268b0524c | MasterDuke17++ | docs/ops.markdown Add very basic nqp::seekfh documentation |
16:27 | ||
roast: ronaldxs++ created pull request #231: Fudgeandrun move to roast |
17:44 | ||
roast: 183bf96e99 | usev6++ | 2 files Fudge newly added test for JVM |
20:24 | ||
roast: 2685afc22e | usev6++ | S02-types/list.t [JVM] Fudge test that blows up under t/harness5 |
20:35 |