03:51 zakharyas joined 06:14 domidumont joined
timotimo maybe the "x + substr gets you off-by-one results" bug would be good for jnthn's perl6-day? 06:28
06:40 domidumont joined 06:42 domidumont joined 07:34 brrt joined
brrt good * #moarvm 07:34
tell you what i find reading
'to build live ranges from SSA form, the allocator uses the disjoint-set union-find algorithm and makes a single pass over the code'
2016 is, for me, the year of the disjoint-set union-find algorithm 07:35
it is honestly the only algorithm in all of gridkit
merge lines? union-find
merge stations? union-find
classify line parameters? union-find
and now, compute live ranges, with union find 07:36
how is that the single most useful algorithm
nwc10 So it's important that it's fast? Then to misquote Steve Jobs, there should be an Op for that? :-) 07:41
sorry, that joke doesn't *really* work.
brrt thinks about that joke a bit 07:43
aha :-)
oh well, iirc the union-find algorithm runs in very-slightly-above-linear time if you use the proper data structures
turns out in the future i will be using a macbook for work, so hopefully i'll find moarvm mac bugs a bit faster 07:44
timotimo ... oppan steven style ... 07:47
brrt i wonder if i can get rid of the let-restriction in the expr jit 07:50
(i require variables that are used in two paths of an conditional statement to be 'let' prior to the statement, so that they are evaluated prior to the IF
so that both branches acquire an already-made variable 07:51
but it shouldn't be that hard to ensure the invariant that a value must be computed prior to its use in a conditional block without this
timotimo: you once wrote a tool to parse graph.c to exprjit fragments, didn't you 07:54
do you know if that tool still works
08:42 zakharyas joined
timotimo i think it's committed to moar/tools, isn't it? 08:47
it ought to at least partially work :) :)
unless C has changed its syntax a bunch in the last ~year 08:48
uh oh, i'm getting late to my appointment to get dentistisized 08:51
jnthn moarning, folks 09:30
Darn, brrt left before I could ask him for some good reading on the disjoint-set union find algo :) 09:31
oh, right :) 09:33
nwc10 He'll be back :-) 09:35
jnthn: somewhere in backlog I pasted some stuff - there's now one spectest failing with ASAN, minimal testcase now attached to its RT ticket. 09:36
(the failing spectest is a TODO for an open bug)
jnthn It's in utf8-c8, yes? 09:37
nwc10 IIRC yes
timotimo my dentist appointment went very well. also, it seems like i'm one of the lucky few who lack the bacteria that cause caries AKA cavities 10:05
dalek arVM: c3762be | jnthn++ | src/strings/ops.c:
Whitespace cleanup.
10:23
10:49 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Whitespace cleanup.' 10:49
travis-ci.org/MoarVM/MoarVM/builds/146338841 github.com/MoarVM/MoarVM/compare/4...762bed779a
10:49 travis-ci left
jnthn oh rly? :) 10:51
nwc10 NQP fail?
yes, NQP fail 10:52
timotimo hmm, the file ops. we recently got a change for the jvm there 10:53
jnthn m: say ("0" x 3 ~ "1").substr(2) 11:06
camelia rakudo-moar 5af32b: OUTPUTĀ«00ā¤Ā»
jnthn nqp: say("0" x 3 ~ "1") 11:08
camelia nqp-moarvm: OUTPUTĀ«Confused at line 2, near "say(\"0\" x "ā¤ at gen/moar/stage2/NQPHLL.nqp:706 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:panic)ā¤ from gen/moar/stage2/NQP.nqp:927 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/nqp.moarvm:comp_unit)ā¤ from gen/moā€¦Ā»
jnthn nqp: say(nqp::x("0", 3) ~ "1")
camelia nqp-moarvm: OUTPUTĀ«0001ā¤Ā»
jnthn nqp: say(nqp::substr(nqp::x("0", 3) ~ "1", 2))
camelia nqp-moarvm: OUTPUTĀ«00ā¤Ā»
jnthn nqp: BEGIN { substr('xxxx', 2) } 11:12
camelia nqp-moarvm: OUTPUTĀ«Cannot invoke this object (REPR: Null; VMNull)ā¤ at <tmp>:1 (<ephemeral file>:)ā¤ from gen/moar/stage2/NQP.nqp:394 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:)ā¤ from gen/moar/stage2/NQP.nqp:610 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqpā€¦Ā»
jnthn nqp: BEGIN { nqp::substr('xxxx', 2) }
camelia ( no output )
jnthn Hmm, mebbe found it 11:37
lunch, bbiab
11:51 brrt joined
dalek arVM: c01472d | jnthn++ | src/strings/iter.h:
Fix off-by-one in grapheme iterator.

It failed to consider that we are already reading the next repetition by the next time we read another character, and so ended up with a repetition appearing to occur one time too many if we used move_to.
12:10
12:35 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Fix off-by-one in grapheme iterator. 12:35
travis-ci.org/MoarVM/MoarVM/builds/146360032 github.com/MoarVM/MoarVM/compare/c...1472d7c539
12:35 travis-ci left
dalek arVM: 236058a | jnthn++ | src/6model/reprs/Semaphore.c:
Block/unblock thread for GC on semaphore wait.
12:37
brrt jnthn: what about disjoint-set union-find? 12:53
implementation with c and an array is straightforward 12:54
jnthn :) 12:56
Where did you read the think about using it for SSA live ranges? :) 12:57
*thing
brrt ehm... 'engineering a compiler' 12:58
all definitions are unioned at their phi nodes
*all live ranges that spread from definitions are unioned at their phi nodes 12:59
so that means that a register assigned to that live range is used throughout, which ensures that both inputs to the phi node will use the same register 13:01
that solves a bunch of complexity with regards to COPY and IF and DO nodes 13:02
these live ranges can of course be split again if necessary 13:03
15:51 lizmat joined 16:31 lizmat_ joined 16:57 lizmat joined 17:56 mtj_ joined 18:00 pyrimidine joined 18:17 FROGGS joined 18:33 lizmat joined 18:40 domidumont joined 18:42 Ven joined 19:20 khagan joined 19:43 brrt joined
brrt just had another thougth that should have been obvious 19:44
if live ranges are fully 'unioned'
then, they can't overlap in any way
so... my data structure of sets-of-things in a register, well that looks kind of silly now 19:45
looking silly is OK, i guess 19:48
as long as one learns... 19:49
FROGGS aye
brrt its just that i have to learn while you have to wait? and that isn't really good 19:51
of course unifying the live range of differeent things that are connected via phi nodes comes with problems of itself 19:52
timotimo oh well, we can mangae :)
brrt i'm sure you can 19:53
i just wan to push the expr jit into the world because (i think) it is really cool
or can be
is supposed to be 19:54
timotimo :) 19:58
brrt oh, i guess it's good news, for $future-work i'll be using a macbook, so that may make fixing macbugs a bit easier 19:59
and we'll have a fully awesome expr jit long before python has its 20:02
jnthn :)
timotimo python already hat psyco :P 20:04
brrt they have pypy, which is another thing entirely 20:05
i think i argued before that efficient high-performance python equals numpy
imho, R is better for that kind of stuff
but then, i like R, especially the evil bits
i could see myself using perl6 on a daily basis if i could port R's best bits 20:06
serious software developers should, by rights, hate R 20:07
R is gloriously messy
21:04 domidumont joined 22:22 lizmat joined