00:08:03  * jgiquit (Quit: jgi)
00:13:34  * jgijoined
00:19:45  * s3shsquit (Quit: Computer has gone to sleep.)
00:37:06  * brsonquit (Ping timeout: 240 seconds)
00:47:46  * s3shsjoined
00:57:10  * s3shsquit (Remote host closed the connection)
00:57:56  * s3shsjoined
01:07:55  * wuqiongjoined
01:14:31  * brsonjoined
01:23:49  * avalanche123quit (Remote host closed the connection)
01:24:58  * avalanche123joined
01:29:59  * alexforsterjoined
01:46:41  * jgiquit (Quit: jgi)
01:49:19  * s3shsquit (Quit: Computer has gone to sleep.)
01:50:24  * Ruyijoined
01:57:15  * wuqiong_joined
01:57:56  * wuqiongquit (Ping timeout: 246 seconds)
02:00:30  * avalanche123quit (Remote host closed the connection)
02:00:56  * avalanche123joined
02:05:46  * avalanche123quit (Ping timeout: 256 seconds)
02:10:09  * kbwtjoined
02:10:47  <kbwt>does libuv expose a completion-based or readiness-based I/O notification model?
02:12:14  <kbwt>it looks completion-based
02:12:33  <kbwt>what are the advantages/disadvantages of either, and why was the current way chosen?
02:12:41  <daurnimator>kbwt: has to be completion based to work on windows.
02:12:55  <daurnimator>kbwt: readiness is nicer IMO, but others disagree.
02:13:02  <daurnimator>but if you want windows.... you don't have a lot of choices.
02:13:06  <kbwt>daurnimator: it seems to me like mapping IOCP onto a readiness-based API is possible as well
02:13:13  * dap_quit (Quit: Leaving.)
02:13:21  <kbwt>for reads: post 0-byte reads
02:13:28  <daurnimator>kbwt: not really; especially while keeping performance.
02:14:42  <kbwt>but completion-based comes with its own set of issues
02:14:55  <kbwt>buffer lifetime management and all buffer memory has to be pinned
02:16:55  <kbwt>if you emulate a completion-based API on top of epoll/kqueue, don't you also end up with double buffering?
02:19:43  <kbwt>so if I understand it correctly, the main rationale for doing it all the Windows way is that otherwise you'd need 2 system calls per receive operation? (after every successful receive, a 0-byte read needs to be posted to get the readiness notification)
02:21:39  <kbwt>how would one integrate third party libraries into an libuv event loop, like for example libxcb? libxcb provides an API to get its internal fd, and then the user is supposed to call xcb_poll_for_events whenever the fd is ready for reads.
02:31:58  <kbwt>is it not possible to expose both, readiness and completion based APIs, so that the specific use cases can use the most optimal implementation on either platform?
02:32:10  <daurnimator>kbwt: sadly no.
02:33:14  <daurnimator>kbwt: to quote a different project I work on ( http://25thandclement.com/~william/projects/cqueues.html ): cqueues is almost entirely self-contained, with the sole external dependencies being OpenSSL and, of course, Lua (Lua 5.2 or LuaJIT). However, it only works on Linux, NetBSD, OpenBSD, FreeBSD, Solaris, OS X, and derivatives. The concept is not portable to Windows because Windows lacks an analog to the
02:33:16  <daurnimator>pollable event queues of modern Unix systems. Libraries which try to abstract the two approaches—event readiness signaling versus event completion—invariably produce a pallid least common denominator library suffering all the weaknesses and enjoying none of the strengths of each approach.
02:34:48  <kbwt>very interesting
02:41:23  <daurnimator>kbwt: now, libuv does some interesting things to work around that via AFD
02:41:31  <daurnimator>but... yeah. it's a bit of a sucky situation
02:43:27  <kbwt>daurnimator: haven't heard of AFD before. that only works for sockets?
02:44:10  <daurnimator>kbwt: yes.
02:52:04  * s3shsjoined
02:52:06  * s3shsquit (Remote host closed the connection)
02:52:49  * s3shsjoined
02:59:24  <daurnimator>kbwt: if you want to learn more about afd, https://gist.github.com/daurnimator/63d2970aedc952f0beb3 was an example I wrote up a while ago
02:59:57  <kbwt>daurnimator: thanks
03:00:23  <daurnimator>(beware, AFD is entirely undocumented)
03:00:36  <daurnimator>took me a few weeks to put that example together >.<
03:09:45  * s3shs_joined
03:12:46  * s3shsquit (Ping timeout: 240 seconds)
03:33:54  * tunniclmquit (Ping timeout: 255 seconds)
03:35:18  * brsonquit (Ping timeout: 256 seconds)
03:55:06  * s3shsjoined
03:57:22  * s3shs_quit (Ping timeout: 265 seconds)
03:59:45  * happy-dudequit (Quit: Connection closed for inactivity)
04:03:22  * avalanche123joined
04:10:03  * avalanche123quit (Ping timeout: 260 seconds)
05:19:05  * MoZu4k__joined
05:19:17  * Ruyiquit (Read error: Connection reset by peer)
05:19:43  * Ruyijoined
05:37:49  * rmgquit (Remote host closed the connection)
05:38:21  * rmgjoined
05:38:26  * jgijoined
05:42:38  * rmgquit (Ping timeout: 246 seconds)
06:04:06  * Damn3dquit (Ping timeout: 240 seconds)
06:07:13  * Damn3djoined
06:07:44  * avalanche123joined
06:13:23  * avalanche123quit (Ping timeout: 264 seconds)
06:14:35  * kbwtquit (Quit: Page closed)
06:51:47  * Jacob843quit (Read error: Connection reset by peer)
06:53:02  * Jacob843joined
06:53:09  * Dirksonpart ("Cheers!")
07:07:42  * jgiquit (Quit: jgi)
07:11:39  * happy-dudejoined
07:38:45  * davijoined
07:38:45  * daviquit (Changing host)
07:38:45  * davijoined
07:51:32  * rendarjoined
08:04:32  * saghuljoined
08:10:51  * avalanche123joined
08:15:35  * avalanche123quit (Ping timeout: 255 seconds)
08:17:03  * zju3quit (Remote host closed the connection)
08:26:14  * zju1quit (Ping timeout: 272 seconds)
08:33:28  * MoZu4k__part
08:39:39  * rmgjoined
08:44:08  * rmgquit (Ping timeout: 256 seconds)
09:08:02  * daviquit (Ping timeout: 250 seconds)
09:09:43  * Ruyiquit (Read error: Connection reset by peer)
09:10:10  * Ruyijoined
09:33:10  * wuqiong_quit (Remote host closed the connection)
09:41:57  * davijoined
09:41:58  * daviquit (Changing host)
09:41:58  * davijoined
09:44:49  * s3shsquit (Quit: Computer has gone to sleep.)
09:49:43  * bnoordhuisjoined
09:52:23  * seishunjoined
09:59:46  * amurzeauquit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
10:04:44  * saghulquit (Ping timeout: 245 seconds)
10:04:51  * saghuljoined
10:16:45  * amurzeaujoined
10:18:05  * Ruyiquit (Read error: Connection reset by peer)
10:19:44  * happy-dudequit (Quit: Connection closed for inactivity)
10:20:15  * wuqiongjoined
10:40:22  * rmgjoined
10:44:26  * rmgquit (Ping timeout: 240 seconds)
11:00:33  * avalanche123joined
11:05:15  * avalanche123quit (Ping timeout: 240 seconds)
11:39:26  * bnoordhuisquit (Ping timeout: 276 seconds)
12:02:38  * evanluca_quit (Read error: Connection reset by peer)
12:04:41  * evanlucasjoined
12:35:15  * evanlucasquit (Read error: Connection reset by peer)
12:35:55  * evanlucasjoined
12:36:58  * zju1joined
12:41:09  * rmgjoined
12:44:59  * bnoordhuisjoined
12:45:35  * rmgquit (Ping timeout: 240 seconds)
12:47:31  * seishunquit (Read error: Connection reset by peer)
12:49:26  * bnoordhuisquit (Ping timeout: 240 seconds)
13:01:08  * seishunjoined
13:03:04  * alexforsterquit (Quit: Textual IRC Client: www.textualapp.com)
13:03:30  * alexforsterjoined
13:05:44  * alexforsterquit (Client Quit)
13:06:00  * evanlucasquit (Read error: Connection reset by peer)
13:06:03  * wuqiongquit (Remote host closed the connection)
13:06:17  * evanlucasjoined
13:06:38  * brrtjoined
13:12:01  * amurzeauquit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
13:12:16  * amurzeaujoined
13:18:07  * jan____quit (Excess Flood)
13:18:56  * jan____joined
13:19:34  * jan____quit (Changing host)
13:19:35  * jan____joined
13:50:13  * avalanche123joined
13:55:15  * avalanche123quit (Ping timeout: 265 seconds)
14:02:16  * evanlucaschanged nick to evanluca_
14:04:05  * evanlucasjoined
14:21:08  * evanlucasquit (Remote host closed the connection)
14:21:12  * evanluca_changed nick to evanlucas
14:24:14  * bnoordhuisjoined
14:26:27  * happy-dudejoined
14:41:26  * s3shsjoined
14:41:27  * rmgjoined
14:51:54  * avalanche123joined
14:55:40  * brrtquit (Quit: brrt)
14:56:45  * avalanche123quit (Ping timeout: 260 seconds)
15:00:23  * avalanche123joined
15:08:30  * s3shsquit (Quit: Textual IRC Client: www.textualapp.com)
15:25:34  * brrtjoined
15:37:15  * Fishrock123joined
16:06:47  * avalanche123quit (Remote host closed the connection)
16:07:14  * avalanche123joined
16:07:43  * evanlucaschanged nick to evanluca_
16:12:02  * avalanche123quit (Ping timeout: 265 seconds)
16:33:00  * brrtquit (Quit: brrt)
16:46:35  * brsonjoined
16:54:18  * alexforsterjoined
16:55:20  * avalanche123joined
17:00:22  * avalanche123quit (Ping timeout: 265 seconds)
17:01:43  * wuqiongjoined
17:05:43  * alexforsterquit (Quit: Textual IRC Client: www.textualapp.com)
17:06:45  * wuqiongquit (Remote host closed the connection)
17:21:04  * jhamhaderjoined
17:32:33  * jgijoined
17:36:37  * daviquit (Remote host closed the connection)
17:38:38  * davijoined
17:38:39  * daviquit (Changing host)
17:38:39  * davijoined
17:45:03  * jgiquit (Quit: jgi)
17:54:15  * alexforsterjoined
18:17:05  * jgijoined
18:19:27  * brsonquit (Quit: leaving)
18:22:13  * avalanche123joined
18:23:06  * alexforsterquit (Quit: Textual IRC Client: www.textualapp.com)
18:24:07  * avalanch_joined
18:27:22  * avalanche123quit (Ping timeout: 265 seconds)
18:56:14  * bnoordhuisquit (Ping timeout: 276 seconds)
18:57:52  * bnoordhuisjoined
19:14:24  <trevnorris>isaacs: you around anymore?
19:30:17  * jgi_joined
19:31:11  * mesch_joined
19:33:34  * iamstef_joined
19:33:43  * whitlock1cjoined
19:34:13  * joaocgreis_joined
19:34:17  * parshap_joined
19:34:38  * indexzero_joined
19:35:24  * othiym23_joined
19:36:20  * zkat_joined
19:36:20  * rendarquit (Ping timeout: 246 seconds)
19:36:26  * thefourtheye__joined
19:36:54  * jhamhaderquit (Quit: leaving)
19:37:21  * creationix_joined
19:38:31  * jgiquit (*.net *.split)
19:38:31  * amurzeauquit (*.net *.split)
19:38:32  * whitlockjcquit (*.net *.split)
19:38:33  * iamstefquit (*.net *.split)
19:38:33  * othiym23quit (*.net *.split)
19:38:33  * parshapquit (*.net *.split)
19:38:33  * indexzeroquit (*.net *.split)
19:38:33  * zkatquit (*.net *.split)
19:38:34  * creationixquit (*.net *.split)
19:38:34  * WakiMikoquit (*.net *.split)
19:38:34  * joaocgreisquit (*.net *.split)
19:38:34  * thefourtheye_quit (*.net *.split)
19:38:35  * meschquit (*.net *.split)
19:38:35  * hayesquit (*.net *.split)
19:38:35  * jgi_changed nick to jgi
19:38:59  * mesch_changed nick to mesch
19:39:32  * hayesjoined
19:39:35  * joaocgreis_changed nick to joaocgreis
19:39:37  * othiym23_changed nick to othiym23
19:40:07  * zkat_changed nick to zkat
19:40:15  * indexzero_changed nick to indexzero
19:41:13  * WakiMikojoined
19:43:07  * parshap_changed nick to parshap
19:43:07  * rendarjoined
19:43:42  * iamstef_changed nick to iamstef
19:59:39  * tunniclmjoined
20:19:44  * bnoordhuisquit (Ping timeout: 246 seconds)
20:59:33  * brsonjoined
21:00:03  * jgiquit (Quit: jgi)
21:00:49  * jgijoined
21:11:46  * Jacob843quit (Read error: Connection reset by peer)
21:12:08  * Jacob843joined
21:17:02  * jgiquit (Quit: jgi)
21:17:48  * bnoordhuisjoined
21:30:30  * evanluca_quit (Read error: Connection reset by peer)
21:32:04  * evanluca_joined
21:44:54  * Fishrock123quit (Remote host closed the connection)
21:50:16  * parshapquit (*.net *.split)
21:50:16  * whitlock1cquit (*.net *.split)
21:51:31  * parshapjoined
21:51:31  * whitlock1cjoined
21:57:42  * jgijoined
22:19:19  * daviquit (Ping timeout: 250 seconds)
22:45:44  * Fishrock123joined
22:51:22  * Fishrock123quit (Ping timeout: 272 seconds)
23:14:16  * Fishrock123joined
23:43:18  * brsonquit (Ping timeout: 272 seconds)