Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failing tests for equivalence of Buf objects #5283

Open
p6rt opened this issue Apr 30, 2016 · 5 comments
Open

Failing tests for equivalence of Buf objects #5283

p6rt opened this issue Apr 30, 2016 · 5 comments
Labels
JVM Related to Rakudo-JVM

Comments

@p6rt
Copy link

p6rt commented Apr 30, 2016

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

Searchable as RT128041$

@p6rt
Copy link
Author

p6rt commented Apr 30, 2016

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
Copy link
Author

p6rt commented Mar 20, 2017

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)​:

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

@p6rt
Copy link
Author

p6rt commented Mar 20, 2017

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

@p6rt
Copy link
Author

p6rt commented Mar 20, 2017

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​: Raku/roast@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 <IOninja> 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 <tmp>​:␤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​: rakudo/rakudo@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) rakudo/rakudo@​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​: rakudo/rakudo@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​: rakudo/rakudo@86dc997cc2
14​:29 ¦ roast​: Bug find​: https://irclog.perlgeek.de/pe​rl6-dev/2017-03-20#i_14293997
14​:29 ¦ roast​: review​: Raku/roast@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​: rakudo/rakudo@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​: rakudo/rakudo@0c6281518e
15​:58 ¦ roast​: review​: Raku/roast@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​: rakudo/rakudo@0c6281518e
16​:06 ¦ roast​: that needed a `try` added.
16​:06 ¦ roast​: review​: Raku/roast@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
Copy link
Author

p6rt commented Mar 20, 2017

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)

@p6rt p6rt added the JVM Related to Rakudo-JVM label Jan 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
JVM Related to Rakudo-JVM
Projects
None yet
Development

No branches or pull requests

1 participant