Raku / old-issue-tracker

Tickets from RT
https://github.com/Raku/old-issue-tracker/issues
2 stars 1 forks source link

Failing tests for equivalence of Buf objects #5283

Open p6rt opened 8 years ago

p6rt commented 8 years ago

Migrated from rt.perl.org#128041 (status was 'open')

Searchable as RT128041$

p6rt commented 8 years ago

From @usev6

Starting with rakudo commit fe2be65806 two tests in S16-io/supply.t start to fail with rakudo-j. The following rakudo commit 463e7589a1 seems to change the code path for the tests in question, but also makes them fail. Only if one reverts both commits, the tests pass again.

The following code is a shortened version of one of the failing tests. Probably it could be golfed further.

$ perl6-j -e 'my $f = "foo"; spurt($f,"a"); my $h = open($f); my $s = $h.Supply(​:size(1),​:bin); my $x; $s.tap( { $x = $_ } ); $h.close; my $y = Buf[uint8].new(ord "a"); say $x; say $y; say $x eqv $y' Buf[uint8]​:0x\<61> Buf[uint8]​:0x\<61> False

On rakudo-m the last comparison returns True​:

$ perl6-m -e 'my $f = "foo"; spurt($f,"a"); my $h = open($f); my $s = $h.Supply(​:size(1),​:bin); my $x; $s.tap( { $x = $_ } ); $h.close; my $y = Buf[uint8].new(ord "a"); say $x; say $y; say $x eqv $y' Buf[uint8]​:0x\<61> Buf[uint8]​:0x\<61> True

p6rt commented 7 years ago

From @zoffixznet

On Sat, 30 Apr 2016 11​:16​:44 -0700, bartolin@​gmx.de wrote​:

Starting with rakudo commit fe2be65806 two tests in S16-io/supply.t start to fail with rakudo-j. The following rakudo commit 463e7589a1 seems to change the code path for the tests in question, but also makes them fail. Only if one reverts both commits, the tests pass again.

The following code is a shortened version of one of the failing tests. Probably it could be golfed further.

$ perl6-j -e 'my $f = "foo"; spurt($f,"a"); my $h = open($f); my $s = $h.Supply(​:size(1),​:bin); my $x; $s.tap( { $x = $_ } ); $h.close; my $y = Buf[uint8].new(ord "a"); say $x; say $y; say $x eqv $y' Buf[uint8]​:0x\<61> Buf[uint8]​:0x\<61> False

On rakudo-m the last comparison returns True​:

$ perl6-m -e 'my $f = "foo"; spurt($f,"a"); my $h = open($f); my $s = $h.Supply(​:size(1),​:bin); my $x; $s.tap( { $x = $_ } ); $h.close; my $y = Buf[uint8].new(ord "a"); say $x; say $y; say $x eqv $y' Buf[uint8]​:0x\<61> Buf[uint8]​:0x\<61> True

Golfed it a bit (buf8 is what the Supply uses)​:

\ r​: dd buf8 eqv Buf[uint8] \ rakudo-moar 0c6281​: OUTPUT​: «Bool​::True␤» \ ..rakudo-jvm fb4f16​: OUTPUT​: «Bool​::False␤»

p6rt commented 7 years ago

The RT System itself - Status changed from 'new' to 'open'

p6rt commented 7 years ago

From @zoffixznet

https://irclog.perlgeek.de/perl6-dev/2017-03-20#i_14297315

