Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-06-22

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

All times shown according to UTC.

Time Nick Message
00:01 dalek MoarVM: 8620dbf | timotimo++ | src/spesh/optimize.c:
00:01 dalek MoarVM: optimize_can_op is fixed and fully enabled now
00:01 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/8620dbf38a
00:33 lizmat joined #moarvm
01:21 pyrimidine joined #moarvm
06:07 FROGGS joined #moarvm
06:55 zakharyas joined #moarvm
08:10 pyrimidine joined #moarvm
08:14 moritz joined #moarvm
08:31 Ven joined #moarvm
09:08 brrt joined #moarvm
09:11 brrt \o
09:12 FROGGS hi brrt
09:12 nwc10 o/
09:12 brrt hi FROGGS :-)
09:13 brrt and nwc10
09:30 masak hi brrt
09:30 jnthn o/ brrt
09:30 jnthn dynasm hacking today? :)
09:30 brrt yes, trying at least
09:31 brrt i think i know how to do the hard case too
09:32 masak keep us posted! many of us are curious to hear how it's going :)
09:33 * moritz seconds that
09:35 brrt i will do that, yes
09:35 * masak re-reads http://news.perlfoundation.org/2015/04/perl-6-hague-grant-application.html
09:38 brrt do you want a short update on the IRC channel or a longer update on my blog :-)
09:44 brrt long story very short, i need to know a lot more about x86 instruction encoding than i had expected
09:45 masak both :)
09:45 nwc10 and a pony!
09:46 masak but do the one(s) that don't take too much time from being productive :)
09:46 FROGGS pi@raspberrypi ~/dev $ git clone https://github.com/MoarVM/MoarVM.git # \o/
09:49 brrt \o/
09:49 brrt well, blogging isnt unproductive, its documentation
09:49 brrt :-P
09:49 brrt bbiab
10:35 brrt joined #moarvm
10:43 rudi_s joined #moarvm
10:43 zakharyas joined #moarvm
10:46 lizmat_ joined #moarvm
10:46 masak blogging isn't documentation -- but I guess it's a good first step.
10:47 dalek joined #moarvm
10:48 brrt yeah, you're right enough :-)
12:07 arnsholt It's a first step, I suspect
12:08 brrt nah, the first steps are my notebook scriblings]
12:09 arnsholt Troo, troo
12:10 brrt i have an unrelated puzzle to solve, by the way
12:10 brrt or rather, a dillema
12:11 brrt i need to read a lot of papers
12:11 brrt reading papers on a computer screen is annoying
12:12 brrt printing papers is not very good for the environment
12:12 brrt buying a tablet to read papers on is also not very good of the environment
12:12 jnthn Printing on paper is still better for than the environment that producing a tablet :P
12:12 jnthn *than
12:12 brrt is the environmental cost of printing papers ever going to outrun the cost of making that tablet
12:12 brrt yes, that's what i'm guessing too
12:12 arnsholt I've been wanting to write some slightly more substantial documentation on how to create a language with NQP, based on my experiences with Snake. More or less mal a propos
12:13 jnthn mal a propos = bad to propose ? :)
12:13 brrt arnsholt: i know for a fact people are interested in that
12:13 arnsholt And reading on paper is still superior, IMO
12:13 brrt i think 'poorly suited to topic', but i've never heard of it
12:14 arnsholt jnthn: A propos, but a bit of a spurious association. That's how I use it, anyways =)
12:17 brrt i cite: " Thus, a good compiler for a modern superscalar machine is an artful blend of theory, of practical knowledge, of engineering, and of experience"
12:17 arnsholt brrt: Anyways, on the topic of reading papers, I'm 100% in favour of printing. I've been doing it shamelessly for the last four years
12:17 brrt :-)
12:18 brrt it just feels wasteful, i guess
12:18 arnsholt Yeah, I agree. It's just that reading on a computer is extremely annoying, if you want to pay proper attention
12:19 arnsholt For more superficial readings, it's not that big of a deal. But for really dense stuff (like academic papers), you really need to work much harder
12:20 masak arnsholt: I find it depends very much on the type of screen.
12:21 masak arnsholt: I read a fair bit on my iPad these days, using the Kindle app.
12:21 arnsholt Oh, neat!
12:21 arnsholt I don't have a tablet, so I haven't tried that
12:21 masak most of what I've learned about algebraic topology, I've learned on that screen :>
12:21 arnsholt I do have a Kindle, which is really nice for books, but not so great for PDFs
12:22 brrt i don't have a tablet and would buy one purely for the purpose of reading. i can't justify that on those grounds
12:22 tadzik *wouldn't
12:22 tadzik ?
12:22 brrt i meant: if i would buy one, it'd be solely for the purpose of reading
12:23 brrt ironically, that means that if i'd become convinced of it's entertainment value then that would change the equation
12:23 tadzik ah
13:40 timotimo brrt: i think it'd be interesting to have a document somewhere that gives a rough step-by-step guide on how to port the moarvm jit to more architectures, perhaps using armel as an example? :)
13:40 brrt hmm
13:40 brrt yes
13:40 timotimo if i vow to port the moarvm jit to arm, maybe TPF will sponsor a pyra for me :D
13:41 brrt it's not a bad idea
13:41 brrt but
13:41 brrt dynasm for ARM doesn't have register addressing yet, at all
13:42 timotimo at all!
13:42 brrt which means the expression JIT wouldn't work for ARM
13:42 brrt that means additional complexity if you'd start on it before the expression JIT was finalized
13:42 brrt ... although, of course, that's not really what you mean
13:43 brrt it's a good idea, yes
13:43 nwc10 what does a dual core Cortex A15 get you that a quad core Cortex A7 doesn't?
13:43 timotimo well, you're about to build register addressing for x86; i bet a guide (more or less?) could fall out of that work :)
13:43 brrt hah
13:43 brrt well....
13:43 timotimo nwc10: well 4x7 is a tiny bit less than 2x15
13:43 brrt i'll blog about it, how about that
13:44 brrt :-)
13:48 brrt there are a few more difficulties i foresee, though
13:48 timotimo nwc10: is that the difference between a raspi2 and the pyra?
13:48 brrt basically, nearly all of ARM still uses 32 bit registers, and we use 64 bit registers
13:48 timotimo oh, i hadn't realized that
13:48 nwc10 timotimo: not the only one
13:48 brrt 64 bit values
13:48 brrt i mean
13:49 timotimo nwc10: well, of course; the pyra is a portable device with keyboard, screen and battery
13:49 nwc10 but it's the most obvious one. In that, is there a proposed cost yet for a pyra?
13:49 timotimo i don't quite recall
13:50 timotimo i expect "expensive*"
13:50 timotimo (*when compared to other handheld devices, like a nintendo 3ds, or a smart phone)
13:50 brrt (we use 64 values, ARMv7 is 32 bit). that can be worked arround of course, but a larger problem we'd have is that we're being generally sloppy in the current JIT with the distinction
13:51 brrt whats more, we generally use large swaths of custom assembly for every block, and all of that would have to be ported
13:51 timotimo of course
13:52 brrt if you'd do it after the expression compiler had been put into place, things should be simpler on one hand; you'd just need to define a large enough tileset
13:52 brrt if you'd do it today, your larger challenges would be dealing with ABI (c-calls)
13:53 brrt in general, all the architecture specific bits are contained in emit_x64.dasc ; so it's not like all of the graph stuff would have to be rewritten
13:54 brrt that said, i'm not even 100% sure on what the expression IR will be like
13:54 timotimo mhm
13:55 brrt it'd be a quite significant challenge to take up in exchange for a pyra computer
13:56 timotimo hmm
14:00 brrt i would add: because /me didn't take portability into sufficient account during the development of the x64 jit
14:01 timotimo i thought having emit_*.dasc would be a good portability "tool"
14:01 jnthn We'd be no better off without it :)
14:02 timotimo :)
14:02 timotimo i rebased merge_facts_at_phi and ran a spectest, it's all clean
14:02 timotimo i wonder if i should merge it before it gets forgotten again :)
14:06 FROGGS Stage parse      : 1407.825  Stage syntaxcheck:   0.042  Stage ast        :   0.017  Stage optimize   : 274.049  Stage mast       : Killed
14:06 FROGGS Makefile:417: recipe for target 'CORE.setting.moarvm' failed
14:06 FROGGS make: *** [CORE.setting.moarvm] Error 137
14:06 FROGGS :o(
14:06 timotimo uh oh
14:11 FROGGS what can I do?
14:11 timotimo this is on the raspberrypi?
14:11 FROGGS (this happens on the raspberry I own since a few hours)
14:11 FROGGS aye
14:11 timotimo ah
14:11 timotimo i have no idea :\
14:18 brrt (aaargh bad news :-(
14:18 brrt )
14:19 timotimo uh oh
14:19 brrt ... i need a different strategy
14:19 brrt i had expected i could use the marking functionality of dynasm to mark the REX byte
14:19 brrt so that i can OR in the right flags at encoding time
14:20 brrt however, that won't work because the MARK is also used to mark the ModR/M byte
14:20 brrt in fact, just before the REX byte
14:20 brrt eh, the VREG action
14:21 brrt on the other hand
14:21 brrt waitaminute
14:21 brrt i think i can safely move the mark *after* the vreg
14:22 brrt ah, no, not really so easily
14:26 brrt hmmm
14:27 brrt ok, puzzling continues
14:41 brrt hmmpf
14:41 brrt i'm afk for the night
14:41 FROGGS :S
14:41 brrt no success yet
14:41 brrt :-(
14:42 brrt sorry kids... i'll figure it out sooner or later :-)
14:42 FROGGS :o)
14:42 timotimo i'm expecting that :)
14:42 brrt there is always a solution
14:42 brrt what there is not always is a nice solution
14:42 brrt but always a solution :-)
14:59 JimmyZ_ joined #moarvm
15:38 FROGGS joined #moarvm
16:22 synbot6 joined #moarvm
16:32 vendethiel joined #moarvm
17:05 vendethiel joined #moarvm
17:06 colomon joined #moarvm
17:55 vendethiel joined #moarvm
18:03 colomon joined #moarvm
18:09 mj41 joined #moarvm
18:24 vendethiel joined #moarvm
18:30 JimmyZ_ joined #moarvm
18:48 vendethiel joined #moarvm
19:08 hoelzro I've noticed when running Rakudo programs that ps aux shows the gnarly moar command line invocation; is there any desire to have it show the perl6 command line instead?
19:18 jnthn Some, but not enough to make it happen :)
19:19 jnthn (yet) :)
19:19 hoelzro =)
20:04 hoelzro it seems that libuv only exposes a binding to prctl, which changes /proc/$PID/name, which ps (on Linux) doesn't use =(
20:06 nwc10 if you want to see what Perl 5 does (and how many different approaches might work) look in mg.c
20:06 nwc10 search for LOCK_DOLLARZERO_MUTEX
20:07 nwc10 prctl(PR_SET_NAME, ...) might be the most simple to (also) implement
20:07 nwc10 oh, wait, you just said that
20:08 nwc10 so, sigh, sadly, looks like what's needed is to overwrite argv[0]
20:17 colomon joined #moarvm
20:20 hoelzro yup =(
20:20 hoelzro which I'm willing to bet is in an RO segment on some OSen
20:23 nwc10 not on any that Perl 5 runs regression tests on.
20:25 hoelzro ok, that gives me hope =)
20:51 * jnthn packs up his main dev machine for it's journey to $new-home, and hopes it'll make it in one piece.
20:51 jnthn *its
20:52 * jnthn will have to survive on half the cores for the next days...
20:57 dalek MoarVM/wip-mvmarray-refactor: f60e50f | jnthn++ | src/ (7 files):
20:57 dalek MoarVM/wip-mvmarray-refactor: [NOT FOR MERGE] WIP on MVMArray refactor.
20:57 dalek MoarVM/wip-mvmarray-refactor: review: https://github.com/MoarVM/MoarVM/commit/f60e50fd73
20:58 lizmat jnthn: safe journeys!
21:00 jnthn lizmat: I'm not journeying for another few days yet :)
21:01 jnthn Just shipping a bunch of stuff tomorrow :)
21:04 lizmat ah, shipping... let me *not* tell our story of shipping stuff recently until it has safely arrived  :-)
21:04 lizmat *yours
21:11 brrt joined #moarvm
21:12 jnthn :-)
21:12 * jnthn hopes to not have any stories to tell :)
21:14 dalek joined #moarvm
21:14 jnthn Having just seen the back of this machine for the first time since I got it ~1.5 years ago...I think I can say a can of compressed air will be one of the first purchases when I get it over to Praha :)
21:15 brrt (what kind of machine uses compressed air? :-o)
21:15 brrt or, compressed air as a cleaning tool
21:15 brrt oh, i've come to ask for advice
21:15 lizmat jnthn: you should see it if you have cats  :-)
21:15 brrt not sure if advice is the right word, but
21:16 * lizmat is in 2 minds: do I say "don't do that" or "go for it!" ?
21:16 brrt i had planned on using the generic marking facility of dynasm to signify the REX byte (the one that has to be extended in order to address the upper GPRs)
21:17 lizmat .oO( can't give a sensible answer to that one )
21:18 brrt however, that won't work; the ModR/M encoding machinery relies on the same marking facility, and sits between the rex byte and the vreg action byte (the one that instructs dynasm to encode a dynamic register)
21:18 brrt so i'd expect to modify my REX byte and would in fact modify the ModR/M byte
21:18 brrt less than awesome
21:19 brrt the easiest way out of this would be to add another way of specifically marking the REX bytes
21:19 brrt it'd be called MARK_REX of MREX or something like that
21:20 brrt in general, i'm more in favor of *using* functionality rather than creating it. but i don't think i have much choice now
21:21 brrt do you think this is a sensible way forward?
21:21 brrt (i have one more issue left,though, to figure out exactly in which bit of the rex byte the extension bit goes. but i can figure that one out, i think, or change dynasm to provide the information at runtime)
21:22 brrt (am i making sense at all)
21:24 brrt the alternative would be searching the byte, i guess?
21:25 jnthn Well, if you've a state machine that doesn't have the state you need... :)
21:26 brrt i suppose that's the state i find myself in, yes :-)
21:29 brrt hey, what's going on with the mvmarray-refactor thingy
21:29 brrt :-)
21:29 jnthn It's wise to look for existing things to re-use, but going too nuts on that can end up in a worse place...
21:30 jnthn brrt: That's a pile of code that was sat on a machine that's about to spend (hopefully just) several days on the road, and I wanted it to hand in case I decided to hack on it in the next days :)
21:30 jnthn but it doesn't even build
21:31 jnthn So I figured I'd flag it prominently to stop folks wasting much time reviewing it :)
21:31 jnthn (or trying to build it, 'cus it doesn't build either)
21:31 brrt right :-) i didn't know that it was a goal to change mvmarray
21:40 brrt good news, for once
21:41 brrt near as i can tell dynasm already differentiates between the kind of things it puts into SIB/ModRM bytes
21:41 brrt (both are involved with addressing)
21:41 brrt i think it does it for internal checking purposes
21:41 brrt but for me it means i can use that to decide which bit to set in the REX byte
23:11 vendethiel joined #moarvm
23:59 vendethiel joined #moarvm

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