00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:04:41  * mikealquit (Quit: Leaving.)
00:05:30  * c4miloquit (Remote host closed the connection)
00:05:47  * ecrquit (Quit: ecr)
00:08:58  * bradleymeckjoined
00:13:23  * bradleymeck_joined
00:13:42  * bradleymeckquit (Ping timeout: 264 seconds)
00:13:43  * bradleymeck_changed nick to bradleymeck
00:21:01  * bradleymeckquit (Quit: bradleymeck)
00:25:50  * defunctzombiechanged nick to defunctzombie_zz
00:28:15  <isaacs>othiym23: it's enumerable
00:28:18  <isaacs>othiym23: but it's _
00:28:25  <tjfontaine>the magic _
00:28:31  <isaacs>othiym23: that _ means "DO NoT touch oR OMG OHHH noooEEEESSSS!!"
00:28:51  <isaacs>othiym23: in a way, it's even more off-limits than being non-enumerable.
00:29:01  <isaacs>othiym23: being non-enumerable means that if you know about it, you're probably ok using it
00:29:11  <isaacs>being _ means, "voids the warantee"
00:29:21  <isaacs>like, it's there. you can see it. we know you know about it. DONT FUCKING TOUCH
00:29:28  <isaacs>in this case, of course, it's completely safe.
00:29:29  <othiym23>TOO BAD BUDDY
00:29:30  <LOUDBOT>UGH WHERE IS A TARDIS WHEN YOU NEED ONE
00:29:31  <othiym23>GONNA TOUCH IT
00:29:32  <LOUDBOT>WITH TIME ZONES AND CONVERSION TABLES AND WHATON
00:29:39  <othiym23>gonna tell all my friends
00:29:41  <isaacs>othiym23: nice loudbot addition
00:30:09  <tjfontaine>OOH WHATS THIS RED BUTTON DO?
00:30:09  <LOUDBOT>PAY MORE MONEY TO USE THE FORUM!
00:30:15  * othiym23makes a mental note to never let isaacs review the NR agent source
00:30:26  <othiym23>lol @ LOUDBOT
00:31:09  * dshaw_quit (Quit: Leaving.)
00:33:03  <othiym23>someday I'm gonna be capable of using Array.prototype.reduce without reflexively loading MDN
00:34:00  <tjfontaine>nah, mdn is too good to pass up
00:35:26  <othiym23>I will *never* get the order straight for the callback params
00:35:45  <tjfontaine>not so long as everyone does it differently
00:36:03  <othiym23>one of Ruby, Scheme, Clojure or Haskell passes the accumulator in second
00:38:16  <othiym23>is there a faster way to check Buffer equality than buffertools?
00:38:49  <tjfontaine>what does buffertools do?
00:39:02  <tjfontaine>and which equality are you looking for?
00:39:11  * bradleymeckjoined
00:39:15  <tjfontaine>memory contents or memory address?
00:39:52  <othiym23>contents, and buffertools is bnoordhuis's little native module with some Buffer sugar in it (compare, equals, etc)
00:40:13  <othiym23>for object identity (memory address), I assume === works
00:40:20  <tjfontaine>right so compare is just memcmp
00:40:28  <othiym23>y
00:41:19  <tjfontaine>that is probably the most efficient mechanism, but from a pure JS standpoint .toString('binary') === .toString('binary') also short circuiting on length would be reasonable
00:43:15  * EhevuTovquit (Quit: This computer has gone to sleep)
00:43:15  <othiym23>I'm "asking for a friend", this is what I do in my incredibly bad news bears equality testing function: https://github.com/othiym23/node-deepest/blob/master/deepest.js#L74-L85
00:43:48  <tjfontaine>that is certainly the way to do it without any extra allocs
00:43:52  <tjfontaine>well
00:43:55  <tjfontaine>anyway
00:45:11  <othiym23>god, I love that module
00:45:13  <tjfontaine>you could also short circuit on parent and offset being the same
00:45:24  <othiym23>it has no reason to exist, but I love it all the same
00:46:45  <othiym23>yeah, there are definitely improvements that could be made if you know the internal structure of Buffers, this was just somebody on #Node.js wanting a module to do the job for him
00:46:56  <tjfontaine>nod
01:08:17  * bradleymeckquit (Quit: bradleymeck)
01:11:26  * dapquit (Quit: Leaving.)
01:13:26  * bradleymeckjoined
01:14:39  * amartensquit (Quit: Leaving.)
01:16:04  * bradleymeckquit (Client Quit)
01:20:34  * AvianFlujoined
01:23:01  * defunctzombie_zzchanged nick to defunctzombie
01:28:33  * c4milojoined
01:30:17  * abraxasjoined
01:30:34  * mikealjoined
01:34:14  * TooTallNatequit (Quit: Computer has gone to sleep.)
01:36:38  * mikealquit (Quit: Leaving.)
01:43:06  * austoquit (Quit: Leaving)
01:52:04  * wavdedjoined
01:57:21  * amartensjoined
01:59:31  * defunctzombiechanged nick to defunctzombie_zz
02:00:54  * mikealjoined
02:01:04  * defunctzombie_zzchanged nick to defunctzombie
02:05:41  * defunctzombiechanged nick to defunctzombie_zz
02:10:34  * mikealquit (Quit: Leaving.)
02:11:09  * c4miloquit (Remote host closed the connection)
02:17:47  * AvianFluquit (Remote host closed the connection)
02:27:37  * Damn3djoined
02:34:09  * TooTallNatejoined
02:47:11  * jmar777joined
02:51:01  * avalanche123joined
02:51:11  * avalanche123quit (Client Quit)
03:01:53  * jmar777quit (Remote host closed the connection)
03:14:30  * brsonquit (Ping timeout: 264 seconds)
03:16:02  * brsonjoined
03:17:01  * TooTallNatequit (Quit: Computer has gone to sleep.)
03:30:20  * AvianFlujoined
03:35:19  * AvianFluquit (Ping timeout: 264 seconds)
03:42:00  * wavdedquit (Quit: Hasta la pasta)
03:48:49  * mcavagequit (Remote host closed the connection)
03:49:31  * mcavagejoined
03:52:41  * c4milojoined
04:01:44  * julianduquequit (Quit: leaving)
04:02:51  * c4miloquit (Remote host closed the connection)
04:10:55  * AvianFlujoined
04:32:34  * kazuponjoined
04:34:59  * AvianFluquit (Remote host closed the connection)
04:39:31  * kazupon_joined
04:39:49  * kazuponquit (Read error: Connection reset by peer)
04:40:00  * kazuponjoined
04:41:32  * kazuponquit (Read error: Connection reset by peer)
04:41:52  * kazuponjoined
04:44:07  * kazupon_quit (Ping timeout: 260 seconds)
04:48:26  * brsonquit (Quit: leaving)
04:58:04  * kazuponquit (Read error: Connection reset by peer)
04:58:23  * kazuponjoined
05:00:06  * kazupon_joined
05:03:26  * kazuponquit (Ping timeout: 240 seconds)
05:05:53  * kazuponjoined
05:06:39  * mcavagequit (Remote host closed the connection)
05:08:00  * mcavagejoined
05:09:28  * kazupon_quit (Ping timeout: 256 seconds)
05:11:44  * inolenquit (Ping timeout: 256 seconds)
05:12:21  * inolenjoined
05:12:30  * mcavagequit (Ping timeout: 264 seconds)
05:18:19  * kazupon_joined
05:19:15  * kazupon__joined
05:19:39  * kazuponquit (Read error: Connection reset by peer)
05:20:20  * kazuponjoined
05:20:36  * kazupon_quit (Read error: Connection reset by peer)
05:23:46  * kazupon__quit (Ping timeout: 246 seconds)
05:30:34  * kazupon_joined
05:33:33  * kazuponquit (Ping timeout: 240 seconds)
05:45:51  * wolfeidauquit (Ping timeout: 260 seconds)
05:46:45  * wolfeidaujoined
06:08:05  * mcavagejoined
06:10:46  * csaohjoined
06:10:56  * csaohquit (Client Quit)
06:11:56  * amartensquit (Quit: Leaving.)
06:16:14  * mcavagequit (Ping timeout: 240 seconds)
06:17:44  * tooxiejoined
06:41:19  * st_lukejoined
06:42:16  * amartensjoined
06:47:30  * kazuponjoined
06:48:14  * kazuponquit (Read error: Connection reset by peer)
06:48:20  <MI6>nodejs-v0.10-windows: #194 UNSTABLE windows-ia32 (8/598) windows-x64 (8/598) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/194/
06:49:18  * amartensquit (Ping timeout: 264 seconds)
06:50:00  * kazupon_quit (Ping timeout: 245 seconds)
06:53:30  * bajtosjoined
06:53:50  * piscisaureus_joined
06:54:00  * kazuponjoined
06:54:57  * stagasjoined
06:55:09  * rendarjoined
06:58:35  * bajtosquit (Quit: bajtos)
07:02:13  * rendarquit (Read error: Operation timed out)
07:06:33  <MI6>joyent/libuv: piscisaureus created branch win-fs-fixes - http://git.io/0zCCzw
07:06:47  <MI6>joyent/libuv: piscisaureus created branch win-fs-fixes-v0.10 - http://git.io/QNfFOw
07:15:31  * st_lukequit (Remote host closed the connection)
07:17:29  * rendarjoined
07:23:30  <MI6>libuv-review: #61 UNSTABLE smartos-ia32 (2/193) osx-ia32 (1/194) smartos-x64 (2/193) windows-ia32 (3/194) windows-x64 (3/194) http://jenkins.nodejs.org/job/libuv-review/61/
07:31:05  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
07:31:42  * dominictarrjoined
07:33:52  * csaohjoined
07:37:41  <MI6>libuv-review: #62 UNSTABLE osx-x64 (1/188) smartos-ia32 (2/187) smartos-x64 (3/187) windows-ia32 (7/188) linux-ia32 (12/187) windows-x64 (4/188) http://jenkins.nodejs.org/job/libuv-review/62/
07:42:46  * mcavagejoined
07:46:55  * amartensjoined
07:47:19  * mcavagequit (Ping timeout: 264 seconds)
07:48:46  * bajtosjoined
07:48:50  * tooxiequit (Ping timeout: 264 seconds)
07:51:07  * amartensquit (Ping timeout: 246 seconds)
08:09:13  * hzjoined
08:20:19  * kazuponquit (Remote host closed the connection)
08:22:20  * tuxie_joined
08:26:48  * niskaquit (Ping timeout: 245 seconds)
08:27:49  * dominictarrquit (Quit: dominictarr)
08:30:19  * niskajoined
08:40:33  * karupaneruraquit (*.net *.split)
08:43:07  * mcavagejoined
08:43:21  * nsmquit (Ping timeout: 245 seconds)
08:46:19  * nsmjoined
08:46:36  * karupanerurajoined
08:47:14  * amartensjoined
08:47:55  * mcavagequit (Ping timeout: 264 seconds)
08:51:42  * amartensquit (Ping timeout: 264 seconds)
08:54:35  * dominictarrjoined
09:08:09  * bnoordhuisjoined
09:09:43  * EhevuTovjoined
09:43:42  * rendar_joined
09:43:43  * rendarquit (Ping timeout: 260 seconds)
09:47:37  * amartensjoined
09:48:33  * EhevuTovquit (Quit: This computer has gone to sleep)
09:52:07  * amartensquit (Ping timeout: 264 seconds)
09:58:20  * rendar_quit (Ping timeout: 245 seconds)
10:11:49  <bnoordhuis>ircretary: tell piscisaureus merge this plox -> https://github.com/piscisaureus/libuv-release-tool/pull/1
10:11:49  <ircretary>bnoordhuis: I'll be sure to tell piscisaureus
10:11:54  <bnoordhuis>ircretary: thanks
10:11:54  <ircretary>bnoordhuis: You're welcome :)
10:21:11  * bajtosquit (Quit: bajtos)
10:37:54  * csaohquit (Quit: csaoh)
10:41:06  * wolfeidauquit (Ping timeout: 240 seconds)
10:43:48  * mcavagejoined
10:46:03  <MI6>nodejs-v0.10: #1466 FAILURE smartos-x64 (2/598) http://jenkins.nodejs.org/job/nodejs-v0.10/1466/
10:47:53  * amartensjoined
10:48:42  * mcavagequit (Ping timeout: 264 seconds)
10:50:21  * dominictarrquit (Quit: dominictarr)
10:52:18  * amartensquit (Ping timeout: 256 seconds)
10:55:07  * csaohjoined
11:05:53  <bnoordhuis>/bin/sh: /bin/sh: cannot execute binary file <- wuh?
11:07:37  * abraxasquit (Remote host closed the connection)
11:10:38  * tuxie_quit (Ping timeout: 246 seconds)
11:27:15  * rendarjoined
11:43:43  * rendarquit (Ping timeout: 264 seconds)
11:44:10  * mcavagejoined
11:48:12  * amartensjoined
11:48:30  * mcavagequit (Ping timeout: 264 seconds)
11:52:30  * amartensquit (Ping timeout: 245 seconds)
11:57:51  <MI6>joyent/libuv: Bert Belder v0.10 * faf2c59 : windows/fs: handle _open_osfhandle() failure correctly (+2 more commits) - http://git.io/gbXqRg
11:57:53  <MI6>joyent/libuv: Bert Belder master * 20e774c : windows/fs: handle _open_osfhandle() failure correctly (+2 more commits) - http://git.io/ztUd1A
12:06:18  * c4milojoined
12:07:28  <MI6>libuv-v0.10: #112 UNSTABLE windows (3/188) smartos (2/187) http://jenkins.nodejs.org/job/libuv-v0.10/112/
12:07:42  <MI6>libuv-master-gyp: #162 UNSTABLE windows-x64 (3/194) smartos-ia32 (2/193) windows-ia32 (4/194) smartos-x64 (2/193) http://jenkins.nodejs.org/job/libuv-master-gyp/162/
12:09:12  <MI6>libuv-master: #223 UNSTABLE windows (3/194) smartos (9/193) http://jenkins.nodejs.org/job/libuv-master/223/
12:10:05  <MI6>libuv-v0.10-gyp: #76 UNSTABLE smartos-x64 (4/187) smartos-ia32 (2/187) windows-x64 (4/188) windows-ia32 (5/188) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/76/
12:18:45  <MI6>libuv-node-integration: #205 UNSTABLE linux-ia32 (2/598) smartos-x64 (2/598) http://jenkins.nodejs.org/job/libuv-node-integration/205/
12:23:06  * c4miloquit (Remote host closed the connection)
12:32:11  <MI6>libuv-node-integration: #206 UNSTABLE smartos-x64 (7/644) http://jenkins.nodejs.org/job/libuv-node-integration/206/
12:43:46  * bnoordhuisquit (Ping timeout: 240 seconds)
12:44:32  * mcavagejoined
12:46:17  * tuxie_joined
12:48:33  * amartensjoined
12:49:07  * mcavagequit (Ping timeout: 264 seconds)
12:53:00  * amartensquit (Ping timeout: 256 seconds)
12:55:22  * kellabytequit (Remote host closed the connection)
12:56:57  * dominictarrjoined
13:03:46  * c4milojoined
13:05:51  * c4miloquit (Remote host closed the connection)
13:11:16  * hzquit (Disconnected by services)
13:11:19  * hzjoined
13:14:45  * jmar777joined
13:23:45  <indutny>ohai
13:30:42  * rendarjoined
13:34:56  * bajtosjoined
13:38:38  * kevinswiberjoined
13:41:20  * c4milojoined
13:44:52  * mcavagejoined
13:48:52  * amartensjoined
13:48:52  * kevinswiberquit (Read error: Connection reset by peer)
13:49:19  * kevinswiberjoined
13:49:26  * mcavagequit (Ping timeout: 264 seconds)
13:53:51  * amartensquit (Ping timeout: 276 seconds)
13:54:04  * bnoordhuisjoined
14:00:54  * austojoined
14:01:23  * piscisaureus_joined
14:02:00  <piscisaureus_>isaacs: tjfontaine: next time before a v0.10 release make sure libuv is upgraded
14:02:14  <piscisaureus_>or bug me to do it
14:02:32  <piscisaureus_>because otherwise important bug fixes are left on the table
14:04:43  <piscisaureus_>bnoordhuis: are you positive libuv-release-tool can still release v0.10?
14:07:13  <bnoordhuis>piscisaureus_: no, i only fixed it for v0.11 :)
14:07:34  <bnoordhuis>maybe branch off a v0.10
14:07:47  <piscisaureus_>bnoordhuis: maybe just ignore ENOENT when configure.ac is not found?
14:08:35  <bnoordhuis>hrm, i don't know. that leaves space for bugs to hide in and it's not as if we'll be doing that many more v0.10 releases
14:08:48  <piscisaureus_>ah, *shrug*
14:08:52  <piscisaureus_>we can remove that later
14:09:26  <piscisaureus_>we could also do (if state.version.major >= 11 then etc)
14:09:42  <bnoordhuis>i was just about to suggest that :)
14:09:58  <bnoordhuis>i'll update the patch
14:10:37  * wavdedjoined
14:10:46  <piscisaureus_>bnoordhuis: don't. I am already.
14:10:53  <MI6>joyent/node: Fedor Indutny master * af76b08 : tls: socket.renegotiate(options, callback) - http://git.io/wum41A
14:11:30  <wavded>is there a reason why you can't use the same fd more than once in a stdio config option for child_process.spawn?
14:11:33  <indutny>bnoordhuis: thanks
14:11:50  * tuxie_quit (Ping timeout: 240 seconds)
14:13:34  <bnoordhuis>indutny: did you read my comment about renegotiate() though?
14:13:47  <indutny>yeah
14:14:00  <indutny>well, its mostly here to show that the error could be there :)
14:14:06  <indutny>just in case if we'll change anything
14:15:24  <piscisaureus_>after execSync we now need http.getSync :)
14:15:49  <bnoordhuis>green threads!
14:16:01  <piscisaureus_>generators!
14:16:17  <piscisaureus_>I bet you that after execSync people will start demanding sync networking
14:16:34  <wavded>have you guys thought about sync networking?
14:16:37  <piscisaureus_>esp. for request-response protocols like http
14:16:38  <wavded>just kidding :)
14:17:24  <bnoordhuis>wavded: what was that about child_process.spawn?
14:17:27  <wavded>is execSync going to be a for real deal? I'm actually working on a chapter about child_process right now and may make a mention
14:17:37  <bnoordhuis>yeah, bert's working on it
14:18:00  <bnoordhuis>he may even finish it someday
14:18:02  <piscisaureus_>it's in a pr
14:18:06  <wavded>bnoordhuis: my question was with the stdio option for spawn, why can't i reuse the same file descriptor?
14:18:14  <bnoordhuis>wavded: example?
14:18:36  <bnoordhuis>saghul: "OSX"?
14:18:59  <saghul>bnoordhuis yes, OSX
14:19:08  <wavded>sure, go to the example in the docs for detaching a process, its near the bottom -> http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
14:19:16  <bnoordhuis>do people really spell it like that? rather than "OS X" i mean?
14:19:26  <saghul>oh, yeah, no space
14:19:27  <wavded>if you reuse "out" instead of creating "err", nothing will get written to error
14:20:08  <MI6>nodejs-master: #531 UNSTABLE smartos-x64 (6/644) http://jenkins.nodejs.org/job/nodejs-master/531/
14:20:18  <piscisaureus_>fatal: pathspec 'configure.ac' did not match any files
14:20:20  <piscisaureus_>meh
14:20:37  <saghul>bnoordhuis meh, on system info it has en space, so it's ok i guess
14:23:35  <bnoordhuis>wavded: indutny is the one to ask, he wrote it
14:23:44  <indutny>sup?
14:24:28  <wavded>indutny: my questions was, it doesn't seem like I can reuse the same FD in a stdio config, is that true? I can give you test case if desired
14:24:41  * kevinswiberquit (Remote host closed the connection)
14:24:43  <indutny>oh
14:24:52  <indutny>what do you mean by "same FD"?
14:25:39  <wavded>if I do fs.openSync('./out.log') and pass that more than once to a stdio config, it seems like only the first one gets stuff written to it
14:26:00  <wavded>however if I fs.openSync the file twice and pass it, seems to work
14:26:58  <wavded>here is a sample
14:27:00  <wavded>https://gist.github.com/wavded/6450827
14:29:52  * c4miloquit (Remote host closed the connection)
14:30:25  * c4milojoined
14:34:53  <MI6>nodejs-master-windows: #325 UNSTABLE windows-x64 (20/644) windows-ia32 (20/644) http://jenkins.nodejs.org/job/nodejs-master-windows/325/
14:41:16  * kenperkinsquit (Quit: Textual IRC Client: http://www.textualapp.com/)
14:43:08  * kenperkinsjoined
14:44:02  * bradleymeckjoined
14:44:18  * AvianFlujoined
14:44:48  * kevinswiberjoined
14:45:12  * mcavagejoined
14:46:45  <saghul>bnoordhuis care to merge https://github.com/joyent/libuv/pull/814 ? greenpeace called and they said it's kosher
14:47:59  <MI6>joyent/libuv: piscisaureus created tag v0.10.16 - http://git.io/JhQ7ng
14:48:02  <MI6>joyent/libuv: Bert Belder v0.10 * 7e5c63c : Now working on v0.10.17 (+1 more commits) - http://git.io/QjcJTQ
14:49:10  * amartensjoined
14:49:54  * mcavagequit (Ping timeout: 264 seconds)
14:50:51  <piscisaureus_>sometimes I hate git
14:51:06  <piscisaureus_>If you wish to set tracking information for this branch you can do so with:
14:51:06  <piscisaureus_> git branch --set-upstream v0.10 <remote>/<branch>
14:51:10  <piscisaureus_>try that
14:51:20  <piscisaureus_>it will berate for not using --set-upstream-to or --trac
14:51:32  <MI6>joyent/node: Bert Belder v0.10 * 6301613 : uv: upgrade to v0.10.16 - http://git.io/bG4plg
14:53:23  <piscisaureus_>tjfontaine: isaacs: bnoordhuis: libuv-release-tool was updated, please pull before making a release on the 0.11 branch
14:54:18  * amartensquit (Ping timeout: 276 seconds)
14:54:40  * csaohquit (Quit: csaoh)
14:54:58  * bajtosquit (Quit: bajtos)
14:56:40  <MI6>libuv-review: #65 UNSTABLE osx-x64 (1/188) smartos-ia32 (4/187) smartos-x64 (2/187) windows-ia32 (4/188) linux-ia32 (2/187) windows-x64 (5/188) http://jenkins.nodejs.org/job/libuv-review/65/
14:58:41  * hzquit
14:58:46  <MI6>libuv-v0.10-gyp: #77 UNSTABLE smartos-x64 (2/187) smartos-ia32 (3/187) windows-x64 (4/188) windows-ia32 (6/188) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/77/
14:59:12  <MI6>nodejs-v0.10: #1467 UNSTABLE linux-x64 (1/598) smartos-x64 (1/598) http://jenkins.nodejs.org/job/nodejs-v0.10/1467/
15:00:14  <bnoordhuis>saghul: that's for piscisaureus_ to land
15:00:52  <MI6>libuv-v0.10: #113 UNSTABLE windows (6/188) smartos (2/187) http://jenkins.nodejs.org/job/libuv-v0.10/113/
15:01:20  <saghul>oh, he just did the release :-S
15:01:31  * piscisaureus_quit (Ping timeout: 260 seconds)
15:01:48  <bnoordhuis>and now he runs off
15:04:39  * bradleymeckquit (Quit: bradleymeck)
15:06:48  * bradleymeckjoined
15:10:43  <wavded>indutny: if it helps, I'm on OSX.. I'm more curious as to why that is the case than if its a bug, I may just not be understanding how FDs work internally
15:13:37  * inolenquit (Quit: Leaving.)
15:17:08  <MI6>libuv-node-integration: #207 UNSTABLE linux-ia32 (1/598) smartos-x64 (3/598) http://jenkins.nodejs.org/job/libuv-node-integration/207/
15:18:18  <MI6>nodejs-master: #532 UNSTABLE smartos-x64 (6/644) http://jenkins.nodejs.org/job/nodejs-master/532/
15:22:06  * bajtosjoined
15:24:00  <bnoordhuis>hrm, i think i'm reinventing the avl tree here...
15:25:25  * jmar777quit (Read error: Connection reset by peer)
15:25:53  * jmar777joined
15:27:42  <MI6>nodejs-v0.10-windows: #195 UNSTABLE windows-ia32 (8/598) windows-x64 (7/598) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/195/
15:35:22  * dapjoined
15:41:00  * mcavagejoined
15:47:56  * tuxie_joined
15:49:32  * amartensjoined
15:50:19  <indutny>wavded: ok
15:50:24  <indutny>I'll try to look into it
15:50:28  <indutny>wavded: can you open an issue?
15:50:43  <wavded>indutny: sure can, thx
15:50:46  <indutny>bnoordhuis: use B+
15:51:11  * Benviejoined
15:52:33  <bnoordhuis>or maybe A*
15:53:10  <bnoordhuis>i'm basically doing some kind of path finding but it starts to look more and more like a balanced binary tree
15:53:53  <indutny>A*?
15:53:53  <bnoordhuis>it's interesting how many ways there are to keep a tree balanced
15:53:55  <indutny>oh
15:53:56  <bnoordhuis>but i digress
15:53:59  <indutny>yeah
15:54:06  <indutny>you just choose
15:54:11  <indutny>either rare updates
15:54:15  <indutny>or fast lookup
15:54:18  <indutny>I mean
15:54:21  <indutny>balance between write and read
15:54:23  <bnoordhuis>i understand :)
15:54:33  <austo>bnoordhuis: is this somewhere in node/libuv or you own projects?
15:54:42  <bnoordhuis>it's tangentially related to libuv
15:54:45  * amartensquit (Ping timeout: 276 seconds)
15:55:40  <bnoordhuis>i admittedly got a little distracted
15:56:33  <austo>I don't remember if if was node or libuv where I seem to remember a 500+ line red/black tree macro
15:57:30  <bnoordhuis>oh, that. that's something we stole from *bsd actually
15:57:42  <bnoordhuis>you mean tree.h
16:03:46  <indutny>hehehe
16:06:50  * tuxie_quit (Ping timeout: 264 seconds)
16:07:05  <austo>yeah, I need to study that some more
16:07:30  * TooTallNatejoined
16:08:39  <trevnorris>morning
16:10:50  <bnoordhuis>sup trevor?
16:12:28  <trevnorris>not much
16:12:57  <bnoordhuis>how are you going to remedy that?
16:14:44  <trevnorris>not sure I want to. like things to be chill
16:15:02  <bnoordhuis>then you should move to northern canada
16:15:08  <trevnorris>heh
16:15:19  <bnoordhuis>that's chill by both definitions of the word
16:15:33  <bnoordhuis>are there any pull requests i should be looking at?
16:17:26  <trevnorris>give me a minute to clean up some commits and you can give me some feedback on my async listener approach
16:17:48  <pfox__>is the path param of a uv_fs_t always set by the time it is passed into the callback, for any operation? fstat, in particular.
16:17:59  <pfox__>or just operations that take a path input..
16:18:00  <pfox__>?
16:18:33  <bnoordhuis>pfox__: only for operations that take a path
16:18:43  * amartensjoined
16:20:23  <bnoordhuis>req->path is currently set to NULL when it's unused but that's probably not really something you should rely on
16:23:21  <pfox__>yeah, i dug into the src and found it
16:23:31  <pfox__>i should just get into the habit of doing that before asking questions more.
16:24:04  <pfox__>that's ackward grammar, heh.
16:24:09  <bnoordhuis>:)
16:34:09  * sblomjoined
16:37:17  * brsonjoined
16:39:53  * rendarquit (Ping timeout: 240 seconds)
16:42:45  <trevnorris>bnoordhuis: ok, if you wouldn't mind giving me feedback on the approach i'm taking so far here: https://github.com/joyent/node/pull/6011
16:43:43  * groundwaterjoined
16:43:44  * indexzerojoined
16:47:39  <bnoordhuis>trevnorris: sure but i've been informed that dinner is ready. biab :)
16:48:42  * inolenjoined
16:49:25  * TooTallNatequit (Quit: Computer has gone to sleep.)
16:50:19  * inolenquit (Client Quit)
16:51:52  <trevnorris>cool. enjoy :)
16:52:15  * bnoordhuisquit (Ping timeout: 260 seconds)
16:53:26  * inolenjoined
16:54:23  * kevinswiberquit (Read error: Connection reset by peer)
16:54:41  * indexzeroquit (Quit: indexzero)
16:54:52  * kevinswiberjoined
16:55:41  * rendarjoined
17:05:22  * TooTallNatejoined
17:05:43  * wolfeidaujoined
17:06:32  * c4miloquit (Remote host closed the connection)
17:07:04  * rendarquit (Ping timeout: 264 seconds)
17:12:19  * bradleymeckquit (Quit: bradleymeck)
17:12:22  * hzjoined
17:14:25  * bradleymeckjoined
17:15:28  * ecrjoined
17:18:45  * AvianFluquit (Remote host closed the connection)
17:18:45  * hzquit (Disconnected by services)
17:18:50  * hzjoined
17:24:56  * ecrquit (Ping timeout: 260 seconds)
17:31:34  * ecrjoined
17:31:47  * AvianFlujoined
17:41:13  * dshaw_joined
17:43:51  * defunctzombie_zzchanged nick to defunctzombie
17:48:55  * kevinswiberquit (Remote host closed the connection)
17:51:19  * kevinswiberjoined
17:51:23  * bradleymeckquit (Quit: bradleymeck)
17:54:47  <MI6>libuv-master: #224 UNSTABLE windows (3/194) smartos (9/193) http://jenkins.nodejs.org/job/libuv-master/224/
17:57:50  * indexzerojoined
17:58:01  * indexzeroquit (Client Quit)
17:58:12  * bnoordhuisjoined
18:03:27  * bnoordhuisquit (Ping timeout: 276 seconds)
18:08:02  <MI6>libuv-node-integration: #208 UNSTABLE smartos-x64 (6/644) http://jenkins.nodejs.org/job/libuv-node-integration/208/
18:08:53  <trevnorris>othiym23, creationix: just implemented support for before/after object return from async listener.
18:08:57  <trevnorris>working on error handling now.
18:09:35  <othiym23>"object return"?
18:09:51  <trevnorris>the object returned from the async listener
18:10:21  <trevnorris>e.g. process.addAsyncListener(function(context) { return { before: function(domain) {}, after: function(domain) { } });
18:10:50  <othiym23>is this a change to the API?
18:11:04  <trevnorris>the object you return from add async listener is the object passed into the before/after callbacks.
18:11:18  <trevnorris>nope. that's what's listed on the pr
18:11:38  <trevnorris>oh suck.
18:11:42  <trevnorris>yeah, it is
18:12:11  <othiym23>I'm fine with it changing, I'll just need to update async-listener to keep the polyfill in sync
18:12:39  <trevnorris>you are using some serious black magic if your polyfill can do everything this patch does
18:14:20  <trevnorris>the api in the pr is better. i'll fix it.
18:15:17  <othiym23>trevnorris: it can't do everything, but it does enough for the 80% case that New Relic requires
18:16:16  <othiym23>it just deals with timers, nextTick, MakeCallback downstream consumers in core, and a few event sources (net.Socket, crypto, zlib's tranform stream)
18:16:20  <trevnorris>doubt i'll have time to reimplement the domain module today, but should have the remaining api ready for preliminary testing.
18:18:42  <othiym23>this is all really great, trevnorris
18:18:48  <othiym23>thanks for putting so much work into this!
18:18:56  <trevnorris>np :)
18:39:11  * bnoordhuisjoined
18:56:00  <trevnorris>othiym23: there you go. using the previous agreed upon api
18:56:35  <trevnorris>(minus error handling so far)
18:56:35  <MI6>nodejs-master-windows: #326 UNSTABLE windows-x64 (23/644) windows-ia32 (20/644) http://jenkins.nodejs.org/job/nodejs-master-windows/326/
19:00:49  * c4milojoined
19:02:57  * kevinswiberquit (Remote host closed the connection)
19:18:36  <MI6>joyent/libuv: Brian Kaisner master * 8e23b04 : build: clarify instructions for Windows - http://git.io/B1pZ5A
19:22:49  <bnoordhuis>oh, i guess i should land multi-context
19:23:20  * bajtosquit (Quit: bajtos)
19:23:26  <bnoordhuis>#6011 is kind of hard to get through when it's still based on top of multi-context :)
19:23:31  * stagasquit (Read error: Connection reset by peer)
19:24:37  <trevnorris>heh :)
19:24:47  <MI6>libuv-master: #225 UNSTABLE windows (3/194) smartos (9/193) http://jenkins.nodejs.org/job/libuv-master/225/
19:24:53  <MI6>libuv-master-gyp: #163 UNSTABLE windows-x64 (3/194) smartos-ia32 (2/193) windows-ia32 (3/194) smartos-x64 (2/193) http://jenkins.nodejs.org/job/libuv-master-gyp/163/
19:26:40  * mordy__quit (Ping timeout: 245 seconds)
19:26:45  * pachetjoined
19:26:46  * dominictarrquit (Quit: dominictarr)
19:27:38  <saghul>bnoordhuis can you land https://github.com/joyent/libuv/commit/82f2472b9f51b1bbb17873ae0d00fce945d5e294 on v0.10 as well?
19:27:45  <saghul>it suffers from the same illness
19:29:35  * Raltquit (Ping timeout: 245 seconds)
19:29:35  <bnoordhuis>sure, one sec
19:30:42  * Raltjoined
19:31:12  <bnoordhuis>gcc-4.8: error: unrecognized command line option '-Wnewline-eof' <- aw :(
19:31:15  <bnoordhuis>unrelated though
19:33:02  <saghul>bnoordhuis thanks!
19:34:19  <MI6>joyent/libuv: Ben Noordhuis v0.10 * 983fa68 : darwin: fix 10.6 build error in fsevents.c (+1 more commits) - http://git.io/MbyIIg
19:35:42  * tooxiejoined
19:38:16  <MI6>libuv-node-integration: #209 UNSTABLE osx-x64 (1/644) smartos-x64 (7/644) http://jenkins.nodejs.org/job/libuv-node-integration/209/
19:39:58  <MI6>libuv-v0.10: #114 UNSTABLE windows (4/188) smartos (2/187) http://jenkins.nodejs.org/job/libuv-v0.10/114/
19:40:09  <MI6>libuv-v0.10-gyp: #78 UNSTABLE smartos-x64 (3/187) smartos-ia32 (2/187) windows-x64 (5/188) windows-ia32 (4/188) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/78/
19:43:40  * TooTallNatequit (Quit: Computer has gone to sleep.)
19:43:42  * EhevuTovjoined
19:46:28  * dshaw_quit (Quit: Leaving.)
19:50:14  * TooTallNatejoined
19:51:00  <MI6>libuv-node-integration: #210 UNSTABLE linux-ia32 (1/598) smartos-x64 (3/598) http://jenkins.nodejs.org/job/libuv-node-integration/210/
19:51:52  <MI6>joyent/node: Ben Noordhuis master * 6df4741 : src: fix solaris 10 build error (+1 more commits) - http://git.io/BjVSew
19:53:11  * sblomquit (Ping timeout: 260 seconds)
19:55:25  * EhevuTovquit (Quit: This computer has gone to sleep)
19:56:01  * EhevuTovjoined
20:00:54  <MI6>nodejs-master: #533 UNSTABLE smartos-x64 (6/643) http://jenkins.nodejs.org/job/nodejs-master/533/
20:01:15  * AvianFluquit (Remote host closed the connection)
20:03:55  <trevnorris>ok, this is really annoying how integrated EventEmitter and domains are.
20:12:16  <MI6>nodejs-master-windows: #327 UNSTABLE windows-x64 (21/643) windows-ia32 (22/643) http://jenkins.nodejs.org/job/nodejs-master-windows/327/
20:13:38  * julianduquejoined
20:14:12  <tjfontaine>bnoordhuis: had a conversation with the guys here, S10 had a signed uid, and it changed to unsigned in the path to S11
20:15:17  <bnoordhuis>tjfontaine: ah okay. well, in that case i hope it works out for the solaris 10 people
20:15:31  <tjfontaine>hehe
20:17:00  * wavdedquit (Quit: Hasta la pasta)
20:17:09  <bnoordhuis>i wonder if isaacs is regretting adding objectMode?
20:17:17  * dshaw_joined
20:18:20  <isaacs>haha
20:18:28  <isaacs>bnoordhuis: oh, i regretted it ahead of time
20:18:48  <isaacs>bnoordhuis: anyone wanna review that trivial pull req? https://github.com/joyent/node/pull/6184
20:18:56  * dshaw_1joined
20:18:58  <isaacs>er, meant that without the name...
20:19:04  <tjfontaine>+1
20:19:06  <isaacs>k
20:19:13  * dshaw_quit (Read error: Connection reset by peer)
20:19:27  <bnoordhuis>lgtm from me as well
20:19:30  <trevnorris>hasn't that already landed in master?
20:19:50  <MI6>joyent/node: isaacs v0.10 * 1da7bcc : stream: objectMode transforms allow falsey values - http://git.io/3YLplg
20:19:57  <isaacs>trevnorris: yeah, it works fine in master.
20:20:03  * indexzerojoined
20:20:10  <isaacs>trevnorris: but a lot of stuff changed with streams in master, to remove the modal switches
20:20:23  <trevnorris>FREAKIN DOMAIN ERROR HANDLING, I HATE YOU WITH THE BURNING OF 1000 SUNS!!!
20:20:23  <LOUDBOT>RETWEET MAN, RETWEET
20:20:38  <isaacs>LOUDBOT: twitlast
20:20:48  <isaacs>LOUDBOT: WTF I SAID TWITLAST YOU TWIT
20:20:48  <LOUDBOT>isaacs: HOW THE SHIT IS THAT RACIST // SAID THE WHITE PERSON
20:23:16  * tooxiequit (Ping timeout: 246 seconds)
20:26:47  * pachetquit (Ping timeout: 260 seconds)
20:27:46  <MI6>nodejs-v0.10: #1468 UNSTABLE smartos-x64 (1/599) http://jenkins.nodejs.org/job/nodejs-v0.10/1468/
20:28:36  <trevnorris>;kasdjf;lkjasd
20:35:26  * jmar777quit (Remote host closed the connection)
20:37:39  <trevnorris>oy, must I rewrite domains from scratch to use the new api?
20:38:32  <tjfontaine>"you must"
20:39:18  <trevnorris>i can catch any error call stack perfectly w/ the new api. but that's because it's completely integrated. domains just sat on top of a few things like nextTick, event emitter, makecallback.
20:39:38  <MI6>nodejs-v0.10-windows: #196 UNSTABLE windows-ia32 (8/599) windows-x64 (7/599) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/196/
20:39:41  <trevnorris>and domains have this strange way of working with the event emitter that's kicking my butt
20:43:20  <trevnorris>othiym23: fyi, error handling is implemented. though domains are fubar atm.
20:43:28  <trevnorris>but hey, you can start playing w/ the new api if you want :)
20:44:27  <trevnorris>oh, and i'm removing done for now. i'm sure I can do it, but it's a nicety that's not necessary for the rest of the impl to be merged
21:04:30  <hueniverse>tjfontaine: thanks! trying out now
21:04:46  <tjfontaine>hueniverse: best of luck!
21:05:26  <hueniverse>was there any change to destroy() logic in 0.11?
21:06:26  <hueniverse>also, why in 0.11.* I need to run configure manually before make?
21:08:53  <tjfontaine>hueniverse: bnoordhuis changed it such that configure is required so that we can reuse config.gypi from build to build
21:11:35  * indexzeroquit (Quit: indexzero)
21:14:33  <hueniverse>tjfontaine: any idea if anyone changed destroy()?
21:14:50  <trevnorris>on domains?
21:14:57  <hueniverse>sockets
21:15:01  <trevnorris>oh,
21:15:51  <hueniverse>in 0.10 this line executes during the tests: https://github.com/spumko/hapi/blob/master/lib/response/stream.js#L172
21:15:59  <hueniverse>in 0.11 we're getting missing coverage
21:16:43  <hueniverse>basically, we're piping a stream to res
21:16:58  <hueniverse>if that stream has a destory (an http client request), we call it
21:19:09  <hueniverse>so... 0.11.7... not looking good... DEBUG: ERROR in file: /home/eran/code/hapi/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js / ReferenceError: KEYWORDS is not defined
21:22:10  <hueniverse>like 53 if you want to look
21:24:41  * kevinswiberjoined
21:29:49  <trevnorris>isaacs: ping
21:32:47  <trevnorris>bnoordhuis: ping
21:35:33  * kevinswiberquit (Remote host closed the connection)
21:38:19  * groundwaterquit (Remote host closed the connection)
21:38:34  * kevinswiberjoined
21:39:12  * c4miloquit (Remote host closed the connection)
21:39:40  * groundwaterjoined
21:45:06  <bnoordhuis>trevnorris: pong
21:46:29  <bnoordhuis>hueniverse: re configure, i changed it because the makefile had a nasty habit of destroying the current config.gypi
21:46:55  <hueniverse>bnoordhuis: makes sense. thanks.
21:48:45  <trevnorris>bnoordhuis: so, somehow i've gotten myself into a race condition throwning a HandleWrap unwrap failure abort
21:49:05  <trevnorris>bnoordhuis: the value is in fact (nil) at times, but not all the time
21:49:18  <trevnorris>bnoordhuis: not really sure where to start for debuggin this, and was hoping you had some tips
21:50:12  <trevnorris>bnoordhuis: the case is i'm catching a lot of errors from nested callbacks and continuing blindly.
21:51:01  <bnoordhuis>trevnorris: i'd start with compiling a debug build and running that in gdb
21:51:19  <bnoordhuis>debug builds also enable some more checks in v8
21:53:20  <trevnorris>bnoordhuis: looking at the back trace: https://gist.github.com/trevnorris/6456724
21:54:38  <trevnorris>it's failing at the NODE_UNWRAP abort in node_internals.h
21:58:56  <tjfontaine>hueniverse: sorry had some work flare up, I hit that uglify-js issue while debugging your issue, it seems like it's a v8 bug, but I wasn't able to reproduce it, it's some weird 'use strict' issue, I just modified all 4 versions of uglify-js locally when testing
22:02:42  <hueniverse>tjfontaine: modified what?
22:03:50  <tjfontaine>hueniverse: uglify-js, I just added more `var`s in that block to make it happy
22:04:55  <trevnorris>bnoordhuis: ok. so from the js side it's calling into HandleWrap::Close from timers.close(), that's a legitimate setTimeout instance, but sometimes the internal field is (nil).
22:04:59  <trevnorris>oy. fun fun.
22:05:23  <bnoordhuis>trevnorris: frame 2; info locals # take it from there :)
22:06:22  <trevnorris>ooh, cool. didn't know you could just print all of them :)
22:09:23  * kellabytejoined
22:11:17  <trevnorris>wtf. I just magically created the right sequence of error throws to make this happen. if anything is changed around at all it won't reproduce. :/
22:14:25  <kellabyte>bnoordhuis: is now okay to resume that chat? :P
22:14:30  <kellabyte>bnoordhuis: sorry about that!
22:14:42  <trevnorris>freak yeah!
22:14:44  <trevnorris>it's not my patch
22:14:52  <trevnorris>i'm able to reproduce using uncaughtException
22:17:59  <bnoordhuis>kellabyte: bit sleepy but let's try it
22:18:13  <bnoordhuis>iow, don't expect brilliant insights from me
22:18:59  <kellabyte>bnoordhuis: haha no worries, I can wait, no rush :) go sleep!
22:21:28  <bnoordhuis>kellabyte: oh, i'll be around for another 30 minutes. if you have questions, go ahead
22:22:37  <kellabyte>bnoordhuis: nope! you will rest for those 30 mins :)
22:22:59  <bnoordhuis>heh, you sound like my mom
22:24:52  <kellabyte>haha
22:25:15  * jmar777joined
22:25:34  <kellabyte>TIME OUT MISTER, NOW GO TO YOUR ROOM AND NO DESERT
22:25:35  <LOUDBOT>JERRY YOUR LIST OF SLURS IS BOTH IMPRESSIVE AND OFFENSIVE
22:25:36  <kellabyte>lol
22:27:29  * dominictarrjoined
22:42:21  <trevnorris>you've got to be kidding me. the handlewrap abort bisected to my commit at 756ae2c
22:42:39  * dshaw_1quit (Quit: Leaving.)
22:43:55  <tjfontaine>guess we know whose fault it is :)
22:45:46  <trevnorris>yeah... now time to figure out why this one random case is causing it.
22:47:16  <trevnorris>FFFFFFFFFFFFUUUUUUUUUUUUUUUCCCCCCCCCCCCCCKKKKKKKKKKKKK!
22:47:22  <trevnorris>LOUDBOT: ?
22:47:22  <LOUDBOT>trevnorris: YOU SPIN ME RIGHT ROUND BABY RIGHT ROUND LIKE A RECORD BABY
22:47:28  <tjfontaine>you need multiple words generally
22:50:01  <hueniverse>tjfontaine: is the v8 used in 0.11.7 same as latest chrome?
22:50:14  <hueniverse>IOW, is it a beta version or stable release
22:52:37  <tjfontaine>it is a stable afaik, it's 3.20.17
22:53:24  <hueniverse>and it's diff from what you had in 0.11.6?
22:53:31  <tjfontaine>yes
22:53:34  * amartensquit (Quit: Leaving.)
22:53:38  <hueniverse>trying to decide if this uglify issue is a real problem
22:54:53  <tjfontaine>I couldn't figure out how to reproduce it myself, but it felt like a real v8 issue
22:55:06  <tjfontaine>looks like stable chrome is on 3.19 though
22:55:28  <tjfontaine>at least according to http://src.chromium.org/viewvc/chrome/releases/29.0.1547.65/DEPS
22:57:00  <MI6>joyent/node: Trevor Norris master * f218d94 : handle_wrap: properly don't abort on unwrap - http://git.io/j6sCOA
22:57:09  <trevnorris>that was a great way to spend 2 hours of my day :P
22:59:54  * dshaw_joined
23:00:58  * kevinswiberquit (Remote host closed the connection)
23:01:09  * defunctzombiechanged nick to defunctzombie_zz
23:04:38  * defunctzombie_zzchanged nick to defunctzombie
23:07:56  <MI6>nodejs-master: #534 UNSTABLE smartos-x64 (7/644) http://jenkins.nodejs.org/job/nodejs-master/534/
23:08:35  <trevnorris>othiym23: ok, so _now_ error handling is pretty solid.
23:09:07  * defunctzombiechanged nick to defunctzombie_zz
23:10:48  * `3rdEdenchanged nick to `3E|Zzz
23:13:38  <trevnorris>isaacs: ping. if you do var event = new require('events'); in a test, you'll get "Unknown global: domain"
23:13:59  <trevnorris>isaacs: but if you do var event = new require('events').EventEmitter() it's fine
23:14:21  <trevnorris>isaacs: oh, the first one should be var event = new require('events')();
23:14:43  <tjfontaine>heh, we probably shouldn't be a leaking a global like that
23:14:43  <isaacs>trevnorris: new (require('events'))
23:14:56  * dominictarrquit (Quit: dominictarr)
23:15:06  <trevnorris>wtf
23:15:16  * jmar777quit (Remote host closed the connection)
23:15:17  <isaacs>trevnorris: the first () throws it
23:15:21  <trevnorris>ah, ok
23:15:22  <isaacs>then require() returns an object
23:15:23  <isaacs>> var e = new require('events')
23:15:24  <isaacs>undefined
23:15:24  <isaacs>> e === e.EventEmitter
23:15:24  <isaacs>true
23:15:27  <isaacs>see?
23:15:34  <tjfontaine>cute
23:15:38  <trevnorris>got it, thanks.
23:15:38  <isaacs>x = new require('foo') is always the same as x = require('foo')
23:15:41  <isaacs>because js wtfs :)
23:15:47  <trevnorris>heh
23:15:58  <tjfontaine>JS DO WHAT I MEANT
23:15:59  <LOUDBOT>PHWORD TO UR MOTHER
23:16:02  <tjfontaine>heh
23:17:51  * dominictarrjoined
23:19:30  * jmar777joined
23:20:41  <MI6>nodejs-master-windows: #328 UNSTABLE windows-x64 (22/644) windows-ia32 (23/644) http://jenkins.nodejs.org/job/nodejs-master-windows/328/
23:21:26  <trevnorris>isaacs: well, if I can figure out how to decouple domains and the event emitter i'm going to say this async listener patch is about ready for testing :)
23:25:08  * jmar777quit (Remote host closed the connection)
23:26:40  <trevnorris>isaacs: ping
23:26:53  <isaacs>trevnorris: nice
23:27:04  <isaacs>sorry, had to reschedule my dublin flights in a hurry
23:27:14  <isaacs>kinda been checked out :)
23:28:08  <trevnorris>wait, nm. read the domain docs incorrectly
23:28:11  <trevnorris>when you flying out?
23:31:51  <othiym23>trevnorris: did your branch drift out of sync with multi-context again?
23:32:11  <othiym23>buncha multi-context stuff snuck into my diff
23:32:17  <trevnorris>othiym23: yeah. I just landed a commit on master that was causing my error tests to abort
23:32:23  <trevnorris>so I rebased on that
23:32:24  <trevnorris>sorry
23:34:16  * austoquit (Quit: Leaving)
23:34:35  <othiym23>no problem, I'll just create a different diff view
23:34:41  <trevnorris>ok, i'm at a serious loss of how to port domains over
23:35:18  <trevnorris>maybe I just don't understand it correctly.
23:35:20  <othiym23>trevnorris: what are the issues?
23:35:27  <othiym23>I can help with the understanding part
23:35:57  <trevnorris>w/ the new api you just set an error callback that's called from _fatalException. it'll even call multiple and all that
23:36:13  <trevnorris>and all that is completely abstracted from the event emitter
23:36:25  <trevnorris>but it seems domains will catch the error then emit an error event?
23:36:40  <trevnorris>is the whole purpose of domains just to catch errors?
23:36:49  <othiym23>yes, the job of domains is to trap errors and then re-emit them on the domain error handler
23:37:16  <othiym23>yes, they were intended as an asynchronous try-catch analog
23:37:56  <trevnorris>problem i'm having understanding is there's .run(), which is easy enough. but then .enter() and .exit() ?
23:38:22  <trevnorris>shouldn't it automatically enter before the callback to .run() and exit afterwards?
23:38:42  <trevnorris>but since it's exposed to the user suddenly they can arbitrarily got in and out of a domain.
23:39:03  * hzquit
23:39:25  <othiym23>hueniverse actually uses that in some of his error-handling code for hapi
23:39:45  <trevnorris>and the error event is so deeply coupled with the event emitter.
23:40:21  <trevnorris>meaning, and "error" is emitted, but will the error event itself cause a node application to exit?
23:40:24  <othiym23>OK, so there's a few areas where EEs and domains intersect
23:40:48  <othiym23>one is that domains can throw if an error event is emitted and there's not an error handler registered on the EE
23:41:08  <othiym23>another is that EEs created within the context of a domain are implicitly added to that domain, so errors on them are emitted on the domain
23:41:23  <othiym23>a third is domain.add, which allows you to bind an EE onto a domain
23:41:38  * dshaw_quit (Quit: Leaving.)
23:41:46  <trevnorris>that's strange because if you add an error handler to an async listener then it'll catch any errors thrown by the domain.
23:42:08  * hzjoined
23:42:53  <othiym23>it may be easier to understand if you go all the way back to the 0.8 implementation of domains, which was based on the uncaughtException handler
23:43:05  <othiym23>all that stuff you did to speed domains up really complicated the implementation ;)
23:43:16  <trevnorris>hah yeah
23:43:22  <trevnorris>and now i'm working to rip it all out
23:43:58  <othiym23>in any case, you only want to opt certain EEs into domains implicitly, for the rest you want some kind of signal of intent from the developer
23:43:58  * dominictarrquit (Quit: dominictarr)
23:44:15  <trevnorris>any error handlers passed to async listeners will supersede all other handlers (e.g. uncaughtException)
23:44:49  <trevnorris>check out the tests I added in https://github.com/trevnorris/node/commit/fee5ef9
23:45:14  <othiym23>the canonical example is connection pools, but it applies to long-lived sockets or streams as well -- anything that will exist longer than one domain probably shouldn't be bound to an individual domain
23:45:32  <othiym23>trevnorris: does your mental model accomodate nested domains yet?
23:45:37  <othiym23>because that's another wrinkle
23:45:56  <trevnorris>i'm not sure what you mean by nested domains.
23:46:06  <trevnorris>you can have multiple listeners going at the same time
23:46:29  <othiym23>I'm talking about 0.10 domains here, not the more generic domains of asyncListeners
23:46:47  <trevnorris>yeah. that's what i'm trying to distinguish
23:47:00  <trevnorris>i'm not sure what "nested" functionality entails.
23:47:36  <othiym23>var d1 = domain.create(), d2 = domain.create(); d1.on('error', handler); d2.on('error', anotherHandler); d1.run(function () { /* do some stuff */ d2.run(function () { /* do some other stuff */ }); });
23:48:02  <othiym23>so if something throws or asynchronously barfs inside d2.run, it will be thrown to anotherHandler
23:48:19  <trevnorris>you mean it'll barf onto the parent domain?
23:48:25  <othiym23>and if it it barfs inside d1.run, handler will catch it
23:48:30  <othiym23>nope
23:48:44  <othiym23>it'll get handled by the "lexically closest" domain, so d2, not d1
23:49:07  <othiym23>and it doesn't bubble -- only d2 has an opportunity to handle the error
23:49:56  <othiym23>there's another wrinkle, too, which is that if somehow d1 gets an error event while d2 is active, d2 gets exited as well as d1
23:50:10  <othiym23>you can see that in the source of Domain.prototype.exit
23:50:29  <trevnorris>those should all be implementation details of the domain module.
23:50:38  <othiym23>if you think about domains as asynchronous try/catch, it makes sense -- throwing is a nonlocal exit, and exceptions have to unwind the stack after that exit
23:50:54  <trevnorris>since it can track it's own listeners it should be able to add/remove them when it wants.
23:51:01  <othiym23>I entirely agree, but right now it's pretty closely tied to the implementation of EE
23:51:12  <trevnorris>and that's what i'm trying to figure out
23:51:21  <trevnorris>is how to separate the two
23:51:42  * dshaw_joined
23:52:07  <othiym23>there needs to be some way of tracking which domain various EEs belong to
23:53:04  <othiym23>either by checking the domain's members list (which isn't really used for anything now that domain.dispose() has been nerfed), or by explicitly binding the EE to the domain, which is what happens now, and is kinda gross
23:53:24  <trevnorris>well, since async listeners only work with, oh um, asynchronous events, and the event emitter can technically work completely synchronously, this is sort of being a little bitch
23:54:02  <othiym23>it's important for Node error handling, though, because while EEs are completely synchronous, events are sent during async operations
23:54:26  <othiym23>and the point of domains is to ensure that the error goes to the handler best-equipped to do something useful with it
23:54:49  <trevnorris>but a feature request of async listeners is that you can have N error handlers
23:55:19  <othiym23>yup, and I'll totally use that feature of them for New Relic, but only to trace the errors, not to handle them
23:55:31  <trevnorris>but, they can.
23:55:31  <othiym23>i.e. my error handler will always return false
23:55:35  <trevnorris>ok
23:55:55  <othiym23>in general, people will want to handle errors their own way, so it's a very useful part of the API
23:56:04  <trevnorris>and since event emitters are synchronous you never loose the stack trace
23:56:26  <othiym23>right, but the stack trace will be coming from a source where the stack trace is already lost a lot of the time
23:56:51  <othiym23>i.e. I/O / streams1 I/O / HTTP listeners
23:57:29  <trevnorris>yes, hence the before/after. what i'm getting at is there shouldn't be a need for event emitter specific error handling. since it'll bubble anyways to _fatalException
23:57:33  <trevnorris>and can be handled there
23:58:15  <othiym23>right, but there may be multiple domains in play, and it's important to know which domain an EE's errors belong to
23:58:41  <othiym23>my assumption is that there will be a single async listener for all of domains, and that will need to be able to dispatch errors off to the correct handlers
23:58:46  <othiym23>maybe that's not how you're thinking of it?
23:59:35  <trevnorris>there will be a single object containing the before/after/error callbacks. but each listener needs to be basically a wrapped: