00:27
btyler joined
00:53
timotimo joined,
tokuhirom joined
01:00
FROGGS joined
01:03
FROGGS_ joined
01:47
ilbot3 joined
02:18
[Coke] joined
06:00
lizmat joined,
woolfy joined
07:41
brrt joined
|
|||
brrt | good moarning | 07:41 | |
.tell masak that moarvm actually does this, it's sp_6oget_ and sp_6obind_, and i've implemented the non-vivifying ones in JIT this week :-) | 07:50 | ||
(wrt to the 'hidden class' paper) | |||
or... isn't that what it's about? | 07:51 | ||
08:41
woolfy joined,
lizmat joined
08:51
lizmat_ joined
09:00
vendethiel joined
|
|||
jnthn | Hm, where on earth is dalek... | 11:45 | |
tadzik | stuck on the stairs? Or how did that joke go | 11:46 | |
jnthn | :P | ||
brrt | \o jnthn | 11:48 | |
jnthn | o/ brrt | 11:49 | |
brrt | how are things | ||
have you had to travel to norway yet? | |||
jnthn | Didn't shake off the cold yet | ||
No, I won't have to. | 11:50 | ||
So I'll be about plenty next week. | |||
brrt | :-) well, get well soon | ||
jnthn | Will probably take a couple of days of it to do Perl 6 things, in fact. :) | ||
brrt | very nice :-) | ||
jnthn | Got some meetings on Wednesday; otherwise, I'll be about here quite a lot. | ||
brrt renembers that he should blog, but has been to busy to do so in the last week or so | |||
that is good (for me :-)) | |||
hey, ehm, now that i've 'passed' my midterm evaluation, have you any advice for me on how to do better? | 11:51 | ||
there must be something i can improve :-) | |||
jnthn | Well, I wouldn't mind more atomic or descriptive commits... | 11:53 | |
97ff5e0d9e for example says it's about getlex, but also happens to add gethow/getwhat/null | 11:54 | ||
brrt | oh, ehm, yes, that is correct :-) | ||
quite frankly, i thought i had commited these before that | |||
i will take care of it :-) | |||
jnthn | Well, if you realize soon enough afterwards, rebase -i... :) | 11:55 | |
These days, my workflow leading up to a commit often ends up with a git add -p or a git commit -p, giving me a chance to review what I'm comitting and exclude any debugging bits. | 11:56 | ||
Not saying such a workflow works for everyone, but I've found it fairly helpful. | |||
As another example, I'd probably have done the refactor step in a12a3753f9e as a separate commit to the JIT additions. | 11:58 | ||
While I'm in review mode: | 11:59 | ||
github.com/MoarVM/MoarVM/commit/a1...ce5213R191 | |||
+ // NB: the next line is only legal because spesh stuff + // is zeroed before it is acquired | |||
Unfortunately, I suspect it's less than legal on big endian... | |||
brrt | hmmm | 12:00 | |
jnthn | Well, or maybe. | ||
I dunno. | |||
brrt | i dunno either | ||
:-) | |||
i should check that out | |||
jnthn | But the comment is taking up more chars than the conditional that would make the code robust. | ||
Which kinda says it all. :) | |||
brrt | yes, that is true | ||
:-) | |||
shame on my evil little endian hackery ways | 12:01 | ||
jnthn | Generally, it's better to write the code a bit more robust in the first place, because debugging such things later is always a real drag. | 12:02 | |
brrt | true | ||
jnthn | grmbl | 12:03 | |
.\nqp-m.bat --target=mbc --output=NQPP5QRegex.moarvm gen\moar\stage2\NQPP5QRegex.nqp | |||
Iteration past end of iterator | |||
jnthn wonders how OSR gets this wrong... | |||
FROGGS_ | o/ | 12:04 | |
brrt | \o FROGSS | 12:05 | |
in response to your question yesterday night, X bugs make me restart my laptop; also battery-conciousness | 12:06 | ||
jnthn | Ah...d'oh. It moves the deopt annotation onto a PHI... | 12:19 | |
And thus re-runs a shift instruction | |||
brrt is working on a blog post explaining the plans of next week | 12:27 | ||
see you in a bit | |||
FROGGS_ | X bugs... gladly don't have them since years now | 12:30 | |
timotimo | for some reason i don't understand (or maybe for no reason at all) my google-chrome tends to get rendering bugs after some time of use and it doesn't seem like restarting it fixes that | 13:40 | |
jnthn | Bad news: it appears I forgot to eat lunch. | 14:01 | |
Good news: osr now builds NQP and passes tests, also builds Rakudo and passes sanity tests. | 14:02 | ||
timotimo | oh wow! | 14:12 | |
14:25
woolfy joined,
lizmat joined
|
|||
jnthn | Seems to be doing about the right thing. | 14:26 | |
timotimo | does it kick in often? :) | ||
jnthn | Not that often | 14:27 | |
But in benchmarks with outer loops, yes, it seems to | |||
lemme try some rough timings | |||
perl6-m --optimize=3 -e "my $i = 0; while (++$i <= 5000000) { }" | 14:28 | ||
No spesh at all: 6.37s | |||
Spesh with OSR disabled: 6.07s | |||
Spesh with OSR: 4.55s | |||
timotimo | oh, not bad! | 14:29 | |
in nqp-land, that loop should also be jitted, eh? | 14:30 | ||
jnthn | I'd guess so | ||
14:30
woolfy joined
|
|||
jnthn | Note that inline isn't yet up to nailing the ++ and <= there | 14:30 | |
timotimo | in perl6 land, inline nails almost nothing :) | 14:31 | |
14:32
vendethiel joined
|
|||
jnthn | Right. | 14:33 | |
That's one of the next things on my todo list :) | |||
Anyway, spectest runnign while I go shopping | 14:37 | ||
vendethiel | .oO( that shop must really be nearby ) |
14:39 | |
timotimo | :D | 14:40 | |
i remmeber the times when that wasn't the case | 14:41 | ||
vendethiel doesn't, and is happy to have started looking into perl 6 just now, cause he can (and does) play with tons of stuff already | 14:50 | ||
timotimo | hah | 14:51 | |
i'm also glad i've joined the community right as very exciting things started happening | |||
vendethiel | sorryfor not suffering along with you guys :P. I get to only eat the cake, not bake it | ||
timotimo | :) | 14:53 | |
vendethiel | .oO( well, I'll get back to writing the recipe now ) |
14:54 | |
timotimo | the recipe as in "how it was baked" or the recipe as in "how to bake the next one"? :) | ||
vendethiel | the best one : how to eat it :D. | 14:55 | |
Well, the most important one I'd say :). | |||
timotimo | aye, that's a good one :) | ||
i've been meaning to write a turtle graphics style module and build a tutorial for p6 on top of it | 14:56 | ||
now that we have a gtk3 binding, that isn't going to be terrifyingly hard any more | |||
15:29
JimmyZ joined
|
|||
jnthn | le spectests look good, and we're miles from a release, so I'm going for the merge | 15:30 | |
JimmyZ | jnthn++ :) | ||
jnthn | Done Moar and NQP merges :) | 15:33 | |
dalek, dalek, where art thou... | |||
JimmyZ | she is tired :P | 15:35 | |
timotimo | sweet! | 15:52 | |
16:04
zakharyas joined
16:52
carlin_ joined
|
|||
jnthn | timotimo: Remember the busted isconcrete optimization we disabled? Turns out it had a really silly bug :) | 16:59 | |
I'm spectesting with it fixed and turned on now. | |||
But Spesh + OSR + that working (which in turn kills off the whole bindassert thing, thus why it's a win) gets us down to 4.11s. | 17:00 | ||
timotimo | oh wow | 17:01 | |
that's a nice win! | |||
benchmarks are going to look much better now :3 | |||
jnthn | Well, the bindassert thing not being optimized away is a inline killer. | ||
timotimo | i don't even recall what bindassert does :) | ||
jnthn | It's the thing that causes us to re-run binding with the slow-path binder to generate a good error message in the case we fail to bind the lowered signature. | 17:02 | |
timotimo | ah | 17:06 | |
17:29
carlin joined
|
|||
japhb | jnthn: The way that src/io/syncsocket.c does socket_connect, will a connect failure result in a leak sometimes, because on the local error path socket, connect, and dest are all freed, but in the on_connect error path, only req (== connect, I think) is freed? Or am I misunderstanding the control flow? | 17:58 | |
jnthn | japhb: Yeah, and I'm not convinced that throw inside of on_connect is the robustest thing either... | 18:08 | |
japhb | Given that the status seems to be passed back anyway, should on_connect even *have* an error path? | 18:09 | |
jnthn | japhb: Well, it's the uv_run(tc->loop, UV_RUN_DEFAULT); that leads to the code path that eventually calls on_connect | 18:10 | |
japhb | Oh, hmmm. | 18:11 | |
jnthn | japhb: libuv wants the socket world to be async, Rakudo needs us to provide sync sockets as well, so we basically re-create sync sockets atop of async ones | 18:12 | |
Though, hardware does I/O async anyway, so all sync IO is some kind of illusion I guess. :) | |||
japhb | Nodnod | 18:13 | |
TimToady | I had a lot of flakiness getting the Event entry on RC not to segfault, just trying to use DateTime instead of now | 18:20 | |
and it's otherwise a real simple entry | |||
jnthn | timotimo: link? | 18:23 | |
oops | |||
TimToady: link? | |||
TimToady | rosettacode.org/wiki/Events#Perl_6 | 18:24 | |
especially adding another log line after the Channel.new (that also uses DateTime instead of now) | 18:25 | ||
it seemed somewhat race-conditiony, insofar that it varied in how it dumped, but it usually failed for me | 18:26 | ||
I think I was using DateTime.now, iirc | 18:27 | ||
but maybe DateTime.Str | |||
er, .now.Str | |||
or some such | |||
TimToady is guessing refering to something not threadsafe both inside and outside the start | 18:28 | ||
*ferring | |||
hmm, that doesn't look right either :) | |||
jnthn | OK, thanks. Planning to use Monday to look over a bunch of the async/threading robustness things. | 18:33 | |
TimToady | I'll put up a gist that crashes here | 18:35 | |
gist.github.com/anonymous/8f407afdb8cccc1ed09c | 18:36 | ||
putting an extra log line after the Channel.new makes it work again here | 18:37 | ||
'course it could be something completely un-event-ful | |||
or something only fails on Linux... | 18:38 | ||
18:53
carlin joined
|
|||
timotimo | o/ | 19:04 | |
jnthn back | 19:16 | ||
TimToady: Thanks for the gist. | |||
19:33
LLamaRider joined
|
|||
timotimo | i miss dalek | 19:59 | |
jnthn | Same | ||
jnthn doesn't know where dalek runs or who has admin...maybe ask on #perl6... | 20:00 | ||
timotimo | i'll be interested in seeing how the jit benefits from OSR soon | 20:11 | |
jnthn | Meanwhile, I got extop inline stuff working enough to try that benchmark from earlier out. | 20:42 | |
After the various scalar optimizations from earlier, it stood at around 3.77s. With inlining it's down to 3.02s. | 20:44 | ||
20:58
LLamaRider joined
|
|||
jnthn | bah, with the extops inline improvements it manages to regress precisely one spectest...by SEGVing it. | 21:00 | |
Ah, was a more general issue, uncovered by OSR, but actually dating back to frame handling changes done during inlining. | 21:32 | ||
TimToady | well that's alright then; I prefer it when things are generally bad... | 21:37 | |
jnthn | Seems it's generally gooder now. :) | 21:38 | |
jnthn fires off spectest again. | |||
timotimo | i got distracted, but the benchmark results are in, just have to render the .html now | 21:51 | |
jnthn | Yeah | 21:52 | |
Turns out that my machine was loaded down when I posted previous post-inline time | 21:53 | ||
Now consistently getting it at like 2.7s or so | |||
timotimo | actually, i should run the 2014.06 things again | 21:54 | |
because otherwise the newer benchmarks would be missin | |||
jnthn | I just pushed inlining of extops. | 21:56 | |
timotimo | oh, m | ||
did you bump the versions? | |||
jnthn | Not yet. | ||
timotimo | can you tell how often we bail out due to extops when we're doing perl6 code rather than nqp? | ||
i think perl6 code ends up having lots and lots of extops, as all rakudo ops are implemented as extops, eh? | 21:57 | ||
or was this just about having different sets of extops on both sides of the inlining barrier? | |||
jnthn | No, it bailed as soon as it saw an extop | ||
And they're, like, all over | |||
Even infix:<+> used one | |||
Well, uses... | |||
timotimo | ah, wow. | 21:59 | |
in that case, it should make almost no difference between 2014.06 and OSR-before-extop-inlining, but a bigger one between the latter and the most current one | 22:00 | ||
i suppose i'll just ignore the timings i made earlier | |||
would be glad if you could push a version bump in the next ~half hour | 22:01 | ||
hm, but i can --gen-moar=master --gen-nqp=master in rakudo's configure.pl, can't i? | 22:02 | ||
jnthn | timotimo: pushed the version bumps | 22:06 | |
timotimo | thank you :) | 22:07 | |
jnthn | We're gradually closing the native gap, but there's work to go yet | 22:14 | |
my int $i = 0; while (($i = $i + 1) <= 100000000) {} | |||
2.64s | 22:15 | ||
my $i = 0; while (++$i <= 100000000) { } | |||
27.82s | |||
wait | |||
47.82s | |||
m: say 47.82 / 2.64 | 22:16 | ||
camelia | rakudo-moar 8de0fd: OUTPUT«18.113636» | ||
jnthn | Quite a factor still. | ||
As a yardstick, in Perl 5 | |||
my $i = 0; while (++$i <= 100000000) { } | |||
Takes 3.82s | |||
Or 3.73 with use integer | |||
timotimo | wait, that's not nqp | 22:17 | |
jnthn | m: say 3.73 / 2.64 | ||
camelia | rakudo-moar 8de0fd: OUTPUT«1.412879» | ||
jnthn | This is all Rakudo | ||
timotimo | neato! | ||
jnthn | So, we've 1.4 times faster than Perl 5 on my box if you use native types typere. | ||
*there | |||
m: say 47.82 / 3.82 | |||
camelia | rakudo-moar 8de0fd: OUTPUT«12.518325» | ||
jnthn | But the code you'll naively right is 12.5 times faster in Perl 5 still. | 22:18 | |
uh, write | |||
TimToady | so now it's just a smop to beat p5 :) | ||
jnthn | Well, it's interesting to ponder the path to get there. | ||
In part, I there are code-gen improvements to be had. | 22:19 | ||
*there are | |||
There's JIT to take out the interp overhead. | |||
timotimo | huh. rc-self-describing-numbers seems to hang? | ||
i don't think perl6-bench has anything for infinilooping benchmarks | |||
oh, i was wrong | 22:20 | ||
it did finish | |||
jnthn | But none of these deal with the more fundemental issue that ++$i in Perl 5 doesn't have to allocate | ||
TimToady | presumably we have enough type info to determine that integers below maxint don't *really* need to call .succ | ||
jnthn | While in Perl 6 it's allocating an Int each time. | ||
TimToady: It doesn't actually call .succ at all | |||
TimToady | *whew* | 22:21 | |
jnthn | TimToady: The bounds check is also a drop in the ocean at this point. | ||
TimToady | we oughta be able to figure out that it can use the same Int | ||
timotimo | so the allocation of the Int is harder; can we sp_fastcreate it at least? | ||
TimToady: sounds like something escape analysis could enable | |||
TimToady | er, int container anyway | ||
jnthn | TimToady: Yes, that's escape analysis. It's quite hard. | 22:22 | |
But yes, that and the JITter are our sources of big improvements on this from here. | |||
TimToady is very happy to see the progress we've *cough* you've been making | 22:23 | ||
language designers who wave their hands and say "with a good enough optimizer" are either geniuses or idiots, depending on who is helping them :) | 22:24 | ||
TimToady feels like a genius today :) | 22:25 | ||
22:25
colomon_ joined
|
|||
timotimo | %) | 22:29 | |
jnthn | timotimo: How long until pretty graphs? ;) | 22:33 | |
timotimo | 15 minutes perhaps? | ||
building the very newest nqp and rakudo right now | |||
perl5, rakudo/nqp and 2014.06 are build | |||
and timed, of course | 22:34 | ||
jnthn | cool | 22:35 | |
jnthn is running "my $i = 0; while (++$i <= 100000000) { }" on R* (Rakudo Parrot) from 2014.03, which was conveniently available in an MSI | 22:36 | ||
Just to get a feel for the progress | |||
timotimo | i'd like to know, too :) | ||
jnthn | It's taking a while... | 22:39 | |
timotimo | oh, yikes | ||
but while loops themselves weren't optimized recently, were they? | |||
jnthn | Rakudo's optimizer learned to take a lot of the cruft out of the basic ops | ||
timotimo | OK | 22:40 | |
jnthn | Loop code-gen did improve for Moar in the last few months too | ||
timotimo | fair enough | ||
jnthn | But some of the opts were Rakduo optimizer level and influence all backends. | ||
timotimo | i like those :) | 22:41 | |
did you notice something being off with stage parse? | 22:44 | ||
it seems to be taking quite a lot longer than i'm used to | 22:45 | ||
jnthn | It's looked fairly normal to me | ||
timotimo | well, the ssh connection aint dead | ||
jnthn checks his most recent build | 22:46 | ||
Yeah... | |||
It's seen it lower, but I think more stuffs ended up in the setting. | |||
timotimo | well, this has been going for more than a minute now | 22:47 | |
it's apparently also not consuming any cpu time ... ?! | |||
jnthn | o.O | ||
22:47
tgt joined
|
|||
timotimo is retrying | 22:48 | ||
jnthn | I just wonder... | ||
oh you're kidding | |||
jnthn-- | |||
I think it'll have deadlocked on itself. | |||
timotimo | oops :( | ||
jnthn | Yeah, braindead copy pasto on my part. Sorry. | 22:49 | |
timotimo | oke :) | ||
jnthn | oh, the Parrot run finished | ||
1246.44s | |||
timotimo | here we lock, afterwards we lock. should work, right? | ||
jnthn | On windows, mutexes are reenterant natively so I didn't notice the issue. pthreads ones ain't. | ||
timotimo | ouch :) | ||
yes | |||
FFTF | |||
jnthn | Pushed fix | 22:50 | |
will bump | |||
timotimo | thanks | ||
jnthn | otherwise everybody has a borked HEAD | ||
thanks for reporting | |||
timotimo | YW of course :) | 22:51 | |
jnthn | Pushed version bumps to NQP and Rakudo now. | 22:52 | |
timotimo: BTW, there are two new envvars you may like to know about | |||
timotimo | i saw them :) | ||
jnthn | OK, cool | ||
timotimo | cool indeed | ||
f1fd505 ← a cute commit short-id | 22:53 | ||
jnthn | SOS indeed :P | ||
m: say 1246.44 / 47.82 | 22:56 | ||
camelia | rakudo-moar 8de0fd: OUTPUT«26.065245» | ||
22:56
LLamaRider joined
|
|||
timotimo | i'm in the benchmarks section now | 22:59 | |
oh, wow. | |||
23:00
raiph joined
|
|||
[Coke] | src/core/interp.c:4187:17: warning: implicit declaration of function 'MVM_io_eventloop_cancel_work' is invalid in C99 | 23:18 | |
timotimo | huh. | 23:19 | |
jnthn | hmm | ||
[Coke]: ah, I see the prob... | 23:20 | ||
[Coke]: Patched, thanks. | 23:21 | ||
[Coke] | jnthn: I will continue to post random moarvm build warnings as they happen to scroll by in future builds, then. :) | 23:26 | |
jnthn | [Coke]: Well, they may not all be that easy. But that one was. :) | 23:30 |