Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-01-30

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
02:56 raydiak joined #moarvm
04:51 FROGGS[mobile] joined #moarvm
05:08 vendethiel joined #moarvm
05:40 raydiak can someone check this out for me when they have a chance, and give me feedback and/or merge it? https://github.com/MoarVM/MoarVM/pull/172
05:47 FROGGS[mobile] looks good to me...
05:48 FROGGS[mobile] though, cant merge it atm :/
05:49 raydiak thanks; mostly wanted to make sure it looked sane, C isn't a strong suit of mine so I just kind dug in and blindly poked :)
05:49 raydiak *kind of
05:51 FROGGS[mobile] I'd say it is perfect unless there is a hidden off-by-one that I dont spot that early
05:54 raydiak heh no big deal, someone will figure it out after some tests flap for a few months
07:31 rurban_ joined #moarvm
08:53 kjs_ joined #moarvm
09:06 zakharyas joined #moarvm
09:20 arnsholt raydiak: Looks sane to me. Indeed, IIRC that's something the Parrot code already does.
09:21 kjs_ joined #moarvm
09:22 raydiak oh good, haven't look at that one...checked out jvm but it's a bit overwhelming at this hour, wasn't sure where initialization happens or how to memset in java
09:22 arnsholt Yeah, the JVM code is very different
09:22 arnsholt For Moar the Parrot version is the one to look at
09:24 raydiak well moar was nice and clean and I was lucky to see examples of doing almost exactly what I want to copy, didn't have to look at much else
09:26 raydiak if it's a CArray of CArrays, will elem_size equal sizeof(MVMObject *)? if so there's 2 duplicate consts in there I can fix
09:27 kjs_ joined #moarvm
09:31 raydiak I see sizeof(void *) on line 55, so maybe not...or is the size of all pointers the same? why does it use void instead of MVMObject there anyway?
09:57 arnsholt I'm not sure in the absolute general case (weird architectures and such), but pointers are generally all the same size
10:00 nwc10 agree, and I doubt that libuv is yet ported to any of them. (if we can even find any these days)
10:00 jnthn I looked at the PR and didn't see any obvious problems.
10:17 FROGGS[mobile] joined #moarvm
10:35 FROGGS joined #moarvm
10:38 timotimo o/ jnthn
10:38 timotimo how's today? :)
10:40 vendethiel joined #moarvm
10:41 lizmat timotimo: jnthn is flying to Brussels atm
10:41 timotimo ah
10:41 timotimo well, i hope his flight is comfortable and on time :)
10:41 lizmat probably no connectivity on the plane
10:41 * lizmat too
10:42 FROGGS IIRC he will be here at 1pm
10:43 * FROGGS is in room 36
11:41 rurban_ on intel exist near, far and huge pointer sizes, for the linkers there exist tiny, small, medium compact, large or huge segments. on current architectures there only exists flat memory models, with huge pointers. on the jit level it might be optimized to smaller pointers. eg. in v8. but not in moar
11:42 rurban_ e.g. https://en.wikipedia.org/wiki/X86_memory_segmentation
12:09 kjs_ joined #moarvm
12:21 kjs_ joined #moarvm
13:31 kjs_ joined #moarvm
13:33 rurban_ joined #moarvm
13:43 brrt joined #moarvm
13:49 brrt yeah, moar jit treats all pointers as huge (8 byte)
13:50 brrt lgtm too. i can probably merge it from here
13:50 timotimo is there performance to gain from using smaller pointers?
13:53 brrt on new machines i doubt that
13:54 brrt but iirc you can use it to hack values and pointers in the same quadword
13:55 brrt although i dont know the details and could well be wrong
13:56 brrt btw i won't be at fosdem this year. dying pet situation :-(
13:59 brrt github app doesnt allow me to merge
14:02 dalek MoarVM: 83c68df | raydiak++ | src/6model/reprs/CArray.c:
14:02 dalek MoarVM: Zero-fill CArrays
14:02 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/83c68df895
14:02 dalek MoarVM: 8e8539e | raydiak++ | src/6model/reprs/CArray.c:
14:02 dalek MoarVM: Minor oversight, use an available const
14:02 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/8e8539ee10
14:02 dalek MoarVM: 2cb9656 | brrt++ | src/6model/reprs/CArray.c:
14:02 dalek MoarVM: Merge pull request #172 from raydiak/master
14:02 dalek MoarVM:
14:02 dalek MoarVM: Zero-fill CArrays
14:02 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2cb965696a
14:03 brrt but webapp does
14:03 brrt afk. have fun all
14:04 woolfy1 left #moarvm
14:05 woolfy joined #moarvm
14:05 woolfy left #moarvm
14:46 rurban_ joined #moarvm
15:24 rurban_ brrt: have you looked into nan-tagged double's to represent unboxed numbers and everything else, like v8 does? I'm not sure yet if it's worthwhile
15:31 brrt joined #moarvm
15:32 brrt rurban_: i have not. but i do think that's what i meant; i don't know if this has anything to do with pointer size distinction
15:33 brrt it is in general much easier just to use huge pointers; moreover the nan-pointer distinction that v8 uses is more useful in 32 bit (i believe), and more useful yet if your primary number type is a floating point
15:33 brrt as it is in javascript and as it isn't in perl6
15:34 brrt if we'd have some certainty on small integers
15:35 rurban_ yes, they do arith with doubles only, only if the type inferencer proves it's an int, it will change it to int
15:35 rurban_ same as lua also
15:36 rurban_ one problem is that jo (jump overflow) i.e,. auto-promotion int->bigint/double is only available in jit
15:37 brrt 'proves it is an int' - that's interesting
15:37 rurban_ if array index or loop counter e.g.
15:37 brrt ah i see
15:37 brrt especially if 'hidden'
15:37 brrt hmm
15:37 rurban_ mozilla has a video online about their nashorn vm, which does the same
15:38 brrt ok, now i get what was meant with the 'small bigint jit path'
15:38 brrt oh, care to share? :-)
15:38 rurban_ uh, not mozilla, oracle it is
15:39 * JimmyZ can't follow you
15:39 rurban_ It was in Strange Loop last year...
15:40 rurban_ https://www.youtube.com/watch?v=KKaHkkpdHxg
15:40 rurban_ https://thestrangeloop.com/sessions/nashorn-implementing-a-dynamic-language-runtime-on-jvm-in-2014
15:41 rurban_ I still have to find a good description of nan-tagging in v8
15:42 brrt ever since i've seen pypy i've been pretty sceptic of the idea of a 'reusable dynamic language implementers toolkit'
15:43 brrt :-)
15:43 brrt but it's interesting at least
15:44 brrt 'like llvm, but for dynamic languages on the jvm'
15:45 rurban_ well, they'd need a MOP to do that. The problem for parrot also is the different object systems it has to support
15:45 brrt fwiw, i now do know a really good reason not to use LLVM for the moarvm JIT
15:45 rurban_ perl6-like roles, perl5 like classes+objects, js-like prototypes, ...
15:45 brrt oh, yes; and think about the primitives
15:46 brrt (won't somebody please think about the primitives!)
15:46 JimmyZ what's the really good reason?
15:46 rurban_ I wont use it for C++ and its size
15:46 brrt llvm is, upon further examination, neither really close to moarvm nor to the metal
15:46 brrt (llvm ir)
15:47 brrt and the goal is to write a simple-and-efficient bridge between moarvm and the metal
15:47 rurban_ they only benefit would be the post-ir optimizations for the native backend
15:47 JimmyZ dynasm is good enough :P
15:47 brrt but for that, you'd need to use the llvm ir; and llvm ir doesn't map well to moarvm at all
15:47 rurban_ but the hard part are the pre-ir optimizations, e.g. on types, objects, constant folding, ...
15:47 JimmyZ rurban_: we have rakudo-v5 on moarvm
15:48 rurban_ I know
15:48 brrt well, that's what i have jnthn++ for
15:48 brrt he does the hard parts
15:48 brrt i take the glory
15:48 brrt :-P
15:48 rurban_ With roles or generics you can easily simulate classes
15:48 JimmyZ I took the LHF :P
15:49 JimmyZ rurban_: parrot should know what should be in core, what should be out of core
15:49 JimmyZ well or plugin
15:50 rurban_ parrot doesn't cannot call methods properly yet
15:50 brrt plugins on a vm?
15:50 rurban_ neither does it do multis or roles properly
15:50 JimmyZ yeah, like rakudo ops
15:50 JimmyZ rakudo container
15:51 brrt i see
15:51 JimmyZ and 6model on parrot
15:51 JimmyZ 6model is not in parrot's core :P
15:51 rurban_ 6model on parrot is a long way to go still
15:51 rurban_ First I tried to get performance out of it, undo all the damage from the last 6 years
15:52 JimmyZ yeah, i saw the irclog, someone don't like 6model in core when it was developed
15:53 brrt rurban_++ for doing a thankless but valuable job
15:53 rurban_ but it needs to be in core. something betetr than 6model even, a dynamic MOP. 6 model is too specialized on perl6
15:53 JimmyZ rurban_: I still think whiteknight's gist of parrot goal is good
15:53 * brrt afk
15:53 JimmyZ :P
15:54 rurban_ we need to abstract the dispatch model and the object model, and offer fast paths to the most common ones.
15:54 rurban_ we still hardcode everything to class/object/undef
15:55 rurban_ ... and default
15:56 JimmyZ well, you need to make parrot popular, then let the people improve it. unless it will be dead before you find better things than 6model :P
15:57 rurban_ I only do parrot, because I need the same threading model for my own vm :)
15:57 rurban_ which is way better than moar
15:57 rurban_ but no threads yet
15:58 JimmyZ yeah, but if you leave parrot before it's popular?
15:59 rurban_ It's still easy to maintain it
15:59 rurban_ problem is finding time to extend it
16:00 JimmyZ who want to continure maintain a things that after 20 years' maitain, it still nobody use it
16:00 rurban_ we will see
16:00 JimmyZ :P
16:01 rurban_ same as with perl5. internally horrible, but still usable from time to time
16:02 JimmyZ It's always better let it in core , until you find another better one than current better one
16:02 JimmyZ perl5 has many users...
16:03 JimmyZ parrot doesn't
16:09 lizmat joined #moarvm
16:09 rurban_ yep
16:10 * jnthn points out that MoarVM doesn't have a clue what a class or a role are, and doesn't need to.
16:14 JimmyZ yeah, the 6model itself never knows what class/role is
16:18 JimmyZ rurban_: we also have a toy php/ruby compiler on 6model :P
16:23 woolfy joined #moarvm
16:43 woolfy left #moarvm
18:05 pyrimidine joined #moarvm
18:09 retupmoca joined #moarvm
18:09 btyler joined #moarvm
18:18 harrow joined #moarvm
18:21 ingy joined #moarvm
18:49 FROGGS[mobile] joined #moarvm
19:27 kjs_ joined #moarvm
19:46 colomon joined #moarvm
20:33 retupmoca joined #moarvm
21:23 colomon joined #moarvm
21:25 FROGGS joined #moarvm
21:26 colomon joined #moarvm
21:28 colomon joined #moarvm
21:39 kjs_ joined #moarvm
21:40 FROGGS[mobile] joined #moarvm
21:43 colomon joined #moarvm
22:18 colomon joined #moarvm
22:33 vendethiel joined #moarvm
23:14 raydiak would we be able to nativecast from CArray by just adding a similar-looking else block for it at https://github.com/MoarVM/MoarVM/blob/d235e77c1eb215d6cba9602bd9f73cf4e95acf39/src/core/nativecall.c#L914 ?
23:14 raydiak or is that an intentional omission because of some other surrounding complexity I'mm unaware of?
23:14 raydiak *I'm
23:44 FROGGS raydiak: no intend... casting from CArray should work out
23:46 raydiak thanks...I went ahead and gave it a shot, but now trying to use the pointer w/memset via zavolaj gives me a segfault
23:47 FROGGS hmmm, I am too tired right now :o(
23:47 woolfy joined #moarvm
23:47 FROGGS I'll look into it tomorrow in case you gist something
23:48 raydiak no problem, I appreciate your help :)  I'll make a gist if I don't figure it out
23:50 kjs_ joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary