Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-03-12

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

All times shown according to UTC.

Time Nick Message
00:14 woolfy joined #moarvm
00:31 cognominal__ joined #moarvm
00:56 flussenc1 joined #moarvm
00:59 hoelzro joined #moarvm
01:00 rurban__ joined #moarvm
01:00 cxreg joined #moarvm
01:04 japhb joined #moarvm
01:05 timotimo joined #moarvm
01:19 ggoebel11111 joined #moarvm
01:21 woolfy joined #moarvm
01:27 jnap joined #moarvm
01:41 woosley joined #moarvm
02:10 FROGGS_ joined #moarvm
02:14 dalek MoarVM: 343a6c4 | jimmy++ | / (6 files):
02:14 dalek MoarVM: Add CPointer REPR
02:14 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/343a6c4a01
03:40 dalek MoarVM: 73ac986 | jimmy++ | / (8 files):
03:40 dalek MoarVM: Add CStr REPR
03:40 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/73ac986f50
03:50 woosley1 joined #moarvm
03:55 woosley joined #moarvm
03:58 woosley2 joined #moarvm
04:10 dalek MoarVM: 7f3856c | jimmy++ | src/6model/reprs/CStr.c:
04:10 dalek MoarVM: small fix
04:10 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/7f3856cc1a
04:13 woosley joined #moarvm
04:15 dalek MoarVM: c2a5d7e | jimmy++ | src/6model/reprs/CStr.c:
04:15 dalek MoarVM: Remove redundant semicolon
04:15 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/c2a5d7eac4
05:46 woosley1 joined #moarvm
06:28 vincent22 joined #moarvm
06:49 dalek MoarVM: 2bd6501 | jimmy++ | / (10 files):
06:49 dalek MoarVM: Add CArray REPR
06:49 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2bd6501c3e
06:51 woosley joined #moarvm
06:52 woosley2 joined #moarvm
06:57 woosley joined #moarvm
06:59 woosley1 joined #moarvm
07:03 woosley joined #moarvm
07:32 FROGGS_ JimmyZ++
07:56 jnthn JimmyZ++
07:56 jnthn That's useful :)
07:56 jnthn The invokes from within a REPR can't stay, but the rest looks good :)
08:00 JimmyZ good.
08:01 JimmyZ jnthn: There is a 'XXX' in allocate function in CStr.C
08:23 brrt joined #moarvm
08:58 woosley1 joined #moarvm
09:12 vincent21 joined #moarvm
09:16 woolfy left #moarvm
09:18 jnthn JimmyZ: Yeah. Memroy is already zeroed so that can go.
09:23 dalek MoarVM: 28c6728 | jimmy++ | src/6model/reprs/C (2 files):
09:23 dalek MoarVM: small cleanups
09:23 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/28c67283ba
09:32 JimmyZ jnthn: Do you mind if I changed most of 'allocate' static functions in 'this_repr' to 'MVM_gc_allocate_object'?
09:34 FROGGS[mobile] joined #moarvm
09:35 jnthn JimmyZ: I don't understand what you're asking to change...
09:38 JimmyZ jnthn: https://gist.github.com/zhuomingliang/9503739
09:39 jnthn oh, the signatures match? :)
09:39 jnthn haha :)
09:39 jnthn I don't immediately see a problem.
09:39 jnthn It saves a call per allocation too :)
09:40 jnthn Which is dirty cheap in C, but still...
09:40 JimmyZ jnthn: most of reprs have this one :), if you don't mind, I will apply the patch :P
09:42 JimmyZ so we don't need to maintain the static one
09:42 jnthn yeah, think I'm fine with it.
09:43 JimmyZ good ,thanks
09:48 eternaleye joined #moarvm
09:54 dalek MoarVM: 38343ba | jimmy++ | src/6model/reprs/ (29 files):
09:54 dalek MoarVM: Clean up static allocate function in REPRs
09:54 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/38343ba89b
10:17 eternaleye joined #moarvm
10:34 jnthn Less code. More speed. Wow. :)
10:34 brrt jnthn - speaking about speed…
10:35 * brrt wants to make butterflies fly
10:35 brrt i'm wondering if there are any plans with regards to moarvm-JIT
10:35 jnthn brrt: Yes, I replied to you yesterday and you vanished and so I wondered if you hated the answer ;)
10:35 brrt one thing that I already see as positive is that moarvm executes - if i read the website correctly - and AST rather than a certain bytecode format
10:35 brrt i vanished because i had to run
10:35 brrt sorry :-)
10:36 jnthn np
10:36 brrt and i planned to go online that evening but life came in beetween
10:36 jnthn anyway, see log
10:36 jnthn np :)
10:36 jnthn Well, it is bytecode by the time it gets to the VM
10:36 jnthn But I already have some code on my box at home that assembles a CFG out of it.
10:36 jnthn Started working on the dominance calcs needed for SSA.
10:37 brrt … ok, i suppose thats a pretty big part of it already
10:37 jnthn So by the time you get to the JIT there's already an SSA representation of the program there.
10:37 jnthn Yeah. I see you're thinking of this for GSoC. I can have that aspect of it ready by GSoC start date I guess. When is that, if you know?
10:37 brrt noooo idea
10:37 brrt some months from now
10:38 jnthn ok, O(months) I can manage. O(couple of weeks) would be harder :)
10:38 brrt fwiw, ConcBlockingQueue LGTM :-)
10:38 jnthn I'm open on what exactly we use to implement the JIT. I'd been looking a bit into dynasm.
10:39 jnthn Which seems to strike a balance between "avoids some annoying stuff" and "leaves us a lot of control".
10:39 brrt hmmm
10:39 * brrt should see dynasm
10:39 jnthn But I'm in no way tied to it.
10:39 jnthn It just looked promising.
10:39 brrt ah, i see
10:39 brrt there's also gnu lightning iirc
10:39 jnthn It basically saves you worrying about the details of assembling.
10:40 jnthn gnu lightning seems to do a bit more, in so far as it abstracts away the specifics of a particular assembly language
10:41 jnthn Which is a mixture of good and bad.
10:41 brrt what is the bad?
10:41 brrt not seeing it obviously :-)
10:41 brrt … directly
10:42 brrt dynasm does support quite a few backends… so thats a thing
10:42 jnthn The abstraction layer probably carries a cost, and it may stop you reaching to specific instructions you might like to use.
10:42 brrt true
10:42 jnthn Like, some day we'd likely want to JIT hyper ops on int or flaot arrays into SIMD.
10:43 brrt there's also the issue on memory representation
10:43 brrt hmmm yeah, i think that will be too much for a summer
10:43 jnthn And licensing. dynasm is no problem there; lightning is GPL...
10:43 jnthn Well, yeah, I don't expect you to do that bit int he summer :D
10:44 jnthn Just saying we should have a path that we can eventually take to get there :)
10:44 brrt i agree
10:44 jnthn need to take @student to lunch here...bbiab
10:44 brrt hmm, with a library like dynasm and you working (together) on brining the AST to SSA form… its less of a monstrous project i mimagined
10:45 brrt ok, see you :-)
11:20 chipdude joined #moarvm
11:29 * jnthn back
11:30 timotimo i hope dinner was good :)
11:33 jnthn Some pork, some potato in creamy sauce thingy, and some salad :)
11:35 jnthn .tell brrt yes, I think it will be possible to get something interesting done in a summer :)
11:38 JimmyZ another thing is that we have been waiting for pushing NFG branch for half a year.
11:41 timotimo the branch exists, but is private? :(
11:41 jnthn JimmyZ: Well, nobody has jumped up to fix ropes, which means I'm gonna have to do it, which will probably have a drastic impact on mergabiltiy of any existing work. See the churn from IO for what happens when I decide to fix something. :P
11:42 jnthn The problem with ropes isn't so much the data structure is wrong, though, which it was in IO (as in, DecodeStream didn't exist).
11:43 jnthn More that the implementation (a) has bugs, and (b) makes them hard to find.
11:44 timotimo amen to that. i looked only briefly at the implementation and it scared me
11:45 timotimo though i must admit, i'm not really a rockstar-developer and without doing a bit of scribbling on a whiteboard or something such potentially complicated data structures and algorithms give me trouble
11:49 JimmyZ jnthn: speaking of dynasm, gerd said how about the one qemu is using
11:50 JimmyZ which is a bit like the tinycc one
11:53 JimmyZ yeah, tcg
11:55 jnthn timotimo: It's natural to need to scribble :)
11:56 jnthn timotimo: I had bits of paper with DAGs on all over my place at one point while working on the Perl 6 multi-dispatch... :)
11:56 timotimo that's reassuring :)
11:57 jnthn Data structure comprehension varies widely, though. I noticed that yesterday when I watched a couple of folks struggle over a hash of hashes, which I think I somehow have forgotten how to find hard. :)
11:57 timotimo hashes of hashes are only hard if you use hashes for the hash key :P :P
11:57 jnthn otoh, .Net makes it look like Dictionary<string, Dictionary<string, SomeThingy>> as the type :)
11:57 timotimo yeah, that can look a bit scary
11:58 timotimo what do we have, my %foo of Hash?
11:58 jnthn I find them more verbose than scary tbh
11:58 jnthn Well, we have the choice of not talking about the types :P
11:58 jnthn But yeah, my %foo of Hash is fine also. :)
11:58 timotimo right, but it *may* help
11:59 jnthn Yeah, sometimes type annotations make helpful documentatino.
11:59 timotimo neat. for some reason i thought the "of" thing was NYI
11:59 jnthn No, it's is (for container type) that is NYI
11:59 timotimo but "my Hash %foo" is the same as that, right? it's not the same as "my %foo is Hash"?
12:00 timotimo *that* can end up very confusing :)
12:00 jnthn my Hash %foo and my %foo of Hash are the same, yes.
12:00 timotimo i wonder if that spelling should warn and suggest the "of" spelling instead?
12:00 timotimo probably same for my Array @a or my List @a or something
12:01 timotimo i should take that to #perl6 in any case
12:01 jnthn Well, the key thing to learn is that a sigil already implies a type.
12:01 jnthn @ = Positional, % = Associative, & = Callable
12:02 jnthn r: multi x(Int &y) { say 1 }; multi x(Str &y) { say 2 }; sub z returns Int { }; x &z
12:02 camelia rakudo-moar 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤  in sub x at /tmp/tmpfile:1␤  in block  at /tmp/tmpfile:1␤␤»
12:02 camelia ..rakudo-parrot 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤  in any  at gen/parrot/BOOTSTRAP.nqp:1219␤  in any  at gen/parrot/BOOTSTRAP.nqp:1210␤  in sub x at /tmp/tmpfile:1␤  in block  at /tmp/tmpfile:1␤␤»
12:02 camelia ..rakudo-jvm 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤  in any  at gen/jvm/BOOTSTRAP.nqp:1212␤  in any  at gen/jvm/BOOTSTRAP.nqp:1202␤  in sub x at /tmp/tmpfile:1␤  in block  at /tmp/tmpfile:1␤␤»
12:02 timotimo huh.
12:02 jnthn r: multi x(Int &y) { say 1 }; multi x(Str &y) { say 2 }; sub z of Int { }; x &z
12:02 camelia rakudo-moar 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤  in sub x at /tmp/tmpfile:1␤  in block  at /tmp/tmpfile:1␤␤»
12:02 camelia ..rakudo-parrot 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤  in any  at gen/parrot/BOOTSTRAP.nqp:1219␤  in any  at gen/parrot/BOOTSTRAP.nqp:1210␤  in sub x at /tmp/tmpfile:1␤  in block  at /tmp/tmpfile:1␤␤»
12:02 camelia ..rakudo-jvm 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤  in any  at gen/jvm/BOOTSTRAP.nqp:1212␤  in any  at gen/jvm/BOOTSTRAP.nqp:1202␤  in sub x at /tmp/tmpfile:1␤  in block  at /tmp/tmpfile:1␤␤»
12:02 jnthn huh...was sure that worked.
12:03 jnthn r: sub z of Int { }; say &z ~~ Callable
12:03 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«True␤»
12:03 jnthn r: sub z of Int { }; say &z ~~ Callable[Int]
12:03 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«False␤»
12:03 jnthn hmmm
12:03 timotimo oh, huh. that seems wrong
12:03 jnthn I think it's meant to set Callable[Int] on it, yeah
12:06 JimmyZ jnthn: Did you look a bit into tcg? :P
12:07 * timotimo doesn't know what that means
12:07 zakharyas joined #moarvm
12:08 JimmyZ timotimo: http://git.qemu.org/?p=qemu.git;a=tree;f=tcg;hb=HEAD
12:08 timotimo ah
12:20 masak joined #moarvm
12:20 brrt joined #moarvm
12:21 cognominal__ joined #moarvm
13:33 jnthn JimmyZ: 'tis also an option...with different trade-offs. :)
13:33 jnthn Choice is good :)
13:33 JimmyZ aye :P
13:58 jnap joined #moarvm
16:21 jnap1 joined #moarvm
16:28 * brrt off
16:28 brrt left #moarvm
16:52 jnap joined #moarvm
20:48 * jnthn on
20:49 timotimo heya jnthn :)
21:37 dalek MoarVM: 167c197 | jonathan++ | src/core/nativecall.c:
21:37 dalek MoarVM: Support CPointer args and results.
21:37 dalek MoarVM:
21:37 dalek MoarVM: With this, we can now pass t/nativecall/01-basic.t from NQP.
21:37 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/167c1971c2
22:14 cognominal joined #moarvm
22:19 timotimo https://gist.github.com/timo/eda741286aaa16a8a8b5 - moar segfault when trying to free a MVMString in vm_destroy_instance
22:23 jnthn hmm...
22:23 jnthn Ticket it along with what you dumped. Too tired to look now :)
22:23 timotimo can do
22:23 timotimo maybe i'll go hunt it instead
22:23 timotimo let you get back to NativeCall or what you're up to right now :)
22:24 jnthn Right now I'm drinking a class of water and wondering why my foot is so sore...
22:25 jnthn glass, even :)
22:27 lue .oO(distilled class water)
22:31 * jnthn figures he'll get some sleep
22:31 jnthn Should have some tuits tomorrow after teaching, and then got all Friday for Perl 6 things too :)
22:33 jnthn 'night o/
22:36 lue ♞ jnthn o/
22:38 timotimo a whole day of Perl 6 work? Must be my birthday!
22:51 FROGGS joined #moarvm
23:37 d4l3k_ joined #moarvm
23:37 Util joined #moarvm
23:38 tadzik joined #moarvm

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