Geth roast: 88635564e5 | (Samantha McVey)++ | S15-normalization/test-gen.p6
Add concatenation tests for NFC to ensure concat is safe.

This commit was prompted by the improvements in logic when concatenating strings in MoarVM. The logic on whether a string needs to be renormalized when concat'd was improved. These tests were added to ensure that the improvements did not cause any breakage with things that change under NFC.
Luckily the MoarVM changes pass all the new tests. These tests will be useful to have as concatenation is further worked on.
01:53
roast: a363e3ff14 | (Samantha McVey)++ | 10 files
Commit the NFC tests generated from the previous commit
01:54
samcv ok. The previous mention of not to bump MoarVM until i added some tests is rescinded. with this ^^ commits
all is good :)
just wanted to be extra safe
Geth rakudo/rt130919: 32b72cdaa7 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/Supply.pm
Call done/quit on all taps - RT #130919

  rt.perl.org/Ticket/Display.html?id=130919
  `perl6 -e 'my $supplier = Supplier.new; my $supply = $supplier.Supply; $supply.tap(done => { say 1 }); $supply.tap(done => { say 2 }); $supplier.done;'`
Actual (current) output: ... (5 more lines)
03:24
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130919
rakudo: ugexe++ created pull request #1112:
Call done/quit on all taps - RT #130919
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130919
rakudo/rt130883: 075ddefa9b | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/RepositoryRegistry.pm
Avoid magic $cwd in module search path RT #130883

  rt.perl.org/Ticket/Display.html?id=130883
Similar to the Perl dot-inc security issue, but limit to when PERL6LIB (or `use lib`) is set to an empty string:
  $ echo 'package { say "all your base" }' > NativeCall.pm6
... (9 more lines)
05:17
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130883
rakudo: ugexe++ created pull request #1113:
Avoid magic $cwd in module search path RT #130883
05:18
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130883
nine "When you are not writing a Novel use Rakudo", love it :) 06:02
[Tux] This is Rakudo version 2017.06-221-gc86090e35 built on MoarVM version 2017.06-75-g8aa657d6 06:24
csv-ip5xs 2.775
test 13.170
test-t 4.359 - 4.591
csv-parser 11.658
Error encoding UTF-8 string: could not encode codepoint 1570066 (0x17F512), codepoint out of bounds. Cannot encode higher than 1114111 (0x10FFFF)
in block at 88.t line 21
Geth roast: 750b3b0b4e | (Nick Logan)++ (committed using GitHub Web editor) | S29-os/system.t
Fix proc test failing due to prior chdir

Use `LEAVE { chdir $orig-cwd }` to fix being left in a different directory for remaining tests.
Use `$*EXECUTABLE.absolute` so the proper interpreter is always used.
07:55
roast: 5833e2670d | lizmat++ (committed using GitHub Web editor) | S29-os/system.t
Merge pull request #281 from perl6/ugexe-patch-1

Fix proc test failing due to prior chdir
rakudo/nom: 075ddefa9b | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/RepositoryRegistry.pm
Avoid magic $cwd in module search path RT #130883

  rt.perl.org/Ticket/Display.html?id=130883
Similar to the Perl dot-inc security issue, but limit to when PERL6LIB (or `use lib`) is set to an empty string:
  $ echo 'package { say "all your base" }' > NativeCall.pm6
... (9 more lines)
07:56
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130883
rakudo/nom: b1c412aa31 | lizmat++ (committed using GitHub Web editor) | src/core/CompUnit/RepositoryRegistry.pm
Merge pull request #1113 from rakudo/rt130883

Avoid magic $cwd in module search path RT #130883
07:57
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130883
lizmat .tell ugexe t/spec/S29-os/system.t fails tests 35-36 for me consistently now (macOS) 08:13
yoleaux lizmat: I'll pass your message to ugexe.
Geth rakudo/nom: f6025eb92d | (Elizabeth Mattijsen)++ | 8 files
Make all non-texas set operators aliases where possible
09:17
rakudo/nom: 32b72cdaa7 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/Supply.pm
Call done/quit on all taps - RT #130919

  rt.perl.org/Ticket/Display.html?id=130919
  `perl6 -e 'my $supplier = Supplier.new; my $supply = $supplier.Supply; $supply.tap(done => { say 1 }); $supply.tap(done => { say 2 }); $supplier.done;'`
Actual (current) output: ... (5 more lines)
09:18
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130919
rakudo/nom: 5196e0cded | (Jonathan Worthington)++ (committed using GitHub Web editor) | src/core/Supply.pm
Merge pull request #1112 from rakudo/rt130919

Call done/quit on all taps - RT #130919
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130919
roast/6.c-errata: ab07be7fb1 | (Elizabeth Mattijsen)++ | S03-operators/mix.t
Fix faulty not a proper subset test
11:18
roast: 2450d645a1 | (Elizabeth Mattijsen)++ | 3 files
Removed superfluous (^) tests

