Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-01-07

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

All times shown according to UTC.

Time Nick Message
01:31 dalek joined #moarvm
02:13 FROGGS_ 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
04:26 geekosaur joined #moarvm
04:31 geekosaur joined #moarvm
04:35 geekosaur joined #moarvm
07:03 geekosaur joined #moarvm
07:38 domidumont joined #moarvm
07:45 domidumont joined #moarvm
09:19 dalek MoarVM/even-moar-jit: 0764f9f | brrt++ | src/jit/linear_scan.c:
09:19 dalek MoarVM/even-moar-jit: Free spilled and values arrays
09:19 dalek MoarVM/even-moar-jit:
09:19 dalek MoarVM/even-moar-jit: ASAN rightly complains about me spilling memory.
09:19 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/0764f9f1c7
09:35 dalek MoarVM/coroutine: 3da6c00 | (Jimmy Zhuo)++ | / (19 files):
09:35 dalek MoarVM/coroutine: Add basic coroutine implementation.
09:35 dalek MoarVM/coroutine:
09:35 dalek MoarVM/coroutine: This will a little more cheap than one shot conituation version,
09:35 dalek MoarVM/coroutine: becase it saves more stacks and invocation according to Revisiting Coroutines.
09:35 dalek MoarVM/coroutine: See http://www.inf.puc-rio.br/~roberto/docs/MCC15-04.pdf for further reading.
09:35 dalek MoarVM/coroutine: review: https://github.com/MoarVM/MoarVM/commit/3da6c00a31
09:36 JimmyZ ^^ my experiment, doesn't work and segfault.
10:12 dalek MoarVM/coroutine: 033d34b | (Jimmy Zhuo)++ | src/core/ (2 files):
10:12 dalek MoarVM/coroutine: fix to run a simple test
10:12 dalek MoarVM/coroutine: review: https://github.com/MoarVM/MoarVM/commit/033d34b3f6
10:14 JimmyZ ^^ this only for nqp -e 'my $coro := nqp::corocreate( { nqp::coroyield(2);}); say(nqp::cororesume($coro, nqp::null));'
10:17 samcv doesn't work and doesn't segfault you mean?
10:17 samcv or doesn't work and segfaults? or works and doesn't segfault?
10:23 JimmyZ only works for above test ,haha
10:24 JimmyZ co-workers are welcome :)
11:13 dalek MoarVM/even-moar-jit: 71152c9 | brrt++ | src/jit/compile.c:
11:13 dalek MoarVM/even-moar-jit: Remove stderr spam in compile.c
11:13 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/71152c9e29
13:01 jnthn https://lowlevelbits.org/java-papers/ # some other potentially applicable papers
13:07 jnthn I need to read that coroutines one properly too; skimmed, it seems quite interesting.
13:08 timotimo wow, 2004? that's really fresh!
13:08 jnthn :P
13:08 timotimo as far as compsci papers go
13:09 timotimo i'm not sure i know what "full asymmetric" means in the context of coroutines
13:09 jnthn It does make the (I think reasonable) point that with a coroutine you allocate the coroutine object once and use it many times, while with continuations it's one per time you "yield"
13:10 timotimo hm, but that's already the difference between coroutines and continuations i thought
13:10 timotimo hm
13:10 timotimo though that's more like "one point where you yield from" vs "multiple points you can yield from" perhaps?
13:10 jnthn Yeah, but brings home the GC costs quite clearly. :)
13:11 timotimo i ... dunno?
13:11 jnthn Thing is, though, I find it easy to think of a continuation as something we can just take and invoke on another thread.
13:11 timotimo mhm
13:11 jnthn Since you've just sliced off a bunch of stack frames, and can re-instate them wherever you want
13:11 jnthn Which is exactly what we want for non-blocking await
13:12 timotimo right, we do
13:12 jnthn And under this model only things that `await` pay the cost of allocation for doing so
13:14 jnthn We can't really know from the "outside" if something is going to await, so we'd need to allocate a coroutine for every scheduled bit of work. It's a lot less predictable than gather/take in that sense, where you can assume that if somebody wrote gather, they're gonna take, probably quite a lot.
13:14 timotimo oh, so the difference is that we don't "create" a costly coroutine object from the start which may or may not be used ever
13:14 jnthn Yeah
13:14 timotimo right
13:14 jnthn So it's an interesting trade-off
13:15 jnthn On the other hand, many gather/take usages are in eager contexts where we don't yield every time (that got optimized away in the GLR refactor)
13:15 jnthn So it's only the truly lazy uses of gather/take that benefit.
13:16 jnthn (From switching to a coroutine model)
13:16 jnthn Which may still be worth it, of course.
13:16 timotimo lik dis if you yild everytim
13:19 brrt joined #moarvm
13:20 brrt .tell japhb there are some things left before i can call the register allocator 'fully functional'
13:20 yoleaux2 brrt: I'll pass your message to japhb.
13:20 yoleaux2 6 Jan 2017 17:39Z <japhb> brrt: Now that you have a working register allocator, what's left before you can merge that branch?
13:21 brrt .tell japhb specifically, i need to test handling PHI resolution, and i need to implement the magic that does call argument setup, preferably in a cross-platform way
13:21 yoleaux2 brrt: I'll pass your message to japhb.
13:22 jnthn Ah, 'cus calling convs differ between POSIX and Windows... :)
13:22 timotimo aye
13:22 timotimo you can also freely mix-and-match inside a program
13:22 timotimo most notably, WINE will do something like that
13:23 timotimo not sure if the linux-on-windows10 thing does anything like that, or if it requires all the stuff to be built for that platform in order to work
13:26 timotimo "partial continuations" ... is that what we have, where we have the outer continuationcontrol that defines where the continuation slice starts?
13:30 brrt indeed, the calling conventions differ, and i've also mostly separated the architectures, and i want to maintain that somehow
13:31 brrt anyway, after that, we can realistically start talking about merging
13:31 brrt btw, ASAN is not happy about extop register buffer allocation. i know how to solve that though...
13:31 brrt but that will have to wait until i have time
13:31 dogbert17 jnthn: about the free-spesh-log-slots branch, I checked it out and tried both htmlify.p6 and the RT code example. Perhaps that wasn't the right way to do it because I can't see any significant improvements in memory usage.
13:32 brrt see you later
13:36 jnthn dogbert17: That was only one part of the reason for higher memory use, and alone without some of the other PRs may not make a big difference.
13:38 dogbert17 jnthn: ah that explains it, many thanks
13:39 dogbert17 jnthn: so when are you going to release these changes?
13:40 jnthn Well, I was hoping they might get some code review :P
13:41 timotimo i'm not sure i can provide anything beyond basic "yup, looks good", which the compiler could also do :P
13:41 timotimo and maybe spelling
13:42 timotimo it's annoyed me a bunch in the past that python's generators aren't stackful
13:43 jnthn timotimo: Well, last week I managed to commit something that null-checked the wrong pointer, then deref'd it, and one of the PRs I put up fixed that, but it's not like it'd have needed deep knowledge of the code to spot that one. :)
13:43 timotimo ah
13:43 jnthn So spotting small mistakes is certainly worthwhile :)
13:53 timotimo so ... how did "hurl"ing pull requests originate? %)
13:55 jnthn timotimo: Why did I decide to put them up as PRs? Just because I wanted to see if this workflow could help us improve quality and also help spread understanding of the codebase. :)
13:55 timotimo no i mean
13:55 timotimo why do we say "hurl"
13:55 jnthn Oh
13:56 jnthn 'cus it's got url in it? :P
13:56 timotimo that's good 'nuff for me
13:58 timotimo the change of moving fixed_size_free of frame->env from before continuation_free_tags to after it seems superfluous :P
13:58 timotimo since continuation_free_tags doesn't seem to look at env
14:00 jnthn hmm :)
14:01 timotimo look, i'm reviewing!
14:01 timotimo view, i'm relooking!
14:01 jnthn Yeah, think that's an accident from removing/re-instating it :)
14:01 FROGGS_ joined #moarvm
14:02 jnthn leave a comment, I can tidy it
14:02 jnthn lunch; bbiab
14:03 JimmyZ jnthn: finishing the coro branch is really hard to me, haha. it has many tricky thinks about exception and frame .
14:03 JimmyZ *things
14:04 JimmyZ and the java papers look good
14:05 timotimo oh, cool, when the frame is no longer in dynamic scope we can also ignore the args buffer in gc
14:05 timotimo i haven't looked yet if we clear those out whenever we remove a frame from dynamic scope
14:13 JimmyZ re PR:  postgresql takes many months to review a *good* patch.
14:18 timotimo um, yeah, that's what args_proc_cleanup does
14:20 timotimo but that's only called from frame_destroy and remove_one_frame, is that enough?
14:56 jnthn timotimo: I believe so. A frame was either never in dynamic scope, or if it ws can only die in two ways: via remove_one_frame, or by ending up in a never-invoked continuation and getting GC'd.
15:01 timotimo good
15:01 timotimo my somewhat shallow review is thus complete
15:10 samcv morning jnthn
17:48 timotimo i wonder if we win anything if we  make marking thread blocked/unblocked cheaper as long as there's no user threads
18:26 jnthn evening, samcv
18:26 * jnthn was away playing a game and freezing his hands in the nippy weather
18:37 zakharyas joined #moarvm
19:20 japhb .oO( WOPR: "Would. You. Like. To. Play. A. Game?" )
19:20 yoleaux2 13:20Z <brrt> japhb: there are some things left before i can call the register allocator 'fully functional'
19:20 yoleaux2 13:21Z <brrt> japhb: specifically, i need to test handling PHI resolution, and i need to implement the magic that does call argument setup, preferably in a cross-platform way
19:22 japhb Ah, interesting.  Oh well, I was hoping to have something to play with this weekend.  :-)
19:28 jnthn The game and the freezing weather were unrelated, fwiw. :-)
19:29 japhb Ah.  I figured it implied that your game was e.g. a snowball fight.  :-)
19:30 * japhb returns to coding the dragon battle
19:33 jnthn Heh, no, the game was Ticket To Ride Switzerland. And the freezing hands was because somehow I thought it would be nice to make some photos of the snowy weather. :-)
19:34 japhb I didn't realize TTR had a Switzerland-specific variant.  I've played U.S. and general Europe, but that's it.
19:35 jnthn I never played the U.S. one. Have the general Europe one, which is fun, but the Switzerland one is even more so. It comes with the India extension.
19:36 japhb Those are ... disjoint.  That's an odd pairing.  But I guess makes the extension more valuable.
19:36 jnthn Yeah, it's a tad odd. They sell it primarily as the India variant which happens to include Switzerland, but we actually really wanted the Switzerland one.
19:36 japhb heh
20:22 timotimo giving mark_thread_*blocked an extra path when there's no user threads doesn't show an improvement for the core setting
21:12 jnthn I'd be surprised, we don't hit it that often
21:28 ilbot3 joined #moarvm
21:28 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
21:53 timotimo you think? :)
21:59 timotimo http://t.h8.lv/telemeh.log - check it out for a rough idea (this is from core setting parse, aborted it a short while into optimize)
22:06 timotimo i haven't put in the effort to translate the cycle counts into seconds
23:44 Geth joined #moarvm

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