Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2016-11-09

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

All times shown according to UTC.

Time Nick Message
00:32 ggoebel joined #moarvm
02:48 ilbot3 joined #moarvm
02:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
03:19 ggoebel joined #moarvm
06:47 ggoebel joined #moarvm
07:27 domidumont joined #moarvm
07:31 domidumont joined #moarvm
07:42 brrt joined #moarvm
07:43 brrt \o #moarvm
07:47 nwc10 o/
07:58 TimToady joined #moarvm
08:10 brrt \o nwc10
08:10 brrt decision time
08:13 brrt I have two loops in linear scan which are very similar; they take live ranges in ascending-first-use order, maintain a list of active live ranges, expire registers when they are out of scope, etc.
08:14 brrt one of them is for *proving* that all values can fit into a register (and for modifying the code so that this holds true)
08:14 brrt the second is for assigning registers
08:14 brrt i thought initially that these were going to be very distinct loops, but they are not
08:14 brrt I can roll them into one, but at the cost of complexity
08:15 brrt (one specific example of complexity: if it happens that one live range wants a register that is already handed out, I have to swap them, which is not in itself that hard, but I may have to update the references-to-that-live-range too)
08:15 brrt actually, I don't have to do that... I can still resolve the references to live ranges in the second loop
08:16 brrt while rolling the register assignment into the first loop
08:16 brrt hmm, hang on, it doesn't entirely work so easily
08:16 brrt .... let me think for a bit
08:18 brrt nope, assign-then-spill never really runs into trouble
08:25 dalek MoarVM/even-moar-jit: bf9bf84 | brrt++ | src/jit/linear_scan.c:
08:25 dalek MoarVM/even-moar-jit: Copy register ring from old allocator
08:25 dalek MoarVM/even-moar-jit:
08:25 dalek MoarVM/even-moar-jit: Have to think for a bit about the roles of the two loops and
08:25 dalek MoarVM/even-moar-jit: when register assignment ought to be done.
08:25 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/bf9bf8421e
08:31 zakharyas joined #moarvm
10:39 nine brrt: is this code that's pretty much done or is it likely or at least possible that it will change?
12:53 brrt ehm... not sure how you mean
12:54 brrt but I think I can give an answer
12:54 brrt except for the bit I was going on about this morning, I'm fairly sure I have the gist of the algorithm now
12:55 brrt i won't be replacing it with another algorithm with wildly different characteristics
12:56 brrt I'm intending to change a few bits on the layout of the MVMJitTile structure
12:56 brrt so that is a yak that needs shaving
12:57 brrt but except for the register assignment element, the algorithm works
12:57 brrt I think I had best rolled register assignment into first 'main' loop, and do the tile-to-register filling latest
12:58 brrt so in a final loop
12:58 brrt that has the least complexity, both in terms of code and runtime
12:59 brrt also, I have a blog post coming up about the way linear scan works and why, so I can't go and change it now :-)
12:59 brrt however....
12:59 brrt I'm currently not handling things like different register classes and pre-coloring
12:59 brrt i intend to 'merge' the linear scan allocator in before I do that
13:00 brrt once that is done, I'm sure that both aliases and conditional paths will be handled well
13:01 brrt so I can start testing the compiler with those features
13:01 brrt and when that is done, I can start on the specific register requirements
13:01 brrt I have a design for that as well
13:20 ggoebel joined #moarvm
13:30 brrt once register requirements are done, I expect actual function calls to be comparatively easy
14:08 dalek MoarVM: b4cd2a6 | jnthn++ | src/6model/serialization.c:
14:08 dalek MoarVM: Don't reveal partially deserialized method cache.
14:08 dalek MoarVM:
14:08 dalek MoarVM: Otherwise, we can end up handing back incomplete and bogus results.
14:08 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/b4cd2a6555
15:25 dalek MoarVM/rehash: aeff0ec | jnthn++ | src/6model/reprs/MVMHash.h:
15:25 dalek MoarVM/rehash: Remove a couple of now-unused macros.
15:25 dalek MoarVM/rehash: review: https://github.com/MoarVM/MoarVM/commit/aeff0ecf91
15:25 dalek MoarVM/rehash: c793606 | jnthn++ | src/6model/reprs/MVMHash.h:
15:25 dalek MoarVM/rehash: Remove unused macro parameter.
15:25 dalek MoarVM/rehash: review: https://github.com/MoarVM/MoarVM/commit/c793606328
15:25 dalek MoarVM/rehash: 8a10e9c | jnthn++ | src/6model/reprs/MVMHash.h:
15:25 dalek MoarVM/rehash: Eliminate a layer of macro.
15:25 dalek MoarVM/rehash:
15:25 dalek MoarVM/rehash: It didn't really add anything useful, and just made it harder to see
15:25 dalek MoarVM/rehash: what was going on.
15:25 dalek MoarVM/rehash: review: https://github.com/MoarVM/MoarVM/commit/8a10e9cf60
15:31 pyrimidine joined #moarvm
15:52 dalek MoarVM/rehash: cb496e0 | jnthn++ | src/6model/reprs/MVMHash.h:
15:52 dalek MoarVM/rehash: Use key/value instead of name/entry.
15:52 dalek MoarVM/rehash: review: https://github.com/MoarVM/MoarVM/commit/cb496e0cdb
15:52 dalek MoarVM/rehash: 4e10db5 | jnthn++ | src/ (13 files):
15:52 dalek MoarVM/rehash: Factor flatten calls into a handful of codepaths.
15:52 dalek MoarVM/rehash:
15:52 dalek MoarVM/rehash: This leaves all uses of MVM_string_flatten that relate to hashes in
15:52 dalek MoarVM/rehash: just three macros, which will ease the transition away from them.
15:52 dalek MoarVM/rehash: review: https://github.com/MoarVM/MoarVM/commit/4e10db54bf
16:08 pyrimidine joined #moarvm
16:10 pyrimidine joined #moarvm
16:48 dalek MoarVM: 4c9fd00 | timotimo++ | src/core/interp.c:
16:48 dalek MoarVM: give a bunch of exception ops repr and debug name output
16:48 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4c9fd00c58
16:54 dalek MoarVM/rehash: bb91104 | jnthn++ | / (7 files):
16:54 dalek MoarVM/rehash: Eliminate MVM_EXTRACT_HASH_KEY.
16:54 dalek MoarVM/rehash:
16:54 dalek MoarVM/rehash: This futher unifies access to hashes based around MVMString * keys, so
16:54 dalek MoarVM/rehash: they now always go through MVM_HASH_GET and MVM_HASH_BIND. As well as
16:54 dalek MoarVM/rehash: being a nice code cleanup, it also will make it far easier to remove
16:54 dalek MoarVM/rehash: use of `MVM_string_flatten`.
16:54 dalek MoarVM/rehash: review: https://github.com/MoarVM/MoarVM/commit/bb911040c0
16:54 timotimo <3
16:54 pyrimidine joined #moarvm
16:55 ggoebel joined #moarvm
16:56 dalek MoarVM/rehash: 37d3be7 | jnthn++ | .gitignore:
16:56 dalek MoarVM/rehash: Add .swp to editor backup .gitignore files.
16:56 dalek MoarVM/rehash: review: https://github.com/MoarVM/MoarVM/commit/37d3be7e52
16:57 pyrimidi_ joined #moarvm
17:06 jnthn Time for a break. :)
17:14 xtt joined #moarvm
17:20 xtt Hello everyone, I am a new comer and want to ask if there is any manual writing code in MoarVM like PIR? I am not sure if this is a valid question because the info about perl6/moarvm/parrot/etc i could get is so ambiguous...
17:20 vendethiel joined #moarvm
17:24 mst xtt: I'm not sure if it's a valid question because moarvm is a completely different system to parrot
17:24 mst xtt: take a step back and explain what originally led you to ask the question?
17:29 timotimo it's unlikely that you want to write Moar bytecode like you would PIR. you'd most probably write either MAST from nqp, or even QAST
17:29 * timotimo AFK for a couple of minutes
17:35 vendethiel joined #moarvm
17:38 timotimo ok, i'm back
17:38 timotimo xtt: anything in particular you want to know?
17:38 xtt I want to understand (1) moarvm's syntax (like PASM/PIR?) (2) npq's syntax and (3) which docs should I begin with
17:39 xtt btw I have no experience in low-level programs... I usually write HLLs, so it's kind of a trouble to me.
17:41 timotimo the closest you can get to low level moar bytecode is writing MAST in an NQP program and using the mastcompiler that's built into moarvm to compile it to .moar files
17:41 lizmat xtt: maybe https://github.com/edumentab/rakudo-and-nqp-internals-course is something to look at ?
17:43 xtt lizmat: Wow i think this is what i need
17:44 xtt timotimo: mst: lizmat: Thank you all for helping me! I will start with lizmat's advice first.
17:45 timotimo sure
17:45 timotimo feel free to stay in the channel and ask further questions
17:45 lizmat xtt: have the appropriate amount of fun!  :-)
17:46 xtt Ok i will. it's exciting to get involved with such project
18:00 xtt joined #moarvm
18:05 domidumont joined #moarvm
18:12 FROGGS joined #moarvm
20:50 pyrimidine joined #moarvm
21:42 pyrimidine joined #moarvm
22:32 pyrimidine joined #moarvm
22:42 pyrimidine joined #moarvm
22:52 pyrimidine joined #moarvm
22:58 pyrimidine joined #moarvm
23:20 pyrimidine joined #moarvm
23:41 pyrimidine joined #moarvm
23:51 pyrimidine joined #moarvm

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