All these cases are being handled by set_symmetric_difference.t now
11:41
Zoffix m: say 1.0e-1 + 2.0e-1 == 3.0e-1; 12:10
camelia True
Zoffix m: $ = .3e0; say 1.0e-1 + 2.0e-1 == 3.0e-1;
camelia False
Zoffix trippy, eh?
.3e0 is different from 3.0e-1 and if you use the former first it gets cached. 12:11
different in the amount of f.p. noise I mean (or at least that's the apparent cause) 12:12
huggable: num discrepancy :is: 1.0e-1 is not same as .1e0; discrepancy reproed with C code equivalent to our parsing: gist.github.com/zoffixznet/46ae8dd...f60f82a179 12:28
huggable Zoffix, Added num discrepancy as 1.0e-1 is not same as .1e0; discrepancy reproed with C code equivalent to our parsing: gist.github.com/zoffixznet/46ae8dd...f60f82a179
Zoffix gonna figure it out some time later
Geth roast: 388234a22d | (Elizabeth Mattijsen)++ | S03-operators/set_symmetric_difference.t
Fix a few comment typos
12:45
roast: 5096f004ff | (Elizabeth Mattijsen)++ | S03-operators/set_union.t
Add no/one/lazy tests for (|)

These were done for all of the other set operators that don't return Bool, so it should be done here as well.
rakudo/nom: c16334e5f3 | (Elizabeth Mattijsen)++ | src/core/set_union.pm
Add more (|) union candidates

  - spotted when adding some more (|) tests
  - should make several coercion cases a lot faster
  - now properly handles lazy lists
12:47
roast: 0b142b877c | (Elizabeth Mattijsen)++ | S03-operators/set_union.t
Add some [(|)] tests with 3 values
13:00
rakudo/nom: 46e009bf15 | (Elizabeth Mattijsen)++ | src/core/set_union.pm
Simplify infix:<(|)>(**@) candidate

  - now that all 0,1,2 candidates are in place, doing necessary coercions
  - the N parameters candidate only needs to repeat the same action
  - this should probably provide quite a significant speedup in some situations
13:13
roast: 48fe31dc0e | (Elizabeth Mattijsen)++ | S03-operators/set_union.t
Add some more (|) testing

  - lazy lists should be tested for any incarnation of (|)
  - add tests for the union of 3 empty QuantHashes
13:30
Zoffix ZOFFLOP: t/spec/S32-io/open.t 13:52
And t/spec/S29-os/system.t fails test "not ok 36 - run sets $cwd and $env" 13:54
s: &run
SourceBaby Zoffix, Sauce is at github.com/rakudo/rakudo/blob/46e0...oc.pm#L221
Zoffix holy crap. "Files=1260, Tests=164555, 160 wallclock secs (26.32 usr 4.25 sys + 3190.66 cusr 242.21 csys = 3463.44 CPU)"
m: say 113/160 13:55
camelia 0.70625
Zoffix m: say 160/113
camelia 1.415929
Zoffix Unless google is pwning me, our stresstest got 40% slower in like last 2-3 days
buggable: speed 20
buggable Zoffix, ā–‚ā–ā–‚ā–‡ā–‚ā–‚ā–‚ā–‚ā–‚ā–„ā–ƒā–‚ā–…ā–„ā–ˆā–‚ā–ā–ā†‘ā–… data for 2017-07-05ā€“2017-07-13; range: 4.099sā€“4.591s; 5% slower
Geth roast: 0d05bd3c48 | (Elizabeth Mattijsen)++ | S03-operators/set_union.t
Add quite a few [(|)] $a, $b, $c tests
13:57
lizmat Zoffix: I've added quite a few set operator tests, but each file typically runs within 1 second wallclock 13:58
so I don't think that can explain 13:59
at least not the whole difference
Zoffix I've noticed my parse time was 87s instead of usual ~67s, so it's possible the google's pwning is a possibility 14:00
lizmat yeah, I don't see that difference in parse time 14:01
fwiw, my setting parse time is between 49 and 52 generally 14:02
Geth roast: f53e85fac8 | (Elizabeth Mattijsen)++ | S03-operators/set_symmetric_difference.t
Add some more (^) testing

  - lazy lists should be tested for any incarnation of (^)
  - add tests for the symmetric difference of 3 empty QuantHashes
14:09
rakudo/nom: f6e25b54ea | (Zoffix Znet)++ | src/Perl6/Actions.nqp
Fix f.p. noise in denominator of Rat literals

When parsing a rat we rountrip the fractional part through a num, which creates the f.p. noise in the denominator.
Fixes RT#130845: rt.perl.org/Ticket/Display.html?id=130845
14:13
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130845
roast: 8e533b544b | (Zoffix Znet)++ | S32-num/rat.t
Test no f.p. noise in Rat literals with >64 denominator

Rakudo fix: github.com/rakudo/rakudo/commit/f6e25b54ea RT#130845: rt.perl.org/Ticket/Display.html?id=130845
14:14
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130845
Zoffix Well, this is temporarish fix. Until our Rats can do uint64 denominator at which point the parsing will make possibly a RatStr 14:17
b2gills Perhaps another Rational that isn't as aggressive as FatRat? 14:30
Zoffix Yeah, like a non-infectious FatRat 14:31
ugexe lizmat: those tests always pass for me. perhaps its my invocation worked due to it testing via relative paths. the invocation i'm usign is `rakudo$ install/bin/perl6 t/spec/S29-os.t` 14:32
on osx
Zoffix I use t/fudgeandrun t/spec/S29-os.t and it fails for me on Debian 14:33
Um... well, not sure which test fails for lizmat; for me the "not ok 36 - run sets $cwd and $env" fails
ugexe ok when i run it with Zoffix's invocation it fails for me 14:34
lizmat install/bin/perl6 t/spec/S29-os/system.rakudo.moar # test 35 fails 14:36
ugexe interesting, that invocation is not failing for me (after my pr) now matter how many times i retry 14:37
/no/now/
grr, s/now/no/
i should be able to figure it out though since t/fudgerun will fail it for me 14:38
i get the same as Zoffix though, only test 36 fails. test 35 still passing here 14:40
ah i see 14:43
Geth roast: da03a91b43 | (Elizabeth Mattijsen)++ | S03-operators/set_symmetric_difference.t
Add quite a few [(^)] $a, $b, $c tests

With one test de-activated, as it doesn't give the correct result :-(
14:52
lizmat ugexe: double checked, but it's test 35 that fails for me 14:53
jnthn I'm getting a failure in system too fwiw 15:01
lizmat m: dd mix() (^) (a=>-42).Mix # grrrr 15:05
camelia ("a"=>-42).Mix
lizmat should be (:42a).Mix
should be fixable before the release 15:06
but first a bit of R&R &
ugexe lizmat: from what I can tell test 35 could have been failing before while testing ok 15:09
isnt run("dir", "t"), BEGIN { run("dir", "t") }, 'run() is affected by chdir()'; # original test
i do have a fix for test 36 though 15:10
Geth roast: a46cdf94c2 | (Nick Logan)++ (committed using GitHub Web editor) | S29-os/system.t
Fix unit test to work with test tooling

The previous code worked with `install/bin/perl6 t/spec/S29-os/system.t` but not `t/fudgeandrun t/spec/S29-os/system.t` due to the later invoking perl6 with `./perl6`.
15:18
roast: 3e5042feb6 | (Nick Logan)++ (committed using GitHub Web editor) | S29-os/system.t
Test for cwd with perl6

Also groups some blocks into subtests with additional test description
16:00
ugexe lizmat: does that pass for you ^ ? 16:01
yoleaux 08:13Z <lizmat> ugexe: t/spec/S29-os/system.t fails tests 35-36 for me consistently now (macOS)
ugexe jnthn: thinking about the Supply PR I made earlier breaking the interface: the only thing I can think of is maybe it should prevent done() from being called again *if quit has been called* 16:16
jnthn ugexe: Well, the thing we're trying to ensure is that a given tapper will always see emit* [done|quit] 16:17
But it didn't seem to break that, given that it closes the tap after 16:18
(in the cleanup handling)
ugexe but is it ok for a quit to be called, immediately followed by a done (before cleanup on the quit has stopped this?)
maybe that cant happen without the user doing it explicitly though 16:19
jnthn I don't think it can happen because of .serial 16:22
uh, .serialize
Which is called by .sanitize
And that enforces one-at-a-time messages
ugexe ah ok 16:26
dogbert17 ugexe: do you remember if this gist (gist.github.com/ugexe/7ce08d3ad4cf...a9713471), from RT #128553 used to SEGV or did it only demonstrate that a some bytes went missing? 17:25
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=128553
Geth roast: 927b026c31 | (Nick Logan)++ (committed using GitHub Web editor) | S17-supply/basic.t
Test all done/quit callbacks called - RT #130919

  rt.perl.org/Ticket/Display.html?id=130919
Added to rakudo in: github.com/rakudo/rakudo/commit/32b72cd
17:51
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130919
ugexe dogbert17: i dont think it segfaulted, but that gist will work if you change the `Buf.new($ords || 0)` to `Buf.new($ords) || Buf.new(0)` 18:03
dogbert17 ugexe: wanted to test if the SEGV that was originally reported is gone 18:09
jnthn has been on a roll today :) 18:10
Geth rakudo/nom: 3f6bffdbce | (Elizabeth Mattijsen)++ | src/core/Rakudo/QuantHash.pm
Introducing R:Q.MIX-CLONE-ALL-POSITIVE

