01:00 lizmat joined 03:09 FROGGS joined 03:21 colomon joined
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 05:40
[Tux] test 21.409 06:55
test-t 13.704
csv-parser 49.831
nine What's a blorst? 07:14
timotimo it's just like a blast, but with "or" instead of "alternatively" 07:18
S99:blorst
synopsebot6 Link: design.perl6.org/S99.html#blorst
nine If you put it like that it's a very descriptive name :)
timotimo writes the code to emit the new moar heap snapshot dump stuff 07:43
it starts with a nice explanation blob as comments to make it easier for people to understand what's going on 07:44
dalek p: 2201bad | timotimo++ | src/vm/moar/HLL/Backend.nqp:
use a more text-y line-based output for heap profile

includes a big dump of explanation text about the format
08:44
09:06 RabidGravy joined
jnthn timotimo: argh, I have a patch locally that dumps it :/ 09:24
But the full set of things to dump isn't available yet
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
So much work to find out who calls the sub and then it didn't even help...
10:18 lizmat joined
psch hrm, X::Str::Sprintf::Directives::Count feels a bit too wordy... :) 10:21
10:24 TimToady joined
RabidGravy but hey 10:30
lizmat good *, #p6dev 11:18
.oO( sometimes I feel like the only core dev in the village )
11:19
nine lizmat: I strongly suspect that you _are_ the only core dev in Echt 11:21
jnthn Really? :) 11:29
jnthn has family visiting for the weekend, so likely won't be hacking that much during it :) 11:31
lizmat nine: :-) 11:38
lizmat did some family visiting last weekend and is still more or less recovering from it :-) 11:39
psch hrm, i'm confused 11:47
gist.github.com/peschwa/e1212493006fdfe01f9e lines 12 and 13 are the ones that confuse me 11:48
lizmat [Coke]: re irclog.perlgeek.de/p6dev/2016-03-17#i_12201282 , my experiences with branches being reviewed, are not favorable 12:00
b2gills: re irclog.perlgeek.de/p6dev/2016-03-17#i_12202826 , the PR doesn't cleanly apply anymore :-( 12:02
aka github.com/rakudo/rakudo/pull/686
dalek kudo/nom: 99cd58b | lizmat++ | src/core/Iterator.pm:
Micro-optimize basic push-exactly implementation

I've come to the conclusion that most Iterator's push-exactly implementations do not offer anything performance-wise over the basic push-exactly implementation. Furthermore, they provide an alternate code path that is mostly untested, so it brings extra maintenance. After this, I will look at all push-exactly implementations and most likely remove them.
12:17
psch oh duh, i realize the cause for my confusion 12:32
well, half of it at least
i'm not stubbing the Exceptions i want to .new
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:33
dalek kudo/nom: 6d120ca | lizmat++ | / (6 files):
Remove almost all push-exactly implementations

See 99cd58b for more background on this removal
12:46
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:03
lizmat no idea... 13:04
13:08 geekosaur joined 13:09 CurtisOvidPoe_ joined
dalek p: 6b56b1f | peschwa++ | src/HLL/sprintf.nqp:
Increase scope of sprintf error reporting.

Commit 307f14607 only utilized throwing of VMExceptions with detailed message and payload for one of at least three cases. This patch implements handling the other two the same way.
13:15
kudo/nom: b24462a | peschwa++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for sprintf error handling changes.
13:16
kudo/nom: 4ce94d5 | peschwa++ | src/core/ (3 files):
Handle NQP-level sprintf error reporting HLL-y.

This gets us the three new exceptions X::Str::Sprintf::Directives::{Count,Unsupported,BadType}, for mismatches between directives and arguments, unsupported directives and types that cannot be stringified according to the directive that matches them, respectively.
ast: d4463f9 | peschwa++ | S32-str/sprintf.t:
Add tests for typed exceptions for sprintf.
kudo/nom: 13ca30c | lizmat++ | / (2 files):
Move role header out of generated part

This will allow us to add any methods / subs before the generated part.
13:36
[Coke] lizmat: ok. But the release scheduled for this week is on hold until that commit is reviewed. 13:47
The commit message also doesn't refer to a ticket in github or RT. I'll open one. 13:49
lizmat [Coke]: ah, I thought it was next weekend ? 13:50
ok, in that case, I'll take out strarray support out now
[Coke] RT: rt.perl.org/Ticket/Display.html?id=127736 13:55
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 ?
jnthn: the comment specifically says that it might not be allowable in 6.c
lizmat jnthn: because it is a new thing and it's not a method to an existing class ?
[Coke] which is a huge red flag since we haven't released anything that is not 6.c yet. 13:58
dalek kudo/repl6: 2d109c3 | hoelzro++ | src/ (2 files):
REPL6: Call teardown method on Perl6 REPL after interactive is done

