Geth | rakudo/nom: 5d200f1e52 | (Jonathan Worthington)++ | src/core/Supply.pm Avoid a Failure in the `supply` implementation. Those end up taking a backtrace, which is rather expensive. This should decrease the cost of Supply block teardown a good bit. |
00:40 | |
jnthn | Oops, what time? | ||
'night! | |||
Zoffix | night | 00:48 | |
ZofBot: it's hammer time! | |||
ZofBot | Zoffix, map({ sprintf($format, $_) }) | ||
[Tux] | This is Rakudo version 2017.07-129-g5d200f1e5 built on MoarVM version 2017.07-293-g3f33a841 | 06:29 | |
csv-ip5xs 2.541 | |||
test 12.261 | |||
test-t 4.184 - 4.594 | |||
csv-parser 13.421 | |||
lizmat | Files=1217, Tests=67414, 259 wallclock secs (13.93 usr 5.46 sys + 1689.04 cusr 170.50 csys = 1878.93 CPU) | 07:39 | |
m: use nqp; my $b := nqp::create(IterationBuffer); $b.push(Empty); dd $b # sigh :-( | 17:16 | ||
camelia | (Empty,)? | ||
lizmat | m: my %h = :42a; dd %h<b>:delete:exists:p # pretty sure that should be Nil | 17:33 | |
camelia | ()? | ||
lizmat | or at least :!b | 17:34 | |
Does anybody see any problem with object hashes inheriting from QuantHash, rather than from Map? | 17:56 | ||
an object hash could be seen as a further extension of a Mix, namely allowing for all possible values, rather than Reals | 17:57 | ||
fwiw, object hashes are much more like QuantHashes internally, because the keys are always .WHICH strings | |||
japhb | lizmat: Is this sufficiently complete to capture the current Associative type graph, or is there more this isn't showing? docs.perl6.org/type/QuantHash | 18:23 | |
I admit to having gotten very, very confused about all the Associative types we have. | |||
[Coke] | note that the type maps have to be updated manually every so often (and they haven't been in a while) | 18:24 | |
japhb | [Coke]: Ah, I take it no one got around to doing something better than the big typemap file ... | 18:28 | |
.oO( Temporary hacks aren't. ) |
|||
lizmat | the thing is that everytime I have a Map:D candidate, I need to check for object hashness | 18:31 | |
Zoffix | NeuralAnomaly: status | 18:34 | |
NeuralAnomaly | Zoffix, [?] Next release will be in 1 day and 2 weeks. Since last release, there are 30 new still-open tickets (12 unreviewed and 0 blockers) and 133 unreviewed commits. See perl6.fail/release/stats for details | 18:35 | |
jnthn | lizmat: I thought the candidates for that were mixed in, thus overriding the various Map methods? | 18:38 | |
Or at least, the ones that need to differ | 18:39 | ||
lizmat | well, there's things like postcircumfix that could use an optimization | 18:40 | |
but now can't as we need to check for object hashness for a Map:D candidate | |||
anything that takes a hash as a parameter, can not be easily optimized without needing that runtime check | 18:41 | ||
jnthn | Huh, postcircumfix should really just be calling the .AT-KEY and friends? | ||
lizmat | well, I have a benchmark where I could make %h<a> about 6x faster | ||
but one loses the whole opt because of the extra object hashness test | 18:42 | ||
jnthn | So...if you don't let polymorphism do the job, and just write the check that it would do anyway, then you come out equal? :-) | 18:43 | |
lizmat | well, the test is now the rather expensive: nqp::eqaddr(map.keyof,Str(Any)) | 18:44 | |
jnthn | Right, which is a method call, and so is .AT-KEY | 18:45 | |
lizmat | note: this is not about methods in objects hash, this is about subs / methods taking hashes | ||
jnthn | Yeah, but I thought postcircumfix were meant to work in terms of calling methods | ||
If they're poking into the internals of certain types then I'm a bit concerned | 18:46 | ||
lizmat | not sure how they are *meant* to work, but yeah, let polymorphism handle the method calls | ||
but that's not to stop one from adding optimized candidates, no? | 18:48 | ||
postcircumfix candidates I mean | |||
jnthn | I guess it's allowable, but if they have to have extra checks in there then I'm not sure it's going to come out better | ||
What we really want is inlining | |||
lizmat | which is exactly my point | ||
jnthn | That needs small candidates. | ||
lizmat | I can't create a Map:D candidate, because then I need the expensive nqp::eqaddr(map.keyof,Str(Any)) check | 18:49 | |
jnthn | Uh, I want *spesh* to do the inlining. Not you. :P | ||
Method calls are relatively easy to deal with. | 18:50 | ||
Optimizing away other checks less so | |||
lizmat | ideally: sub postcircumfix<{ }>(Map:D \SELF, Str:D \key) { nqp::atkey(nqp::getattr(SELF,Map,'$!storage'),key) } | ||
jnthn | Except it can't be that because auto-viv :) | 18:51 | |
lizmat | yeah, so it needs an ifnull around it | ||
and that would create the container | |||
jnthn | The typed thing is just a sign of a larger issue though | ||
What if somebody writes a subclass of Map or Hash? | |||
We must call their AT-KEY | 18:52 | ||
That's partly why the thing is factored with the mixin: we have to support user subclasses too, so may as well use the same mechanism we already need to support. | 18:53 | ||
lizmat | hmmm... | 18:54 | |
jnthn | But my point is that - especially with the changes I've been doing now - we shouldn't have to worry about this kind of manual inlining for performance | ||
lizmat | ok, that's good to hear... shall I bump versions ? | 18:55 | |
:-) | |||
jnthn | spesh should be able to do that for us, and it can do multi-level, so it maybe can even avoid even the two calls | ||
You can. I didn't yet do the thing where it spots the final parameter is variant but the other two aren't though. | |||
But being able to do postcircumfixes and AT-KEY and AT-POS inlining better was one of the motivations for re-designing the way we log and analyze the data. | 18:56 | ||
lizmat | ok, then I'll take of my hands there :-) | ||
hmmm... what was the way to get the commits that are brought in again? | 18:57 | ||
jnthn | Aside from bumping and seeing what the bot says? :) | 18:58 | |
lizmat | the bot doesn't put it in the commit message | ||
Zoffix | bump version in the file; git diff the repo (it'll show you two commits); go back to the repo from which commits are from; type git log --oneline first_sha ... second_sha | 18:59 | |
jnthn | But in MoarVM just git fetch ; git log --oneline <the git describe output>..origin/master | ||
Zoffix keeps meaning to make a single-command alias for that -_- | |||
or better yet, make the bot bumps tuff :) | |||
jnthn | (where git describe output is what's in MOAR_REVISION before you bump) | ||
Geth | nqp: 82d06ccf35 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION Bump MAOR_REVISION This gets the following commits: 604da4d Merge pull request #624 from MasterDuke17/patch-2 d195198 Fix spelling in comments 8325f01 Better no-arg and no-object-arg callsite handling. 8153063 Bump spesh stats version on updates. ... (20 more lines) |
19:00 | |
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...8-g604da4d | |||
rakudo/nom: 8bed4a67b4 | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION Bump NQP_VERSION Getting all of the new spesh goodies,specifically from Moar: 604da4d Merge pull request #624 from MasterDuke17/patch-2 d195198 Fix spelling in comments 8325f01 Better no-arg and no-object-arg callsite handling. 8153063 Bump spesh stats version on updates. ... (21 more lines) |
19:11 | ||
Ā¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....9-g82d06cc | |||
dogbert2 | oh, a new MAOR_REVISION :) | 19:12 | |
lizmat | yeah... even MAOR bettar | ||
good change test-t is now below 4 seconds | 19:13 | ||
*chance | |||
[Tux] ?? :-) | 19:14 | ||
jnthn | Would make me happy if so :) | ||
dogbert2 | maor improvements :) | ||
lizmat | down from 3.591 to 3.173 on my machine | 19:15 | |
jnthn | m: say 3.173 / 3.591 | 19:16 | |
camelia | 0.883598? | ||
jnthn | Wow, not bad | ||
Zoffix | :o | 19:17 | |
AlexDaniel | :o | ||
timotimo | :o | ||
lizmat | also, that's without the "has foo is default()" fix | 19:18 | |
Zoffix | :O | ||
lizmat | as that broke people with R* | ||
jnthn: feels like bare startup is now a lot lower as well | 19:25 | ||
jnthn | lizmat: Hmm, interesting | ||
Though in a way that's expected somewhat | |||
lizmat | it's been a while since I've seen '0.102' :-) | ||
jnthn | In that all spesh work is done on a background thread. | 19:26 | |
So the main one can get one with starting up :) | |||
Oh, also, I taught it not to enable spesh at all until various load-time stuff was done | |||
So it doesn't even log for those instructions | |||
But those things were there for a while, not just in the latest bump | 19:27 | ||
lizmat | ah, ok | ||
jnthn | But yeah, I was hoping that not blocking up the starting up thread with spesh work would help startup time :) | ||
lizmat just realised that this week's Perl 6 Weekly was the 100th P6W she'd written | 19:29 | ||
jnthn | lizmat++ | 19:30 | |
wow :) | |||
dogbert2 | jnthn: what changes do you have in store for next week? | 19:31 | |
timotimo | whoa, i didn't even know there's a "logging inhibitor" in there | 19:33 | |
dogbert2 | hmm, the doc for subbuf-rw looks slighly duplicated: docs.perl6.org/type/Buf | 19:47 | |
Zoffix | yeah :) | 19:49 | |
Zoffix & | 19:50 | ||
[Coke] | lizmat++ P6W - those are super helpful for getting the word out | ||
japhb | lizmat++ # P6W is also super-helpful for semi-regulars like myself | 20:00 | |
japhb wonders what the equivalent of the White Camel Award is for the Perl 6 community | 20:01 | ||
timotimo | "brilliant butterfly" | ||
brrt | lizmat++ indeed | 20:02 | |
zostay | lizmat++ i read it every week, especially the summaries of new fixes and features | ||
japhb | timotimo: I like that name | 20:03 | |
Geth | rakudo: dwarring++ created pull request #1129: Fix comment |
20:07 | |
rakudo/nom: 412c576bd9 | (David Warring)++ (committed using GitHub Web editor) | src/core/List.pm Fix comment |
20:15 | ||
rakudo/nom: abf1cfe722 | (Jonathan Worthington)++ (committed using GitHub Web editor) | src/core/List.pm Merge pull request #1129 from dwarring/patch-3 Fix comment |
|||
jnthn | dogbert2: Next week I'll see if I can get us able to do fastinvoke/inline on code object-y things, and then try and make a few things in the spesh graph more precise so we can produce better code | 20:30 | |
timotimo | japhb: i might want to run spectests on this :) | 20:36 | |
wait | 20:37 | ||
derp. | |||
AlexDaniel | lizmat++ yes! I've been reading p6weekly for months before I started using perlĀ 6, and it was probably the main thing that kept my interest | 20:45 | |
timotimo++ too :) | 20:46 | ||
japhb | Hmmm, appears p6doc depends on IO::String, and IO::String has a bunch of suspicious failures in its tests. (Suspicious as in "gets totally the wrong answer", not as in crashing.) | 20:50 | |
Hopefully this isn't a regression from the most recent bumps | |||
timotimo | AlexDaniel: but only a little bit :) | 21:04 | |
wordpress is still making people tweet out my twitter username when they share the stories on p6weekly and i'm not sure how to change that? | |||
lizmat | timotimo: that's for the better, because I don't have a twitter username :-) | 21:06 | |
japhb | Rebuild at 8bed4a67b4^ is about to hit IO::String ... drumroll ... | 21:09 | |
Nope, that exploded too. | 21:11 | ||
Trying again behind the next previous NQP bump | 21:13 | ||
mspo | so I have a 50% working version of my perl6.c replacement for the shell script working on the build | 21:22 | |
but I can't seem to get all of the libpaths | |||
also I just stuck it into a varaible inside of create-moar-runner.pl, where I do a $crunner.sprintf(@libpaths, $moar), basically | 21:23 | ||
is there a better way? :) | |||
lizmat | japhb: if it's ok before the last NQP bump, jnthn would like to know :-) | 21:29 | |
japhb | lizmat: I've yet to find a good one. Broken at HEAD, broken in the same way (IO::String tests completely wrong) just before today's bump, broken in a different way (JSON::Marshal aborts tests) just before the previous bump. | 21:38 | |
It looks like the yet previous bump was 3 times in quick succession 5 days ago; trying right before the earliest of those. | 21:41 | ||
Gah, 51e59eeb5 fails also. JSON::Marshal succeeds, IO::String succeeds, NativeHelpers::Blob breaks (aborted tests). | 22:02 | ||
How's a person supposed to find a working build to even start a bisect?! *grumble* | |||
Mind you, not one of those is actually a package I want directly; they're all dependencies of the modules I actually need. | 22:03 | ||
lizmat | japhb: so, is it broken on 2017.07 as well ? | 22:04 | |
japhb | lizmat: Give me a few minutes, and I'll do a full rebuild there | ||
AlexDaniel | \o/ | 22:09 | |
yoleaux: I missed you so much! | |||
lizmat | japhb: sorry, calling it a night | 22:12 | |
japhb | lizmat: I'll .tell you when it's ready | 22:13 | |
Good night! | |||
.tell lizmat Everything works and installs with no test problems on 2017.07 | 22:24 | ||
yoleaux | japhb: I'll pass your message to lizmat. | ||
japhb | .tell lizmat In case you want to replicate: I rebuild rakudo from fresh checkouts of all rakudo/nqp/moar, install panda and zef, then run: zef --/tap-harness --/cached install URI File::Temp p6doc Terminal::ANSIColor Term::termios Debugger::UI::CommandLine JSON::Tiny DBIish Linenoise Inline::Perl5 Inline::Python IRC::Client oo-monitors Grammar::Debugger App::Mi6 HTTP::UserAgent | 22:27 | |
yoleaux | japhb: I'll pass your message to lizmat. | ||
Zoffix | lizmat++ # P6W are super useful | 22:46 | |
[Tux] | lizmat, testing would be useless: smokes of perl5 are talking all resources. we'll see tomorrow | 22:55 |