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 |