Time Nick Message 01​:37 IOninja .ask lizmat do you know if it's a bug that `sink-all` isn't called when the Seq is sunk naturally instead of explicitly? I vaguely recall you asking about it. What was the answer? m​: my $s = Seq.new​: class :​: does Iterator { method pull-one {}; method sink-all { say "sunk " } }.new; $s 01​:37 yoleaux2 IOninja​: I'll pass your message to lizmat. 2 more elements. Show/hide. 03​:32 Geth ¦ roast​: 1f844e1637 | (Daniel Green)++ | S03-operators/repeat.t 03​:32 ¦ roast​: Add another test for RT #​128035 03​:32 ¦ roast​: 03​:32 ¦ roast​: Giving the `x` repeat op a too large value should throw instead of going 03​:32 ¦ roast​: negative and silently not doing anything. 03​:32 synopsebot6 Link​: https://rt-archive.perl.org/perl6//Publ​ic/Bug/Display.html?id=128035 03​:32 Geth ¦ roast​: review​: https://github.com/perl6/roast/commit/1f844e1637 2 more elements. Show/hide. 07​:21 samcv buggable, tag uni 07​:21 buggable samcv, There are 31 tickets tagged with UNI; See http://perl6.fail/t/UNI for details 07​:35 samcv time to tend to some unicode bugs 07​:37 question. this bug is technically fixed https://rt-archive.perl.org/perl6/Ticket/Displ​ay.html?id=130564#ticket-history since we have East_Asian_Width property. but it's LTA because it only shows the short names instead of the full written out ones 07​:38 should i edit this bug to be for the new status or make a new one and close this one 07​:40 u​: { .uniprop('GCB') eq 'Control' and "\x[200b,$_]".chars > 1 } 07​:40 unicodable6 samcv, https://gist.github.com/296e​3bc3da1e7a1c6d0b3d472fcc82cf 07​:41 samcv u​: { .uniprop('GCB') eq 'Control' and "\x[200b]{$_.chr}".chars > 1 } 07​:41 unicodable6 samcv, U+0000 \<control-0000> [Cc] (control character) 07​:41 samcv, U+0001 \<control-0001> [Cc] (control character) 07​:43 samcv u​: { .uniprop('GCB') eq 'Control' and "\x[200b]{$_.chr}".chars \< 2 } 07​:43 unicodable6 samcv, Found nothing! 07​:44 samcv u​: { .uniprop('GCB') eq 'Control' and "\x[01]{$_.chr}".chars \< 2 } 07​:44 unicodable6 samcv, Found nothing! 09​:32 robertle joined #perl6-dev 09​:40 lizmat . 09​:40 yoleaux2 01​:37Z \ lizmat​: do you know if it's a bug that `sink-all` isn't called when the Seq is sunk naturally instead of explicitly? I vaguely recall you asking about it. What was the answer? m​: my $s = Seq.new​: class :​: does Iterator { method pull-one {}; method sink-all { say "sunk " } }.new; $s 09​:41 lizmat m​: my $s = Seq.new​: class :​: does Iterator { method pull-one {}; method sink-all { say "sunk " } }.new; $s.sink # apparently, sink doesn't get called 09​:41 camelia rakudo-moar 6060bd​: OUTPUT​: «sunk ␤» 09​:45 lizmat m​: Seq.new​: class :​: does Iterator { method pull-one {}; method sink-all { say "sunk " } }.new # assignment prevents sinking 09​:45 camelia rakudo-moar 6060bd​: OUTPUT​: «sunk ␤» 09​:46 lizmat this isn't limited to Seq's though​: 09​:46 m​: class A { method sink { say "sunk" } }.new 09​:46 camelia rakudo-moar 6060bd​: OUTPUT​: «sunk␤» 09​:46 lizmat m​: my $a = class A { method sink { say "sunk" } }.new; $a 09​:46 camelia rakudo-moar 6060bd​: OUTPUT​: «WARNINGS for \​:␤Useless use of $a in sink context (line 1)␤» 09​:54 faraco joined #perl6-dev 09​:54 lizmat Files=1179, Tests=55903, 193 wallclock secs (11.67 usr 4.66 sys + 1152.28 cusr 105.78 csys = 1274.39 CPU) 10​:47 Ven joined #perl6-dev 11​:00 |Tux| This is Rakudo version 2017.03-10-g6060bd38c built on MoarVM version 2017.03-4-gfe1dc84a 11​:00 csv-ip5xs 3.002 11​:00 test 12.225 11​:00 test-t 4.885 - 5.010 11​:00 csv-parser 12.539 11​:18 dogbert17_ just out of curiosity, what parts of Rakudo/MoarVM needs optimization on order for test-t to perform better? 11​:19 s/on/in/ 11​:19 faraco left #perl6-dev 11​:23 lizmat at the HLL level, run with --profile :-) 11​:23 at the low level, make JIT work better :-) 11​:24 jnthn Spesh also :) 11​:25 dogbert17_ so there's no LHF's left then? 11​:25 jnthn Given how much that attention that example has received, my guess would be not much :) 11​:28 lizmat dogbert17_​: fwiw, I haven't looked at --profile output of test-t for a while 11​:28 maybe new LHF have emerged :-) 11​:29 timotimo i'm a bit annoyed that the profiler currently won't display allocations or gc stats 11​:30 * lizmat as well :-( 11​:30 dogbert17_ anyone remember the name of Tux's repo? 11​:30 |Tux| I do 11​:30 dogbert17_ :) 11​:30 lizmat https://github.com/Tux/CSV 11​:30 dogbert17_ thx 11​:31 timotimo it's kind of amazing that tux sacrificed such a short repo name for a perl6 module 11​:31 jnthn I should be able to focus on performance issues in the not too distant future 11​:31 |Tux| http://modules.perl6.org => search for CSV 11​:32 jnthn (Having been primarily focused on stability issues of late) 11​:32 |Tux| timotimo, the perl5 version is here​: https://github.com/Tux/Text-CSV_XS 11​:32 doesn't feel it being a sacrifice 11​:32 timotimo OK :) 11​:34 |Tux| http://occupydemocrats.com/2017/03/19/denmark​-just-trolled-trump-bus-watch-happens-moves/ 11​:34 dogbert17_ hmm, installing Text​::CSV wasn't as easy as expected ... 'could not find File​::Directory​::Tree at line 3 in​:' 11​:34 jnthn dogbert17_​: How did you try to install it? :) 11​:35 dogbert17_ old school way, with panda :) 11​:35 panda install Text​::CSV 11​:37 jnthn hm, I'd have expected that to get the deps sorted out fine 11​:39 dogbert17_ so would I 11​:40 awwaiid joined #perl6-dev 11​:42 dogbert17_ there are some complaints​: 11​:42 Potential difficulties​: 11​:42 Literal values in signatures are smartmatched against and smartmatch with `False` will always fail. Use the `where` clause instead. 11​:43 followed by a gazillion of test failures (in Text​::CSV) 11​:44 Geth ¦ rakudo/nom​: 5917b817c6 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm 11​:44 ¦ rakudo/nom​: Fix for RT #​131018 11​:44 ¦ rakudo/nom​: review​: https://github.com/rakudo/rakudo/commit/5917b817c6 11​:44 synopsebot6 Link​: https://rt-archive.perl.org/perl6//Publ​ic/Bug/Display.html?id=131018 11​:45 dogbert17_ hmm, am I the only one getting this when trying to install Text​::CSV? 11​:45 lizmat afk again for some schlepping& 11​:49 |Tux| dogbert17_, $ git clone github.com​:Tux/CSV Text-CSV6 && cd Text-CSV6 && panda install . 11​:49 same thing? 11​:50 dogbert17_ tries ... 11​:50 |Tux| timotimo, doing that, I get this​: 11​:50 ==> Testing Text​::CSV 11​:50 Unhandled exception in code scheduled on thread 3 11​:50 permission denied 11​:51 timotimo wait, doing what now? 11​:53 also, that error message is pretty unhelpful 11​:54 dogbert17_ ==> Installing Text​::CSV from a local directory '.' 11​:54 ==> Fetching Text​::CSV 11​:54 Failed to copy '/home/dogbert/repos/Text-CSV6/csv-rust-qckrdr' to '/home/dogbert/repos/Text-CSV6/.panda​-work/1490010833_1//csv-rust-qckrdr'​: Failed to copy file​: no such file or directory 11​:54 timotimo it's not mkdir-ing properly? 11​:55 the // isn't confusing it, i ohpe? 11​:55 |Tux| those files should not be installed 11​:55 the repo contains a lot of files that enable comparing speeds between languages. They should not be installed 11​:56 timotimo right, and the meta6.json isn't telling to install any of that 11​:56 |Tux| Where should I state the files to be skipped from install? 11​:56 timotimo there is no way to do that and it shouldn't even try to do that in the first place?! 11​:57 oh 11​:57 i expect it's just copying stuff over into a work dir before installing 12​:00 dogbert17_ |Tux|, timotimo​: it continued installing after I removed sv-rust-csvrdr, csv-rust-libcsv and csv-rust-qckrdr, however there are lots of test failures 12​:01 timotimo why would it fail to copy that ... is it a dead symlink or something? 12​:01 yes, it is a dead link 12​:01 dogbert17_ I think it was dead symlinks yes 12​:01 |Tux| test *FAIL*ures or just a riddle of TODO's? 12​:02 and I see failures too now. Will have a look 12​:02 dogbert17_ spam warning :) 12​:02 cool, no spam then :) 12​:02 timotimo the copy routine in panda there ought to copy the symlinks as they are, not try to follow them 12​:02 for every reason ever 12​:03 * dogbert17_ sneaks away for a quick lunch 12​:10 |Tux| timotimo, what is the fastest way to see what commit broke t/78_fragment.t line 127 (and more) ? 12​:10 timotimo you mean what rakudo commit? 12​:10 |Tux| yep 12​:11 timotimo hm, we do have bisectable, but it's set up only for single scripts, not for whole modules 12​:11 |Tux| I probably missed the test errors 12​:19 masak |Tux|​: if you have an easy way to re-build your Rakudo at different versions, `git bisect`-ing Rakudo might be the fastest way 12​:19 timotimo yeah 12​:19 |Tux| maybe it is easier then to find the failing line/structure 12​:20 IOninja That just makes it look like more of a bug to me. That a defined sinking method isn't called in all cases of sinkage. 12​:21 |Tux| IOninja, that remark is to me? 12​:21 IOninja And that warning is issued with prefix sink. 12​:21 |Tux|​: no, to previous conversation about sink called, but only if the object is not in a variable. 12​:21 |Tux| ah, /me digs on … 12​:22 timotimo building me some rakudos 12​:29 |Tux| did something change in RangeSet's? 12​:30 IOninja There's no such thing in core. 12​:30 Range.int-bounds did change; it used to have a bug where, say, 1..* gave (1, Inf) is *int* bounds 12​:30 |Tux| did something change in Pair's? 12​:31 timotimo isn't test-t supposed to be really fast? 12​:31 IOninja AT-KEY used to give Mu, now it gives Nil (changed in Jan) 12​:31 perlpilot joined #perl6-dev 12​:38 timotimo [Tux]​: is your "test-verbose" target in the makefile supposed to be called from lib/ and i have to cp -r the t folder into lib as well, or should the dependency be lib/Text/CSV.pm instead of Text/CSV.pm? 12​:39 |Tux| the latter 12​:39 timotimo thx 12​:46 * dogbert17_ back 12​:59 |Tux| Found the failing line of code, but I have no idea why 12​:59 « my @​row = $meta ?? @​f !! @​f.map ( -> \x --> Str { x.Str });» 13​:00 @​f has TWO elements. After that line, @​row only has ONE 13​:01 $meta is False in the case of failure 13​:02 timotimo m​: my @​f = \<1 2 3 4>; dd @​f.map(*.Str) 13​:02 camelia rakudo-moar 5917b8​: OUTPUT​: «("1", "2", "3", "4").Seq␤» 13​:02 timotimo m​: my @​f = \<1 2 3 4>; dd @​f.map(-> \x --> Str { x.Str }) 13​:02 camelia rakudo-moar 5917b8​: OUTPUT​: «("1",).Seq␤» 13​:02 timotimo m​: my @​f = \<1 2 3 4>; dd @​f.map(-> \x { x.Str }) 13​:02 camelia rakudo-moar 5917b8​: OUTPUT​: «("1", "2", "3", "4").Seq␤» 13​:02 timotimo the "that's never going to slip" optimized iterator is probably to blame 13​:02 |Tux| (that line of code is created by Liz 13​:03 did I spot a bug? 13​:03 timotimo yes, you surely did 13​:03 |Tux| \o/ 13​:03 and thank you dogbert17_ for trying! 13​:04 CSV being a canary again 13​:04 timotimo yes, quite good 13​:07 IOninja bisect​: m​: my @​f = \<1 2 3 4>; dd @​f.map(-> \x --> Str { x.Str }) 13​:07 bisectable6 IOninja, Bisecting by output (old=2015.12 new=5917b81) because on both starting points the exit code is 0 13​:07 IOninja, bisect log​: https://gist.github.com/384f​8cfdb95b325059d46708089d5a01 13​:07 IOninja, (2017-01-29) https://github.com/rakudo/rakudo/commit/​fdcf462f42ad4eb2599d9a1287e015350e03d3f0 13​:08 timotimo makes me wonder​: 2x as fast because it only maps once? :P 13​:09 IOninja heh 13​:09 timotimo YOMO? 13​:11 IOninja m​: dd ('1', '2', '3').map(-> \x --> Str { x.Str })[0..*] 13​:11 camelia rakudo-moar 5917b8​: OUTPUT​: «("1", "2", "3")␤» 13​:11 |Tux| I am seriously disappointed in *myself* for not noticing this FAIL before dogbert17_ did :( 13​:12 IOninja Don't really get why `IterateOneNotSlippingWithoutPhasers` has handling for phasers :/ 13​:13 Ah, these are just to handle `next`, etc. not phasers. 13​:14 Though I don't see `NEXT` in the buggy branches :/ 13​:28 m​: my $i = ('1', '2', '3').map(-> \x --> Str { dd ["[", x, "]"]; next if x == 2; x.Str }).iterator; my @​z; dd $i.push-all(@​z); dd @​z 13​:28 camelia rakudo-moar 5917b8​: OUTPUT​: «["[", "1", "]"]␤IterationEnd␤Array @​z = ["1"]␤» 13​:29 IOninja ¯\_(ツ)_/¯ don't see the bug :/ All code reads correct to me. 13​:29 other than missing NEXT handlers.. 13​:30 Which is this​: https://github.com/rakudo/rakudo/blob/nom/​src/core/Any-iterable-methods.pm#L301-L319 13​:35 dogbert17_ |Tux| I can wait until the problem is solved :) 13​:36 |Tux| I can alter the code, but I rather keep it and wait till Rakudo is fixed 13​:36 dogbert17_ is it something for lizmat? 13​:36 |Tux| anyway​: you can install and use it, if you do not use fragments 13​:37 I think IOninja, timotimo and Liz will find the cause and a solution 13​:37 I just put my finger on the line of failure 13​:37 dogbert17_ I wanted to run the same test-t that you present each day and then make a profile of it 13​:38 |Tux| which, to me, was an interesting journey, as I never expected *that* line to be faulty 13​:38 timotimo dogbert17_​: read README.speed for that 13​:38 |Tux| that test still works 13​:38 dogbert17_ timotimo​: so now I have to learn reading :) 13​:38 IOninja dogbert17_​: just clone the repo. You don't need to install anything other than deps 13​:38 huggable​: csv 13​:38 huggable IOninja, https://github.com/Tux/CSV (see `bench csv` for how to run bench) 13​:38 IOninja huggable​: bench csv 13​:38 huggable IOninja, export PATH=`pwd`/install/bin​:$PATH; cd CSV; for i in $(seq 1 10000); do echo 'hello,","," ",world,"!"'; done > /tmp/hello.csv; time perl6 -Ilib -MText​::CSV test-t.pl \</tmp/hello.csv 13​:38 IOninja ignore the PATH part. 13​:39 * dogbert17_ is impressed by all the help he's getting 13​:39 |Tux| :) \o/ 13​:39 dogbert17_ will be interesting to see how large the profile will be 13​:39 timotimo stop helping dogbert so well, lest they get used to it and expect it in the future! 13​:39 dogbert17_ :) 13​:40 |Tux| sorry timotimo - I got triggered somehow 13​:41 dogbert17_ timotimo, IOninja​: have you already figured out what's wrong/buggy? 13​:41 IOninja dogbert17_​: nope. I've read all of the code involved and don't see what's buggy about it. 13​:43 adds a few debug prints and recompiles 13​:45 timotimo .o( about that bytecode-level debugger ... ) 13​:58 IOninja hm, I think I see it actually 13​:58 recompiles 14​:00 Yup, got it \o/ 14​:01 timotimo cool! 14​:05 IOninja And the NEXT handlers aren't missing. They're just not needed there. 14​:06 (the NEXT nexts the outter loop) 14​:11 dogbert17_ IOninja++ 14​:16 * IOninja is taking forever to push :) 14​:17 jnthn Push harder! 14​:17 IOninja I was wrestling with indentation. Started with `pico` on the VM, gave up, went to atom, but have no idea how to make it 2-space ident for one file, so went back to pico :P 14​:19 dogbert17_ IOninja​: I got test-t running, there was a complaint during the first run​: 14​:19 Potential difficulties​: 14​:19 Literal values in signatures are smartmatched against and smartmatch with `False` will always fail. Use the `where` clause instead. 14​:19 at /home/dogbert/repos/Text-CSV6/lib/Text/CSV.pm (Text​::CSV)​:690 14​:19 ------> multi method column_names (False⏏) returns Array[Str] { @​!cnames = (); } 14​:20 |Tux| the fix foir that one has been pushed. git pull to fix 14​:20 dogbert17_ |Tux|++ 14​:22 |Tux| jnthn, maybe allow «multi method foo (False) {» to be shorthand for «multi method foo (Bool​:D $ where *.not) {» 14​:23 dogbert17_ takes 5.7 sec on my $work machine 14​:24 jnthn |Tux|​: Well, against it is that we'd have to make it a special case and so inconsistent with how other literals are handled, so then we can't just explain it as "it smart-matches". OTOH, the current behavior is pretty useless... 14​:25 |Tux| dogbert17_, when I started it took 256, so be glad to enter the arena today :) 14​:26 the syntax is very readable when written down, but I couldn't come up with that from scratch 14​:26 Geth ¦ rakudo/nom​: 86dc997cc2 | (Zoffix Znet)++ | src/core/Any-iterable-methods.pm 14​:26 ¦ rakudo/nom​: Fix IterateOneNotSlippingWithoutPhasers .push-all and .sink-all 14​:26 ¦ rakudo/nom​: 14​:26 ¦ rakudo/nom​: Currently the methods stop after the first iteration instead of 14​:26 ¦ rakudo/nom​: pushing or sinking all the values. 14​:26 ¦ rakudo/nom​: 14​:26 ¦ rakudo/nom​: The cause is `$stopped` is mis-scoped, since nqp​::until() isn't a 14​:26 ¦ rakudo/nom​: block. So `$stopped` retains its value from previous iteration, 14​:26 ¦ rakudo/nom​: \<…commit message has 8 more lines…> 14​:26 ¦ rakudo/nom​: review​: https://github.com/rakudo/rakudo/commit/86dc997cc2 14​:27 |Tux| with that in mind, would «multi method foo (True) {» be written as «multi method foo (Bool​:D when *) {» ? 14​:27 jnthn where .so I'd guess 14​:28 timotimo not "when", though 14​:28 jnthn Or where *.so if it's to match the other one you have :) 14​:28 IOninja It'd work, but where .so is clearer 14​:28 timotimo yeah 14​:28 |Tux| so much confusion :) 14​:28 * dogbert17_ rebuilds 14​:28 |Tux| when/where was my mistake. I meant where 14​:29 Geth ¦ roast​: 70be436959 | (Zoffix Znet)++ | S32-list/map.t 14​:29 ¦ roast​: Test IterateOneNotSlippingWithoutPhasers .push-all and .sink-all 14​:29 ¦ roast​: 14​:29 ¦ roast​: Rakudo fix​: https://github.com/rakudo/rakudo/commit/86dc997cc2 14​:29 ¦ roast​: Bug find​: https://irclog.perlgeek.de/pe​rl6-dev/2017-03-20#i_14293997 14​:29 ¦ roast​: review​: https://github.com/perl6/roast/commit/70be436959 14​:29 Ven joined #perl6-dev 14​:31 [Coke] (2 space indent) you monster. 14​:31 IOninja I'm not the one using it :) 14​:32 But there's a lot of nesting with nqp-dense code, so 2-space makes sense 14​:32 dogbert17_ am I interpreting the profile output correctly if if I say the the routine parse is the one using up most of the time (in something called chunks)? 14​:33 stutter writing :( 14​:35 |Tux| yep 14​:35 dogbert17_ Text​::CSV tests are now passing :) 14​:36 |Tux| very very likely parse is the hot-spot 14​:36 as it uses "next" quite a bit, it is probably causing slowness because next is an exception 14​:36 re-writing the code to not use next would render it unmaintainable 14​:37 This is Rakudo version 2017.03-12-g86dc997cc built on MoarVM version 2017.03-4-gfe1dc84a 14​:37 csv-ip5xs 2.979 14​:37 test 12.310 14​:37 test-t 4.897 - 4.919 14​:37 csv-parser 12.557 14​:38 jnthn At some point, I'd hope we can (in spesh) rewrite various Perl 6 `next`s into gotos 14​:38 timotimo aye 14​:38 jnthn (We already can do that for NQP code) 14​:38 |Tux| All tests successful. 14​:38 Files=29, Tests=22308, 18 wallclock secs ( 2.40 usr 0.14 sys + 58.01 cusr 1.31 csys = 61.86 CPU) 14​:38 Result​: PASS 14​:38 IOninja++ 14​:39 I expect such an optimisation to boost CSV parsing enormously 14​:42 wat|gives huggable​: help 14​:42 IOninja huggable​: help 14​:42 huggable IOninja, nothing found 14​:42 IOninja bug in IRC​::Client... 14​:42 perlpilot .oO( wat gives and wat takes? ) 14​:42 * IOninja was wondering why ZofBot didn't report the ++ above to my Twitter... 14​:43 dogbert17_ IOninja​: did you go back to JSON​::Fast in your bots? I believe that timotimo and/or MasterDuke fixed the memory problem 14​:44 timotimo er, not quite 14​:44 i reduced the impact by a factor of about 2? and MasterDuke gave us a rather nice boost 14​:44 dogbert17_ you didn't? 14​:45 ah timotimo++, MasterDuke++ 14​:45 IOninja dogbert17_​: see no reason to go back. 14​:46 timotimo there's still improvements to be made 14​:46 dogbert17_ IOninja, ok, in general how does you bots behave, do the SEGV, run out of memory or perform impeccably? 14​:46 *they 14​:46 IOninja work fine 14​:47 dogbert17_ cool 14​:47 timotimo JSON​::Fast is - out of it and JSON​::Tiny - currently the only impl that accepts strings that start with a quotation that has combining characters following it 14​:48 hm, actually ... i might have to check how it behaves (and should behave) when it hits a closing quotation mark with combining characters 14​:48 it should probably reject the input in that case 14​:49 * IOninja is surprised `JSON` is still untaken by anyone 14​:51 timotimo i'll certainly not snag JSON for "a naive imperative json parser in perl6, to evaluate performance against JSON​::Tiny" :) 15​:15 dogbert17_ is the profiler UI broken? The GC tab does not seem to work. 15​:15 [Coke] It has difficulty with large dumps of data. 15​:16 I'm not aware of anything specifically borked, though. 15​:16 dogbert17_ ah, this one is ~200k 15​:17 timotimo yeah, it is 15​:17 [Coke]​: it's fully borked on the smallest of profiles 15​:17 ISTR you worked on it a while back? was it still working when you left it? 15​:17 [Coke] I udpated the version of angular it was using, hoping to get a marginal speed boost. 15​:18 (it's still on A1, though, and it was working when I stopped touching it, yes.) 15​:18 timotimo OK, strange 15​:18 [Coke] If it's fully borked, please open an RT if one isn't already. 15​:19 my experiment to try to get it A2 was met with great resistance by my brain. 15​:20 timotimo sorry to hear that 15​:20 i haven't looked into a2 at all yet 15​:20 tadzik dogbert17_​: you may want to try the qt profiler 15​:20 it doesn't do all the things, but it can load large files just fine 15​:21 [Coke] timotimo​: my plan is to have a separate project for generating the template, then snapshotting that template into the place where the existing one is. 15​:21 timotimo right 15​:21 tadzik​: it doesn't show anything about GCs, which is half of the broken part 15​:21 tadzik ah 15​:21 timotimo the other half is allocations, those don't show up either, but the qt profiler also doesn't have 'em 15​:22 tadzik hm, let me grab a tea... 15​:22 timotimo did you see we got an sql output backend added to the profiler? 15​:22 tadzik oh! no 15​:22 that's nice 15​:22 timotimo it's got an issue, but it might be a good idea to throw the json stuff away from the qt profiler 15​:22 since it has that unreasonable size restriction on input files 15​:22 tadzik right 15​:23 looks like I'll have my hands full on the not-qa-hackathon :) 15​:23 dogbert17_ tadzik​: so where can I find this qt profiler? 15​:23 timotimo on tadzik's github 15​:23 * dogbert17_ looks 15​:23 tadzik dogbert17_(IRC)​: https://github.com/tadzik/p6profiler-qt, but as timotimo says, may not be useful for you if gc's what you're after 15​:24 timotimo you can re-run the profile and use a --profile-filename=foo.sql 15​:24 sqlite3 foo.sqlite -init foo.sql and then ^D will create an sqlite database for you, sqlitebrowser has a plot tab that can give you a plot of results from a query 15​:24 tadzik sqlitebrowser! 15​:25 dogbert17_ interesting 15​:25 tadzik that sounds useful 15​:25 timotimo it is a good tool 15​:25 it gets very confused when you give it the raw .sql file 15​:25 tadzik heh 15​:25 timotimo either you have a database already created and it'll try to BEGIN before loading the file, then choke on the BEGIN that the file starts with 15​:26 or you import the sql to create a new database and it'll report some error on the console and just hang with a 0% progress window open 15​:26 dogbert17_ tadzik​: I see that you're the author of panda, cool 15​:26 timotimo panda has been very valuable for a very long time 15​:26 * [Coke] now wishes zef was called zuul. 15​:26 dogbert17_ we were fighting with it a couple of pages up, we had some problems with symbolic links 15​:28 timotimo aye, tux' csv repository has symlinks to subfolders that don't exist in it 15​:28 you have to do some manual work (maybe just run the makefile) to make those appear 15​:28 but panda's first order of business is to copy over the repo to a temporary work oflder 15​:29 that's where it explodes, it tries to copy the symlink, but instead tries copying the target file, which gives "file not found" 15​:29 tadzik dogbert17_​: yeah :) 15​:30 |Tux| timotimo, just tell me what to fix 15​:30 the symlinks to outside the repo could be removed from the repo and put in .gitignore 15​:30 timotimo how do you usually make the binaries for the other languages implementaitons appear? 15​:31 oh wait, they are to outside the repo? 15​:31 it's not, though? 15​:31 csv-rust-qckrdr is a symlink to rust-quick-reader/target/release/quick-reader 15​:31 Ven joined #perl6-dev 15​:32 |Tux| those are *in* the repo, but they should not be installed 15​:32 timotimo we have a different interpretation of "outside", then 15​:32 it's not about being installed, though 15​:32 it's just about making a temporary work folder for panda to work in 15​:33 for the temporary work folder to contain what the module needs to build, it has to copy over everything 15​:33 that includes these symbolic links purely because they are part of "everything" 15​:33 |Tux| panda doesn't need all the stuff I included to be able to compare timings against other languages 15​:34 timotimo well, we could make tux/csv a special case in panda and give it a file listing of things it ought to copy 15​:34 or we should make it copy symlinks preserving the symlinks 15​:34 or you'll just kick out the symlinks and generate them in the same script that builds these implementations 15​:34 |Tux| or I should split off Text​::CSV​::Timings from Text​::CSV 15​:35 timotimo yeah, that'd also be a good step forward 15​:35 i still think panda ought to know about symlinks when it copies stuff around 15​:35 though maybe for security reasons we should limit symlinks to stuff inside the work copy 15​:35 |Tux| but that would be after two weeks, as I go skiing Friday :) \o/ 15​:35 timotimo cool 15​:36 |Tux| timotimo, if META6.json can have an "exclude" list, that would be the easiest approach 15​:36 timotimo no 15​:36 |Tux| because? 15​:36 timotimo the working copy thing is an implementation detail of panda 15​:37 |Tux| same problem does not exist in zef? 15​:37 timotimo if any other method of installation was used it would never use that exclude list, and people would have to go to rather extreme measures to ensure the exclude list makes sense 15​:37 that is correct 15​:38 |Tux| should I switch to zef? 15​:38 timotimo that's a matter of taste at this moment 15​:38 zef is seeing more development than panda, though 15​:39 |Tux| I'll switch when told to. Until then, my automated procedures will use panda 15​:39 IOninja Yes, use zef. 15​:40 |Tux| try «zef -?» and understand why I didn't so far :) 15​:40 or zef --help 15​:40 timotimo No matches for wildcard “-?”. 15​:40 fish​: zef -? 15​:41 what's the issue with zef -\? or zef --help? 15​:41 IOninja |Tux|​: what am I looking for? 15​:41 |Tux| that wildcard thing is not to blame zef (or any program) for. It is a shell setting. I chose to have it be literal 15​:42 timotimo sure 15​:42 i'm looking at the output that you mean 15​:42 it seems sice 15​:42 |Tux| https://gist.github.com/Tux/50​9974a8909f1efd09bcf5e75aa16379 15​:43 timotimo huh 15​:43 are you running latest zef? 15​:43 IOninja |Tux|​: that's because you're running outdated version :/ 15​:43 |Tux| I don't know :) 15​:43 panda install zef ? 15​:43 ==> Testing zef 15​:43 Unhandled exception in code scheduled on thread 3 15​:43 no such file or directory 15​:44 timotimo well, usually you go into zef's folder, then perl6 -Ilib bin/zef install . 15​:44 IOninja |Tux|​: how did you get your perl6? 15​:44 |Tux| from rakudobrew 15​:44 IOninja |Tux|​: rakudobrew build-zef 15​:45 |Tux| :) 15​:47 «zef install Foo» installed Foo :) from FROGGS 15​:48 IOninja |Tux|​: I don't see any commits in panda from its author since middle of last year, despite there being 50+ Issues and several PRs. The few more recent fixes are primarily by the Rakudo Star release manager, but it's been dropped from R* now, so I doubt more will come. I'm not aware of any feature panda supports that zef doesn't. So I disagree with the "it's a metter of taste" comment. IMO zef is The One 15​:48 True™ Perl 6 module manager. 15​:49 timotimo that's fair 15​:50 |Tux| I just switched to zef. That means that it is unlikely that I will report any problems with panda in the future 15​:51 wonders if this would also help dogbert17_ 15​:53 IOninja, zef could be improved to not run tests if the current version is already installed on «zef install .» 15​:53 IOninja buggable​: eco zef 15​:53 buggable IOninja, zef 'It's like [cpanm] wearing high heels with a tracksuit'​: https://github.com/ugexe/zef 15​:54 IOninja |Tux|​: ^ report it. 15​:57 Geth ¦ rakudo/nom​: 0c6281518e | (Zoffix Znet)++ | 2 files 15​:57 ¦ rakudo/nom​: Fix crash IO​::Path.lines(*) and make it 3.2x faster; lizmat++ 15​:57 ¦ rakudo/nom​: 15​:57 ¦ rakudo/nom​: The original issue that led to impl of IO​::Path.lines has been 15​:57 ¦ rakudo/nom​: resolved in IO​::Path.lines, so toss the impl and use the much 15​:57 ¦ rakudo/nom​: faster IO​::Path.lines to do the work. 15​:57 ¦ rakudo/nom​: review​: https://github.com/rakudo/rakudo/commit/0c6281518e 15​:57 timotimo neato 15​:58 Geth ¦ roast​: 465795c458 | (Zoffix Znet)++ | S16-io/lines.t 15​:58 ¦ roast​: [io grant] Test IO​::Path.lines(*) does not crash 15​:58 ¦ roast​: 15​:58 ¦ roast​: Rakudo fix​: https://github.com/rakudo/rakudo/commit/0c6281518e 15​:58 ¦ roast​: review​: https://github.com/perl6/roast/commit/465795c458 15​:58 IOninja if it weren't for that added `try`, it'd be the perfect commit​: bug fix, optimization, and no new lines of code :) 16​:00 |Tux| IOninja, reported 16​:04 dogbert17_ |Tux|, I try Zef and see how it works 16​:06 Geth ¦ roast​: add852b082 | (Zoffix Znet)++ | S16-io/lines.t 16​:06 ¦ roast​: Test IO​::Path.lines can do sink-all 16​:06 ¦ roast​: 16​:06 ¦ roast​: Cover the issue exposed with 16​:06 ¦ roast​: https://github.com/rakudo/rakudo/commit/0c6281518e 16​:06 ¦ roast​: that needed a `try` added. 16​:06 ¦ roast​: review​: https://github.com/perl6/roast/commit/add852b082 16​:11 perlpilot speaking of zef ... is it a feature that "zef install A B C" fails to install B and C if A fails to install? (i.e. it looks like zef assumes a dependency relationship between multiple modules given on the command line) 16​:12 IOninja Probably not :) 16​:21 AlexDaniel joined #perl6-dev 16​:22 japhb perlpilot​: I think you may be looking for --serial . I think without that, zef isn't so much assuming dependency, but rather assuming a single invocation should be a transaction​: either the whole thing succeeds or the whole thing fails. 16​:22 perlpilot japhb​: ah, thanks. 16​:29 IOninja GAH 16​:29 s​:1st/IO​::Path/IO​::Pipe/; in that commit message 16​:30 and :2nd too -_- 16​:31 and s​:3rd/IO​::Path/IO​::Handle/; 16​:31 I'm clearly in love with IO​::Path :) 16​:32 Damn, the roast messages are wrong too. 6 mentions of IO​::Path... All wrong :) 2 more elements. Show/hide. 17​:16 timotimo whoops :S 17​:32 ugexe japhb​: thats correct 17​:33 eventually it will be able to pick up where it last left off 17​:48 dogbert17 joined #perl6-dev 19​:16 dogbert17 [Coke]​: RT #​131027 19​:16 synopsebot6 Link​: https://rt-archive.perl.org/perl6//Publ​ic/Bug/Display.html?id=131027 19​:19 [Coke] dogbert17​: danke 19​:24 ugjka joined #perl6-dev 19​:28 lizmat it's always good to make things faster by removing other things :-) 19​:42 RabidGravy can you create github issues by email? 19​:43 lizmat hmmm. don't know, but if we could, wouldn't that create the same problem that RT has with spam ? 19​:45 jsimonet joined #perl6-dev 19​:45 RabidGravy yeah, it's just I get bug reports on my P5 modules to rt and I want them in github :-\ 19​:45 cut and paste then 20​:02 samcv good * 20​:02 IOninja \o 20​:10 AlexDaniel 🙋 2 more elements. Show/hide. 21​:08 lizmat so what's up with http://pl6anet.org ? seems like the feed is all mixed up ? 21​:13 jnthn Hm, odd...I don't see the post I wrote this week, which is usually aggregated there 21​:14 IOninja stmuk_​: what's happening? ^ 21​:16 jnthn lizmat​: If you're doing weekly, I did a blog post for once, anyways :) 21​:17 lizmat jnthn​: it's the headliner :-) 21​:17 jnthn I'm hyper about racing to the top :P 21​:18 lizmat tentative title of this week​: How To Race A Hyper 21​:28 bartolin r​: use nqp; say nqp​::eqaddr(buf8.WHAT,Buf[uint8].WHAT) # RT #​130914 21​:28 synopsebot6 Link​: https://rt-archive.perl.org/perl6//Publ​ic/Bug/Display.html?id=130914 21​:28 camelia rakudo-moar 0c6281​: OUTPUT​: «1␤» 21​:28 ..rakudo-jvm fb4f16​: OUTPUT​: «0␤» 21​:28 bartolin j​: use nqp; say nqp​::jvmeqaddr(buf8.WHAT,Buf[uint8].WHAT) 21​:28 camelia rakudo-jvm fb4f16​: OUTPUT​: «1␤» 21​:28 IOninja cool 21​:28 Why is there a separate op for that? 21​:29 * bartolin has no idea 21​:30 it looks like jvmeqaddr isn't used anywhere (neither nqp nor rakudo)

p6rt commented 7 years ago

From @zoffixznet

I meant... https://irclog.perlgeek.de/perl6-dev/2017-03-20#i_14297315

21​:28 bartolin r​: use nqp; say nqp​::eqaddr(buf8.WHAT,Buf[uint8].WHAT) # RT #​130914 21​:28 synopsebot6 Link​: https://rt-archive.perl.org/perl6//Publ​ic/Bug/Display.html?id=130914 21​:28 camelia rakudo-moar 0c6281​: OUTPUT​: «1␤» 21​:28 ..rakudo-jvm fb4f16​: OUTPUT​: «0␤» 21​:28 bartolin j​: use nqp; say nqp​::jvmeqaddr(buf8.WHAT,Buf[uint8].WHAT) 21​:28 camelia rakudo-jvm fb4f16​: OUTPUT​: «1␤» 21​:28 IOninja cool 21​:28 Why is there a separate op for that? 21​:29 * bartolin has no idea 21​:30 it looks like jvmeqaddr isn't used anywhere (neither nqp nor rakudo)