This way, we can have custom behavior occur when a user is done with the REPL
kudo/repl6: 3bf02dd | hoelzro++ | src/core/REPL.pm:
REPL6: Add a history-file method to Perl6 REPL

This method will be used by mixed in roles to implement persistent history
rakudo/repl6: 0569cd5 | hoelzro++ | src/core/REPL.pm:
rakudo/repl6: REPL6: Call teardown-line-editor upon teardown
lizmat [Coke]: wrt to rt.perl.org question: I have no idea, I've never been able to login there :-( 13:59
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 ?
camelia ( no output )
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. ā¤Ā»
jnthn lizmat: That desugars to array.^parameterize(str) which is method-land
It's hugely unlikely anyone will have relied on that code failing to compile.
So it's very hard to see it as a backward-incompatible change.
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.
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. ;)
lizmat jnthn: that also implies I should be adding native str tests then ? 14:03
jnthn lizmat: To roast master, yes
lizmat ok, will do
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
lizmat okidok, seems like a plan then 14:04
jnthn :) 14:05
lizmat++ # native str arrays :) 14:06
14:16 Skarsnik joined
dalek kudo/nom: 57df3dd | lizmat++ | tools/build/makeNATIVE_ARRAY.pl6:
We only need @type, not @PRE

For code clarity purposes only, doesn't change anything in generated code.
14:16
14:17 gregf_ joined 14:18 gregf_ left 14:21 colomon_ joined
lizmat afk for a few hours& 14:40
[Coke] lizmat: ~~ 14:42
14:43 FROGGS joined
[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
Once you can login, I'll make you a p6 bug admin.
RT: 1285 tickets; WEIRD: 14; LTA: 126; GLR: 7; NOM: 7; JVM: 57; NYI: 88 14:55
perlpilot didn't even know there was a WEIRD category 14:57
timotimo i've looked at a few weird bugs so far, and they were ... usually pretty scary 14:58
[Coke] SEGV: 28 14:59
PERF: 1 15:00
jnthn Only 1 performance issue! \o/ ;)
nine Wow...so that's just one fix and we're fast? 15:01
Or is the ticket like "Rakudo is too slow"? ;)
jnthn "Speed up all the things!" :) 15:02
[Coke] I just changed a bunch of mem leak to also be perf. PERF: 7
PERF: 12 15:05
(added "leaks" and "OOM")
PRECOMP: 17 15:06
Someone should review the NYIs and reject them if they're never getting I. (like, the Matcher class, as a random example) 15:07
jnthn: I can probably also tag a bunch of stuff [UNI]ā€¦ 15:08
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
m: say 1/Int
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ā¤ā¤Ā»
jnthn [Coke]: Well, we could name them numerator and dominator instead to make it more clear 15:15
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
I think we hide a bit too much in the backtrace there.
[Coke] ok, so it's not just a doc it hurts.
fair enough. just looking for an easy win, which this ain't. :)
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:17
[Coke] rejects one ticket that should have gone to perl6/doc/issues on github, and we're down to 1284. 15:22
Skarsnik you can probably close rt.perl.org/Ticket/Display.html?id=126948 15:57
16:19 RabidGravy joined
[Coke] Skarsnik: it's a RFC; seems like a reasonable feature request. 16:31
Skarsnik I think it's done and the only change is like a coma instead of a . for the 1/x sec 16:33
17:08 FROGGS joined 18:15 colomon joined 20:55 AlexDaniel joined
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
from a performance point of view ?
timotimo: ^^^ any opinion ? 21:28
[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:33
[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
lizmat looks like it's 1% faster... close to noise 21:39
21:41 sortiz joined
timotimo interesting 21:47
lizmat multi method Bool(Mu:U: --> False) { }
multi method Bool(Mu:D: --> True) { }
seems to speed up things significantly better
timotimo cool :) 21:48
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
BBIAB, food 21:49
lizmat timotimo: do we even have postfix while loops in NQP ? 21:52
dalek kudo/nom: 24b4b23 | lizmat++ | src/core/Mu.pm:
Make Mu.Bool about 10x faster

  - remove | from proto sig
  - replace Mu: candidate with 2 candidates, :D for True, :U for False
22:07
psch nqp-m: my $x := 1; $x := $x + 1 while $x < 5
camelia ( no output )
psch nqp-m: my $x := 1; $x := $x + 1 while $x < 5; say($x) 22:09
camelia nqp-moarvm: OUTPUTĀ«5ā¤Ā»
lizmat psch: I guess that answers my question :-) 22:12
psch lizmat: fwiw, i usually assume that most wordy syntax features exist :) 22:13
as in, stuff like $++ probably doesn't, but statemods do 22:14
lizmat nqp-m: my $x := 1; $x := $x + 1 if $x < 5
camelia ( no output )
lizmat I could have sworn that there was no postfix if in nqp
timotimo: looking at Ops.nqp / p6sort, I wonder: why are we copying @input_data on entry, and then back on exit ? 22:23
why isn't @data := @input_data ?? 22:24
nine I've used postfix if in nqp today 22:27
At least I could swear I've done it :)
lizmat then I wonder: is there an efficiency reason for using postfix if if one can ? 22:29
or does the scope of a curly if without any local effects get optimised away anyway ? 22:30
nine I would hope the latter 22:31
In Perl 6 there doesn't seem to be a difference in performance 22:33
No difference in NQP either :) 22:36
timotimo lizmat: we're sorting the indices. that's not a good idea any more, i don't think 22:38
lizmat ah, ok... 22:39
well, I don't think it would be a good idea to start messing with this just before the release
timotimo though ... perhaps this is about not modifying the original array
oops, we're modifying @input_data 22:40
lizmat yes: but the question is, why not directly ?
timotimo i assume i copied that from parrot 22:41
or something?
github.com/rakudo/rakudo/commit/f9...71a2e3cdc5 - look, it's *really* old
really, the whole p6sort hasn't changed one bit since then 22:43
lizmat ok, I'll start playing with that tomorrow, when I'm less tired 22:44
but won't commit until after the release
timotimo awesome :) 22:45
22:52 colomon joined
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:52
which came a bit as a surprise to me 22:53
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 :-)
which also explains why we have a MMD on the .STORE :-) 22:55
so I'm not sure why we have all the MMD on .new :-)
dalek kudo/nom: f3c2692 | lizmat++ | / (2 files):
Remove leftover from previous opt experiment
22:57
timotimo i don't know :| 23:03
lizmat timotimo: I guess for the cases where people actually do "array[int].new(^10)" 23:05
timotimo ah, that'd make sense, yeah 23:06
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
and not their own method .Bool
[Coke]: (or anybody else) if you feel uncomfortable with that change, please revert it 23:18
timotimo i don't think the change is bad. i'd like to test its effect on that snippet we had 23:21
though what interests me even more is how we ended up calling it so darn often in the first place :)
i think we need a recursive search tool that you can more easily figure out where in the call graph tools are 23:22
or, alternatively, a reverse view in the routines list, where you can see all callees recursively
dalek kudo/nom: ab865e4 | ugexe++ | src/core/IO/Handle.pm:
Fix .slurp-rest(:!bin)
23:25
kudo/nom: e5fb01f | lizmat++ | src/core/IO/Handle.pm:
Merge pull request #727 from ugexe/patch-3

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)
lizmat is tired and calls it a day 23:26
good night, #perl6! &
timotimo good good :) 23:28
i'm glad you're vigilantly going through code all the time like this :) 23:29
dalek kudo/nom: 2e24124 | lizmat++ | src/core/Mu.pm:
Make MU:D.Bool match S02:4660, spotted by lucasb++

This undoes the 10x improvement mostly. Type objects.Bool still seems a bit faster than before now.
23:32
synopsebot6 Link: design.perl6.org/S02.html#line_4660
lizmat no rest for the wicked...
now really to bed&
timotimo gnite lizmat! 23:33
dalek kudo/nom: 4f7cb88 | timotimo++ | src/vm/moar/ops/perl6_ops.c:
moar will soon gain descriptions for permanent gc roots

with a simple little define we're preparing for the brave future, today!
timotimo i think the comparator could just be way unoptimized 23:54
i think it may be .Bool-ing the lhs and the rhs of the || 23:55
but that's only very few percent, i fear
oh, no 23:56
what i meant to say was: Bool is only 8% of Bool's time
but the other 92% are also in Bool, so it's fine