timotimo well, the moarvm.org roadmap says that 2014.08 will see jit compilation as well as further async IO work and turning exception handlers into simple gotos during inlining 00:00
carlin yay, exciting times 00:08
01:22 FROGGS_ joined 05:28 lizmat joined 05:37 lizmat_ joined 08:24 FROGGS[mobile] joined 09:29 brrt joined
brrt \o 09:29
it's so much too hot here 09:30
taking the nursery size down to 4096 makes moar much slower :-) 09:34
FROGGS[mobile] hehe, of course :o) 09:50
brrt but, it doesn't crash 09:54
so that kind of goes against my 'it crashes because of GC issues' theory
FROGGS_ yeah, seems like not being gc related... 10:16
brrt that.. is kind of reason for unhappiness 10:32
FROGGS_ I mean, we are just guessing 10:33
brrt i know 10:34
:-)
11:49 cognominal joined
brrt afk 11:58
11:58 brrt left 12:20 cognominal joined 12:39 jnap joined 14:34 colomon joined
dalek arVM: 1f4ae9d | (Tobias Leich)++ | src/6model/reprs/NFA. (2 files):
add charrange handling to the NFA

This wont be used as long as nqp does not use $EDGE_CHARRANGE, so this patch on its own should not break anything.
14:39
timotimo there is a project called "tomsfastmath" that apparently implements most of the stuff libtommath has with a mostly similar API 15:38
may be interesting to have a look at that at some point
FROGGS_ ohh true
timotimo i don't think we have big integer benchmarks yet? 15:39
FROGGS_ btw, I'd like to make a charrange benhmark
japhb__ timotimo: Interestingly, the rat_harmonic benchmark uses big integers ... inside the big rationals. 15:42
timotimo japhb__: moarvm has a trick where Int objects that fit into 16 bit will be calculated with regular 32bit integers 15:44
it'd be interesting to see if that gives a noticable corner in the performance graph
japhb__ timotimo: I think harmonic goes to big denominators so fast you wouldn't be able to see it. 15:47
timotimo ah, ok 15:48
in that case it might be interesting to have a benchmark that will stay in the 16 bit numbers range for a bit and when you up the scale enough enters the really big integer range
japhb__ rat_mul_div_cancel keeps the denominator at n+1, so you might be able to see it there. 15:49
Problem is, I don't force FatRat (because it can fit in a standard 64-bit-denom Rat, and that's a design feature of Perl 6, so I allow it) 15:50
timotimo it doesn't go high enough before the time runs out :)
at least in the benchmark run jnthn has here
i'm still astounded we're so much faster than perl5 at rationals (i guess Fat Rats?) 15:51
japhb__ I think this is one of the advantages of big ints and overloaded ops being core to the language, and optimized for. In perl5, BigInt is an object with overloading, and that invokes a lot of slow paths. 15:52
timotimo interesting 15:55
and that can't be optimized out?
japhb In perl5?
15:56 zakharyas joined
timotimo yeah 15:58
japhb If that's what you meant, then I should say that perl5 has a *really* simple optimizer compared to the ones already in the rakudo-moar stack. It has a peephole optimizer for turning multiple ops that perform a single function into a single op that performs that function with less overhead, and I think there are a few more minor things. But there's certainly no spesh, no proofs, no escape analysis
timotimo oh, that's interesting!
i thought perl5 had some pretty awesome performance 15:59
japhb nwc10++ can of course correct me if my info is out of date -- I haven't paid much attention to the perl5 core since 5.10 or so.
timotimo it seems like it'll be a breeze overtaking perl5 in performance :P
japhb timotimo: Well ... perl5's ops have been optimized over decades, so even though it never left the peephole-optimized optree interpreter paradigm, it's damn good at that. 16:00
And its type system is way more narrow, so it gets some speed from being able to assume a lot about the input types ... actually, to be more accurate, it doesn't need to pessimize as much. 16:01
timotimo ah, ok
we're pessimizing lots and lots of things still
japhb There was a story that was old a decade ago that many people had tried to further optimize Ilya's highly-tuned regex engine, and to a person they had all failed. I wonder if anyone ever bested him .... 16:02
timotimo jnthn has rightfully complained of the missing communication channels to make lazyness less bad
japhb Yes, that one is killing us, methinks. 16:03
timotimo not only that
but it shows up in lots and lots of places
japhb nodnodndo 16:04
FROGGS_ I think it was the other way around... eagerness is often slow because of potential lazy lists
timotimo er
that's what i meant; i'm distracted :)
FROGGS_ timotimo: does it take much effort to setup p6bench? 16:05
japhb FROGGS_: I interpreted timotimo's comment as "make [supporting] lazyness less bad"
FROGGS_ ahh, yeah
timotimo very little effort
FROGGS_ that might need pmichaud++'s input
japhb FROGGS_: I just added a `bench quickstart` for the truly lazy. :-) 16:06
FROGGS_ okay, will set it up and add charrange benchmarks
timotimo yes, i'm looking forward to when pm shows off his work :)
japhb It will go all the way from setup to comparing historical benchmarks for perl5, nqp-moar, and rakudo-moar.
FROGGS_ japhb: what is the repo url ooc? 16:07
japhb (Though it's not fully tested, because I didn't have the tuits earlier this week)
github.com/japhb/perl6-bench.git
FROGGS_ thanks
japhb no
problem
.oO( except my over-eager enter key )
FROGGS_: As a side note, `bench quickstart` is mostly implemented as calling the other MAIN variants, so the code reads a lot like "the commands people would normally run manually, just wrapped up into one for convenience" 16:09
FROGGS_ nice 16:10
timotimo i wonder at what point we should remove some of the microbenchmarks at the very top? 16:11
japhb FROGGS_: You'll want to add one-liner benchmarks to microbenchmarks.pl and file-sized benchmarks to minibenchmarks.pl with files in perl5/, nqp/, and perl6/. The .pl files are written in perl5 code, as they are loaded by timeall, which is written in perl5. 16:12
timotimo: You mean the non-scaling ones?
FROGGS_ k
16:12 lizmat joined
timotimo non-scaling? you mean the ones that just run more iterations? 16:12
japhb timotimo: No, the ones like 'empty', 'zero', and 'hello' that mostly just look for overhead. 16:13
timotimo oh, hm
japhb (and don't iterate at all)
I'm just trying to understand what you meant by "microbenchmarks at the very top" 16:14
timotimo ah
i just meant from the "bunch at the top"
japhb 'zero' and 'hello' are variants to check for specific startup issues that we used to have, while 'empty' is actually required for the proper functioning of timeall (it is used as the "absolute base startup time" reference) 16:15
timotimo mhm
japhb My feeling is that over time we will come up with a set of benchmarks that we consider to be our standard set, we tag them as such, and then just use those for our main benchmarking runs (and I'll canonize that tag in quickstart as well) 16:16
timotimo that sounds good 16:17
FROGGS_ japhb: so bench quickstart will not build parrot stuff? 16:18
japhb FROGGS_: Nah, because when I wrote it I was focused on 2014-era changes. But it's new code, it's not like we can't change that choice. :-)
FROGGS_ japhb: no I mean that's fine :o) 16:19
japhb I didn't want to include jvm by default, for example, because the slow benchmarking runs would drive people to distraction
And I left parrot out because ... meh. 16:20
FROGGS_ my changes affect perl6-p and perl6-j also, but I expect that they behave equalish
for example I wanna see how big a char range must be so that the enumcharlist is slower than charrange 16:21
japhb Well, once you know the commands to use, you can extract, build, and time (there you go, I just gave you the answer ;-) whichever compilers you like. The quickstart is just to get someone interesting data "out of the box"
Oh, I should give you a commit bit too. Are you FROGGS on github as well? 16:22
FROGGS_ yes 16:23
japhb You're added. :-) 16:24
FROGGS_ thanks :o) 16:25
16:26 lizmat joined
japhb FROGGS_: Am I correct in remembering that you have have a Windows dev box available? (I know that's jnthn's primary platform.) 16:27
16:27 woolfy joined
FROGGS_ japhb: I have 16:28
japhb FROGGS_: In that case, patches for "Just Works" Windows compatibility particularly appreciated. jnthn reported he had to do a couple minor things to the tools I wrote, plus had a bit of trouble with the perl5 builds, but he hasn't pushed any patches yet (presumably because he hadn't yet made them work automatically on both posix-like and windows-like platforms yet) 16:34
FROGGS_ hmmm
japhb (I was surprised that the perl5 windows builds weren't really easy, since perl5 was ported to windows a LONG time ago.) 16:36
FROGGS_ yes, using strawberry or activeperl 16:48
17:00 carlin joined
itz I'm having problems matching working versions of moar-jit, nqp and rakudo 17:11
can anyone do a "perl6-m -v"?
FROGGS_ :/
I'm not using moar-jit right now
itz ok no worries
timotimo itz: are you able to merge moar-jit into master without conflicts? 17:12
itz I haven't tried that .. but will
japhb timotimo: Wouldn't he wan't the opposite? 17:14
timotimo it doesn't really matter :)
at least not for this case
japhb nodnod
itz I got no conflicts
timotimo great! should work in that case
don't forget to --enable-jit in moar's configure
itz I've made that mistake already :) 17:15
timotimo :) 17:16
itz I still get the same error as before "Stage start : 0.000 17:20
Stage parse : This type does not support associative operations at src/Perl6/Grammar.nqp:2384 (blib/Perl6/Grammar.moarvm::0)
timotimo huh o_O
17:27 lizmat joined, woolfy joined
FROGGS_ well, that might be the problem brrt is trying to hunt down 17:27
i'm not sure how it shows up 17:28
itz nqp passes tests .. its the rakudo build stage
17:51 woolfy joined 18:16 woosley joined 18:23 woolfy left 18:33 carlin joined 19:08 woolfy joined, woolfy left, brrt joined
brrt \p 19:10
\o
FROGGS_ o/ 19:12
brrt itz: it's indeed that bug i'm trying to hunt 19:14
as in
have been staring at for two days, with hardly an idea of the cause
it would help if i knew how that code worked 19:15
19:18 woolfy1 joined 19:20 woolfy joined 19:21 lizmat joined 19:25 woolfy left
itz the answer will probably come unexpected in the shower Monday morning when you have stopped thinking about it! 19:31
brrt that is too late for me :-) 19:37
i want to know it /now/
:-)
FROGGS_ can you bisect the problem somehoe? 19:38
how*
by disabling certain jitted things or so?
brrt well, the thing is, disabling some JITted things disables many others at the same time 19:42
i haven't a specific test for it
i.e.if i disable atkey_o, atpos_o, then this particular frame isn't run
but that maybe just masks the problem 19:43
(likely, in fact)
FROGGS_ hmmm :/ 19:44
brrt exactly
19:49 carlin left
masak that's why I prefer to stop thinking about things, and just take showers all the time. 20:04
oh, oops, stale backlog :)
FROGGS_ *g*
masak it was to itz' comment above.
brrt :-D 20:07
vendethiel shower-driver development ? 20:30
FROGGS_ I'd like to see an SDD course given by masak :o) 20:31
brrt ahah 20:32
ok, so the object we're comparing with is null, clearly
(i think i was this far yesterday) 20:33
:-( 20:34
FROGGS_ brrt: is it the same bug as this? gist.github.com/FROGGS/be23c4bcdca...b-bash-L38 20:43
20:43 lizmat joined
brrt i have no idea 20:44
it looks sameish
actually, no
it looks alike
FROGGS_ brrt: would it hurt to merge moar master into your branch? 20:46
I'd like to see your bug when my current spectests have finished 20:47
brrt i thought i had, i'll push 20:53
dalek Heuristic branch merge: pushed 19 commits to MoarVM/moar-jit by bdw 20:54
brrt basically, i'm out of ideas 20:55
what happens in this case is that some value is loaded from wval, which apparantly doesn't support key or positional operations (it really doesn't) and... well, the thing just crashes 21:04
(it appears to me it could be a problem with the way i invoke wval)
but that seems.. unlikely 21:05
i'm off for tonight
21:05 brrt left
FROGGS_ is it possible that a decont is missing? 21:05
ohh, gnight then :o)
21:13 FROGGS joined 21:30 btyler joined 22:51 btyler joined 23:57 vendethiel joined