japhb | buggable: speed | 02:55 | |
buggable | japhb, ?????????????????????????????????????????????????? data for 2017-07-12–2017-08-01; range: 4.025s–4.960s; 2% slower | ||
Geth | rakudo/nom: 01dbd874ee | (Nick Logan)++ (committed using GitHub Web editor) | src/core/Version.pm Improve Version smart match with different lengths (#1118) If RHS has more version parts than LHS then pad LHS with `.0` until both versions have a similar number of parts. If the RHS is longer, continue with the current behavior of padding with `.*`. e.g. `say v6 ~~ v6c` is now False. Fixes `perl6 -e 'use Test:ver(v6.c.1.2.3);'` (...in that it now fails instead of loading a `v6.c`) |
03:40 | |
roast/Altai-man-patch-1: 54415941e4 | Altai-man++ (committed using GitHub Web editor) | S09-subscript/slice.t Test for #131827 Lizmat++ for the actual bugfix. Closes rt.perl.org/Public/Bug/Display.html?id=131827 |
08:01 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131827 | ||
Geth | roast: Altai-man++ created pull request #292: Test for #131827 |
08:02 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131827 | ||
[Tux] | This is Rakudo version 2017.07-116-g01dbd874e built on MoarVM version 2017.07-266-ged84a632 | 08:38 | |
csv-ip5xs 2.559 | |||
test 12.362 | |||
test-t 4.152 - 4.242 | |||
csv-parser 12.996 | |||
Geth | roast: 6da51968d3 | Altai-man++ (committed by Zoffix Znet) | S09-subscript/slice.t Test for #131827 (#292) Lizmat++ for the actual bugfix. Closes rt.perl.org/Public/Bug/Display.html?id=131827 |
09:56 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131827 | ||
Geth | roast: fe8754b9ee | (Zoffix Znet)++ (committed using GitHub Web editor) | S09-subscript/slice.t Fix test description |
10:04 | |
AlexDani` | after reading github.com/perl6/doc/issues/1428 I have this question | 10:14 | |
AlexDaniel | why does this leak memory? say (1…?).map(*+2).grep(* < 0)[^10] | ||
and, can somebody confirm it? | 10:15 | ||
jnthn | Indexing calls .cache | 10:16 | |
But that shouldn't account for lunch | 10:17 | ||
uh, for much | |||
hah | |||
AlexDaniel | (^?) does not leak, but (1…?) does | ||
Zoffix | AlexDaniel: yeah, confirmed; leaks about 5MB per second | 10:31 | |
perl6 -e 'loop { $ = (1...?).map(*+2).grep(* < 0)[^10] }' # leaks | |||
perl6 -e 'loop { $ = (1..?).map(*+2).grep(* < 0)[^10] }' # doesn't | |||
AlexDaniel | what's the point of that loop there? | 10:32 | |
Zoffix | Oh, well then there's no leaking hehe | 10:33 | |
It just never finishes | |||
AlexDaniel | well, that's the point? All of the values are thrown away, so yes, it doesn't finish but it shouldn't take more memory as it goes | 10:34 | |
at least, that's what I expected | 10:35 | ||
jnthn | Note that the bigints are getting bigger | ||
Dunno if that's where it comes from | |||
AlexDaniel | I don't think it's *so* fast | 10:36 | |
Zoffix | s: (1...?), 'iterator', \() | 10:37 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/01db...Seq.pm#L50 | ||
Zoffix | s: (1...?).iterator, 'pull-one', \() | 10:38 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/01db...ble.pm#L96 | ||
Zoffix | s: &SEQUENCE | 10:39 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/01db...rs.pm#L112 | ||
Zoffix | AlexDaniel: dunno, something with continuations? Range.iterator just has a custom Iterator, while sequence operator uses gather/take, and this "leaks" too: perl6 -e 'gather { loop { take 1 } }.map(*+2).grep(* < 0).head: 10' | 10:41 | |
AlexDaniel | not sure why leaks is in quotes, that's some actual leakage there :) | 10:42 | |
Zoffix | OK | ||
Doesn't leak without map, strangely | 10:43 | ||
AlexDaniel | hmmmmmm | ||
Zoffix | Or even without WhateverCode in map | 10:44 | |
perl6 -e 'gather { loop { take 1 } }.map( * + 2).grep(* < 0).head: 10' # leaks | 10:45 | ||
perl6 -e 'gather { loop { take 1 } }.map({$_+2}).grep(* < 0).head: 10' # doesn't | |||
lizmat | m: dd (* + 2).signature | 10:47 | |
camelia | { ... }? | ||
lizmat | m: dd { $_ + 2 }.signature | 10:48 | |
camelia | :(;; $_? is raw)? | ||
lizmat | that seems a weird sig for the WhateverCode? | ||
Zoffix | m: dd ((* + 2)).signature | 10:49 | |
camelia | :(;; $whatevercode_arg_1 is raw)? | ||
jnthn | It curries the .signature :) | ||
m: say (* + 2).signature.WHAT | 10:50 | ||
camelia | (WhateverCode)? | ||
jnthn | :) | ||
lizmat | ah, duh | ||
ok, the difference in signature is that optionalness of the {$_} case | 10:51 | ||
Zoffix | perl6 -e 'gather { loop { take 1 } }.map(-> $_ is raw {$_+2}).grep(* < 0).head: 10' # doesn't leak | 10:52 | |
AlexDaniel | ok, RT #131829 | 11:00 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131829 | ||
lizmat | I'm thinking of adding a 'method increasing(--> False) { }' to Iterator | 12:41 | |
allowing an iterator to override it with --> True, to indicate that the iterator is guaranteed to produce increasing values | |||
jnthn | o.O | 12:42 | |
What for, ooc? | |||
lizmat | Which would be True for Range.iterator | ||
if an iterator is used to create a slice | |||
it would remove the need to cache | |||
jnthn | Except the .cache is actually done by AT-POS | 12:43 | |
lizmat | well, it wouldn't have to use AT-POS in some situations, is my point | ||
jnthn | I'm not sure making .[...] have unpredictable caching semantics is wise though | 12:44 | |
lizmat | I have a patch that would make @a[1,2,3] about 6x faster | ||
but it creates a MMD hell | |||
and while making it, I realised we have still quite a few bugs in that area | 12:45 | ||
jnthn | I'd rather see some method like head/tail but with indices that you promise are ascending | ||
The calling of .cache ain't a bug though | |||
It's just how .[...] is designed | |||
lizmat | I'm not saying it's a bug | ||
I'm just saying that in case of 1...Inf[^10] it's not needed | 12:46 | ||
in any case, I'm considering a hash_slice/array_slice overhauil | 12:47 | ||
fixing things like: | 12:49 | ||
m: dd ("a".."z")[(1,2,3),4,5] | |||
camelia | (("b", "c", "d"), "e", "f")? | ||
lizmat | versus: | ||
m: dd ("a".."z")[(1,2,3),4,5]:p | |||
camelia | (4 => "e", 5 => "f")? | ||
jnthn | *nod* | ||
Note that at the moment is one of the worst times to do any performance measurement fwiw | |||
lizmat | well, pretty sure it won't be merge ready until way after the TPCiA | 12:50 | |
jnthn | :) | ||
Fair enough | |||
Not saying that as a reason not to work on it | |||
Just noting that any measurements you do right now might not hold up in a week or so's time | |||
lizmat | yeah, got ya :-) | ||
jnthn | Actually array/hash indexing was one of the cases I had in mind wiht the spesh redesign | 12:53 | |
In that AT-POS and friends tend to be stable in their first 2 args but not their third | |||
Now we'll typically have the data to see that | 12:54 | ||
And with some work that's yet to some, be able to specialize only on the first 2 | |||
*yet to come | |||
Which means in real-world code that indexes lots of different types of thing we should be able to spend more time in spesh'd/JITted code | 12:55 | ||
lizmat | wouldn't a similar thing apply to time spent in pull-one or push-all ? | 12:56 | |
jnthn | The .push called by push-all for sure | 12:57 | |
pull-one and push-all don't have much variance in their arguments | |||
But they do of course have a good bit internally | 12:58 | ||
And yeah, we should have more samples now | |||
So can hopefully get less deopts | |||
lizmat | cool | ||
hopefully the bug that needs extra scopes in Any-iterable will be gone as well :-) | 12:59 | ||
Geth | rakudo/nom: 5f68c77527 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm Remove extra scopes They do not appear to be necessary anymore. And in light of the work jnthn++ is doing atm, it would seem a good time to get rid of them. |
13:35 | |
rakudo/nom: 3c797b05fd | (Elizabeth Mattijsen)++ | src/core/array_slice.pm Revert "Add missing deconts, spotted by sena_kun++" This reverts commit 59ba9c025eb95b33817fe60fb4bb600bb57d80db. Fixes RT #131830 |
14:30 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131830 | ||
Geth | rakudo/nom: 7599e0c3ff | (Elizabeth Mattijsen)++ | src/core/array_slice.pm Revert "Make @a[Range] about 3x faster" This reverts commit a256c26d850c0e5ff986a6dfa1b1ef1ffaf55f40. |
||
lizmat | hmmm... one revert too many | ||
ah, no, just right :-) | |||
Zoffix | lizmat: how come that commit caused the issue? It added the Range candidate but the issue says it's the `:(\SELF, int $pos)` candidate that's conflicting? | 14:32 | |
I mean, according to the commitable bot that commit does indeed causes the bug, but why :\ | |||
lizmat | I have no idea | 14:34 | |
but since I'm rethinking the whole slicing business | |||
Zoffix | lizmat: Ah... my good guess would be the `:D` on SELF | 14:35 | |
lizmat | and it produced an issua at a distance, I rather revert since it is a performance thing only that should not affect anything else | ||
Zoffix | Other candidates don't got it, so it makes it more narrower | ||
lizmat | well, then we actually have a bigger issue, cause the other candidates should probably have it | ||
Zoffix | Well, maybe :\ | ||
I mean maybe my hypothesis.. There's no :D on other candidates, but at the same time, the error complains about `int` candidate, not Range. | 14:36 | ||
lizmat | this is a. one of the oldest parts of rakudo, and b. the first big thing I did in Rakudo | ||
a lot has happened since :-) | |||
Zoffix | m: use NativeCall; multi foo (List:D \SELF, Range:D \range, *%_) {}; multi foo (\SELF, int $pos) {}; multi foo (NativeCall::Types::CArray:D \array, $pos) {}; foo CArray[Str].new, my int $ = 1 | 14:39 | |
camelia | ( no output ) | ||
Zoffix shrugs | |||
Oh well, a puzzle for another day. | |||
mspo | would you guys be open to replacing the perl6 shell script with a c program? | 15:00 | |
so it works on bsd/osx? | |||
lizmat | fwiw, in principle I wouldn't mind, but I'm not sure I'm qualified to judge that | 15:02 | |
mspo | I wrote one (although I'm a bad c programming) gist.github.com/msporleder/62d5bbd...730e8c77de | 15:04 | |
seems to work locally. The libpath stuff would need to be generated at compile time via some method so it had the PREFIX | 15:05 | ||
jnthn | A more ideal solution would be to have it just embed moar rather than shelling out to it, though admittedly that's more work :) | ||
But yeah, in principle, I'm happy with something like this happening | 15:06 | ||
mspo | jnthn: if moar itself had a if (argv[0] == "perl6") { behave-like-perl6(); } it might also work via a link | 15:07 | |
jnthn | mspo: That's a less good way to do it :) | 15:08 | |
mspo | jnthn: okay | ||
anyway small steps before something more ambitious like embedding moar | 15:09 | ||
Zoffix | FWIW MSVC MoarVM tries to support will complain about those variables declared after statements | 15:16 | |
ilmari | .oO( -Werror=declaration-after-statement ) |
15:17 | |
timotimo | yes | ||
Geth | rakudo: Altai-man++ created pull request #1127: Tests for RT #131830 |
15:25 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131830 | ||
ilmari | huh, that redirects to …/issues/1127, which 404s | 15:27 | |
Geth | rakudo/nom: 6cc858a0e6 | Altai-man++ (committed using GitHub Web editor) | t/04-nativecall/05-arrays.t Tests for RT #131830 Closes rt.perl.org/Public/Bug/Display.html?id=131830 |
||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131830 | ||
Geth | rakudo/nom: c43ba0d01b | (Zoffix Znet)++ (committed using GitHub Web editor) | t/04-nativecall/05-arrays.t Merge pull request #1127 from Altai-man/patch-1 Tests for RT #131830 |
||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131830 | ||
Zoffix | ilmari: weird. Link works fine for me. | 15:29 | |
Maybe a race between webhook generating stuff and links to PR working | 15:30 | ||
ilmari | yeah, it worked after a moment | 15:31 | |
ugexe | Zoffix: they are trying to install to a custom location but refuse to set PERL6LIB. each time I point it out they say they understand but don't do anything to suggest they do, or complain that zef does not automatically set such env vars (instead of his packaging script) | 15:35 | |
the error could be better yeah, probably that way because of how CU::RR.run-script invokes scripts now (via require $some-path) | 15:36 | ||
mspo | what writes that perl6 shell script? | 18:06 | |
if I wanted to try and do a PR with the wrapper program instead | |||
Zoffix | mspo: something in CompUnit* modules. Try grepping for parts of its code | 18:14 | |
ugexe | there has to be a perl6 entry point, so that would prevent the ability to precompile bin scripts (which we dont do yet either) | 18:24 | |
mspo | ugexe: you mean compile a standalone binary? | 18:26 | |
ugexe: I'm trying to replace perl6.sh with perl6.c, but it's basically the exact same thing | |||
ugexe | i mean precompile them like modules | 18:27 | |
I put my bin scripts in Foo::CLI and inside bin/script is just `use Foo::CLI` (so it gets precompiled) | 18:28 | ||
the wrapper does something similar now, `require $some-path-to-script;` | |||
but you can't just launch a precompiled script, it needs a perl6 entry point | 18:29 | ||
additionally it needs to know how to parse versions/auths/apis etc like CompUnit::Repository, because it has to be able to handle multiple versions of the same distribution being installed | 18:30 | ||
mspo | are we talking about the same thing? Mine just looks like this: exec /usr/pkg/bin/moar --execname="$0" --libpath="/usr/pkg/share/nqp/lib" --libpath="/usr/pkg/share/nqp/lib" --libpath="/usr/pkg/share/perl6/lib" --libpath="/usr/pkg/share/perl6/runtime" /usr/pkg/share/perl6/runtime/perl6.moarvm "$@" | 18:31 | |
ugexe | oh not the wrappers it creates for modules... gotcha | 18:32 | |
mspo | ugexe: I'm talking about the thing you put in #! | ||
jnthn | A while back I think we had to comment out (or similar) some native candidates because of a spesh bug. There's a chance it was what I just fixed in github.com/MoarVM/MoarVM/commit/3f33a8419b | 20:40 | |
Zoffix | RT#131306 | 20:50 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131306 | ||
Zoffix | with kludges existing in github.com/rakudo/rakudo/blob/nom/...#L400-L413 | 20:51 | |
lizmat | sub a(Any:U $a) { say nqp::isconcrete($a) } # can that ever say 1 ?? Don't think so, right ? | 20:57 | |
Zoffix | That's my understanding of it, yeah | 21:02 | |
Geth | rakudo/nom: 84d052a012 | (Elizabeth Mattijsen)++ | src/core/Any.pm Simplify Hash creation for auto-vivification Also add comment to remember that the isconcrete check is necessary even though the signature has a :U |
21:19 | |
Zoffix | :) | 21:25 | |
Geth | rakudo/nom: e86bdfca41 | (Elizabeth Mattijsen)++ | src/core/Perl.pm Remove a 3-year old hack Pretty sure this is not needed anywhere anyhow. Removal did *not* cause any spectest to fail. |
21:45 | |
lizmat | and that concludes my hacking for today& | 21:46 | |
Geth | rakudo: MasterDuke17++ created pull request #1128: Remove kludge for RT131306 |
22:29 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131306 | ||
Geth | rakudo/nom: e4802f4a5e | MasterDuke17++ | src/core/Int.pm Remove kludge for RT131306 irclog.perlgeek.de/perl6-dev/2017-...i_14959534 |
23:23 | |
rakudo/nom: d9f51da884 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Int.pm Merge pull request #1128 from MasterDuke17/remove_kludge_for_RT131306 Remove kludge for RT131306 |
|||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131306 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131306 | ||
jnthn | About that merge, the fix is at MoarVM HEAD but I'm not sure there was a version bump | 23:28 | |
Zoffix | There wasn't. The PR test said spectest pased, so I'm guessing some earlier changed fixed the issue. | 23:30 | |
s/test/text/; | |||
(there *are* tests covering the bug: github.com/perl6/roast/commit/c1d62112f3 ) | |||
MasterDuke | oops, i was on moarvm HEAD | 23:31 | |
Zoffix | Ohhh. lol :) | ||
Zoffix is too tired to do the bumps and goes to bed | |||
\o |