00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:06:44  * bradleymeckquit (Quit: bradleymeck)
00:10:20  * bradleymeckjoined
00:12:36  * Fishrock123joined
00:13:32  * Fishrock123quit (Read error: Connection reset by peer)
00:14:15  * Fishrock123joined
00:32:10  * bradleymeckquit (Quit: bradleymeck)
00:38:21  * chris_99quit (Quit: Ex-Chat)
00:52:14  * dap_quit (Quit: Leaving.)
01:02:57  * avalanche123quit (Remote host closed the connection)
01:24:59  * jgiquit (Quit: jgi)
01:40:01  * toothrotquit (Ping timeout: 264 seconds)
01:51:28  * piscisaureusquit (Ping timeout: 272 seconds)
01:51:28  * Ralithquit (Ping timeout: 272 seconds)
01:56:17  * tylerantonquit (Quit: tyleranton)
02:05:49  * AlexisMochaquit (Ping timeout: 252 seconds)
02:09:35  * brsonquit (Quit: leaving)
02:16:41  * Ralithjoined
02:17:12  * brsonjoined
02:17:49  * octetclo1quit (Ping timeout: 264 seconds)
02:18:58  * Fishrock123quit (Quit: Leaving...)
02:26:19  * rmgjoined
02:29:53  * brsonquit (Quit: leaving)
02:31:24  * rmgquit (Ping timeout: 256 seconds)
02:37:26  * AlexisMochajoined
02:39:59  * qardquit (Remote host closed the connection)
02:43:10  * toothrotjoined
02:51:18  * avalanche123joined
02:51:52  * zjujoined
02:52:39  * zju4quit (Read error: Connection reset by peer)
02:55:53  * avalanche123quit (Ping timeout: 244 seconds)
03:05:41  * bradleymeckjoined
03:14:19  * Left_Turnquit (Remote host closed the connection)
03:29:13  * toothrotquit (Ping timeout: 264 seconds)
03:42:50  * bradleymeckquit (Quit: bradleymeck)
03:51:13  * avalanche123joined
04:06:15  * avalanche123quit (Remote host closed the connection)
04:40:05  * jgijoined
05:10:12  * jgiquit (Quit: jgi)
05:10:49  * jgijoined
05:29:41  * AlexisMochaquit (Ping timeout: 252 seconds)
05:34:23  * kellabytequit (Quit: Connection closed for inactivity)
05:54:42  * avalanche123joined
05:59:13  * avalanche123quit (Ping timeout: 264 seconds)
06:04:01  * rmgjoined
06:04:10  * AvianFluquit (Remote host closed the connection)
06:08:23  * rmgquit (Ping timeout: 246 seconds)
07:02:29  * jgiquit (Quit: jgi)
07:45:52  * FROGGS[mobile]2quit (Quit: Yaaic - Yet another Android IRC client - http://www.yaaic.org)
08:33:02  * saghuljoined
09:08:09  * rendarjoined
09:15:55  * wolfeidauquit (Read error: Permission denied)
09:16:34  * wolfeidaujoined
09:34:45  <txdv>ls
09:34:56  * txdvquit (Quit: leaving)
09:40:50  * bentkuschanged nick to txdv
09:57:43  * Left_Turnjoined
11:00:03  * seishunjoined
11:06:39  * chris_99joined
11:16:47  * niska`joined
11:17:56  * mikolalysenko_joined
11:18:40  * Ralith_joined
11:19:24  * skebcio_joined
11:21:11  * feross_joined
11:24:07  * _hayesjoined
11:25:05  * Ralithquit (*.net *.split)
11:25:05  * niskaquit (*.net *.split)
11:25:05  * skebcioquit (*.net *.split)
11:25:05  * mikolalysenkoquit (*.net *.split)
11:25:05  * nsmquit (*.net *.split)
11:25:05  * hij1nxquit (*.net *.split)
11:25:46  * Drajwerjoined
11:25:49  * felipealmeida_joined
11:28:12  * mikolalysenko_changed nick to mikolalysenko
11:29:16  * hij1nxjoined
11:30:30  * felipealmeidaquit (*.net *.split)
11:30:30  * hayesquit (*.net *.split)
11:30:30  * ferossquit (*.net *.split)
11:30:30  * Drajwer_quit (*.net *.split)
11:30:31  * mmaleckiquit (*.net *.split)
11:30:31  * hueniversequit (*.net *.split)
11:30:31  * indutnyquit (*.net *.split)
11:30:31  * DrPizzaquit (*.net *.split)
11:30:31  * normanmquit (*.net *.split)
11:30:31  * tjfontainequit (*.net *.split)
11:30:31  * brycebarilquit (*.net *.split)
11:30:33  * felipealmeida_changed nick to felipealmeida
11:30:44  * _hayeschanged nick to hayes
11:32:42  * feross_changed nick to feross
11:33:38  * nsmjoined
11:33:38  * mmaleckijoined
11:33:38  * hueniversejoined
11:33:38  * indutnyjoined
11:33:38  * DrPizzajoined
11:33:38  * normanmjoined
11:33:38  * tjfontainejoined
11:33:38  * brycebariljoined
11:51:26  * wolfeidau_joined
11:55:14  * wolfeidauquit (Ping timeout: 256 seconds)
12:12:41  * kellabytejoined
12:37:49  * bradleymeckjoined
12:51:11  * bradleymeckquit (Read error: Connection reset by peer)
12:55:20  * bradleymeckjoined
12:59:25  * reqsharkquit (Quit: Be back later ...)
13:03:25  * lance|afkchanged nick to lanceball
13:16:16  * seishunquit (Ping timeout: 256 seconds)
13:18:53  * rmgjoined
13:23:34  * rmgquit (Ping timeout: 245 seconds)
13:39:57  * reqsharkjoined
13:54:01  * bradleymeckquit (Quit: bradleymeck)
13:54:29  * Fishrock123joined
13:55:01  * bradleymeckjoined
14:05:16  * bradleymeckquit (Read error: Connection reset by peer)
14:07:24  * benjamingrquit (Quit: Connection closed for inactivity)
14:08:13  * bradleymeckjoined
14:15:59  * AvianFlujoined
14:45:00  * jgijoined
14:56:04  * jgiquit (Quit: jgi)
14:59:19  * avalanche123joined
15:00:06  * seishunjoined
15:09:11  * wolfeidau_quit (Ping timeout: 265 seconds)
15:14:23  * thlorenzjoined
15:22:41  <srl295>tjfontaine: not going to be able to make it today- trying to make a local deadline here
15:23:21  * AlexisMochajoined
15:32:17  * jgijoined
15:34:56  * avalanche123quit (Remote host closed the connection)
15:42:00  <srl295>jgi: hi, not going to make it today's call. deadline here.
15:43:26  * AlexisMochaquit (Ping timeout: 246 seconds)
15:45:16  * lanceballchanged nick to lance|afk
15:55:46  * AlexisMochajoined
15:58:08  <trevnorris>tjfontaine: meeting in 2?
15:59:16  <tjfontaine>srl295: ok, thanks
15:59:18  <tjfontaine>trevnorris: ya
16:00:36  * AlexisMochaquit (Read error: Connection reset by peer)
16:03:53  * AlexisMochajoined
16:05:41  <tjfontaine>cjihrig: were you planning on joining the call today
16:05:54  <cjihrig>tjfontaine: what's the link?
16:06:02  <tjfontaine>https://plus.google.com/hangouts/_/nodejs.org/weekly-status
16:06:13  <cjihrig>joining
16:09:03  * avalanche123joined
16:17:37  * octetclo1joined
16:23:48  * rmgjoined
16:28:38  * rmgquit (Ping timeout: 272 seconds)
16:36:01  * qardjoined
16:44:17  * jreyno40joined
16:45:58  * SergeiRNDjoined
16:50:35  * jreyno40quit (Quit: jreyno40)
17:06:42  * SergeiRNDquit (Quit: Leaving.)
17:21:46  * SergeiRNDjoined
17:25:29  * qardquit (Remote host closed the connection)
17:33:51  * qardjoined
17:35:49  * reqsharkquit (Quit: Be back later ...)
17:37:13  * warehouse13joined
17:37:35  * miles2joined
17:39:01  * Left_Turnquit (Ping timeout: 265 seconds)
17:39:37  * lance|afkchanged nick to lanceball
17:41:09  <miles2>quick question. say i have a generic callback function named callback_func, a poll_callback (uv_poll_t), a recv_callback (udp) and a send_callback(udp). i wonder if its possible to make libuv do the following : if there are socket events or poll events, call the send/recv/poll callbacks. if there are no events, repeatedly call callback_func (but make it so that send/recv/poll callbacks have always the priority when there are events they handle occuring)
17:42:12  <miles2>basically callback_func should always be called, continuously and repeatedly (just like in a for(;;) {} loop for example), unless there are send/recv/poll events which will have the priority
17:44:56  <petka__>sounds like idle/prepare/check but not sure which :D
17:50:23  * wolfeidaujoined
17:50:49  * bradleymeckquit (Quit: bradleymeck)
17:53:27  * brsonjoined
18:01:18  <Ralith_>miles2: are you sure that's really what you want? it'll cause your program to have 100% CPU usage
18:02:29  <miles2>its not worse than a spinlock with a check condition
18:02:31  <miles2>yes im sure
18:03:09  * jgiquit (Quit: jgi)
18:03:29  <miles2>is that doable within libuv?
18:08:46  * Jacob8432joined
18:10:26  * Jacob843quit (Ping timeout: 265 seconds)
18:11:59  * Ralith_quit (Ping timeout: 252 seconds)
18:13:46  * Jacob8432quit (Ping timeout: 256 seconds)
18:19:36  * dap_joined
18:23:46  * Jacob843joined
18:24:53  * wolfeidauquit (Ping timeout: 248 seconds)
18:30:51  <MI6>joyent/node: Michael Dawson refs/tags/jenkins-accept-pull-request-temp * 64399dd : test: Env variable to specify directory for pipes - http://git.io/jZnq
18:31:32  <MI6>joyent/node: Michael Dawson refs/tags/jenkins-accept-commit-temp * 5dd5ce7 : test: Env variable to specify directory for pipes - http://git.io/jZn2
18:35:46  * Ralithjoined
18:36:17  <Ralith>miles2: what are you doing that requires a spinlock?
18:40:45  * reqsharkjoined
18:48:09  * bradleymeckjoined
18:49:09  <Fishrock123>Does building with both xcode and make work on OS X or just xcode?
18:49:17  <Fishrock123>err, xcodebuild
18:55:21  <Fishrock123>Hmm.... is installing GYP or autotools simpler?
19:02:50  * thlorenzquit (Remote host closed the connection)
19:05:58  * pgicxplzsjoined
19:06:54  * warehouse13quit (Ping timeout: 245 seconds)
19:09:14  <Fishrock123>is `<autotools> && make check` the same as `make -C out && ./out/Debug/run-tests`?
19:10:34  <Fishrock123>Also, is `warning: 'long long' is an extension when C99 mode is not enabled [-Wlong-long]` going to effect tests?
19:10:50  * thlorenzjoined
19:12:15  * jgijoined
19:14:13  * thlorenzquit (Remote host closed the connection)
19:15:29  <MI6>joyent/node: Michael Dawson v0.12 * 5dd5ce7 : test: Env variable to specify directory for pipes - http://git.io/jZn2
19:33:22  * avalanche123quit (Remote host closed the connection)
19:34:17  * avalanche123joined
19:34:20  * avalanche123quit (Remote host closed the connection)
19:34:26  * avalanch_joined
19:40:16  * seishunquit (Quit: ChatZilla 0.9.91.1 [Firefox 36.0.1/20150305021524])
19:40:40  * seishunjoined
19:55:45  <saghul>Fishrock123: yes, it's the same
19:56:06  <saghul>Fishrock123: that warning should be harmless, though annoying
19:57:02  <Fishrock123>tcp_oob sometimes times out on my machine OS X 10.10.2 -- also harmless?
20:06:28  * Jacob8432joined
20:06:53  * Jacob8432quit (Read error: Connection reset by peer)
20:07:38  * roxluquit (Remote host closed the connection)
20:08:02  * roxlujoined
20:15:01  * thlorenzjoined
20:20:17  * thlorenzquit (Ping timeout: 256 seconds)
20:22:58  * rendarquit (Ping timeout: 272 seconds)
20:24:25  * octetclo1quit (Ping timeout: 264 seconds)
20:29:02  * rendarjoined
20:29:46  * thlorenzjoined
20:36:06  <saghul>Fishrock123: can you test the patch suggested by indutny on the issue? (there is one open)
20:36:22  <Fishrock123>which?
20:36:47  <saghul>Fishrock123: https://github.com/libuv/libuv/issues/258
20:37:11  <Fishrock123>Will do one I resolve nits from my PR
20:38:25  * octetclo1joined
20:38:26  <saghul>np, and thanks!
20:45:54  * octetclo1quit (Ping timeout: 244 seconds)
20:53:07  * pgicxplzsquit (Remote host closed the connection)
20:57:53  * Left_Turnjoined
21:04:14  * octetcloudjoined
21:05:57  * saghulquit (Ping timeout: 248 seconds)
21:06:37  * SergeiRNDquit (Quit: Leaving.)
21:15:01  * reqsharkquit (Ping timeout: 248 seconds)
21:18:05  * hueniversequit (Ping timeout: 246 seconds)
21:27:21  * lanceballchanged nick to lance|afk
21:46:04  <daurnimator>txdv: get anywhere? :)
21:48:06  * piscisaureusjoined
21:48:21  <daurnimator>piscisaureus: welcome!
21:48:25  <daurnimator>what timing
21:48:40  <piscisaureus>daurnimator: thnx, I guess
21:48:51  <piscisaureus>daurnimator: welcome to you too
21:49:00  <daurnimator>piscisaureus: well I just looked at this channel again since the weekend, when I was hoping to talk to you :P
21:50:07  <daurnimator>piscisaureus: you're one of the few people around that seem to code up low level network things on windows
21:50:33  <daurnimator>piscisaureus: I was hoping you could provide guidance around a different event library (cqueues): https://github.com/wahern/cqueues/issues/35
21:54:03  * wolfeidaujoined
21:54:48  * bradleymeckquit (Quit: bradleymeck)
21:56:38  * WalrusPonyquit (Ping timeout: 265 seconds)
21:56:58  <piscisaureus>daurnimator: so, what do you expect me to do. I don't have time nor interest in contributing to cqueues.
21:57:16  <piscisaureus>daurnimator: but if you want to to be slow and shit, why don't you just use select ?
21:57:20  <daurnimator>piscisaureus: validation of the idea. warnings around performance....
21:57:45  <piscisaureus>daurnimator: I see that you raised that select() can't be nested, but that's the case for kqueue() on OS X too
21:57:48  * wolfeidau_joined
21:58:02  <piscisaureus>so you can't really rely on nesting poll sets unless you're targeting linux only
21:58:02  <daurnimator>piscisaureus: so the important thing I want is stackable event queues. i.e. that an IOCP channel can be waited on by another one.
21:58:20  <piscisaureus>daurnimator: as I said, that doesn't work with kqueue either.
21:58:20  <daurnimator>piscisaureus: oh? I'm pretty sure we have kqueue working on osx with that...
21:58:44  <daurnimator>we currently support epoll, kqueue and ports.
21:59:23  <piscisaureus>daurnimator: do you have a test for it that runs on OS X
21:59:32  * wolfeidauquit (Ping timeout: 265 seconds)
22:00:03  <piscisaureus>daurnimator: I would advise against WSAEventSelect because it has different semantics (write is edge-triggered basically)
22:00:05  <daurnimator>we test kqueue with freebsd every commit. osx only gets tested every few weeks. but I'm pretty sure it worked...
22:00:07  <piscisaureus>s/write/writable/
22:01:15  <piscisaureus>daurnimator: the last time I tried it on os X it didn't work ... anyway
22:03:59  <piscisaureus>daurnimator: there is a secret fast polling api on windows., if you're up for it. But it's totally undocumented. Libuv uses it (https://github.com/libuv/libuv/blob/v1.x/src/win/poll.c) and I started to write an epoll() implementation for windows (that only supports sockets) one day (https://github.com/piscisaureus/epoll_windows), but I don't quite remember what the state of the latter project is.
22:04:14  <daurnimator>I know osx lacks a working pselect... but yeah. I'll make sure to test it again
22:04:35  <daurnimator>piscisaureus: so yeah, that project is one of the reasons I figured I should talk to you
22:05:05  <daurnimator>piscisaureus: what function calls should I be looking for in there?
22:06:26  <piscisaureus>daurnimator: the heart of it is here: https://github.com/libuv/libuv/blob/2eb1c182407069feb82bcc3e1363e12517b05bbd/src/win/winsock.c#L477-L561
22:07:15  <piscisaureus>daurnimator: and this: https://github.com/libuv/libuv/blob/v1.x/src/win/poll.c#L75-L215
22:07:34  * toothrotjoined
22:07:38  <piscisaureus>daurnimator: but unless you're up for a lot of sleepless nights, you better just get along with select() :)
22:07:44  <daurnimator>piscisaureus: the 'secret' interface is "IOCTL_AFD_POLL"?
22:07:56  <piscisaureus>daurnimator: yes
22:09:22  <daurnimator>piscisaureus: any links to info about it? even just someone's notes?
22:10:00  <piscisaureus>daurnimator: eh, there aren't any :)
22:10:30  <daurnimator>piscisaureus: how did you find it? :P
22:11:03  <piscisaureus>daurnimator: http://www.verysource.com/code/277291_1/select.c.html <-- I think that's a leaked version of windows source code, so it provides hints on how windows uses that interface internally to implement select()
22:11:52  <piscisaureus>daurnimator: the general trick is that all I/O on windows is async (well ... it's difficult to open a socket in synchronous mode)
22:13:15  <piscisaureus>daurnimator: but select() needs to be blocking. So it has to lie - start an overlapped operation and then wait for it to complete.
22:14:24  <piscisaureus>daurnimator: I figured that if I just cut that in half (only start the IOCTL_AFD_POLL, but without immediately blocking to get the result) I could emulate epoll.
22:14:39  <piscisaureus>daurnimator: but there are some caveats
22:15:08  <piscisaureus>daurnimator: e.g. you can't really cancel an IOCTL_AFD_POLL directly - only indirectly by submitting another
22:15:18  <piscisaureus>daurnimator: and then some
22:15:33  <daurnimator>piscisaureus: so why do you use that instead of, say, GetQueuedCompletionStatusEx?
22:15:58  <piscisaureus>daurnimator: I do use GetQueuedCompletionStatusEx to read the results
22:16:24  <piscisaureus>daurnimator: do you know how iocp works?
22:16:44  <daurnimator>piscisaureus: I hope so?
22:17:10  <daurnimator>piscisaureus: doesn't GetQueuedCompletionStatusEx block until something happens?
22:17:16  <piscisaureus>daurnimator: yup
22:17:52  <piscisaureus>daurnimator: so in the poll-on-windows trick, I use it to "block until select() completes"
22:19:09  <piscisaureus>daurnimator: but I can now just start a "select" for each socket that I want to poll individually, pretty fast, scales well.
22:19:47  <daurnimator>piscisaureus: so why is IOCTL_AFD_POLL better than, say, RegisterWaitForSingleObject where the callback uses PostQueuedCompletionStatus?
22:20:23  <piscisaureus>daurnimator: because RegisterWaitForSingleObject will take a thread pool thread, so you'll end up using a thread per socket.
22:20:28  <piscisaureus>er,
22:20:29  <piscisaureus>well no
22:20:39  <piscisaureus>1 thread per 64 sockets
22:20:43  <piscisaureus>it's not very performant
22:21:05  <piscisaureus>But probably the biggest question is what "object" you're going to wait for
22:21:21  <daurnimator>piscisaureus: I imagined it would only use the thread after the event has happened?
22:21:49  <piscisaureus>daurnimator: no there's a thread that calls WaitForMultipleObjectEx
22:22:14  <daurnimator>ah okay, so the wait thread pool used by RegisterWaitForSingleObject just uses WaitForMultipleObjectEx internally?
22:22:27  <piscisaureus>daurnimator: exactly
22:22:39  <daurnimator>I thought they might have optimised that a little better ;)
22:22:48  <piscisaureus>daurnimator: but you should try it out, you'll notice that the event waiter pool has poor throughput
22:23:46  * bradleymeckjoined
22:26:44  <daurnimator>piscisaureus: hmmm, okay, will give it a go. thanks for the pointer to this 'secret' interface
22:26:52  <daurnimator>piscisaureus: btw, what versions of windows support it?
22:28:04  <piscisaureus>daurnimator: all, as far as I know. But there is an issue with systems that have LSPs on them. You have to create the socket such that it bypasses the LSP or it won't work
22:28:25  <piscisaureus>it's a bit hard to explain
22:29:47  <daurnimator>is that the pNtDeviceIoControlFile = GetProcessEx() shenanigans?
22:30:25  * thlorenzquit (Remote host closed the connection)
22:30:50  <daurnimator>*GetProcAddress
22:31:14  <piscisaureus>daurnimator: that's just because there is no import library for ntdll.dll, so we have to load it dynamically.
22:31:25  * thlorenzjoined
22:32:25  * jalcinequit (Read error: Connection reset by peer)
22:33:13  <piscisaureus>daurnimator: libuv switches to a really slow mode in that scenario, but I don't think that actually ever happens. https://github.com/libuv/libuv/blob/v1.x/src/win/poll.c#L502-L574
22:33:54  * jalcinejoined
22:35:40  <daurnimator>piscisaureus: wouldn't that mean that select() would fail if such an LSP is enabled? or does it bypass them some other way?
22:36:03  <piscisaureus>daurnimator: lsps can implement their own select() function
22:36:25  <piscisaureus>daurnimator: not that they ever do (also LSPs are deprecated and automatically ignored in modern-style apps)
22:36:25  * thlorenzquit (Remote host closed the connection)
22:37:01  <piscisaureus>daurnimator: also the official docs say that you can't mix sockets of different types in a single poll set
22:37:45  <piscisaureus>daurnimator: but (of course) it works in practice <s>most of the time</s> always.
22:38:45  <daurnimator>yeah I thought LSPs were deprecated. so I'll just say we don't support systems with them :P
22:39:11  <daurnimator>'most of the time'? when doesn't it?
22:40:32  <piscisaureus>daurnimator: it doesn't when one of the sockets uses an LSP that has it's own select function()
22:40:35  <piscisaureus>:)
22:41:00  <piscisaureus>daurnimator: or maybe if uses a driver that isn't AFD
22:41:57  <piscisaureus>daurnimator: but by tcp/udp/raw ipv4/6 can be mixed, so I think that's good enough right?
22:44:35  <daurnimator>piscisaureus: can you mix any HANDLEs? importantly other IOCPs? waitiable timers?
22:45:30  <piscisaureus>daurnimator: iocps - no
22:46:27  <piscisaureus>daurnimator: since you'll be using a completion port, you can mix this strategy for polling with anything else that supports a completion port
22:47:18  <piscisaureus>daurnimator: but iocps can't be nested (and srsly, kqueues can't be nested either)
22:47:59  <daurnimator>piscisaureus: thanks for your information :)
22:48:06  <daurnimator>I've gotta run off to an appointment
22:48:11  <daurnimator>should be back in a couple of hours
22:48:15  * thlorenzjoined
22:50:19  * jalcinequit (Quit: ZNC - http://znc.in)
22:51:47  * jalcinejoined
22:59:32  * roxluquit (Quit: My Mac has gone to sleep. ZZZzzz…)
23:03:34  * seishunquit (Ping timeout: 245 seconds)
23:05:25  * WalrusPonyjoined
23:07:59  * brsonquit (Quit: Lost terminal)
23:08:45  * brsonjoined
23:16:33  * tylerantonjoined
23:19:47  * jgiquit (Quit: jgi)
23:20:36  * jgijoined
23:27:26  * rendarquit
23:34:24  * kellabytequit (Quit: Connection closed for inactivity)
23:35:44  * avalanch_quit (Remote host closed the connection)
23:45:55  <indutny>ohai
23:47:05  * bradleymeckquit (Quit: bradleymeck)
23:50:36  * miles2part
23:51:29  * rmgjoined
23:55:46  * rmgquit (Ping timeout: 250 seconds)
23:56:40  * reqsharkjoined
23:57:15  * bradleymeckjoined