Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-10-17

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

All times shown according to UTC.

Time Nick Message
00:01 * jnthn has had his image resize/upload script he went through in his YAPC::EU talk happily churning away much of the day :)
00:02 jnthn r-m concurrency stuff definitely has some work to go, but this thing is running very nicely :)
00:03 jnthn Time for sleep &
01:15 camelia joined #moarvm
01:56 camelia joined #moarvm
04:03 camelia joined #moarvm
04:45 ggoebel11111112 joined #moarvm
06:32 avuserow joined #moarvm
06:48 FROGGS joined #moarvm
06:56 avuserow joined #moarvm
07:14 zakharyas joined #moarvm
08:03 cognome joined #moarvm
08:03 cognome joined #moarvm
08:15 avuserow joined #moarvm
08:20 kjs_ joined #moarvm
08:38 zakharyas joined #moarvm
08:44 timotimo HC Hammer, eh?
08:48 jnthn Hammer Controller
08:56 timotimo ah
10:00 camelia joined #moarvm
10:31 flaviusb joined #moarvm
10:46 carlin *MC Hammer
10:47 carlin (typo correction ~12 hours later)
12:33 camelia joined #moarvm
13:29 timotimo what was the reason we went for dynasm instead of llvm, btw?
13:36 moritz llvm is huge in comparison
13:36 moritz and... uhm, I think brrt++ blogged about it
13:36 timotimo yeah, but it also gives us everything
13:36 timotimo lots of platforms, for example
13:38 moritz i think one pain point is integrating the LLVM JIT with our own runloop
13:49 timotimo i'd like to prototype a tiny quasi-register-allocator for our jit, but it'd have to know stuff about roots then :\
13:50 timotimo except ... if just removing the load-from-memory operations if we still have a register around that holds the value is already a big help, that could Just Work™
13:54 timotimo so if i keep the stores around, but kick the loads, maybe that'll be noticable
13:55 timotimo and in fact, it'd be doable before we get dynasm's fully realized register selection thingie magic
13:55 JimmyZ joined #moarvm
13:55 JimmyZ good evening
13:56 timotimo hey JimmyZ :)
13:56 nwc10 good UGT heresy, JimmyZ
13:57 JimmyZ hello timotimo, nwc10
13:57 JimmyZ timotimo: looks like the post of brrt++ had said it
13:57 timotimo yes
13:58 JimmyZ another reason about llvm is that llvm is written in C++ :P
13:58 timotimo oh well.
14:00 JimmyZ about removing the jit code of loading and storeing result in Moarvm's regs, I wanted to ask brrt++ about it, but I didn't
14:00 JimmyZ :P
14:01 timotimo heh.
14:01 timotimo do you have a better idea than me?
14:02 nwc10 beer? :-)
14:02 nwc10 (It is Friday, after all)
14:02 timotimo i was going to carry around a little struct that you'd tell the addresses (index of local) of things you want to get and then let it emit the proper mov operations
14:02 timotimo or something like that
14:03 timotimo and after an op is done, you set the new values of the registers or invalidate them if necessary (because you wrote over them in your code)
14:03 timotimo now that i spell it out, that sounds pretty terrible %)
14:03 JimmyZ how does luajit do it?
14:03 timotimo no clue
14:16 JimmyZ http://brrt-to-the-future.blogspot.com/2014/08/some-lessons.html # I think there are some good roadmap for MoarVM :P
14:16 timotimo yeah
14:16 timotimo the iterator thing he mentions near the end is already implemented
14:17 JimmyZ oh, is it in the repo now?
14:17 timotimo i believe so. gimme a second
14:18 timotimo oh, hm.
14:18 timotimo indeed
14:19 timotimo https://github.com/MoarVM/MoarVM/blob/master/src/jit/emit_x64.dasc#L909
14:19 timotimo spesh/optimize.c emits these
14:22 JimmyZ I thought it didn't
14:22 JimmyZ :P
15:16 kjs_ joined #moarvm
15:55 camelia joined #moarvm
16:23 FROGGS joined #moarvm
19:43 flussence joined #moarvm
20:07 dalek MoarVM/sepsh: 0cfae6d | (Tobias Leich)++ | src/ (13 files):
20:07 dalek MoarVM/sepsh: [WIP] implement multi-char input line separators
20:07 dalek MoarVM/sepsh:
20:07 dalek MoarVM/sepsh: This implemements line seps on a grapheme level that are not just one character long.
20:07 dalek MoarVM/sepsh: These separators are used when cutting lines from an already filled buffer, but they
20:07 dalek MoarVM/sepsh: are also used to fill a buffer by requesting more data from a stream until we find a
20:07 dalek MoarVM/sepsh: separator.
20:07 dalek MoarVM/sepsh: Parts of this code already handle multiple separators, others do not. Also, when we
20:07 dalek MoarVM/sepsh: have more than one separator we usually want to prefer the longest matching separator.
20:07 dalek MoarVM/sepsh: To achieve that we keep a list of possible remainders that need get chopped off the
20:07 dalek MoarVM/sepsh: next line, in case we have separators that start with the same chars. Like \n would be
20:07 dalek MoarVM/sepsh: a remainder for the separators [ \r\n | \r ], when we only hit \r yet.
20:07 dalek MoarVM/sepsh: We also need an op that takes a list_s, since nqp::setinputlinesep() only takes one
20:07 dalek MoarVM/sepsh: string.
20:08 hoelzro ahoy #moarvm
20:08 FROGGS MoarVM/sepsh: Note that this patch still leaks as hell, e.g. the list of input separators and
20:08 hoelzro aside from the source, are there any docs on how Moar handles serialization?
20:08 FROGGS MoarVM/sepsh: remainders. Though it spectests fine, which is always nice.
20:08 FROGGS hi hoelzro
20:08 hoelzro o/ FROGGS
20:08 FROGGS hoelzro: unlike
20:09 FROGGS unlikely*
20:09 hoelzro =(
20:09 hoelzro I'm just wondering how if I have two definitions of a module in separate units, how they are stored in the .moarvm files such that Moar knows they should be the same object in memory
20:10 hoelzro ex. module Example::A {} in A.pm, module Example::B {} in B.pm
20:10 hoelzro how does Moar know that the Example in both compunits are supposed to be the same in memory?
20:10 FROGGS hoelzro: because it is just a placeholder
20:11 FROGGS so it cannot conflict with another placeholder
20:11 FROGGS like you can declare a stub several times and it will never complain about it
20:12 hoelzro my knowledge of how it works it pretty vague, but as far I understand, the format refers to an object with a 32-bit ID, right?
20:12 hoelzro and there's a table of IDs -> contents in a compunit
20:12 [Coke] today's daily run will finally include java again.
20:12 [Coke] ww
20:13 hoelzro but I'm wondering how the identifier in A.pm.moarvm and B.pm.moarvm end up pointing to the same object in memory
20:13 FROGGS hoelzro: when objects get serialized, they get a serialization context id, aye
20:13 FROGGS they get merged when you load the two
20:14 hoelzro is the same ID used for Example in each .moarvm file, then?
20:16 FROGGS no
20:16 FROGGS look at rakudo/src/Perl6/ModuleLoader.nqp:244
20:16 FROGGS the Example will be merged when you import the two into *your* code
20:16 FROGGS only then there will be an Example that has both an A and a B
20:17 hoelzro interesting
20:17 hoelzro well, that code will provide for some interesting debugging insight when I look later =)
20:17 * hoelzro would like to try and fix https://rt.perl.org/Public/Bug/Display.html?id=122773
20:17 timotimo FROGGS: and when we start speshing multi-char input line separators, that'll be MoarVM/spesh-sepsh? :)
20:18 * hoelzro .oO( insepshtion? )
20:18 FROGGS hoelzro: also read rakudo/src/Perl6/World.nqp:399
20:18 FROGGS timotimo: *g*
20:18 FROGGS timotimo: or spepsh
20:21 hoelzro thanks for the insight FROGGS
20:21 FROGGS hoelzro: you're welcome
20:22 FROGGS (and when I finally see the RT page I tell if I can tackle it)
20:24 FROGGS ahh, that one...
20:24 FROGGS hoelzro: yes, I can try
20:25 hoelzro I spent some time on it last night, but my Moar knowledge is so limited it's hard to tell what exactly I'm looking at
20:31 hoelzro the reason I suspect Moar is that I can undo 7a722dc4018ce1b99bbd4abea198e242d7da0157 and it works fine
20:31 hoelzro (well, with the appropriate checkouts of Rakudo and NQP)
20:34 jnthn hoelzro: The package conflict resolution is implemented in src/Perl6/ModuleLoader.nqp iirc
20:34 jnthn hoelzro: It's got resolve in the name, iirc
20:35 timotimo jnthn: how do you feel about the my Num $foo = 1; thing?
20:35 hoelzro jnthn: that makes sense, but it's so weird that just changing Moar fixes/breaks it
20:35 timotimo should the assign op get made a bit slower to also try to unbox other types or something like that?
20:35 jnthn timotimo: my Num $foo = 1 is a straight type error
20:35 timotimo oh
20:35 timotimo well, in that case it's a bug that parrot allows it i suppose :)
20:35 jnthn You declared Num, but tried to assign an Int.
20:35 jnthn And Int isn't a Num
20:36 jnthn hoelzro: I'm wondering if that patch made something happen too lazily...
20:36 hoelzro that's what I'm thinking
20:37 jnthn hoelzro: Could instrument the resolution stuff with some logging
20:37 jnthn And then compare what happens with and without the patch
20:37 hoelzro I noticed that deserialize_object and deserialize_stable didn't change; I'm wondering if they needed to
20:37 jnthn Though this case may end up being just a case of merge_globals...
20:37 jnthn Those two are the "just one object/stable" iirc
20:38 jnthn Note that the whole repossession thing may play into this somewhere too
20:38 hoelzro this will be fun to fix =/
20:38 jnthn I *think* there's some notes on that stuff in the NQP course
20:38 timotimo JFTR: i'm positively surprised by our Complex type's performance :)
20:38 hoelzro I'm a moar newb
20:38 hoelzro I think so, yes
20:56 cognome joined #moarvm
21:57 cognome joined #moarvm
22:33 camelia joined #moarvm
22:39 kjs_ joined #moarvm
23:10 flussenc1 joined #moarvm

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