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