Perl 6 - the future is here, just unevenly distributed

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

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

All times shown according to UTC.

Time Nick Message
00:30 pyrimidine joined #perl6-dev
01:25 dalek nqp: ce126b6 | (Zoffix Znet)++ | docs/ops.markdown:
01:25 dalek nqp: Fix not_i's name in ToC and heading
01:25 dalek nqp: review: https://github.com/perl6/nqp/commit/ce126b6ebc
01:36 dalek roast: 31ce7c1 | MasterDuke17++ | S12-introspection/attributes.t:
01:36 dalek roast: Tests for RT #77070
01:36 dalek roast: review: https://github.com/perl6/roast/commit/31ce7c1221
01:36 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=77070
02:28 pyrimidine joined #perl6-dev
02:46 seatek 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:02 dalek rakudo/nom: a8ba26b | (Zoffix Znet)++ | src/core/Num.pm:
03:02 dalek rakudo/nom: Make infix:<..> on Nums 13x faster + fix native num NaN ===
03:02 dalek rakudo/nom:
03:02 dalek rakudo/nom: And anything else that uses === on Nums should be faster too.
03:02 dalek rakudo/nom: jnthn++ for finding the cause of slowdown.
03:02 dalek rakudo/nom:
03:02 dalek rakudo/nom: The presence of &infix:<===>(NaN, NaN) candidate prevents
03:02 dalek rakudo/nom: caching[1], which causes massive slowdown in infix:<..> on Nums.
03:02 dalek rakudo/nom: The candidate also does not handle native nums as they go to a
03:02 dalek rakudo/nom: narrower candidate, so NaN === NaN is broken too.
03:02 dalek rakudo/nom:
03:02 dalek rakudo/nom: Fix by removing (NaN, NaN) candidate and adding a check for NaNs
03:03 babydrop 0    into other candidates. Any num but NaN is less-or-equal to positive
03:03 babydrop infinity, so use that as an `nqp::isnan()` check.
03:03 babydrop
03:03 babydrop Fixes RT#130190: https://rt.perl.org/Ticket/Display.html?id=130190
03:03 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130190
03:03 babydrop
03:03 babydrop [1] https://irclog.perlgeek.de/perl6/2016-12-09#i_13713052
03:03 babydrop https://github.com/rakudo/rakudo/commit/a8ba26bbe
03:04 dalek roast: e6b125e | (Zoffix Znet)++ | S02-types/nan.t:
03:04 dalek roast: Test === works on native num NaNs
03:04 dalek roast:
03:04 dalek roast: Bug finding: https://irclog.perlgeek.de/perl6/2016-12-09#i_13713101
03:04 dalek roast: Fix commit: https://github.com/rakudo/rakudo/commit/a8ba26bbe
03:04 dalek roast: review: https://github.com/perl6/roast/commit/e6b125eef1
03:10 babydrop hmmm
03:13 * babydrop was just thinking about whether our 42 Easter Egg is affecting performance, if `where`s prevent caching and it got a literal for the invocant...
03:17 babydrop don't think so... changed it to multi method WHY { dd 'in it';  42 } and ran if you tests, never printed that string
03:18 babydrop Too bad, 'cause that would be both awesome and embaracing.
03:18 babydrop .oO( how did I manage to write `if you` for `a few` :o )
03:36 nchambers^ joined #perl6-dev
03:37 hoelzro_ joined #perl6-dev
03:37 bartolin_ joined #perl6-dev
03:37 tony-o_ joined #perl6-dev
03:37 mst_ joined #perl6-dev
03:46 pyrimidine joined #perl6-dev
04:19 pyrimidine joined #perl6-dev
04:47 samcv babydrop, would it be okay if I added a 'uniprops' sub? it was in the synopsis
04:47 samcv and we have 'uninames'
04:47 samcv so i think makes sense to have a uniprops sub
04:48 samcv m: multi sub uniprops(Str:D $str, Stringy:D $propname = "GeneralCategory") { $str.NFC.map: { uniprop($_, $propname ) } }; say uniprops "string"
04:48 camelia rakudo-moar a8ba26: OUTPUT«(Ll Ll Ll Ll Ll Ll)␤»
04:48 samcv m: multi sub uniprops(Str:D $str, Stringy:D $propname = "GeneralCategory") { $str.NFC.map: { uniprop($_, $propname ) } }; say uniprops "string123", 'Alphabetic'
04:48 camelia rakudo-moar a8ba26: OUTPUT«(1 1 1 1 1 1 0 0 0)␤»
05:56 nchambers^ joined #perl6-dev
06:01 pyrimidine joined #perl6-dev
07:13 pyrimidine joined #perl6-dev
07:18 cognominal joined #perl6-dev
08:18 pyrimidine joined #perl6-dev
08:20 pyrimidi_ joined #perl6-dev
09:08 RabidGravy joined #perl6-dev
09:11 raydiak joined #perl6-dev
09:22 pyrimidine joined #perl6-dev
09:33 raydiak joined #perl6-dev
09:46 lizmat morning #perl6-dev!
09:46 lizmat is it me, or don't we have an advent post for today yet ?
09:53 gfldex lizmat: DrForr had internet woes
09:54 lizmat ok
10:02 FROGGS joined #perl6-dev
10:52 pyrimidine joined #perl6-dev
10:53 jnthn samcv: Having uniprops to go with uninames and ords makes sense, I think
10:53 yoleaux2 9 Dec 2016 23:47Z <MasterDuke> jnthn: re method caching with wheres. i looked through src/Perl6/Metamodel/BOOTSTRAP.nqp a bit, but couldn't figure out why/where/how where clauses precluded caching. do you happen to have the next level pointer at hand?
10:56 jnthn .tell MasterDuke it's controlled by $pure_type_result which is zeroed if the candidate's info has has the constrainty key, which is in turn set inside of !sort_dispatchees_internal
10:56 yoleaux2 jnthn: I'll pass your message to MasterDuke.
11:20 dogbert17 hmm, today t/spec/S32-io/socket-recv-vs-read.t has started to fail ;(
11:22 lucasb joined #perl6-dev
11:26 dogbert17 seems to be test #03 - recv char count is not lower limit (chars)
11:28 dogbert17 *** Error in `/home/dogbert/repos/rakudo/install/bin/moar': double free or corruption (fasttop): 0x428608f0 ***
11:33 jnthn That one also showed up in the handful of tests that had issues when run with small GC nursery
11:39 gfldex m: class C { method m {} }; say &C::m.WHAT
11:39 camelia rakudo-moar a8ba26: OUTPUT«(Any)␤»
11:39 gfldex why is that Any?
11:40 dogbert17 jnthn: how can I change the nursery size?
11:40 jnthn See my recent blog post
11:40 jnthn gfldex: Because methods are has-scoped by default
11:40 dogbert17 :-)
11:40 gfldex i c
11:40 jnthn (So, they're only installed in the meta-object)
11:41 jnthn Pretty sure if you stick an our on it, it'll be package-visible
11:41 jnthn Or look it up with C.^lookup('m')
11:41 gfldex m: class C { our method m {} }; say (&C::m).WHAT
11:41 camelia rakudo-moar a8ba26: OUTPUT«(Method)␤»
11:45 gfldex m: class C { our method m {}; method n { $.m } }; say C.new.n
11:45 camelia rakudo-moar a8ba26: OUTPUT«No such method 'm' for invocant of type 'C'␤  in method n at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
11:45 gfldex that's at least LTA
11:45 gfldex (and used to work)
11:48 MasterDuke bisect: class C { our method m {}; method n { $.m } }; say C.new.n
11:48 yoleaux2 10:56Z <jnthn> MasterDuke: it's controlled by $pure_type_result which is zeroed if the candidate's info has has the constrainty key, which is in turn set inside of !sort_dispatchees_internal
11:48 bisectable6 MasterDuke, Bisecting by output (old=2015.12 new=a8ba26b) because on both starting points the exit code is 1
11:48 bisectable6 MasterDuke, bisect log: https://gist.github.com/eeebf40c2986157ff580c5c426b55a3e
11:48 bisectable6 MasterDuke, (2016-09-27) https://github.com/rakudo/rakudo/commit/222d16b0b94911fdedb06ee6ad817d0f14b9c05c
11:49 dogbert17 ok, with 32k nursery I can get it to segfault intermittently
11:49 psch committable6: 2015.11 class C { our method m {}; method n { $.m } }; say C.new.n
11:49 committable6 psch, ¦«2015.11»: Method 'm' not found for invocant of class 'C'␤  in method n at /tmp/WBrd_OMaBs:1␤  in block <unit> at /tmp/WBrd_OMaBs:1␤ «exit code = 1»
11:50 psch m: 2015.11 class C { our method m {}; method n { self.m } }; say C.new.n
11:50 camelia rakudo-moar a8ba26: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 2015.11⏏ class C { our method m {}; method n { s␤    expecting any of:␤        infix␤        infix stopper␤        statement end␤        statemen…»
11:50 psch ehh
11:50 psch m: class C { our method m {}; method n { self.m } }; say C.new.n
11:50 camelia rakudo-moar a8ba26: OUTPUT«No such method 'm' for invocant of type 'C'␤  in method n at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
11:51 dogbert17 jnthn: here's a gist of the fault in t/spec/S32-io/socket-recv-vs-read.t (32k Nursery): https://gist.github.com/dogbert17/a73858a3b218df8bd967d921585ef345
11:54 gfldex it used to work a few weeks before 6.c
11:54 psch committable6: 2015.09 class C { our method m {}; method n { $.m } }; say C.new.n
11:55 committable6 psch, ¦«2015.09»: Method 'm' not found for invocant of class 'C'␤  in method n at /tmp/1djno0ZfK3:1␤  in block <unit> at /tmp/1djno0ZfK3:1␤ «exit code = 1»
11:55 psch committable6: 2015.02 class C { our method m {}; method n { $.m } }; say C.new.n
11:55 committable6 psch, ¦«2015.02»: No such method 'm' for invocant of type 'C'␤  in method n at /tmp/01_jgTSXpg:1␤  in block <unit> at /tmp/01_jgTSXpg:1␤ «exit code = 1»
11:55 psch no idea
11:56 gfldex should it work?
11:56 psch i'm not sure.  our installs lexically, has installs in the method cache
11:56 psch i don't think we want 'method' to always install in the method cache, because we might not have one
11:56 MasterDuke committable6: all class C { our method m {}; method n { $.m } }; say C.new.n
11:57 nine Question for the doc people: can we include https://gist.github.com/niner/70f7b46eefb7e22af78d896bea11efeb somewhere?
11:57 committable6 MasterDuke, https://gist.github.com/6620aebb12a61cfc3885a9cf74acf232
11:58 MasterDuke doesn't seem to have worked as far back as 2014.01 (the oldest tag built for the *ables)
11:58 AlexDaniel joined #perl6-dev
11:59 gfldex nine: please file a doc issue on github and state what this change depends on (I take it this rakudo branch wasn't merged yet)
12:00 gfldex nine: that change has to be documented but only after the next proper rakudo release
12:01 gfldex we didn't pay much attention to that in the past because so many bugs got fixed but at some point we will have to
12:01 gfldex maybe even have branches for the docs themself so we can prepare doc changes alongside language changes
12:03 dogbert17 any git wizards out there
12:03 gfldex m: class C { our method m { say 'foo' }; method n { C::m(self) } }; C.new.n
12:03 camelia rakudo-moar a8ba26: OUTPUT«foo␤»
12:04 nine gfldex: https://github.com/perl6/doc/issues/1043
12:05 nine gfldex: I'll link my gist directly in the pull requests I submit until it's included in the docs.
12:05 dogbert17 if I go to my rakudo repo and then give the following cmd's: cd nqp/MoarVM; git log --oneline # I get the following
12:05 dogbert17 d2139b52 Fix pow_I when it takes an exponent larger than 2**32.
12:05 dogbert17 2025f863 Provide a #define for deopt logging.
12:05 dogbert17 22281b63 Provide a way to disable dynlex caching.
12:06 dogbert17 where's jnthn's clear dynlex cache fix?
12:07 lucasb m: class C { my method m { say 'foo' }; method n { m(self) } }; C.new.n
12:07 camelia rakudo-moar a8ba26: OUTPUT«foo␤»
12:07 lucasb so, 'my method' and 'our method' works more like subroutines?
12:08 jnthn Subs and methods (and submethods, and regexes/tokens/rules) are all types of Routine
12:08 psch lucasb: the only differences between a sub and a method are the implicit self in method and the different default scope
12:08 lucasb yes, I understand
12:08 psch well, user-facing differences probably
12:08 lucasb my point is: should 'my method' and 'our method' be valid syntax?
12:08 jnthn Sure, why not?
12:08 jnthn my regex ... is valid syntax
12:09 jnthn And a regex is just a method whose body is written in a different language
12:09 jnthn It can also be useful in conjunction with .&foo
12:09 jnthn And potentially during meta-programming too
12:09 jnthn my method blah() { ... }; $class.^add_method('blah', &blah);
12:09 lucasb ah, ok. I was confused. but I now I see it has its use case
12:10 jnthn lunch &
12:10 lucasb thanks
12:14 gfldex jnthn: are EXPORTHOW (and DECLARE) an implementation detail? (I would favour "yes" as an answer. :->)
12:14 gfldex also, is there something similar for custom declarators akin to `method`?
12:18 psch doesn't DECLARE do that?
12:18 psch i mean, you just have to supply different Actions
12:20 gfldex EXPORTHOW and DECLARE are ENODOC
12:20 psch ...or does DECLARE just link a HOW to a declarator?
12:20 psch i'm really not sure about those :/
12:30 babydrop Anyone got their Advent post ready already and can post today?
12:31 babydrop " DrForr │ babydrop: (or anyone) I have no 'net connection. I can do 20th-24th because I'll be be back home."
12:31 babydrop oh
12:31 pyrimidine joined #perl6-dev
12:36 * babydrop lols at `# your ad here` in source
12:49 tbrowder babydrop: Mine is basically ready AFAIK, but I am waiting for [Coke]'s review.  All it needs is the day change 10 vs. 12.
12:49 babydrop tbrowder: turns out someone already posted for today
12:49 tbrowder whew!
12:49 babydrop I just saw a /msg for DrForr and started panicing :)
12:51 nchambers joined #perl6-dev
12:51 sivoais joined #perl6-dev
12:52 lizmat joined #perl6-dev
13:02 MasterDuke joined #perl6-dev
13:08 lizmat joined #perl6-dev
13:09 lizmat is it expected that perl6-debug-m complains about Debugger::UI::CommandLine  not being installed?
13:09 lizmat is it expected there is no perl6-debug, only a perl6-debug-m ?
13:09 * lizmat started proofreading the chapter about the debugger in Laurent's book
13:11 timotimo it is expected that it complains about the CommandLine not being installed
13:11 timotimo you have to get it from the ecosystem
13:11 timotimo i expect it comes with rakudo star, though
13:12 timotimo whichis, iirc, what laurents book recommends you get
13:12 lizmat hmmmm... ok
13:12 lizmat not sure why it shouldn't just be part of the core...
13:12 lizmat I mean, if the debugger is useless without it
13:13 lizmat why include the debugger then?
13:13 lizmat (yes, I know why, but playing devil's advocate)
13:13 timotimo it's useless without *some* UI module :)
13:13 timotimo ideally, we'll get a GTK-based one in the future, because that'd make it easier to handle multi-threaded programs
13:14 lizmat ok, I get that, but why not include *a* CommandLine module in the mean time?
13:14 timotimo also, that module depends on ASCIIColor, among other things
13:14 timotimo sorry, ANSIColor
13:14 timotimo so will that go into core, too?
13:14 lizmat perhaps, unless its use of it is minimal and we can extract the logic into the core version
13:17 timotimo it could probably be done
13:17 pyrimidine joined #perl6-dev
13:17 timotimo i mean, in general you can just implement "colored" and "color" as "return first argument" and "return empty string"
13:19 lizmat_ joined #perl6-dev
13:19 lizmat_ it's just that I hadn't realized before that we're shipping rakudo with an incomplete debugger
13:20 lizmat only a perl6-debug-m (when just building for moar)
13:20 lizmat timotimo: also, why is there no perl6-debug ?
13:20 lizmat (repeating lines that got lost in the ozone)
13:20 timotimo i don't know. oversight in the makefile?
13:21 lizmat (not necessarily in the correct order)
13:21 lizmat ok, so no conscious decision
13:41 jnthn The bit that's in core is the bit that is an utter pain to maintain out of it (e.g. the actual compiler binding itself).
13:42 jnthn And yes, the idea is that a distribution will include some frontend that provides a useful UI, and that you can upgrade that part independently of your compiler version.
13:43 timotimo obviously our module installing stuff should make it possible to just say "hey i want the latest version of that" and panda or zef would say "yup, here you go"
13:46 dalek rakudo/nom: c04b8b5 | moritz++ | src/core/Match.pm:
13:46 dalek rakudo/nom: Corect Match.prematch and Match.postmatch for zero-width matches, ufobat++
13:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c04b8b5cc9
13:50 dalek roast: 7530a15 | moritz++ | S05-capture/match-object.t:
13:50 dalek roast: Test for .prematch and .postmatch on zero-width matches
13:50 dalek roast: review: https://github.com/perl6/roast/commit/7530a1578c
13:50 pyrimidine joined #perl6-dev
13:51 dalek rakudo/nom: 20cfab3 | moritz++ | docs/ChangeLog:
13:51 dalek rakudo/nom: Add changelog entry
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/20cfab31ca
13:54 MasterDuke i apologize because i think i've asked this before but forgotten the answer. is there any one particular thing that makes reading a file line by line (e.g., perl6 -n) so slow compared to perl5?
13:56 MasterDuke e.g., for a 13million line file, time perl -ne '' takes 1.7s and time perl6 -ne '' takes 1m26s
13:56 timotimo like, with just an empty -e?
13:56 timotimo interesting
13:56 timotimo you could ask a c-level profiler like perf about it
13:56 MasterDuke yeah, about to do that
13:56 timotimo how much faster does it get when you say you want latin1 encoding?
13:56 MasterDuke how do i do that?
13:56 timotimo i don't think you can do it with -n
14:00 MasterDuke i'm perf recording -n now, will try an explicit open and lines with latin1 after
14:01 MasterDuke 12.62%  moar     libmoar.so            [.] MVM_interp_run
14:02 MasterDuke 9.51%  moar     libmoar.so            [.] MVM_string_utf8_decodestream
14:02 timotimo i recommend using -g with perf record and report
14:04 dalek rakudo/nom: b9e2ffa | lizmat++ | src/core/multidim_slice.pm:
14:04 dalek rakudo/nom: Make @a[2;2] about 40% faster
14:04 dalek rakudo/nom:
14:04 dalek rakudo/nom: By assuming that the @indices have always already been reified
14:04 dalek rakudo/nom: completely.  I haven't been able to come up with a way to not have
14:04 dalek rakudo/nom: them reified (other than calling postcircumfix:<[; ]> directly).
14:04 dalek rakudo/nom: So the assumption seems safe, for now at least.  Please revert if
14:04 dalek rakudo/nom: this causes some ecosystem fallout, spectest itself is clean.
14:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b9e2ffab07
14:04 timotimo wow, 40% is pretty amazing
14:08 lizmat joined #perl6-dev
14:11 lizmat joined #perl6-dev
14:13 dalek rakudo/nom: 2bef4d3 | moritz++ | src/core/Match.pm:
14:13 dalek rakudo/nom: Simplify Match.{pre,post}match
14:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2bef4d30a0
14:14 pyrimidine joined #perl6-dev
14:15 lizmat to make things even faster, I'm thinking about creating postcircumfix:<[;]>(\SELF, \one, \two) candidates
14:15 lizmat the optimizer should then rewrite the generic code to those cases
14:16 lizmat afk, connection is getting too flaky in the car
14:18 MasterDuke timotimo: all the things that were red in the report expanded out: https://gist.github.com/MasterDuke17/0364721b30b040bcb531915f1af056c6
14:20 timotimo oh, you may be interested in learning about perf report -g --stdio :)
14:22 timotimo tbh, that doesn't tell me very much :\
14:23 MasterDuke would adding --stdio help?
14:24 MasterDuke oh, that's for the report
14:25 MasterDuke this was using a moarvm built with --debug=3, any other options to get more useful info?
14:26 MasterDuke to moar and/or perf?
14:29 timotimo well, the JIT gives us frames that don't show up in any sensible manner in the profiler
14:30 MasterDuke i'm trying '--call-graph dwarf' for perf
14:42 MasterDuke timotimo: https://gist.github.com/MasterDuke17/d8ee3f8789836e8550f62578dacbb13e
14:44 timotimo tbh, i'm no good at reading the uncollapsed view :|
14:45 tbrowder .tell [Coke] I'll be off the normal land-locked internet grid for Advent editing for a few hours while traveling. I just made some minor changes to the ending words and format.  I will be monitoring IRC as well as my iPhone and cell carrier can handle it.
14:45 yoleaux2 tbrowder: I'll pass your message to [Coke].
14:48 dogbert17 I have now run 'make spectest' with a small nursery, there are two failures, i.e. t/spec/S17-supply/syntax.t and t/spec/S32-io/socket-recv-vs-read.t
14:50 dogbert17 it could be worse I guess
14:50 dogbert17 I haven't seen this before: MoarVM panic: Internal error: Unwound entire stack and missed handler
14:50 MasterDuke timotimo: if you reload the gist there's a file at the end with the collapsed view
14:52 timotimo hm, does it allow you to sort by exclusive rather than inclusive time?
14:57 MasterDuke timotimo: i added a file with --no-children, does that do what you're looking for?
14:57 timotimo let's see?
14:58 timotimo hm. it could be what it calls "overhead" is what i'm looking for
14:59 timotimo so going by that we have 8% of utf8 decoding and 4.5% of looking for newline characters
14:59 timotimo frame-related overhead comes in at a lot, though
14:59 timotimo like, invocation and returning
15:00 timotimo GC is basically free at this point
15:00 pyrimidine joined #perl6-dev
15:00 MasterDuke fyi, i should be pretty close to HEAD for moar+nqp+rakudo
15:01 timotimo right
15:02 timotimo can you test the difference between latin1 and utf8, then?
15:02 MasterDuke latin1 was about 40s faster according to time, will start a perf record
15:04 timotimo where were the original numbers? with the perl5 number in addition?
15:04 timotimo oh, there it is
15:04 timotimo but 40s faster than 1m26s is already only 46s
15:04 timotimo so using latin1 is basically 2x faster
15:05 MasterDuke timotimo: https://gist.github.com/MasterDuke17/4ea0dadf73656d94ffa13d6ac6ffe650
15:07 timotimo --no-children please? :)
15:07 MasterDuke done
15:08 timotimo okay, so does anybody want to make find_separator and latin1_decodestream faster? :P
15:09 timotimo the memset is probably from where we zero out the memory a frame gets
15:09 timotimo it's potentially not so good that it's unaligned, but i've tried to make it aligned in the past and failed
15:09 timotimo and invocation-related overhead is a big issue here
15:20 MasterDuke does it mean anything that the top line for -n was "11.34% moar libmoar.so [.] MVM_interp_run", vs find_separator and latin1_decodestream for setting the encoding to latin1?
15:22 timotimo oh, interesting point
15:22 timotimo clearly the code we generated for the -n -e '' was not nearly as optimal as the code you wrote manually
15:25 RabidGravy joined #perl6-dev
15:28 mst_ joined #perl6-dev
15:31 MasterDuke -ne '' is 1m slower than -e 'my $fh = open("compile.sql"); for $fh.lines() {}'
15:31 dalek rakudo/nom: bfe4abb | timotimo++ | src/core/Match.pm:
15:31 dalek rakudo/nom: fix accidental creation of lists in prematch and postmatch
15:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bfe4abb14a
15:31 timotimo whoa, holy fuck
15:31 timotimo one whole minute
15:32 MasterDuke maybe even closer to 1m10s
15:33 timotimo er
15:33 timotimo but isn't -ne '' just 1m26?
15:33 timotimo how can 1m10s be 1 minute slower than 1m26s?
15:34 MasterDuke i'm now running on my computer, i think the previous numbers are from AlexDaniel's server
15:34 timotimo oh
15:34 timotimo i don't have a good file for this
15:34 MasterDuke you have access to his server right?
15:34 timotimo oh, of course
15:34 timotimo how big exactly is this file?
15:35 MasterDuke 740m uncompressed, 42m compressed
15:35 MasterDuke /home/bisectable/git/rakudo_masterduke17/compile.sql
15:36 MasterDuke compressed is /home/bisectable/git/rakudo_masterduke17/compile.sql.zst
15:36 timotimo downloading it nao
15:37 timotimo you know what package i need to get to unpack zstandard?
15:37 timotimo oh, clearly zstd
15:41 MasterDuke btw, that's the profile-compile output as sql for building rakudo
15:41 timotimo ah
15:41 timotimo i thought so
15:42 timotimo right, with the manual -e we get 20% time spent inside utf8_decodestream
15:42 timotimo do we have to do something special to make perl5 also do utf8 stuff?
15:43 timotimo and another 8% of time spent looking for separators
15:44 babydrop perl -C
15:44 babydrop (perldoc perlrun)
15:46 timotimo makes absolutely zero difference
15:46 timotimo so it must already have been doing utf8 parsing
15:47 [Tux] This is Rakudo version 2016.11-178-gbfe4abb14 built on MoarVM version 2016.11-44-g8e24145d
15:47 [Tux] csv-ip5xs        3.092
15:47 [Tux] test            14.202
15:47 [Tux] test-t           6.270
15:47 [Tux] csv-parser      14.843
15:47 MasterDuke time perl -e 'use open ":std", ":encoding(utf-8)"; open my $fh, "compile.sql"; while (<$fh>) {};' takes 15s
15:48 MasterDuke and 2s without the use open ":std", ":encoding(utf-8)";
15:48 MasterDuke same as -ne ''
15:52 timotimo btw, it should be much faster to .slurp-rest.lines
15:53 timotimo huh, interesting
15:53 timotimo that now uses string_find_cclass and unicode_codepoint_has_property_value are both at 15% time used
15:53 timotimo and decodestream is at 26% time used
15:53 MasterDuke that won't read the whole file into memory?
15:53 timotimo it will
15:54 timotimo hm. not that much faster
15:54 timotimo slurp-rest.lines is at 26s, lines only is at 37s
15:55 timotimo 11s for your perl5 oneliner with :std
15:55 timotimo whatever :std means
15:55 dalek roast: 99a9bd8 | moritz++ | S05-capture/match-object.t:
15:55 dalek roast: Match.{pre,post}match should produce Str
15:55 dalek roast: review: https://github.com/perl6/roast/commit/99a9bd8774
15:56 MasterDuke slurp-rest.lines is 32s vs .lines is 50s for me
16:12 timotimo we're surely paying a bit for our stuff to be lazy
16:12 timotimo with slurp-rest, we might not want to, though?
16:16 MasterDuke 'my $fh = open("compile.sql"); while $fh.get {}' is only 33s vs 50s for 'my $fh = open("compile.sql"); for $fh.lines() {}'
16:18 RabidGravy joined #perl6-dev
16:26 MasterDuke where is -n implemented? it's not the easiest thing to search for
16:28 cygx joined #perl6-dev
16:28 cygx MasterDuke: what about use nqp; my $fh := nqp::open("README", "r"); while $_
16:28 cygx = nqp::readlinefh($fh) { .print  }
16:29 cygx (without the linebreak, and compile.sql instead of README ;)
16:29 psch MasterDuke: Perl6::Actions::wrap_option_n_code
16:31 MasterDuke time ~/Source/perl6/install/bin/nqp-m -e 'my $fh := nqp::open("compile.sql", "r"); while nqp::readlinefh($fh) {}' is 22s
16:31 pyrimidine joined #perl6-dev
16:32 MasterDuke (same for readlinechompfh)
16:33 MasterDuke same if run using perl6-m and 'use nqp'
16:51 timotimo readlinechompfh being exactly as fast as readlinefh was a neat optimization we got at some point
16:58 pyrimidine joined #perl6-dev
17:00 pyrimidi_ joined #perl6-dev
17:18 babydrop woo \o/ test-t went down by 0.377 seconds \o/
17:18 babydrop [Tux]: is the code that's run for test-t in the repo somewhere? I wanna run it locally
17:32 dogbert17 babydrop: https://github.com/Tux/CSV
17:32 timotimo i think he meant "where in the repo is that script?"
17:33 babydrop dogbert17: thanks! I guess it's the test-t.pl script
17:40 pyrimidine joined #perl6-dev
17:40 dogbert17 babydrop: I believe so (haven't tested it)
17:41 dogbert17 timotimo: lol, I should learn how to read
17:45 babydrop dogbert17: no, I didn't know about that repo.
17:50 dogbert17 babydrop: cool, maybe I can read after all :)
17:52 babydrop I can't write is the problem, it should be "in *a* repo" :)
18:04 dalek nqp: af3f6e3 | (Pawel Murias)++ | src/vm/js/Operations.nqp:
18:04 dalek nqp: [js] Implement nqp::ctxcode.
18:04 dalek nqp: review: https://github.com/perl6/nqp/commit/af3f6e36dd
18:04 dalek nqp: dcfacd8 | (Pawel Murias)++ | t/nqp/079-callercode.t:
18:04 dalek nqp: Test nqp::ctxcode.
18:04 dalek nqp: review: https://github.com/perl6/nqp/commit/dcfacd8214
18:10 dalek roast: da6fde4 | Altai-man++ | integration/error-reporting.t:
18:10 dalek roast: Test for #125247 (#192)
18:10 dalek roast:
18:10 dalek roast: * Test for https://rt.perl.org/Public/Bug/Display.html?id=125247#ticket-history
18:10 dalek roast:
18:10 dalek roast: * Update test plan and narrow the test
18:10 dalek roast: review: https://github.com/perl6/roast/commit/da6fde44ab
18:10 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=125247
18:39 dalek nqp: 8090845 | (Pawel Murias)++ | src/vm/js/nqp-runtime/ (5 files):
18:39 dalek nqp: [js] Use STables everywhere instead of Stables for more consistency.
18:39 dalek nqp: review: https://github.com/perl6/nqp/commit/809084556d
18:39 dalek nqp: 9546d1e | (Pawel Murias)++ | src/vm/js/ (2 files):
18:39 dalek nqp: [js] Implement nqp::fileislink.
18:39 dalek nqp: review: https://github.com/perl6/nqp/commit/9546d1ebe5
18:39 dalek nqp: 4db0734 | (Pawel Murias)++ | t/nqp/019-file-ops.t:
18:39 dalek nqp: Test fileislink.
18:39 dalek nqp: review: https://github.com/perl6/nqp/commit/4db073434e
18:39 dalek nqp: 9355d86 | (Pawel Murias)++ | t/nqp/019-file-ops.t:
18:39 dalek nqp: Test a case when a stat ISLNK check is not true.
18:39 dalek nqp: review: https://github.com/perl6/nqp/commit/9355d86f7a
18:39 dalek nqp: 18bb3af | (Pawel Murias)++ | src/vm/js/Operations.nqp:
18:39 dalek nqp: Add :side_effects annotation to IO stuff I'm not sure if someone might use for side effects or that shouldn't be done twice.
18:54 pyrimidine joined #perl6-dev
19:00 pyrimidine joined #perl6-dev
19:27 lizmat joined #perl6-dev
20:00 pyrimidine joined #perl6-dev
20:42 dalek rakudo/nom: a34f0af | (Zoffix Znet)++ | src/Perl6/Actions.nqp:
20:42 dalek rakudo/nom: Remove needless calls to infix:<,> in [sS]/// codegen
20:42 dalek rakudo/nom:
20:42 dalek rakudo/nom: After a discussion[^1] and testing the output of old tickets[^2],
20:42 dalek rakudo/nom: it looks like these are no longer needed. After their removal, the
20:42 dalek rakudo/nom: bugs referenced by tickets do not re-appear and stresstest passes.
20:42 dalek rakudo/nom:
20:42 dalek rakudo/nom: [1] https://irclog.perlgeek.de/perl6/2016-12-10#i_13717904
20:42 dalek rakudo/nom: [2] https://irclog.perlgeek.de/perl6/2016-12-10#i_13718025
20:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a34f0afe7a
20:44 pyrimidine joined #perl6-dev
20:53 pyrimidine joined #perl6-dev
21:00 dalek rakudo/nom: 772eadd | (Zoffix Znet)++ | src/Perl6/Actions.nqp:
21:00 dalek rakudo/nom: Remove outdated comment
21:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/772eadd50f
21:16 dalek rakudo/nom: 164eb42 | (Zoffix Znet)++ | src/Perl6/Actions.nqp:
21:16 dalek rakudo/nom: Remove useless p6store
21:16 dalek rakudo/nom:
21:16 dalek rakudo/nom: We already do it a few lines above[^1]
21:16 dalek rakudo/nom:
21:16 dalek rakudo/nom: [1] https://github.com/rakudo/rakudo/blob/772eadd50f7444/src/Perl6/Actions.nqp#L7766-L7769
21:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/164eb4241d
21:54 pyrimidine joined #perl6-dev
21:56 dalek rakudo/nom: ea28845 | (Zoffix Znet)++ | src/Perl6/Actions.nqp:
21:56 dalek rakudo/nom: Remove needless call to infix:<,> in [sS]/// codegen
21:56 dalek rakudo/nom:
21:56 dalek rakudo/nom: One more needless call to remove for same reasons as those removed
21:56 dalek rakudo/nom: in https://github.com/rakudo/rakudo/commit/a34f0afe7a55eb7682d663c
21:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ea28845f98
23:01 pyrimidine joined #perl6-dev
23:35 lizmat joined #perl6-dev

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