|
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 | |