Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-07-17

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

All times shown according to UTC.

Time Nick Message
01:04 vendethiel joined #moarvm
01:48 ilbot3 joined #moarvm
01:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
02:39 colomon joined #moarvm
03:00 prammer joined #moarvm
03:14 prammer joined #moarvm
05:28 ilbot3 joined #moarvm
05:28 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
05:39 pyrimidine joined #moarvm
06:16 FROGGS joined #moarvm
06:52 colomon joined #moarvm
07:40 brrt joined #moarvm
07:49 brrt \o
07:49 FROGGS o/
07:49 nwc10 o/
07:49 brrt you're all very awake today
07:50 FROGGS I just pretend that I am :/
07:51 brrt that's also a good strategy
08:02 zakharyas joined #moarvm
08:16 brrt hmmm
08:17 brrt this... sucks
08:17 brrt i plug a hole here, it reappears there
08:26 FROGGS is this about rats or abotu programming?
08:26 FROGGS about*
08:28 brrt programming
08:28 nwc10 at least it's not about coffee
08:29 FROGGS well, in some way every cup has at least one hole
08:29 nwc10 I claimed that the problem with my beer glass was that it had a hole, and hence the beer escaped
08:29 nwc10 and Joseph (who doesn't exist) observed that topologically, it doesn't
08:29 nwc10 and he's right
08:30 nwc10 (Next time, I need to find a glass with a handle)
08:30 FROGGS O.o
08:30 FROGGS ===SORRY!=== ===CONFUSED===
08:31 nwc10 FROGGS: "picture" of Josef on http://vienna.yapceurope.org/ye2007/team.html confirms the doubtfulness of his existence
08:36 FROGGS *g*
08:37 brrt lol
09:22 vendethiel joined #moarvm
09:28 brrt joined #moarvm
09:29 jnthn brrt: I was pondering write barrier JIT a bit
09:29 brrt aye
09:29 brrt i'm listening
09:29 nwc10 \o/ jnthn bootstrapped!
09:29 jnthn brrt: And we know a few things about them that let us cheat quite hard and have better code, maybe...
09:29 brrt ok, i'm listening
09:29 * nwc10 was worried about holes in the coffee system
09:30 brrt summer has failed to bootstrap here
09:30 jnthn We know (a) hitting is rare, and (b) yes it's a C function we call if we miss, but it never will trigger a GC so we don't need to spill to correct MoarVM registers
09:30 nwc10 brrt: it has here: http://www.bbc.com/weather/2761369
09:30 nwc10 (and the previous weeks, but we were in the UK avoiding it)
09:30 brrt wat, 36C
09:31 nwc10 it does that here.
09:31 nwc10 there isn't a nearby sea to keep things cool.
09:32 jnthn So we could in theory emit write barriers as checking if we'd hit it, and if so pushing the object in question to the stack, pushing our current PC to the stack, jumping to a single handler at the end of the JITted machine code that saves all callee-save registers unconditionally and calls the write-barrier funtion
09:32 nwc10 be more worried that the temperature drops no lower than 27⁰C overnight
09:32 jnthn *function
09:33 jnthn (And then we always emit that code at the "tail")
09:34 jnthn We know we can get away with it since we'll never need the MoarVM register bank to be in good shape.
09:34 jnthn And we can not worry about wasting time saving too much as it should be relatively uncommon.
09:35 * jnthn hopes this isn't a really dumb suggestion for some reason he's not seeing yet :)
09:38 brrt no, it's a good idea
09:39 brrt however, it'd mean 'upping' the write barrier in the expr ir from macro to full node
09:40 brrt but, i like it
09:40 jnthn Explain the "upping"?
09:42 brrt a write barrier would have to be a primitive node, as far as i can tell
09:42 brrt rather than a macro for a tree
09:42 nwc10 it's just occurred to me - how is the *implementation* of Rakudo doing, by this criteria? http://www.wired.com/2012/06/beard-gallery/
09:43 brrt i'm working on it, nwc10
09:43 nwc10 my thought was promted by
09:43 brrt jnthn also has a significant contribution in that regard
09:43 nwc10 09:40 < masak> so now I simply don't see the point.
09:44 nwc10 and wondering if masak needs more moustache. And then remembering that he has a beard
09:46 brrt http://www.wired.com/wiredenterprise/wp-content/uploads//2012/06/beard-programmers-final-two.png
10:01 brrt aha, i've got it
10:01 brrt pfew
10:03 jnthn brrt: The bug you were hutning?
10:03 jnthn *hunting
10:03 brrt yes
10:03 brrt it seems
10:03 brrt long story short
10:04 brrt an IF (expression IF, not statement if, that's called WHEN) tries to spill registers before starting
10:04 brrt the THEN and ELSE parts will *invalidate* registers before doing so
10:04 brrt eh, after
10:05 brrt basically, after you've reached the end of the IF, you can't really be sure whether you took THEN or ELSE, right
10:06 brrt they're just basic blocks in that regard
10:07 brrt (i'm pondering adding a 'basic block' abstraction into the tree, to be used for register allocation)
10:07 brrt anyway, the values used in the THEN and ELSE statement may refer to those computed in the IF statement
10:08 brrt hence, the spill should come after the condition, not before the IF
10:08 brrt not sure if making sense, but there it is
10:11 jnthn yeah, makes sense.
10:22 dalek MoarVM/even-moar-jit: b78261f | brrt++ | src/jit/ (2 files):
10:22 dalek MoarVM/even-moar-jit: Emit spill should come after IF condition
10:22 dalek MoarVM/even-moar-jit:
10:22 dalek MoarVM/even-moar-jit: The condition part of an IF expression is always taken, and may
10:22 dalek MoarVM/even-moar-jit: be the first time a value is computed. Thus, values need to be
10:22 dalek MoarVM/even-moar-jit: spilled there because they may be invalidated elsewhere.
10:22 dalek MoarVM/even-moar-jit:
10:22 dalek MoarVM/even-moar-jit: In general the logic of 'invalidation' and 'spilling' is much
10:22 dalek MoarVM/even-moar-jit: to simplistic, because the value may also be computed during
10:22 dalek MoarVM/even-moar-jit: traversal to any other node, and if invalidated the traverser
10:22 dalek MoarVM/even-moar-jit: is not willing to revisit it. (Thus, the value may be lost an
10:22 dalek MoarVM/even-moar-jit: incomputable).
10:23 brrt i'd argue that 90% of my work this week is of the building-to-throw-away type
10:23 brrt it's .. understandable on a high level that this should be so, but at the same time quite frustrating
10:25 jnthn You may still come out ahead
10:25 jnthn In so far as when you replace this with the clever thing, you'll know any bugs are in *it*, not elsewhere in the stack.
10:26 brrt yeah, that's the plan :-)
10:26 brrt also gathering knowledge on whats actually needed in our case
10:29 cognominal joined #moarvm
10:38 brrt lunch &
10:39 xiaomiao joined #moarvm
13:04 [Coke] (picture of josef) Holy crap, it's Leo!
13:06 nwc10 [Coke]: I'm not sure what Leo's doing in his spare time these days
13:28 timotimo i'm increasingly feeling the need/interest for building a web app for spesh log analysis
13:28 timotimo i wonder if the spesh log should grow a second mode where it outputs json or if should just output json by default
13:37 nwc10 to output well-formed JSON you'd need to add a closing ']' at program exit time?
13:38 timotimo i'm actually thinking of evil invalid json with "stanzas"
13:39 timotimo but AFAIK you wouldn't attach to the spesh output during a live program anyway
13:39 nwc10 there seem to be some de-facto standards: https://en.wikipedia.org/wiki/JSON_Streaming
13:42 timotimo ah, neato
13:42 timotimo "send json objects formatted without newlines" - nope. nope. nope.
13:42 timotimo i want to retain *some* readability for hoomans
13:45 timotimo that jq tool that's mentioned in the article seems helpful in that regard
13:45 timotimo if you want to grep stuff, schwartzian it through jq
13:45 masak newlines tend to clog up the tubes. they're very tall, vertically.
13:46 masak they get stuck easily in bends.
13:46 timotimo that's no good, then
13:46 timotimo what about | characters?
13:46 timotimo how do pipes fit into tubes?
13:47 timotimo worst case they just let all the rest flow through themselves and hardly move forward at all
13:47 timotimo your code ends up missing all | characters and a day later they all arrive as one long pipe inside the tube
13:53 FROGGS joined #moarvm
14:37 brrt joined #moarvm
15:13 JimmyZ_ joined #moarvm
17:13 FROGGS joined #moarvm
20:35 raiph joined #moarvm
22:11 timotimo ah, i just stumbled upon why prefix:<!> with a native int won't turn into good code ...
22:11 timotimo box_i boxes the native int into an object that has the boolification mode BIGINT
22:12 timotimo so i can build a mode for the bigint boolification that checks for KNOWN_BOX_SOURCE
22:19 TEttinger joined #moarvm
22:19 vendethiel joined #moarvm
23:02 timotimo jnthn: under what circumstances can we throw out a bindlex_no? we have one that binds &?ROUTINE for pretty much every routine-level piece of code
23:49 raiph joined #moarvm
23:52 xiaomiao joined #moarvm
23:52 vendethiel joined #moarvm

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