Make sure that all values of keys in a R:I:IterationSet with Mixy semantics have a positive value.
18:37
rakudo/nom: 8d5f3324a3 | (Elizabeth Mattijsen)++ | src/core/set_symmetric_difference.pm
Fix mix() (^) (a=>-42).Mix

This would improperly give (a=>-42).Mix, it should give (:42a).Mix. It now does.
lizmat m: dd (a=>-42) (^) mix() (^) (:42a).Mix # on to fixing this one 18:38
camelia ("a"=>41).Mix
lizmat m: dd (a=>-42).Mix (^) mix() (^) (:42a).Mix # eh, this one :-)
camelia ("a"=>84).Mix
Geth roast: dd195c62c2 | (Elizabeth Mattijsen)++ | S03-operators/set_symmetric_difference.t
Add tests for mix() (^) (a=>-42).Mix
18:41
lizmat . 18:45
ugexe: All tests successful.
Files=1210, Tests=69638, 251 wallclock secs (14.54 usr 5.28 sys + 1464.39 cusr 164.19 csys = 1648.40 CPU)
so no more breakage in S29-os/system.t
afk to watch some Apes& 18:50
b2gills
.oO( a whole planet of them? )
19:01
dogbert17 lizmat: does this work for you on OSX? perl6 -e 'run("ls", :merge).out.slurp.say' 19:05
ugexe it works for me on osx 19:24
dogbert17 ugexe: cool, should we close RT#128594 then? 19:31
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=128594
ugexe dogbert17: yeah. github.com/perl6/roast/blob/master...stem.t#L83 - this test verifies (even though its on a nonexistent the result would still be the same: deadlock or pass) 19:45
nonexistent command^ 19:46
dogbert17 ugexe: done, have you fixed any other RT's recently? 19:49
ugexe 130919 130883 20:01
dogbert17 ugexe: close 130919. Do you know if we have tests for 130883? 20:05
*closed
ugexe i dont think so 20:11
japhb NeuralAnomaly: status 20:19
NeuralAnomaly japhb, [āœ˜] Next release will be in 1 day and 8 hours. Since last release, there are 27 new still-open tickets (5 unreviewed and 0 blockers) and 41 unreviewed commits. See perl6.fail/release/stats for details
ugexe perl6 -e 'my $output = qx|perl6 -e "BEGIN { BEGIN { q{NativeCall.pm6}.IO.spurt(q{package { say q{all your base} }}); %*ENV<PERL6LIB>=qq{}; }; use NativeCall; };"|; use Test; isnt "all your base", $output.chomp;' 20:25
that'll test it 20:26
Zoffix Anyone looking at [Tux]'s Malformed UTF-8 issue? I seen it mentioned a few times and now there's a bug report of the same happening in LWP::Simple: github.com/perl6/perl6-lwp-simple/issues/13 20:37
FWIW, the 'isnt' test isn't a good test for output (I saw some other tests go in that used the same technique). The output could be "Syntax error...." and the test would still pass 20:39
We have is_run test in t/spec/Test/Util.pm that's good for testing stuff like this 20:40
ugexe a syntax error would be acceptable 20:45
n/m i see 20:46
MasterDuke has the malformed utf-8 been golfed? 20:53
ugexe probably somehow related to that getc issue 20:56
my $pipe = run("perl6", "-e", "q|aā™„c|.print", :out).out; say $pipe.getc.chars; say $pipe.getc.chars;
that one is in moarvm somewhere 20:59
because replacing .consume-all-chars with .consume-available-chars inside !getc-slow-path results in just "a" (the 2nd getc, which would usually just be incorrect number of characters(2) would be Nil) 21:01
Zoffix m: with '/tmp/foo70'.IO { .spurt: "aā™„c"; with .open { dd ( .getc xx 10 ) } } 21:08
camelia ("a", "ā™„c", Nil, Nil, Nil, Nil, Nil, Nil, Nil, Nil).Seq
Zoffix The too-many-chars issue is that ^. Not sure what even causes the malformed utf8 one. Maybe [Tux] would know more
Alternatively, trying to golf down LWP::Simple failure (I'm assuming it's one of the tests that's failing) 21:09
Zoffix &
ugexe it only takes the encoder being off by one to cause utf errors 21:16
m: "aā™„c".encode.subbuf(0,3).decode
camelia Malformed termination of UTF-8 string
in block <unit> at <tmp> line 1
AlexDaniel MasterDuke: you can try golfing it perhaps? :) github.com/perl6/whateverable/issues/153 21:17
MasterDuke: but it also could be that the input data is indeed shitty
A bigger question I have is why :enc<utf8-c8> is not doing what I expectā€¦ hmmā€¦ 21:18
but I don't really remember any details now so *shrug*
MasterDuke hm, the LWP::Simple test file doesn't always give it 21:24
ok, it's actually making a get, so the return data probably isn't deterministic 21:25
fwiw, --ll-exception output of a lwp::simple failure gist.github.com/MasterDuke17/05c53...9d5e7310c6 21:27
where line 17 is `ok(LWP::Simple.getstore('www.opera.com', $fname), 'getstore() returned success'); 21:28
gist updated with valgrind output. havne't gotten then malformed utf-8 error yet, but it complains about invalid reads/writes 21:41
ugexe if it only happens sometimes I would look at the chunked encoder 21:45
jnthn MasterDuke: That valgrind is just an issue at VM shitdown, fwiw 21:46
*shutdown
...though I was about right first time anyway :P
MasterDuke ha. kind of thought so, but hoped there was something there anyway
jnthn Though I'd kinda like to clean that up 21:47
MasterDuke yeah, it didn't used to do that
jnthn It's a hard problem for a multi-threaded app but should be ok for that case
MasterDuke the malformed utf8 error happens about once every 5 runs normally, but i haven't seen it in about 20 valgrind runs 21:48
ugh, just got it in valgrind, but valgrind doesn't show anything at all (not even that stuff from before) 21:49
jnthn MasterDuke: Do you have a golf of the issue? 21:50
It's getting to be bedtime here but I can look tomorrow
MasterDuke well, nothing that doesn't use LWP::Simple so far 21:51
but i'll let you know if i come up with anything 21:52
jnthn Alright, thanks 21:53
MasterDuke jnthn: did the --ll-exception output point out anything to you?
the line in Buf.pm is `nqp::p6box_s(nqp::decode(self, Rakudo::Internals.NORMALIZE_ENCODING($encoding)))` 21:54
jnthn I can't imagine much that could go wrong with that line, provided the contents of the buffer is OK 21:55
ugexe yep its chunked encoder is borked 21:57
it creates a file with the html, but there are random lines with the chunk size interlaced
jnthn oops
That'd do it
MasterDuke heh
ugexe but the chunked encoder shouldnt have just started not working... what i know from how you write them though you would have to count on getc or read(1) or some such (which goes back to the getc issue above) 21:58
jnthn That's not how *I'd* write one, but yeah, it's a way :P
ugexe you had to if you didnt know the full size. if you asked for a size that was too big it would deadlock 21:59
jnthn .read(1) is binary reading which I think should be OK; .readchars(1) and .getc apparently have some kind of issue near the end of input
ugexe if it wasnt a Connection: close 22:00
jnthn .recv doesn't block, though?
And IO::Socket::Async sure as heck don't, but I suspect that only got stable *after* LWP::Simple was written :) 22:01
Anyways, if .getc is busted near end of input (which I seem to recall seeing an RT about) that'd want a fix.
Will see if I can look at that tomorrow, so it's in before the release. 22:02
ugexe there was something wonky with it where I had to do `while (my $byte = $.recv(1, :bin)).DEFINITE {` for method get of a http streaming parser 22:03
jnthn OK 22:05
jnthn wonders if that got cleared up some with the socket changes
Anyways, should go and rest so I might be usefulish tomorrow :)
'night 22:06
Zoffix .tell jnthn "if .getc is busted near end of input (which I seem to recall seeing an RT about)". Yeah, there's a ticket for it: rt.perl.org/Ticket/Display.html?id...et-history 22:08
yoleaux Zoffix: I'll pass your message to jnthn.
Zoffix Thank you, robot!
ugexe Net::HTTP::GET("www.opera.com").content.say doesn't seem to have the same problem. i suspect http::useragent doesn't either 22:14
`LWP::Simple.get("www.opera.com").say` keeps showing a 0 at the end for me (which shouldnt be shown as its denoting the chunk size/chunk end) 22:16
samcv is there anyway to deprecate things in the nqp side? it's only in Rakudo yes? 23:13
timotimo that's right
samcv hmm how to deprecate ornamental parens 23:14
that's in nqp
timotimo only way i can think of is to make everything more expensive :< 23:16