Perl 6 - the future is here, just unevenly distributed

IRC log for #p6dev, 2016-03-18

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:00 lizmat joined #p6dev
03:09 FROGGS joined #p6dev
03:21 colomon joined #p6dev
05:40 timotimo i came up with the coolest idea while my brane was refusing to let me continue to sleep ... a picture with a "DEADPERL" text on it and camelia fashioned to look a lot like deadpool's logo
06:55 [Tux] test            21.409
06:55 [Tux] test-t          13.704
06:55 [Tux] csv-parser      49.831
07:14 nine What's a blorst?
07:18 timotimo it's just like a blast, but with "or" instead of "alternatively"
07:18 timotimo S99:blorst
07:18 synopsebot6 Link: http://design.perl6.org/S99.html#blorst
07:18 nine If you put it like that it's a very descriptive name :)
07:43 * timotimo writes the code to emit the new moar heap snapshot dump stuff
07:44 timotimo it starts with a nice explanation blob as comments to make it easier for people to understand what's going on
08:44 dalek nqp: 2201bad | timotimo++ | src/vm/moar/HLL/Backend.nqp:
08:44 dalek nqp: use a more text-y line-based output for heap profile
08:44 dalek nqp:
08:44 dalek nqp: includes a big dump of explanation text about the format
08:44 dalek nqp: review: https://github.com/perl6/nqp/commit/2201badece
09:06 RabidGravy joined #p6dev
09:24 jnthn timotimo: argh, I have a patch locally that dumps it :/
09:24 jnthn But the full set of things to dump isn't available yet
09:38 nine my $caller := nqp::ctx(); my $codeobj; while nqp::isnull($codeobj) || !nqp::can($codeobj, 'name') { $caller  := nqp::ctxcaller($caller); last if nqp::isnull($caller); $codeobj := nqp::getcodeobj(nqp::ctxcode($caller)); } nqp::sayfh(nqp::getstderr(), nqp::isnull($caller) ?? 'unknown' !! $codeobj.name);
09:38 nine So much work to find out who calls the sub and then it didn't even help...
10:18 lizmat joined #p6dev
10:21 psch hrm, X::Str::Sprintf::Directives::Count feels a bit too wordy... :)
10:24 TimToady joined #p6dev
10:30 RabidGravy but hey
11:18 lizmat good *, #p6dev
11:19 lizmat .oO( sometimes I feel like the only core dev in the village )
11:21 nine lizmat: I strongly suspect that you _are_ the only core dev in Echt
11:29 jnthn Really? :)
11:31 * jnthn has family visiting for the weekend, so likely won't be hacking that much during it :)
11:38 lizmat nine: :-)
11:39 * lizmat did some family visiting last weekend and is still more or less recovering from it :-)
11:47 psch hrm, i'm confused
11:48 psch https://gist.github.com/peschwa/e1212493006fdfe01f9e lines 12 and 13 are the ones that confuse me
12:00 lizmat [Coke]: re http://irclog.perlgeek.de/p6dev/2016-03-17#i_12201282  ,  my experiences with branches being reviewed, are not favorable
12:02 lizmat b2gills: re http://irclog.perlgeek.de/p6dev/2016-03-17#i_12202826  , the PR doesn't cleanly apply anymore  :-(
12:02 lizmat aka  https://github.com/rakudo/rakudo/pull/686
12:17 dalek rakudo/nom: 99cd58b | lizmat++ | src/core/Iterator.pm:
12:17 dalek rakudo/nom: Micro-optimize basic push-exactly implementation
12:17 dalek rakudo/nom:
12:17 dalek rakudo/nom: I've come to the conclusion that most Iterator's push-exactly
12:17 dalek rakudo/nom: implementations do not offer anything performance-wise over the
12:17 dalek rakudo/nom: basic push-exactly implementation.  Furthermore, they provide an
12:17 dalek rakudo/nom: alternate code path that is mostly untested, so it brings extra
12:17 dalek rakudo/nom: maintenance.  After this, I will look at all push-exactly
12:17 dalek rakudo/nom: implementations and most likely remove them.
12:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/99cd58b63b
12:32 psch oh duh, i realize the cause for my confusion
12:32 psch well, half of it at least
12:32 psch i'm not stubbing the Exceptions i want to .new
12:33 psch i'm not quite sure why X::Cannot::Lazy is known though, but i suspect that's because it gets thrown from somewhere else, where it is stubbed vOv
12:46 dalek rakudo/nom: 6d120ca | lizmat++ | / (6 files):
12:46 dalek rakudo/nom: Remove almost all push-exactly implementations
12:46 dalek rakudo/nom:
12:46 dalek rakudo/nom: See 99cd58b for more background on this removal
12:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6d120cab6d
13:03 nine lizmat: I wonder if we could teach the optimizer to e.g. optimize my int $n; my int $i; $i < $n to nqp::islt_i($i, $n)
13:04 lizmat no idea...
13:08 geekosaur joined #p6dev
13:09 CurtisOvidPoe_ joined #p6dev
13:15 dalek nqp: 6b56b1f | peschwa++ | src/HLL/sprintf.nqp:
13:15 dalek nqp: Increase scope of sprintf error reporting.
13:15 dalek nqp:
13:15 dalek nqp: Commit 307f14607 only utilized throwing of VMExceptions with detailed message
13:15 dalek nqp: and payload for one of at least three cases. This patch implements handling the
13:15 dalek nqp: other two the same way.
13:15 dalek nqp: review: https://github.com/perl6/nqp/commit/6b56b1fc4e
13:16 dalek rakudo/nom: b24462a | peschwa++ | tools/build/NQP_REVISION:
13:16 dalek rakudo/nom: Bump NQP_REVISION for sprintf error handling changes.
13:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b24462a190
13:16 dalek rakudo/nom: 4ce94d5 | peschwa++ | src/core/ (3 files):
13:16 dalek rakudo/nom: Handle NQP-level sprintf error reporting HLL-y.
13:16 dalek rakudo/nom:
13:16 dalek rakudo/nom: This gets us the three new exceptions
13:16 dalek rakudo/nom: X::Str::Sprintf::Directives::{Count,Unsupported,BadType}, for mismatches
13:16 dalek rakudo/nom: between directives and arguments, unsupported directives and types that cannot
13:16 dalek rakudo/nom: be stringified according to the directive that matches them, respectively.
13:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4ce94d5dd2
13:16 dalek roast: d4463f9 | peschwa++ | S32-str/sprintf.t:
13:16 dalek roast: Add tests for typed exceptions for sprintf.
13:16 dalek roast: review: https://github.com/perl6/roast/commit/d4463f9a44
13:36 dalek rakudo/nom: 13ca30c | lizmat++ | / (2 files):
13:36 dalek rakudo/nom: Move role header out of generated part
13:36 dalek rakudo/nom:
13:36 dalek rakudo/nom: This will allow us to add any methods / subs before the generated
13:36 dalek rakudo/nom: part.
13:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/13ca30c852
13:47 [Coke] lizmat: ok. But the release scheduled for this week is on hold until that commit is reviewed.
13:49 [Coke] The commit message also doesn't refer to a ticket in github or RT. I'll open one.
13:50 lizmat [Coke]: ah, I thought it was next weekend ?
13:50 lizmat ok, in that case, I'll take out strarray support out now
13:55 [Coke] RT: https://rt.perl.org/Ticket/Display.html?id=127736
13:57 jnthn Wait why would be have to take it out?
13:57 [Coke] not to beat a dead horse, but aside from inertia and masak and the pain of switching, why are we still using rt.perl.org ?
13:57 [Coke] jnthn: the comment specifically says that it might not be allowable in 6.c
13:57 lizmat jnthn: because it is a new thing and it's not a method to an existing class ?
13:58 [Coke] which is a huge red flag since we haven't released anything that is not 6.c yet.
13:58 dalek rakudo/repl6: 2d109c3 | hoelzro++ | src/ (2 files):
13:58 dalek rakudo/repl6: REPL6: Call teardown method on Perl6 REPL after interactive is done
13:58 dalek rakudo/repl6:
13:58 dalek rakudo/repl6: This way, we can have custom behavior occur when a user is done with
13:58 dalek rakudo/repl6: the REPL
13:58 dalek rakudo/repl6: review: https://github.com/rakudo/rakudo/commit/2d109c3f48
13:58 dalek rakudo/repl6: 3bf02dd | hoelzro++ | src/core/REPL.pm:
13:58 dalek rakudo/repl6: REPL6: Add a history-file method to Perl6 REPL
13:58 dalek rakudo/repl6:
13:58 dalek rakudo/repl6: This method will be used by mixed in roles to implement
13:58 dalek rakudo/repl6: persistent history
13:58 dalek rakudo/repl6: review: https://github.com/rakudo/rakudo/commit/3bf02ddabb
13:58 dalek rakudo/repl6: 0569cd5 | hoelzro++ | src/core/REPL.pm:
13:58 dalek rakudo/repl6: REPL6: Call teardown-line-editor upon teardown
13:59 lizmat [Coke]: wrt to rt.perl.org question: I have no idea, I've never been able to login there  :-(
14:00 jnthn How many times do I have to say that 6.c is the test suite that has been released already, *not* anything to do with Rakudo beyond "does it still pass the 6.c tests, errata considered"?
14:00 lizmat m: use v6.c; my str @a   # will this work or not ?
14:00 camelia rakudo-moar 13ca30: ( no output )
14:01 lizmat star-m: use v6.c; my str @a   # will this work or not ?
14:01 camelia star-m 2016.01: OUTPUT«===SORRY!===␤native string arrays not yet implemented. Sorry. ␤»
14:01 jnthn lizmat: That desugars to array.^parameterize(str) which is method-land
14:01 jnthn It's hugely unlikely anyone will have relied on that code failing to compile.
14:01 jnthn So it's very hard to see it as a backward-incompatible change.
14:02 lizmat true, ok, /me does git reset --hard to remove the patch that removed native str array support
14:02 jnthn The thing people *can't* do you is declare a dependency on a Perl 6 release that supports it.
14:02 jnthn But we'll *always* have that situation, until the day we decide we're not going to improve Perl 6 any more, which I hope won't be soon. ;)
14:03 lizmat jnthn: that also implies I should be adding native str tests then ?
14:03 jnthn lizmat: To roast master, yes
14:03 lizmat ok, will do
14:03 jnthn lizmat: And maybe next month it'll be time for a 6.c.1 to give people a way to depend on having the fixes and other things we've done since 6.c
14:04 lizmat okidok, seems like a plan then
14:05 jnthn :)
14:06 jnthn lizmat++ # native str arrays :)
14:16 Skarsnik joined #p6dev
14:16 dalek rakudo/nom: 57df3dd | lizmat++ | tools/build/makeNATIVE_ARRAY.pl6:
14:16 dalek rakudo/nom: We only need @type, not @PRE
14:16 dalek rakudo/nom:
14:16 dalek rakudo/nom: For code clarity purposes only, doesn't change anything in generated
14:16 dalek rakudo/nom: code.
14:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/57df3dd998
14:17 gregf_ joined #p6dev
14:18 gregf_ left #p6dev
14:21 colomon_ joined #p6dev
14:40 lizmat afk for a few hours&
14:42 [Coke] lizmat: ~~
14:43 FROGGS joined #p6dev
14:52 [Coke] lizmat: if you cannot log in to rt.perl.org, please open a ticket with the admins there at perlbug-admin at perl.org
14:52 [Coke] Once you can login, I'll make you a p6 bug admin.
14:55 [Coke] RT: 1285 tickets; WEIRD: 14; LTA: 126; GLR: 7; NOM: 7; JVM: 57; NYI: 88
14:57 * perlpilot didn't even know there was a WEIRD category
14:58 timotimo i've looked at a few weird bugs so far, and they were ... usually pretty scary
14:59 [Coke] SEGV: 28
15:00 [Coke] PERF: 1
15:00 jnthn Only 1 performance issue! \o/ ;)
15:01 nine Wow...so that's just one fix and we're fast?
15:01 nine Or is the ticket like "Rakudo is too slow"? ;)
15:02 jnthn "Speed up all the things!" :)
15:02 [Coke] I just changed a bunch of mem leak to also be perf. PERF: 7
15:05 [Coke] PERF: 12
15:05 [Coke] (added "leaks" and "OOM")
15:06 [Coke] PRECOMP: 17
15:07 [Coke] Someone should review the NYIs and reject them if they're never getting I. (like, the Matcher class, as a random example)
15:08 [Coke] jnthn: I can probably also tag a bunch of stuff [UNI]…
15:14 [Coke] https://rt.perl.org/Ticket/Display.html?id=127051 - Is there a sane way to give a better error here? It's a precedence issue.
15:14 [Coke] m: say 1/Int
15:14 camelia rakudo-moar 57df3d: OUTPUT«Parameter 'de' requires an instance of type Int, but a type object was passed.  Did you forget a .new?␤  in block <unit> at /tmp/ho1BICp8Ns line 1␤␤»
15:15 jnthn [Coke]: Well, we could name them numerator and dominator instead to make it more clear
15:16 perlpilot jnthn +1
15:16 jnthn I think the error would be better if it didn't strip the fact it happened inside CORE.setting's new method though
15:16 jnthn I think we hide a bit too much in the backtrace there.
15:16 [Coke] ok, so it's not just a doc it hurts.
15:16 [Coke] fair enough. just looking for an easy win, which this ain't. :)
15:17 jnthn In general though, we write Perl 6 in Perl 6, and that includes the built-ins, and parameter names of the built-ins are fair game for exposing in errors.
15:22 * [Coke] rejects one ticket that should have gone to perl6/doc/issues on github, and we're down to 1284.
15:57 Skarsnik you can probably close https://rt.perl.org/Ticket/Display.html?id=126948
16:19 RabidGravy joined #p6dev
16:31 [Coke] Skarsnik: it's a RFC; seems like a reasonable feature request.
16:33 Skarsnik I think it's done and the only change is like a coma instead of a . for the 1/x sec
17:08 FROGGS joined #p6dev
18:15 colomon joined #p6dev
20:55 AlexDaniel joined #p6dev
20:59 lizmat jnthn: would it make sense to change the sig on proto's for methods / subs that will never accept any arguments, from (|) to () ?
20:59 lizmat from a performance point of view ?
21:28 lizmat timotimo: ^^^ any opinion ?
21:33 lizmat [Coke]: finally made it into RT, but cannot set up a search in perl6 queue: it keeps sending me back to the perl5 one   grrrrr
21:36 lizmat [Coke]: ok, got a bit further
21:36 timotimo i don't know if it'll be much faster; i'd have to either measure with a benchmark or look at the generated code
21:39 lizmat looks like it's 1% faster... close to noise
21:41 sortiz joined #p6dev
21:47 timotimo interesting
21:47 lizmat multi method Bool(Mu:U: --> False) { }
21:47 lizmat multi method Bool(Mu:D: --> True)  { }
21:47 lizmat seems to speed up things significantly better
21:48 timotimo cool :)
21:48 timotimo would you like to quickly head on over to moar/something/Ops.nqp and go into the proto "p6sort"? there's two for loops in there that really want to become a curly-brace-less while loop
21:49 timotimo BBIAB, food
21:52 lizmat timotimo: do we even have postfix while loops in NQP ?
22:07 dalek rakudo/nom: 24b4b23 | lizmat++ | src/core/Mu.pm:
22:07 dalek rakudo/nom: Make Mu.Bool about 10x faster
22:08 dalek rakudo/nom:
22:08 dalek rakudo/nom: - remove | from proto sig
22:08 dalek rakudo/nom: - replace Mu: candidate with 2 candidates, :D for True, :U for False
22:08 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/24b4b23a80
22:08 psch nqp-m: my $x := 1; $x := $x + 1 while $x < 5
22:08 camelia nqp-moarvm: ( no output )
22:09 psch nqp-m: my $x := 1; $x := $x + 1 while $x < 5; say($x)
22:09 camelia nqp-moarvm: OUTPUT«5␤»
22:12 lizmat psch: I guess that answers my question  :-)
22:13 psch lizmat: fwiw, i usually assume that most wordy syntax features exist :)
22:14 psch as in, stuff like $++ probably doesn't, but statemods do
22:14 lizmat nqp-m: my $x := 1; $x := $x + 1 if $x < 5
22:14 camelia nqp-moarvm: ( no output )
22:14 lizmat I could have sworn that there was no postfix if in nqp
22:23 lizmat timotimo: looking at Ops.nqp / p6sort, I wonder: why are we copying @input_data on entry, and then back on exit ?
22:24 lizmat why isn't @data := @input_data ??
22:27 nine I've used postfix if in nqp today
22:27 nine At least I could swear I've done it :)
22:29 lizmat then I wonder: is there an efficiency reason for using postfix if if one can ?
22:30 lizmat or does the scope of a curly if without any local effects get optimised away anyway ?
22:31 nine I would hope the latter
22:33 nine In Perl 6 there doesn't seem to be a difference in performance
22:36 nine No difference in NQP either :)
22:38 timotimo lizmat: we're sorting the indices. that's not a good idea any more, i don't think
22:39 lizmat ah, ok...
22:39 lizmat well, I don't think it would be a good idea to start messing with this just before the release
22:39 timotimo though ... perhaps this is about not modifying the original array
22:40 timotimo oops, we're modifying @input_data
22:40 lizmat yes: but the question is, why not directly ?
22:41 timotimo i assume i copied that from parrot
22:41 timotimo or something?
22:41 timotimo https://github.com/rakudo/rakudo/commit/f920930f9946a237a9700b03243d3e71a2e3cdc5  -  look, it's *really* old
22:43 timotimo really, the whole p6sort hasn't changed one bit since then
22:44 lizmat ok, I'll start playing with that tomorrow, when I'm less tired
22:44 lizmat but won't commit until after the release
22:45 timotimo awesome :)
22:52 colomon joined #p6dev
22:52 lizmat btw, I found out today that "my int @a = ^10" is codegenned as BEGIN my int @a = array[int].new; @a.STORE(^10)
22:53 lizmat which came a bit as a surprise to me
22:54 timotimo hm, wasn't that a bit more clear after our last talk about this?
22:54 lizmat well, yes, looking back, I should have known  :-)
22:55 lizmat which also explains why we have a MMD on the .STORE  :-)
22:55 lizmat so I'm not sure why we have all the MMD on .new  :-)
22:57 dalek rakudo/nom: f3c2692 | lizmat++ | / (2 files):
22:57 dalek rakudo/nom: Remove leftover from previous opt experiment
22:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f3c26921b8
23:03 timotimo i don't know :|
23:05 lizmat timotimo: I guess for the cases where people actually do "array[int].new(^10)"
23:06 timotimo ah, that'd make sense, yeah
23:17 lizmat it was pointed out to me on #perl6 that 24b4b23a80337888cf5 subtly changed behaviour for (ecosystem) classes that have their own method defined
23:17 lizmat and not their own method .Bool
23:18 lizmat [Coke]: (or anybody else) if you feel uncomfortable with that change, please revert it
23:21 timotimo i don't think the change is bad. i'd like to test its effect on that snippet we had
23:21 timotimo though what interests me even more is how we ended up calling it so darn often in the first place :)
23:22 timotimo i think we need a recursive search tool that you can more easily figure out where in the call graph tools are
23:22 timotimo or, alternatively, a reverse view in the routines list, where you can see all callees recursively
23:25 dalek rakudo/nom: ab865e4 | ugexe++ | src/core/IO/Handle.pm:
23:25 dalek rakudo/nom: Fix .slurp-rest(:!bin)
23:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ab865e4c00
23:25 dalek rakudo/nom: e5fb01f | lizmat++ | src/core/IO/Handle.pm:
23:25 dalek rakudo/nom: Merge pull request #727 from ugexe/patch-3
23:25 dalek rakudo/nom:
23:25 dalek rakudo/nom: I decided to take the PR as is for now, so we at least have this bug fixed for the release tomorrow.  There are some other aspects that I don't like with slurp-rest, that need more attention (after the release)
23:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e5fb01f03b
23:26 * lizmat is tired and calls it a day
23:26 lizmat good night, #perl6!   &
23:28 timotimo good good :)
23:29 timotimo i'm glad you're vigilantly going through code all the time like this :)
23:32 dalek rakudo/nom: 2e24124 | lizmat++ | src/core/Mu.pm:
23:32 dalek rakudo/nom: Make MU:D.Bool match S02:4660, spotted by lucasb++
23:32 dalek rakudo/nom:
23:32 dalek rakudo/nom: This undoes the 10x improvement mostly.  Type objects.Bool still seems
23:32 dalek rakudo/nom: a bit faster than before now.
23:32 synopsebot6 Link: http://design.perl6.org/S02.html#line_4660
23:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2e2412471c
23:32 lizmat no rest for the wicked...
23:32 lizmat now really to bed&
23:33 timotimo gnite lizmat!
23:33 dalek rakudo/nom: 4f7cb88 | timotimo++ | src/vm/moar/ops/perl6_ops.c:
23:33 dalek rakudo/nom: moar will soon gain descriptions for permanent gc roots
23:33 dalek rakudo/nom:
23:33 dalek rakudo/nom: with a simple little define we're preparing for
23:33 dalek rakudo/nom: the brave future, today!
23:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4f7cb88fa1
23:54 timotimo i think the comparator could just be way unoptimized
23:55 timotimo i think it may be .Bool-ing the lhs and the rhs of the ||
23:55 timotimo but that's only very few percent, i fear
23:56 timotimo oh, no
23:56 timotimo what i meant to say was: Bool is only 8% of Bool's time
23:56 timotimo but the other 92% are also in Bool, so it's fine

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary