Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-12-02

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:29 seatek joined #perl6-dev
01:15 pyrimidine joined #perl6-dev
01:29 lizmat joined #perl6-dev
01:30 lizmat_ joined #perl6-dev
02:22 pyrimidine joined #perl6-dev
02:49 ilbot3 joined #perl6-dev
02:49 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
03:04 ZzZombo joined #perl6-dev
03:04 ZzZombo joined #perl6-dev
05:05 perlpilot joined #perl6-dev
05:22 Madcap^Jake^ joined #perl6-dev
05:53 ZzZombo joined #perl6-dev
06:21 ZzZombo joined #perl6-dev
06:21 ZzZombo joined #perl6-dev
06:29 pyrimidine joined #perl6-dev
06:35 ZzZombo joined #perl6-dev
06:35 vendethiel joined #perl6-dev
06:51 RabidGravy joined #perl6-dev
07:48 ZzZombo joined #perl6-dev
08:13 vendethiel joined #perl6-dev
09:01 |Tux| This is Rakudo version 2016.11-102-gabc64393d built on MoarVM version 2016.11-27-g3171dbbe
09:01 |Tux| csv-ip5xs        3.158
09:01 |Tux| test            13.951
09:01 |Tux| test-t           6.480
09:01 |Tux| csv-parser      14.019
09:03 * |Tux| just finished s thriller that had a character called Froggs. He was evil :)
09:04 pyrimidine joined #perl6-dev
09:06 brrt joined #perl6-dev
09:08 |Tux| Reliquary, by Preston & Child
09:13 lizmat joined #perl6-dev
09:14 psch feh, findmethod is wonky /o\
09:14 psch as in, after patching it to throw when we have an authorative method cache i can't compile nqp anymore, because it cannot find handle-exception on NQP::Compiler
09:15 psch the weird thing is that there's an nqp::can call that looks for handle-exception, and even if i change nqp::can to catch exceptions from findmethod it *still* dies
09:15 psch so it probably doesn't findmethod but methcall_* directly via indy, which i don't quite understand why it would do that
09:24 camelia joined #perl6-dev
09:33 ugjka joined #perl6-dev
09:53 ZzZombo_ joined #perl6-dev
09:54 ZzZombo joined #perl6-dev
09:58 gfldex i put a link to perl6.org and and the webchat #perl6 in the about page of the advent blog
10:18 samcv joined #perl6-dev
10:23 Ulti if anyone's interested the slowest operation by far in my bioinformatics code still is postcircumfix:<{ }> src/core/hash_slice.pm:51 and its pull-one src/core/Any-iterable-methods.pm:703 within there that takes up most of that time
10:24 Ulti like thats nearly all of the codes time
10:24 Ulti 75% of its time
10:24 Ulti all other operations are relative to that lightning fast
10:32 Ulti s/75/50/ http://mattoates.co.uk/files/perl6/bioinfo_profile-2016-12-02.html
10:32 Ulti still considerable
10:53 timotimo i wonder if that already has the newer angular versions that are supposed to be a bit faster
11:02 lucasb_ joined #perl6-dev
11:32 lizmat joined #perl6-dev
12:23 pyrimidine joined #perl6-dev
13:05 Ulti timotimo that profile was taken from head at 10:30 GMT today
13:07 timotimo right, but did head do an nqp bump since the profile html template was updated?
13:07 timotimo anyway, i can just replace the paths to the angular scripts and it'll be enough
13:08 timotimo it kind of seems b0rked in the call graph view
13:08 timotimo it shows stuff that belongs to another tab entirely
13:09 timotimo in general, that profile is rather short
13:09 timotimo i.e. the code didn't run for too long
13:11 timotimo so i think the instance of postcircumfix:<{ }> refers to the line in Nucleic's translate method that maps over the sequence
13:11 timotimo i have a suggestion for you
13:11 timotimo instead of map *~*~*, $.sequence.uc.comb
13:11 timotimo please try $.sequence.uc.comb(3)
13:12 timotimo see if that helps
13:13 timotimo Ulti: ^
13:21 Ulti helps with what?
13:21 Ulti timotimo: I'm not trying to make my code faster
13:21 Ulti I'm trying to point out things that are slow and how dumb first pass code works
13:22 Ulti but yeah the tests take about 1s to run now down from 35s so its not much time to see
13:22 timotimo OK, but could you have a look if it makes things very fast?
13:22 Ulti sure
13:23 timotimo cool
13:26 Ulti yup good chunk faster
13:26 Ulti 1.01s to 0.89s
13:28 timotimo cool
13:28 arnsholt Array and dictionary are a known weak spot, IIRC
13:28 timotimo how's the percentage of postcircumfix:<{ }> inclusive now?
13:28 arnsholt There are some tricks you can do to make it faster, like replacing simple dereferences with AT-POS/AT-KEY I think
13:29 Ulti timotimo: http://mattoates.co.uk/files/perl6/comb3_profile.html
13:29 Ulti timotimo: yeah a lot smaller
13:29 Ulti weird thats coming up as hash slice :S
13:30 Ulti I guess its on that call you have the expression being evaluated
13:30 timotimo of course it's a hash slice?
13:30 timotimo you have a list inside the { }
13:31 timotimo so it gets passed an iterator, and it eagerly evaluates all the values
13:31 Ulti yeah but its the list generation thats slower not the hash slice
13:31 timotimo right, but inclusive is inclusive
13:31 Ulti k k
13:31 Ulti so its the pull one on that iterator thats slow
13:31 arnsholt Kinda weird that postcircumfix:<{ }> gets *interpreted* though, isn't it?
13:31 Ulti I imagine the comb itself is about the same cost
13:32 arnsholt Not even speshed?
13:32 timotimo the first thing i do is usually sort by exclusive time
13:32 timotimo that shows push-all is very expensive, 2004 entries, but 7.18% exclusive time
13:32 arnsholt Not hot enough, perhaps?
13:32 timotimo pull-one has 20k entries and 3.73% time
13:33 timotimo of course push-all has an OSR flair on it, which means there's a loop inside that does a bunch of work
13:33 timotimo i expect push-all just calls pull-one over and over?
13:44 perlpilot joined #perl6-dev
14:01 ZzZombo joined #perl6-dev
14:01 ZzZombo joined #perl6-dev
14:02 pyrimidine joined #perl6-dev
14:05 timotimo arnsholt: you're looking at which profile there? in comb3 the postcircumfixis speshed
14:05 timotimo in the other profile it's speshed, too
14:06 timotimo Ulti: would you like to give us spesh- and jitlogs for both pieces of code to see what's what?
14:07 arnsholt timotimo: My bad, probably
14:07 timotimo arnsholt: okay
14:07 timotimo the most common cases of "we can't jit this" is the unsupported kinds of parameter grabbing
14:09 Ulti timotimo: sure
14:09 Ulti do you want them in isolation though?
14:09 arnsholt I guess ideally we'd like to inline common operations like indexing?
14:09 Ulti as in golf the code to just that expression?
14:09 timotimo i'd prefer each to be its own file
14:09 timotimo no, the full files are fine
14:09 Ulti k
14:09 timotimo compress them, though. they can become quite big
14:09 timotimo but they ought to compress really well
14:10 [Coke] anyone see the patch interaction on perl6-language? Is there a way for me to phrase that more clearly?
14:10 [Coke] like, the hardcore thing is, "our time is valuable. if you really want to help us, make it EASY for us to take your help"
14:11 [Coke] but I'm trying to phrase it more nicely. I think I failed there.
14:11 timotimo but it isn't terribly difficult
14:12 timotimo done
14:14 Ulti timotimo ok how do I actually get those dumped out?
14:14 Ulti I can only see an option for the heap dump
14:15 Ulti ;_;
14:15 timotimo oh, it's the environment variables
14:15 timotimo they are documented near the bottom of moar --help
14:16 pyrimidine joined #perl6-dev
14:17 Ulti k k thanks
14:49 pyrimidine joined #perl6-dev
15:37 AlexDaniel joined #perl6-dev
15:37 pyrimidine joined #perl6-dev
15:59 [Coke] we've been talking in #perl6 about getting people to volunteer to write advent articles over the past few weeks. Anyone in here who is on the fence? we still have half a dozen slots open.
16:01 [Coke] https://docs.perl6.org/routine/install_method_cache - should that be kebab cased?
16:01 [Coke] )(looks like a lot of the Metamodel::* stuff has _'s
16:02 babydrop Yeah, the advancish stuff is snake_cased on purpose.
16:02 timotimo i think i have an idea for a post
16:02 timotimo i'll call it ...
16:03 timotimo "shocking: perl6 mascot 'camelia' blown to smithereens in this gruesome blog post"
16:03 timotimo (suggestions welcome)
16:03 babydrop :o
16:03 babydrop I'd read it :)
16:03 timotimo "you won't believe what happened next!"
16:03 babydrop "Last one will blow your mind!"
16:11 moritz reddit/r/SavedYouAClick comes to mind :-)
16:11 pyrimidine joined #perl6-dev
16:22 japhb [Coke]: I am one of the "still on the fence" people.  In case you're wondering why someone would be:  I have an idea, but the code behind it needs to get in a better state before I can write about it.  Thus I won't sign up unless I get the code to "won't be embarassed by it" levels, and there's currently about a 70% chance that won't happen this year.
16:25 * TimToady is always on the fence
16:25 * TimToady is usually on several fences simultaneously...
16:26 timotimo tim minchin has some good words about the fence
17:11 timotimo Ulti: do you still have a bit of time left over? :)
17:12 timotimo Ulti: because i just pushed two moarvm commits that have the potential of removing up to 25 bailed frames
17:12 timotimo but knowing the jit, those frames all just have something else unimplemented following that :D
17:25 pyrimidine joined #perl6-dev
17:39 pyrimidine joined #perl6-dev
17:43 perlpilot japhb: that's where I'm at too.
18:02 buggable joined #perl6-dev
18:11 pyrimidine joined #perl6-dev
18:26 FROGGS joined #perl6-dev
18:37 buggable joined #perl6-dev
18:48 buggable joined #perl6-dev
19:08 gfldex m: class C {}; role R {}; sub postfix:<.>(C:D $c){ $c but R }; my $c = C.new; $c.
19:08 camelia rakudo-moar abc643: OUTPUT«===SORRY!===␤Cannot find method 'ast' on object of type NQPMu␤»
19:08 gfldex I know what I'm doing is silly but is this still a bug?
19:08 gfldex (because it leaks NQPMu)
19:09 psch i think it's a parsing bug, yes
19:09 babydrop It's at the very least an LTA error, 'cause it doesn't show where the problem is.
19:09 psch as in, dottyop/methodop shouldn't match if there's nothing afterwards
19:09 psch so it should hit the postfix and just work
19:10 babydrop ohh
19:10 psch i'm not sure LTM allows that though :)
19:10 psch m: class C {}; role R {}; sub postfix:<.>(C:D $c){ $c but R }; my $c = C.new; $c.;
19:10 camelia rakudo-moar abc643: OUTPUT«===SORRY!===␤Cannot find method 'ast' on object of type NQPMu␤»
19:10 psch note though that explicit statement end doesn't help
19:11 psch m: 1.;
19:11 camelia rakudo-moar abc643: OUTPUT«===SORRY!===␤Decimal point must be followed by digit␤at <tmp>:1␤------> 1.⏏;␤Malformed postfix call␤at <tmp>:1␤------> 1.⏏;␤␤»
19:11 psch m: "foo".;
19:11 camelia rakudo-moar abc643: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Malformed postfix call␤at <tmp>:1␤------> "foo".⏏;␤»
19:11 psch the added postfix:<.> gets us out of somewhere where we would call the latter error message
19:11 psch but we apparently still do the wrong action afterwards
19:12 psch m: "foo" . uc
19:12 camelia rakudo-moar abc643: ( no output )
19:12 psch i suspect the fact that that one works plays a role there :)
19:13 gfldex i shall rakudobug
19:14 babydrop m: sub postfix:<.>($){ }; 1.
19:14 camelia rakudo-moar abc643: OUTPUT«===SORRY!===␤Cannot find method 'ast' on object of type NQPMu␤»
19:16 babydrop m: sub prefix:<.>($){}; . 1
19:16 camelia rakudo-moar abc643: OUTPUT«===SORRY!===␤Cannot find method 'ast' on object of type NQPMu␤»
19:19 psch m: sub postfix:<.>($) { }; 1..1 # oh geez
19:19 camelia rakudo-moar abc643: OUTPUT«===SORRY!===␤Cannot find method 'ast' on object of type NQPMu␤»
19:20 psch yeah, that's gonna be a lot of fun to untangle
19:20 psch maybe the sanest thing is to bail on every foofix that consists of only a single dot :)
19:20 psch m: sub infix:<.>($, $) { }; 1 . 1
19:20 camelia rakudo-moar abc643: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at <tmp>:1␤------> sub infix:<.>($, $) { }; 1 .⏏ 1␤»
19:21 gfldex i c/p the wrong line into the bugreport :-/
19:21 gfldex i was in a hurry!
19:21 psch m: sub postcircumfix:<. .>($,$) { }; "foo".1.
19:21 camelia rakudo-moar abc643: OUTPUT«===SORRY!===␤Decimal point must be followed by digit␤at <tmp>:1␤------> b postcircumfix:<. .>($,$) { }; "foo".1.⏏<EOL>␤Malformed postfix call␤at <tmp>:1␤------> b postcircumfix:<. .>($,$) { }; "foo".1.⏏<EOL>␤␤»
19:24 gfldex filed as #130245
19:24 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130245
19:38 babydrop bartolin: FWIW, you already have a commit bit to perl6/nqp...
19:45 Madcap^Jake^ joined #perl6-dev
20:03 bartolin babydrop: yeah, I know. and since forgiveness > permission I should probably just commit stuff, even if I'm not 100% sure
20:04 psch ++bartolin :)
20:06 dalek nqp: 94b38a3 | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ExceptionHandling.java:
20:06 dalek nqp: [JVM] Add null check in backtrace generation
20:06 dalek nqp: review: https://github.com/perl6/nqp/commit/94b38a39ad
20:16 dalek roast: a151379 | bartolin++ | integration/error-reporting.t:
20:16 dalek roast: Make test for output of backtrace less specific
20:16 dalek roast:
20:16 dalek roast: After the recent changes to backtrace handling this test
20:16 dalek roast: started to fail on rakudo-j. There are references to lines
20:16 dalek roast: in gen/jvm/CORE.setting which are causing the test to fail
20:16 dalek roast: because of the 's' in 'setting'.
20:16 dalek roast:
20:16 dalek roast: Allowing additional lines in the backtrace still fits the test
20:16 dalek roast: description 'Thrown Failure outputs dual backtraces'.
20:16 dalek roast: review: https://github.com/perl6/roast/commit/a151379e39
20:16 dalek roast: bdd5db7 | bartolin++ | integration/error-reporting.t:
20:22 bartolin iiuc that commit to roast (a151379e39) should also go into 6.c-errata. how do I do that? I used cherry picking only once or twice, but that's the way to do it?
20:23 timotimo yeah, checkout the 6.c-errata branch and just cherry-pick, but make sure to pull in there first
20:23 babydrop The handful of times I've done it, I just did it manually on 6.c-errata :(
20:25 dalek roast/6.c-errata: cce58c2 | bartolin++ | integration/error-reporting.t:
20:25 dalek roast/6.c-errata: Make test for output of backtrace less specific
20:25 dalek roast/6.c-errata:
20:25 dalek roast/6.c-errata: After the recent changes to backtrace handling this test
20:25 dalek roast/6.c-errata: started to fail on rakudo-j. There are references to lines
20:25 dalek roast/6.c-errata: in gen/jvm/CORE.setting which are causing the test to fail
20:25 dalek roast/6.c-errata: because of the 's' in 'setting'.
20:25 dalek roast/6.c-errata:
20:25 dalek roast/6.c-errata: Allowing additional lines in the backtrace still fits the test
20:25 dalek roast/6.c-errata: description 'Thrown Failure outputs dual backtraces'.
20:25 dalek roast/6.c-errata: review: https://github.com/perl6/roast/commit/cce58c243d
20:26 * bartolin hopes that was correct
20:28 cognominal joined #perl6-dev
20:28 bartolin hmm, shouldn't it have the same commit id in both branches?
20:28 * bartolin goes and reads some more about cherry-picking
20:29 timotimo no, can't
20:29 timotimo IDs are cryptographic hashes of the commit including the parent commit hash, among other things
20:29 timotimo since the branch has different commits in it (and the files also differ), it'll better have a different hash
20:30 bartolin aha! I didn't know about the parent commit thing (et al.). thanks!
20:41 cognominal joined #perl6-dev
20:42 pyrimidine joined #perl6-dev
20:45 Madcap^Jake^ joined #perl6-dev
20:59 seatek joined #perl6-dev
21:03 masak timotimo: was gonna correct you on the term "cryptographic hashes", but Wikipedia agrees with you ;)
21:03 timotimo another important term that you should definitely look up is "content-addressed storage"
21:05 masak reminds me of the winner of the "unorthodox uses of Git" contest (or whatever it was called): someone checked if his photos were duplicates by doing `git add` on them one by one, and checking whether a new blob was added to .git/objects
21:08 timotimo ugh :)
21:29 cognominal joined #perl6-dev
21:41 jnthn It may be unorthodox, but it's O(n) :P
21:45 masak yes, I thought it was pretty creative and cute
21:45 japhb jnthn: Under the assumption that calculating the hash is much faster than checking whether that hash already exists in the object pile, at least ...
21:45 japhb *much slower
21:45 Madcap^Jake^ joined #perl6-dev
21:46 japhb And that writing a new object to the backing store is O(1)
21:47 * japhb remembers the days that "You have >1000 files in one directory?  Well, there's your performance problem!" was actually a thing
21:48 * jnthn wonders where the "no, that's too many" threshold is today... :)
21:49 masak that's why .git/objects does the .git/objects/hh/ subdirectories thing, is it not?
21:49 jnthn I always figured so
21:49 jnthn Though I've no good intuition if that's for the sake of non-modern filesystems :)
21:49 jnthn Or for modern ones too
21:50 [Coke] japhb: I ran into that in the last 5 years here. (though it was a bigger number)
21:52 japhb [Coke]: I'm not too surprised.  Eventually anything above O(1) will grow to be big enough to notice.  And if it's well above O(1), it will be noticed rather quickly.  :-)
21:53 japhb Although I still get a kick out of inverse-Ackerman being so slow growing that it is bounded by a small constant within the physical universe.
22:01 cognominal joined #perl6-dev
22:06 geekosaur jnthn, same place unless you're using ext4 btree dirs, zfs, or (if you can find a quasi-stable version) btrfs
22:07 geekosaur and ext4 still has problems, and large dirs still have some problems even with btrees --- they solve the namei() performance issue but not others
22:08 jfhek joined #perl6-dev
22:08 jnthn Good to know; thanks
22:10 jfhek md5sum *.jpg | cut -d ' ' -f 1 | sort | uniq -c | sort   # O(n) + smallcoeff * O(n log n)
22:15 jfhek joined #perl6-dev
22:15 jfhek if you need filenames, you need to do what perl groupies call Shwartzian transformation lol
22:18 cognominal joined #perl6-dev
22:40 MasterDuke timotimo: what sort of rakudo-level operations would be sped up by those ops you implemented on the JIT earlier today?
22:43 pyrimidine joined #perl6-dev
22:46 Madcap^Jake^ joined #perl6-dev
22:46 timotimo MasterDuke: some kinds of returns and gotos/break/whatever
22:47 timotimo MasterDuke: try "moar --dump CORE.setting.moarvm > coresettingdump.txt; grep throwpayloadlex coresettingdump.txt"
22:57 pyrimidine joined #perl6-dev
22:59 pyrimidine joined #perl6-dev
23:18 cognominal joined #perl6-dev
23:31 cognominal joined #perl6-dev

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary