Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-07-05

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

All times shown according to UTC.

Time Nick Message
00:09 lizmat joined #moarvm
01:03 ggoebel joined #moarvm
01:29 ggoebel 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
04:23 samcv ugh this segfault is so annoying in my font info query module
04:23 samcv i'm trying to rename my fonts but it just still dies at the same place segfaulting
04:23 samcv just using run shouldn't be so fragile :\
04:52 brrt joined #moarvm
05:33 brrt joined #moarvm
05:34 brrt good *
05:35 brrt ohai samcv
05:35 brrt i agree… but i haven't actually looked at why it breaks
06:01 brrt .ask jnthn what exactly is the meaning of the DEOPT_INLINE thingie?
06:01 yoleaux brrt: I'll pass your message to jnthn.
06:20 TimToady joined #moarvm
06:26 timotimo hm, whether a deopt inline point has to be put into the code depends on a flag set on the op, but the only inline related :foo i see in the oplist is :noinline and i don't think that's what
06:47 brrt joined #moarvm
06:48 brrt hmmm
07:02 brrt geth is down?
07:02 brrt anyway
07:06 timotimo you commited? :)
07:06 timotimo doesn't look like
07:07 timotimo bleh. man really really sucks when it comes to tables, doesn't it?
07:08 timotimo this table has four columns, one of which has contents max 5 chars long, the other one max 2 chars long
07:08 timotimo then there's a name field that's a bit longer and a description field that's usually many lines long
07:08 Geth ¦ MoarVM/even-moar-jit: 46aa94339e | (Bart Wiegmans)++ | 6 files
07:08 Geth ¦ MoarVM/even-moar-jit: GUARD node should have separate before and after controls
07:08 Geth ¦ MoarVM/even-moar-jit:
07:08 Geth ¦ MoarVM/even-moar-jit: It can now be reused to issue dynamic label controls before and not
07:08 Geth ¦ MoarVM/even-moar-jit: after the controls. The tiler is dumber, the expression tree builder
07:08 Geth ¦ MoarVM/even-moar-jit: is more clever, but it is in a better position to be anyway.
07:08 Geth ¦ MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/46aa94339e
07:09 timotimo http://imgur.com/AFCn7hX WHHHYYYYYYYyyyyy
07:09 brrt lol
07:09 timotimo http://man7.org/linux/man-pages/man5/terminfo.5.html - not better >:(
07:10 brrt not really
07:10 brrt yeah, i merged in master so we're like, totally up to date again
07:11 timotimo cool
07:12 brrt but like i said, that uncovered the fact that the expression builders' approach to annotations is completely broken
07:13 timotimo good to know!
07:13 timotimo reading the commit right now
07:13 brrt it also underscores the fact that relying on the JIT to insert the code to keep track of the 'current position' is suckage itself
07:14 timotimo "the jit" or "the template jit"?
07:14 brrt both
07:14 brrt we can get the current position from walking the stack
07:14 brrt but that requires a bit of assembly
07:15 timotimo mhm
07:15 brrt and build system support
07:15 timotimo oh?
07:15 brrt now, i know that clang and gcc can consume assembly just fine
07:15 brrt but msvc doesn't
07:15 timotimo fantastic
07:15 timotimo just assemble the right code at run-time :)
07:15 brrt fortunately, microsoft does ship the assembler
07:15 brrt could do that, yes, but it is wasteful
07:16 timotimo in fact, why don't we rewrite all of moarvm in exprjit and just have a tiny stub that starts up and bootstraps moar itself from the jit info
07:16 brrt there are a bunch of reasons not too
07:16 brrt but, arguably, most of them are either historical: we already wrote moarvm in this other way
07:17 brrt and the other reason is, the expr jit isn't very good yet so it would currently suffer a considerable slowdown
07:17 brrt by the way, that's exactly what m0 was trying to do for parrot
07:17 timotimo oh, huh
07:17 brrt obviously, they never had a JIT for that
07:17 brrt thirdly, if you're going to go that path… then I suggest LLVM starts to make a bunch more sense than it does now
07:17 timotimo pypy does have a great benefit from the whole interpreter and compiler being traced down to almost-assembly
07:18 timotimo but i'm not serious about this :)
07:18 brrt pypy does, yes, and luajit
07:18 brrt well, i am :-)
07:18 brrt it *is* a good way to design an interpreter
07:18 brrt if high performance is the goal
07:18 brrt it's is not a good way to achieve high portability
07:19 timotimo mhm
07:19 brrt luajit2 was ported to powerpc, and it took like, a ton of money from IBM to get that done
07:19 brrt now, i don't mind porting moarvm to powerpc with a ton of sponsorship… but
07:19 brrt i have to be realistic at some point
07:20 timotimo you don't think sponsoring would be feasible?
07:20 brrt honestly, i never have really asked
07:21 brrt but i frankly foresee an uphill battle :-)
07:22 brrt (I think _why had an interpreter/jit he designed over a $short-period-of-time based on exactly the same idea)
07:22 timotimo oh my, tput blink actually does blink text for a little bit
07:22 timotimo i never knew about this feature
07:23 domidumont joined #moarvm
07:24 timotimo it blinks the text forever, but only while the terminal is focussed (in Konsole at least)
07:25 zakharyas joined #moarvm
08:51 jnthn morning o/
08:51 yoleaux 06:01Z <brrt> jnthn: what exactly is the meaning of the DEOPT_INLINE thingie?
08:54 jnthn brrt: It's a deopt point in something that has been inlined
08:55 jnthn The point iirc is to ensure that we end up with them in the inlining routine's deopt table
08:56 brrt aha
08:56 jnthn And to fix them up correctly when doing nested inlines
08:56 brrt i see
08:58 zakharyas joined #moarvm
09:03 samcv grant status update 2 up https://cry.nu/perl6/grant-status-update-2/
09:05 jnthn samcv: Are you on OSX?
09:05 samcv no
09:06 jnthn OK. You mentioned something about run and segv
09:06 samcv oh
09:06 samcv nope i'm on linux
09:06 samcv i opened a moarvm bug for it
09:06 samcv but yeah that's what is causing it
09:06 samcv crap did i not finish a bug
09:07 * jnthn doesn't see it in issues
09:07 nine samcv: FWIW I tried to golf your run issue but just couldn't get moarvm to misbehave :/ Well, except with perl6 -e 'for ^10000 { my $proc = run << cat >>, :in, :out; $proc.in.say: $_; $proc.out.get.say; }'
09:07 nine That ends up with "MoarVM panic: Internal error: zeroed target thread ID in work pass".
09:07 samcv ok now it's submitted :) https://github.com/MoarVM/MoarVM/issues/608
09:08 samcv i started finishing my grant update and didn't hit submit :)
09:14 jnthn nine: ooh, that sounds related
09:15 jnthn I wonder if I can get it to crash
09:16 jnthn hah, segv
09:16 jnthn During GC freeing
09:20 jnthn Stranger still, after a while the output becomes Nil
09:21 jnthn Hmm
09:21 jnthn But this example never does .close
09:21 jnthn So it'll be leaking handles like mad
09:23 nine jnthn: yes, that's intentional. Since I couldn't find anything wrong with correct usage, I tried to use it wrongly.
09:25 jnthn hah, the GC debug mode caught it
09:25 brrt GC debug mode ++
09:32 jnthn Indeed, though it's still hard to spot
09:33 jnthn oh, duh
09:39 Geth ¦ MoarVM: 4e29e4c717 | (Jonathan Worthington)++ | src/io/procops.c
09:39 Geth ¦ MoarVM: Fix an accidental nested redeclaration in proc.
09:39 Geth ¦ MoarVM:
09:39 Geth ¦ MoarVM: This meant that the boxed error message that we produced as not being
09:39 Geth ¦ MoarVM: MVMROOTed, so it could become out of date.
09:39 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4e29e4c717
09:39 nine Oh, that's a devious one
09:40 jnthn Indeed
09:40 jnthn Was staring at the code for a while to figure it out
09:42 jnthn Font query still SEGVs, alas
09:42 jnthn Hm, in MVMCallCapture.c's gc_mark function :/
09:43 * jnthn turns GC debug up to level 2 just in case
09:44 jnthn Which finds nothing, alas
09:44 jnthn Lets see about valgrind
09:46 jnthn Which is as glacial as you might expect
09:48 nine I thought will global warming glaciers are not as slow as they used to be
09:49 jnthn Pretty sure my CPU is contributing at the moment... :)
10:08 nwc10 it wants you to go to lunch
10:08 nwc10 a looooooooooong lunch break
10:09 jnthn Ended up working on the spesh guards redesign while it runs
10:09 jnthn (yes, it's still running o.O)
10:10 * nwc10 wonders if it will finish before ilmari goes to lunch
10:38 Geth ¦ MoarVM/spesh-worker: a1b7cd868a | (Jonathan Worthington)++ | 3 files
10:38 Geth ¦ MoarVM/spesh-worker: Sketch out new arg guard data structure.
10:38 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/a1b7cd868a
10:45 robertle joined #moarvm
10:55 * dogbert17 clickbaits https://gist.github.com/dogbert17/4e860f64a9efa8e3d9a950d6b30945d7
10:56 jnthn Oops, that looks like a premature gc_free
11:00 * jnthn cancels the valgrind
11:01 jnthn Ohh, it did spit out invalid reads as it went
11:01 dogbert17 cool
11:01 jnthn And yeah, they look the same as your ASAN output
11:04 jnthn Alright, got a rough plan for the spesh guards changes now
11:04 jnthn Lunch, then will work on it
12:00 ilmari nwc10: lunch!
12:00 ilmari sausage guru!
12:01 jnthn Mmm...sausages :)
12:01 ilmari http://www.sausageguru.co.uk/
12:02 ilmari they have a food truck outside the office
12:03 jnthn Ooh, nice :)
12:13 * ilmari[m] uploaded an image: file1499256799300.jpg (310KB) <https://matrix.org/_matrix/media/v1/download/matrix.org/mCgvKTkMzReSnXfjeZHFNHMi>
12:13 ilmari[m] Having a Günther's Fav
12:25 zakharyas joined #moarvm
12:26 jnthn Mm, sounds delish
12:48 Geth ¦ MoarVM/spesh-worker: af983b4c08 | (Jonathan Worthington)++ | 6 files
12:48 Geth ¦ MoarVM/spesh-worker: Hang argument guards off static frames.
12:48 Geth ¦ MoarVM/spesh-worker:
12:48 Geth ¦ MoarVM/spesh-worker: Also add GC marking and cleanup of them.
12:48 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/af983b4c08
13:24 Geth ¦ MoarVM/spesh-worker: 802bba1c35 | (Jonathan Worthington)++ | src/spesh/stats.h
13:24 Geth ¦ MoarVM/spesh-worker: We shall also need stats on container rw-ness.
13:24 Geth ¦ MoarVM/spesh-worker:
13:24 Geth ¦ MoarVM/spesh-worker: This isn't yet logged, but adding it to the stats data structure as it
13:24 Geth ¦ MoarVM/spesh-worker: will be needed as part of the log guards migration.
13:24 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/802bba1c35
13:24 Geth ¦ MoarVM/spesh-worker: 33af11c084 | (Jonathan Worthington)++ | 2 files
13:24 Geth ¦ MoarVM/spesh-worker: Differentiate between used and total nodes.
13:24 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/33af11c084
13:33 jnthn My rough plan is to use the new specialization selector thingy in existing spesh, to ensure it works
13:34 buggable joined #moarvm
13:36 buggable joined #moarvm
14:00 Geth ¦ MoarVM/spesh-worker: c7045e7665 | (Jonathan Worthington)++ | src/spesh/arg_guard.h
14:00 Geth ¦ MoarVM/spesh-worker: Need an op for callsite matching also.
14:00 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/c7045e7665
14:06 buggable joined #moarvm
14:08 buggable joined #moarvm
14:10 buggable_ joined #moarvm
14:18 brrt joined #moarvm
14:21 Geth ¦ MoarVM/spesh-worker: d17c40af2b | (Jonathan Worthington)++ | src/spesh/arg_guard.h
14:21 Geth ¦ MoarVM/spesh-worker: Specify how no-match terminates.
14:21 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/d17c40af2b
14:21 Geth ¦ MoarVM/spesh-worker: 50577a9596 | (Jonathan Worthington)++ | src/spesh/arg_guard.h
14:21 Geth ¦ MoarVM/spesh-worker: Give the deref ops better names.
14:21 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/50577a9596
14:34 brrt joined #moarvm
14:46 Geth ¦ MoarVM/spesh-worker: b40d7650e6 | (Jonathan Worthington)++ | 2 files
14:46 Geth ¦ MoarVM/spesh-worker: And provisional spesh arg guard dumper.
14:46 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/b40d7650e6
14:46 Geth ¦ MoarVM/spesh-worker: 134e3f0484 | (Jonathan Worthington)++ | 2 files
14:46 Geth ¦ MoarVM/spesh-worker: Add provisional spesh arg guard dumper.
14:46 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/134e3f0484
14:46 jnthn Darn typos :)
14:57 Geth ¦ MoarVM/spesh-worker: 9f02298c87 | (Jonathan Worthington)++ | src/spesh/dump.c
14:57 Geth ¦ MoarVM/spesh-worker: Add missing newline to result node dump.
14:57 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/9f02298c87
14:57 buggable_ joined #moarvm
14:58 buggable joined #moarvm
15:14 Geth ¦ MoarVM/spesh-worker: c0ffc6df67 | (Jonathan Worthington)++ | 2 files
15:14 Geth ¦ MoarVM/spesh-worker: Build up guard tree by callsite.
15:14 Geth ¦ MoarVM/spesh-worker:
15:14 Geth ¦ MoarVM/spesh-worker: Adding the type gurads into the tree is still to come.
15:14 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/c0ffc6df67
15:14 Geth ¦ MoarVM/spesh-worker: 45a961a9b8 | (Jonathan Worthington)++ | src/spesh/candidate.c
15:14 Geth ¦ MoarVM/spesh-worker: Build/dump new guards in existing spesh.
15:14 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/45a961a9b8
15:16 jnthn The types bit of it is quite tricky
15:16 jnthn Or at least, the general case is
15:17 jnthn In that under new spesh it will be able to decide no to guard on certain things in some cases
15:24 Geth ¦ MoarVM: vendethiel++ created pull request #609: Fix typo in add_guard
15:24 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/pull/609
15:24 Ven`` joined #moarvm
15:25 Geth ¦ MoarVM/spesh-worker: 7598dfdfdb | (Jonathan Worthington)++ | src/spesh/arg_guard.c
15:25 Geth ¦ MoarVM/spesh-worker: Correct thinko; great catch by Ven++.
15:25 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/7598dfdfdb
15:25 jnthn oh, you did a PR while I was fixing it :)
15:26 Ven`` Closing PR :)
15:26 Ven`` I hope there's a blog post about this part in the distant future, it seems very interestng.
15:28 jnthn Yeah, there will be
15:28 * jnthn still has a queue of things to blog about
15:28 jnthn Did manage to get at least one of them done recently :)
15:33 zakharyas1 joined #moarvm
15:53 brrt joined #moarvm
15:53 brrt ohai #moarvm
15:53 brrt the train operator has been so kind to give me internet
15:55 Geth ¦ MoarVM/spesh-worker: d534d97536 | (Jonathan Worthington)++ | src/spesh/arg_guard.c
15:55 Geth ¦ MoarVM/spesh-worker: Insert arg load ops.
15:55 Geth ¦ MoarVM/spesh-worker:
15:55 Geth ¦ MoarVM/spesh-worker: For now, the sparse type tuple case cannot occur (since spesh will
15:55 Geth ¦ MoarVM/spesh-worker: currently pick a type for every arg to specialize on); this part will
15:55 Geth ¦ MoarVM/spesh-worker: be added when this is later relaxed, when there will be a way to hit
15:55 Geth ¦ MoarVM/spesh-worker: such code paths.
15:55 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/d534d97536
15:56 jnthn brrt: I hope that's not in return for a delay :)
16:01 timotimo hm, that's an chaining infix operator, isn't it?
16:01 brrt well, yeah, it kind of is
16:01 brrt or a detour if you will
16:01 brrt funny thing
16:03 brrt train was cancelled, but ICE was reported to be running
16:03 brrt so, obviously, I try to go get that ICE
16:03 brrt 1 minute or so before it leaves, they say that it has been rerouted and will not stop in the netherlands at all
16:03 brrt so had i taken it, i'd be on my merry way to germany
16:04 brrt jnthn: it occurs to me that the spesh annotations have like, no guarantee at all not to be conflicting
16:04 jnthn Surprise bratwurst!
16:04 brrt :-D
16:04 brrt and that, for the JIT at least, handling can introduce conflicts galore
16:04 brrt the good news
16:04 brrt they did that already
16:05 brrt well, not really, though, some of them would be handled prior, and some posterior, and the expr jit doesn't make that distinction
16:05 brrt let's hope that doesn't kill me....
16:05 brrt … i can think of a way in which it won't, though
16:05 jnthn What conflicts do you have in mind?
16:06 brrt for instance, between FH_END and INLINE_END
16:07 brrt FH_END marks an exclusive end, so we need to insert a label and an 'label-loader' prior to the instruction
16:07 brrt INLINE_END marks an inclusive end, so we need to insert a label after the instruction
16:08 brrt only trouble is, when we insert a label-loader, we do so by wrapping, which replaces the node that is to become a root
16:09 brrt but when we insert a posterior label, i 'hack' that by inserting the current node as a root and making the label-insertion into a root
16:09 brrt so...
16:09 brrt the real problem is
16:09 brrt i'm hacking stuff together
16:10 jnthn Why can't we insert before/after in that case? :)
16:14 brrt because in my hack, i could either up in the good case: FH_END comes before INLINE_END, in which case i'll insert the wrapped node first and the label second, or in the bad case, in which case IINLINE_END comes before the FH_END, and I try to wrap the node that makes the label
16:14 brrt which would be bad
16:17 brrt the 'obvious' fix is to 'collapse' the ocnflict
16:17 brrt and split the business into a before_label and an after_label
16:17 brrt wrapping is now a separate business
16:23 Geth ¦ MoarVM/spesh-worker: 5f2dc0dbf4 | (Jonathan Worthington)++ | src/spesh/arg_guard.c
16:23 Geth ¦ MoarVM/spesh-worker: Insert top-level types into guard tree.
16:23 Geth ¦ MoarVM/spesh-worker:
16:23 Geth ¦ MoarVM/spesh-worker: Again, making the assumption that we only have the kinds of
16:23 Geth ¦ MoarVM/spesh-worker: specializations that current spesh produces; this will need a tweak once
16:23 Geth ¦ MoarVM/spesh-worker: we have those that aren't predicated on type tests.
16:23 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/5f2dc0dbf4
16:27 jnthn Alright, enough for today. Tomorrow I try and get this guard tree stuff finished enough for what spesh can do today
16:27 jnthn Then will write the interpreter for it
16:28 jnthn Maybe will get far enough tomorrow to be able to switch over to using it
16:30 jnthn bbl
16:56 domidumont joined #moarvm
17:08 Ven`` joined #moarvm
17:14 Ven`` jnthn: I'm probably pushing my luck, but reading https://github.com/MoarVM/MoarVM/commit/5f2dc0dbf44e1edb57bdfa699190742860830cdc#diff-8dfb353347375ceb77fcbe953156c6f6R113, it seems like ag->nodes[0] is never considered?
18:26 jnthn Ven``: Never, or just in get_type_check_node?
18:26 jnthn Ven``: The tree structure we build is such that such a node could never occur at top level, though
19:33 buggable joined #moarvm
19:40 buggable joined #moarvm
20:03 AlexDaniel joined #moarvm
20:24 FROGGS joined #moarvm
20:30 AlexDaniel joined #moarvm
20:48 Ven joined #moarvm
21:21 Ven_ joined #moarvm
21:35 Ven_ joined #moarvm

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