Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-06-05

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

All times shown according to UTC.

Time Nick Message
00:01 d4l3k_ joined #moarvm
00:31 samcv joined #moarvm
01:01 samcv joined #moarvm
01:26 MasterDuke joined #moarvm
01:32 TimToady joined #moarvm
06:50 dalek joined #moarvm
06:51 SmokeMachine joined #moarvm
06:54 domidumont joined #moarvm
06:56 ilmari[m] joined #moarvm
06:59 domidumont joined #moarvm
07:23 SourceBaby joined #moarvm
07:53 domidumont joined #moarvm
08:17 zakharyas joined #moarvm
09:02 lizmat joined #moarvm
10:36 domidumont joined #moarvm
12:21 AlexDaniel joined #moarvm
13:06 Geth ¦ MoarVM/sync-file-no-uv: f8e6079343 | (Jonathan Worthington)++ | src/io/syncfile.c
13:06 Geth ¦ MoarVM/sync-file-no-uv: Eliminate last libuv usages from syncfile.
13:06 Geth ¦ MoarVM/sync-file-no-uv:
13:06 Geth ¦ MoarVM/sync-file-no-uv: Except one mention that is used for sync processes, which will go away
13:06 Geth ¦ MoarVM/sync-file-no-uv: soon.
13:06 Geth ¦ MoarVM/sync-file-no-uv: review: https://github.com/MoarVM/MoarVM/commit/f8e6079343
13:07 jnthn Hm, is it me or did spectest get a bit slower in the last 4 days?
13:08 jnthn Seems up 5+ wallclock seconds since I last did one back on Wed
13:09 zakharyas joined #moarvm
13:10 Zoffix jnthn: yes, and Tux's bench is slower. Some commit slowed it down.
13:10 Zoffix My ~114s stresstest runs are now ~124
13:12 AlexDaniel ouch
13:14 * Zoffix glances at the commit log
13:14 Zoffix Worse... statistically, likely I was the culprit
13:18 Zoffix Dunno, could it be io-adoptation branch?
13:20 jnthn Zoffix: That'd be odd, given I saw the jump since I was last working on Perl 6 stuff
13:21 Zoffix OK. I'll try to narrow it down
14:04 jnthn Hmmm...
14:04 Zoffix ?
14:05 Zoffix So far stresstested commits fb7dd8a, 3488914, a47a78f and they show 118 secs. Dunno if that's before or after the slowdown... probably before.
14:06 Zoffix Based on logs, it happened sometime between May 31st and June 1st: https://irclog.perlgeek.de/perl6-dev/search/?nick=&q=ZOFVM
14:07 Zoffix .. and 3488914 was done on the 2nd :/
14:08 jnthn Trying to figure out how to get :merge style functionality wired up with libuv
14:13 AlexDaniel \o/
14:13 jnthn And every attempt so far failed in some way
14:13 jnthn grr
14:27 Zoffix Narrowed down the slow down to 9 commits; 5s difference between them
14:28 jnthn Urgh, I'm converging on "there isn't a way to do this" :S
14:29 Zoffix :o
14:29 jnthn I mean, I can cheat
14:29 jnthn But I was really hoping to get the same descriptor bound to both
14:33 jnthn Well, cheating works :)
14:38 Geth ¦ MoarVM: 9f7d93d561 | (Jonathan Worthington)++ | 3 files
14:38 Geth ¦ MoarVM: Support merge_bytes in async proc ops.
14:38 Geth ¦ MoarVM:
14:38 Geth ¦ MoarVM: Emits stdout and stderr data into the same stream. Ideally we might
14:38 Geth ¦ MoarVM: have been able to get the same "handle" on both, but it seems there
14:38 Geth ¦ MoarVM: is no way to make this happen.
14:38 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/9f7d93d561
14:56 jnthn Also just realized: I'm doing this so I can re-work Proc to use Proc::Async
14:56 jnthn But :merge was busted and so disabled in Proc :P
15:02 jnthn The other features are shell, and binding filehandles to stdin/stdout/stderr
15:02 Zoffix *sigh* I'm having trouble pin-pointing slowdown.
15:02 Zoffix 2500e50 121
15:02 Zoffix 79b8ab9 119
15:02 Zoffix b879060 117
15:02 [Coke] could be a few gradual ones in a row
15:02 * Zoffix tries 01d948d and then will try to these again
15:04 jnthn Oh, but guess we can do shell in Perl 6 space
15:40 Geth ¦ MoarVM: 6a372ac42e | jnthn++ | src/moar.c
15:40 Geth ¦ MoarVM: Unbust VM initialization on Windows.
15:40 Geth ¦ MoarVM:
15:40 Geth ¦ MoarVM: We need the NFG data structures set up ahead of bootstrap, since we
15:40 Geth ¦ MoarVM: make a string constant that contains a synthetic on Windows (\r\n).
15:40 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/6a372ac42e
16:04 Geth ¦ MoarVM/sync-file-no-uv: 4f80023c02 | jnthn++ | src/platform/win32/io.c
16:04 Geth ¦ MoarVM/sync-file-no-uv: Add missing cast to silence a warning on Windows.
16:04 Geth ¦ MoarVM/sync-file-no-uv: review: https://github.com/MoarVM/MoarVM/commit/4f80023c02
16:04 Geth ¦ MoarVM/sync-file-no-uv: fd6ece3683 | jnthn++ | src/io/syncfile.c
16:04 Geth ¦ MoarVM/sync-file-no-uv: strerror is correct on Windows already.
16:04 Geth ¦ MoarVM/sync-file-no-uv:
16:04 Geth ¦ MoarVM/sync-file-no-uv: And _strerror is something else that takes a string, not an int.
16:04 Geth ¦ MoarVM/sync-file-no-uv: review: https://github.com/MoarVM/MoarVM/commit/fd6ece3683
16:37 Geth ¦ MoarVM/sync-file-no-uv: 9482524ed3 | jnthn++ | src/io/syncfile.c
16:37 Geth ¦ MoarVM/sync-file-no-uv: Be sure to open in binary mode on Windows.
16:37 Geth ¦ MoarVM/sync-file-no-uv:
16:37 Geth ¦ MoarVM/sync-file-no-uv: We handle our own translation, and don't want duplicate translation
16:37 Geth ¦ MoarVM/sync-file-no-uv: happening.
16:37 Geth ¦ MoarVM/sync-file-no-uv: review: https://github.com/MoarVM/MoarVM/commit/9482524ed3
16:37 Geth ¦ MoarVM/sync-file-no-uv: 9a69711c37 | jnthn++ | src/io/syncfile.c
16:37 Geth ¦ MoarVM/sync-file-no-uv: Also set binary mode on handle made from fd.
16:37 Geth ¦ MoarVM/sync-file-no-uv:
16:37 Geth ¦ MoarVM/sync-file-no-uv: This happens with the standard handles. Without this, a \r\n that we
16:37 Geth ¦ MoarVM/sync-file-no-uv: output when redirecting to a file on Windows would turn into \r\r\n.
16:37 Geth ¦ MoarVM/sync-file-no-uv: review: https://github.com/MoarVM/MoarVM/commit/9a69711c37
16:38 jnthn Tests look a lot cleaner with that fixed :P
16:48 Geth ¦ MoarVM/master: 9 commits pushed by (Jonathan Worthington)++, jnthn++
16:48 Geth ¦ MoarVM/master: 3734a1dcf8 | Eliminate libuv in the heart of syncfile.
16:48 Geth ¦ MoarVM/master: e5ada450a2 | Implement truncate without libuv.
16:48 Geth ¦ MoarVM/master: fef4f2e9b4 | Re-implement flush without using libuv.
16:48 Geth ¦ MoarVM/master: f8e6079343 | Eliminate last libuv usages from syncfile.
16:48 Geth ¦ MoarVM/master: 4f80023c02 | Add missing cast to silence a warning on Windows.
16:48 Geth ¦ MoarVM/master: fd6ece3683 | strerror is correct on Windows already.
16:48 Geth ¦ MoarVM/master: 9482524ed3 | Be sure to open in binary mode on Windows.
16:48 Geth ¦ MoarVM/master: 9a69711c37 | Also set binary mode on handle made from fd.
16:48 Geth ¦ MoarVM/master: f17adad2be | Merge branch 'sync-file-no-uv'
16:48 Geth ¦ MoarVM/master: review: https://github.com/MoarVM/MoarVM/compare/6a372ac42e...f17adad2be
16:50 jnthn There we go, another piece of the puzzle landed :)
17:04 Zoffix \o/
17:04 timotimo fantastic
17:28 domidumont joined #moarvm
18:25 lizmat jnthn: could you summarize what you've done the past week, in one or more lines ?
18:25 * lizmat has been away a lot and probably missed quite a few things
18:42 jnthn lizmat: Refactored NQP's I/O to have a file handle object, which then uses the VM-backed decoder, just like the Rakudo file handles now do. Eliminated the char-level I/O ops from MoarVM, thus finishing the work to decouple I/O and encodings. Finally, reworked synchronous file I/O in MoarVM to not use libuv.
18:42 lizmat jnthn++  :-)
18:43 lizmat this has not landed in nom, has it ?
18:43 jnthn It all has except the very final part.
18:43 jnthn Which is in MoarVM master, but there wasn't a version bump yet.
18:44 jnthn (Only merged a couple of hours ago)
18:44 ilmari joined #moarvm
18:44 lizmat would you be ok with a version bump ?
18:45 jnthn Yeah, but spectest on OSX first ;-)
18:45 jnthn Windows and Linux are good with it
18:47 * jnthn bbiab
18:49 zakharyas joined #moarvm
19:13 lizmat jnthn: looks clean apart from a flapper in t/spec/S12-attributes/class.t  :-(
19:13 lizmat bumping nonetheless
19:30 lizmat jnthn: could you elaborate a bit on why not using libuv for synchronous file I/O is a good thing ?
19:47 dogbert17 joined #moarvm
19:59 japhb lizmat: It allows passing synchronous filehandles between threads without libuv exploding.  This comes up particularly often in code that e.g. starts a task to handle reading $*IN
20:01 lizmat japhb: ah, ok, so the same thing he did for sockets last week
20:01 japhb This was pretty high on my list of wants for TUI applications, because I want to be able to process raw terminal inputs (like converting special escapes into function key or mouse events) in the background so user code doesn't have to care about that.
20:02 japhb Oh, and of course:  jnthn++  :-)
20:03 lizmat japhb: well, it just landed in Rakudo, so there's nothing stopping you now  :-)
20:03 nwc10 I'm sure that I should know the answer to this, but why is this only needed for synchronous file handles. I'm infering that there's some reason why it's (already) safe to pass asynchronous filehandles between threads, and hence asking what makes that safe already/what makes it different from synchronous file handles?
20:04 lizmat afaik, libuv does *not* passing asynchronous file handles between threads
20:04 japhb lizmat: Well, except tuits.  But I'm anxious to see if this fixes my raw terminal input lockup problem, so I'll make some time for that.  :-)
20:04 lizmat and since before this all file handles were asynchronous, you couldn't do that in Rakudo
20:05 lizmat nwc10: at least that's my understanding of it
20:05 lizmat japhb: ah yes, those pesky tuits  :-)
20:24 jnthn Note that one more step is needed for $*IN, $*OUT, and $*ERR (I hope a fairly small one); those are still to be switched over for the TTY case
20:25 jnthn With luck, will do that tomorrow
20:25 jnthn Will blog soon (not soon enough for this week's weekly though :)) about the various reasons for the changes :)
20:36 lizmat cool, looking forward to reporting it in next week's P6W  :-)
21:41 lizmat and another Perl 6 Weekly hits the Net: https://p6weekly.wordpress.com/2017/06/05/2017-23-fulfilled-tap/
21:41 jnthn lizmat++
23:17 timotimo nwc10: it's safe to pass asynchronous file handles between threads because all work on it is done on the event loop thread, of which there is only one, so the underlying libuv handle (which is the only vulnerable part) doesn't get passed around at all
23:19 colomon lizmat++

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