00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:02:42  * piscisaureus_joined
00:05:01  * papertigersquit (Quit: papertigers)
00:06:10  * kazuponjoined
00:06:48  * papertigersjoined
00:10:53  * kazuponquit (Ping timeout: 240 seconds)
00:13:57  * piscisaureus_quit (Ping timeout: 248 seconds)
00:15:02  * c4milojoined
00:16:53  * EhevuTovquit (Quit: This computer has gone to sleep)
00:19:22  * mikealjoined
00:19:34  * st_lukejoined
00:38:33  * TooTallNatequit (Quit: Computer has gone to sleep.)
00:39:53  * HenryRawasquit (Ping timeout: 240 seconds)
00:44:29  * papertigersquit (Quit: papertigers)
00:45:46  * kazuponjoined
00:46:36  * defunctzombie_zzchanged nick to defunctzombie
00:51:17  * kazuponquit (Ping timeout: 248 seconds)
00:53:22  * TooTallNatejoined
00:57:11  <pquerna>i wish i could cpu profile everything that happened in a Domain
00:57:42  <pquerna>so i could pass in ?profile=1 to a url and get a profile for that production server
00:57:54  <pquerna></dreaming>
00:58:47  <tjfontaine>why couldn't you use that flag to just pass to a specific child process launched with --prof
00:59:29  <pquerna>god you want me to change my load balancer configuration? as if I controled that!
00:59:41  <tjfontaine>heh
01:00:36  <tjfontaine>you could do it in the cluster child as well
01:00:59  <tjfontaine>presuming what you were looking to profile came after where you finally can do that
01:04:48  * inolenquit (Quit: Leaving.)
01:04:48  * brsonquit (Ping timeout: 240 seconds)
01:07:46  * mikealquit (Quit: Leaving.)
01:13:31  <isaacs>pquerna: profiling everythign that happens in a specific domain would be fucking awesome.
01:13:48  <tjfontaine>would be yes, good luck with that
01:14:05  <tjfontaine>:)
01:14:28  <isaacs>pquerna: var d = domain.create(); d.add(req); d.add(res); if (req.url.match(/profile=1$/)) d.profile()
01:14:41  <isaacs>pquerna: and then when it goes out of scope, it dumps to stderr or something
01:14:56  * isaacs's gears are turning...
01:15:06  <isaacs>yeah, this is pretty much a pipe dream.
01:15:14  <tjfontaine>heh
01:15:36  * brsonjoined
01:19:25  * loladirojoined
01:20:05  <isaacs>So, once https://github.com/mojombo/semver/pull/103 gets finished and clarified, i'll probably do a pretty much whole-hog rewrite of node-semver.
01:20:22  <isaacs>to implement the actual semver.org 2.0.0 spec
01:20:25  <isaacs>(once it's a spec)
01:25:19  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
01:25:34  * wmilquit (Read error: Connection timed out)
01:27:05  * wmiljoined
01:40:39  * chiltsquit (Ping timeout: 240 seconds)
01:43:03  * chiltsjoined
01:43:47  * pooyaquit (Quit: pooya)
01:45:47  * qardjoined
01:47:53  * chiltsquit (Ping timeout: 240 seconds)
01:52:55  * dapquit (Quit: Leaving.)
01:53:36  * qardquit (Quit: Leaving.)
01:53:42  * chiltsjoined
01:54:55  * dominictarrquit (Quit: dominictarr)
01:58:08  * chiltsquit (Ping timeout: 260 seconds)
01:59:12  * chiltsjoined
02:01:02  * mikealjoined
02:01:39  * wmilquit (Remote host closed the connection)
02:04:04  * chiltsquit (Ping timeout: 276 seconds)
02:04:04  * rphillipsquit (Excess Flood)
02:06:58  * rphillipsjoined
02:09:40  * st_lukequit (Remote host closed the connection)
02:16:21  * loladiroquit (Quit: loladiro)
02:16:37  * TooTallNatejoined
02:17:04  * chiltsjoined
02:17:10  * mcavagequit (Remote host closed the connection)
02:17:31  * mcavagejoined
02:18:02  * inolenjoined
02:18:12  * mcavagequit (Remote host closed the connection)
02:22:23  * chiltsquit (Ping timeout: 240 seconds)
02:26:02  * abraxasjoined
02:28:11  * mikealquit (Quit: Leaving.)
02:30:44  * wmiljoined
02:35:10  * c4miloquit (Remote host closed the connection)
02:39:47  * kazuponjoined
02:47:44  * chiltsjoined
02:48:34  * HenryRjoined
02:55:48  * kazuponquit (Remote host closed the connection)
03:01:55  * brsonquit (Ping timeout: 276 seconds)
03:03:04  * mikealjoined
03:07:52  * kristatejoined
03:09:01  * mikealquit (Quit: Leaving.)
03:10:12  * mikealjoined
03:11:51  * HenryRquit (Ping timeout: 260 seconds)
03:12:03  <kenperkins>isaacs: what's the word
03:12:33  * kristatequit (Remote host closed the connection)
03:13:46  * mikealquit (Client Quit)
03:14:13  * mikealjoined
03:16:29  * loladirojoined
03:21:26  * timoxleyjoined
03:22:45  * loladiroquit (Ping timeout: 248 seconds)
03:26:12  * pooyajoined
03:31:29  * loladirojoined
03:46:56  * kazuponjoined
03:49:29  * mikealquit (Quit: Leaving.)
03:51:17  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
04:10:49  * loladiroquit (Quit: loladiro)
04:14:12  * pooyaquit (Quit: pooya)
04:18:54  * timoxleyquit (Quit: Computer has gone to sleep.)
04:19:45  * mikealjoined
04:21:41  * brsonjoined
04:42:59  * normanmjoined
05:26:06  * dapjoined
05:46:15  * defunctzombiechanged nick to defunctzombie_zz
05:47:29  * paddybyersjoined
06:00:53  * bajtosjoined
06:01:28  * dapquit (Quit: Leaving.)
06:03:53  * timoxleyjoined
06:16:23  * timoxleyquit (Ping timeout: 240 seconds)
06:26:29  * kristatejoined
06:27:43  <trevnorris>ircretary: tell bnoordhuis hey dude, sup?
06:27:43  <ircretary>trevnorris: I'll be sure to tell bnoordhuis
06:28:03  * kristatequit (Remote host closed the connection)
06:29:52  * timoxleyjoined
06:32:15  * `3rdEdenjoined
06:32:21  * csaohjoined
06:38:41  * csaohquit (Quit: csaoh)
06:40:46  * wmilquit (Remote host closed the connection)
06:45:51  * defunctzombie_zzchanged nick to defunctzombie
06:56:08  * defunctzombiechanged nick to defunctzombie_zz
06:58:53  * wmiljoined
06:59:05  * wmilquit (Remote host closed the connection)
07:03:28  * stagasjoined
07:12:19  * wmiljoined
07:12:28  * wmilquit (Remote host closed the connection)
07:12:39  * timoxleyquit (Ping timeout: 260 seconds)
07:12:48  * wmiljoined
07:21:38  * hzjoined
07:30:37  * csaohjoined
07:33:28  * dominictarrjoined
07:39:13  * brsonquit (Ping timeout: 246 seconds)
07:41:24  * stagasquit (Read error: Connection reset by peer)
07:57:18  * mralephjoined
07:57:20  * mraleph1quit (Read error: Connection reset by peer)
08:01:19  * dominictarrquit (Quit: dominictarr)
08:40:45  * dominictarrjoined
08:54:50  * kristatejoined
09:09:23  * wmilquit (Remote host closed the connection)
09:20:16  * dominictarrquit (Quit: dominictarr)
09:22:34  * timoxleyjoined
09:33:00  * rendarjoined
09:50:01  * bajtosquit (Quit: bajtos)
10:08:28  * bnoordhuisjoined
10:30:26  * bajtosjoined
10:40:33  <bnoordhuis>trevnorris: you rang, sir?
10:50:42  * bnoordhuisquit (Ping timeout: 256 seconds)
11:00:51  * csaohquit (Quit: csaoh)
11:01:07  * bajtosquit (Quit: bajtos)
11:04:52  * loladirojoined
11:05:37  * loladiroquit (Client Quit)
11:12:25  * kristatequit (Remote host closed the connection)
11:12:52  * kazuponquit (Remote host closed the connection)
11:15:59  * csaohjoined
11:17:49  * dominictarrjoined
11:19:44  * abraxasquit (Remote host closed the connection)
11:41:33  * bnoordhuisjoined
11:57:07  * bnoordhu1sjoined
11:59:37  * piscisaureus_joined
12:02:04  * bnoordhu1squit (Ping timeout: 276 seconds)
12:43:16  * c4milojoined
13:07:43  * piscisaureus_quit (Ping timeout: 276 seconds)
13:09:04  * MI6quit (Ping timeout: 240 seconds)
13:09:14  * MI6joined
13:10:24  * dscape_quit (Ping timeout: 264 seconds)
13:10:27  * chobie4quit (Ping timeout: 264 seconds)
13:10:50  * chobie4joined
13:12:49  * c4miloquit (Read error: Connection reset by peer)
13:14:53  * csaohquit (Ping timeout: 240 seconds)
13:15:41  * bnoordhu1sjoined
13:15:41  * chilts_joined
13:16:13  * csaohjoined
13:18:50  * bnoordhuisquit (Write error: Broken pipe)
13:18:51  * chiltsquit (Write error: Broken pipe)
13:20:00  * abraxasjoined
13:20:09  * mmaleckiquit (Ping timeout: 276 seconds)
13:25:16  * abraxasquit (Ping timeout: 276 seconds)
13:25:55  * mmaleckijoined
13:36:42  * kazuponjoined
13:43:26  * kazuponquit (Remote host closed the connection)
13:53:55  * c4milojoined
13:54:43  * piscisaureus_joined
14:13:48  * pachetjoined
14:15:09  <piscisaureus_>why is contextify not part of node-core?
14:28:05  * st_lukejoined
14:32:54  * c4miloquit (Remote host closed the connection)
14:34:04  * mikealquit (Quit: Leaving.)
14:35:36  * c4milojoined
14:43:54  * timoxleyquit (Ping timeout: 240 seconds)
14:44:08  * c4miloquit (Remote host closed the connection)
14:49:54  * Benvie_joined
14:51:43  * Benviequit (Ping timeout: 269 seconds)
14:53:54  * kazuponjoined
14:54:35  * defunctzombie_zzchanged nick to defunctzombie
14:58:44  * st_lukequit (Remote host closed the connection)
14:59:20  * kazuponquit (Ping timeout: 260 seconds)
15:05:16  * mikealjoined
15:08:39  * dscape__joined
15:10:08  <creationix>is there any way to get stat(2) timestamps in node
15:10:17  <creationix>I need seconds and fractional nanoseconds
15:10:22  <creationix>for git index files
15:10:55  <creationix>it seems to round to the nearest second
15:12:10  * mikealquit (Quit: Leaving.)
15:12:13  <creationix>I see libuv has sec and nsec https://github.com/joyent/libuv/blob/master/include/uv.h#L386-L389
15:14:16  <creationix>but in the 0.10.x series I don't see the definition for uv_statbuf_t
15:16:37  <creationix>oh, I see, it's just an alias for the unix stat which has time_t
15:18:15  <bnoordhu1s>piscisaureus_: why should it be?
15:18:48  <bnoordhu1s>creationix: fractional nanoseconds? are whole nanoseconds not good enough for you?
15:19:12  <creationix>sorry, misquoted the git spec
15:19:13  <creationix>"32-bit mtime nanosecond fractions this is stat(2) data"
15:19:38  <creationix>but I now see that time_t is whole seconds on most systems
15:19:48  <creationix>hence the low precision in libuv 0.10.x
15:20:00  <creationix>I wonder what cgit is using then
15:21:20  <bnoordhu1s>creationix: libuv master has a struct uv_stat_t that gives us or ns precision on some platforms
15:21:31  <creationix>yeah, saw that
15:25:49  <creationix>oh well, I guess my window for race conditions will just be larger https://www.kernel.org/pub/software/scm/git/docs/technical/racy-git.html
15:28:51  * pooyajoined
15:29:23  * dapjoined
15:30:52  <bnoordhu1s>so, justin bieber has 40 million followers on twitter
15:31:08  <bnoordhu1s>8 million more than obama, _20x_ as many as mandela
15:31:45  <bnoordhu1s>we will speak no more of this
15:32:05  * bnoordhu1schanged nick to bnoordhuis
15:36:34  * bnoordhuisquit (Quit: leaving)
15:37:33  * bnoordhuisjoined
15:38:06  * hzquit
15:42:22  * kazuponjoined
15:43:55  * `3rdEdenquit (Quit: FOOOOOOOOD)
15:44:10  * defunctzombiechanged nick to defunctzombie_zz
15:45:16  <mmalecki>bnoordhuis: hi there :-)
15:45:26  * bajtosjoined
15:52:46  <ral>bnoordhuis: To put it into context, that's 0.56% of the population.
15:53:33  <bnoordhuis>mmalecki: sup maciej?
15:53:54  <bnoordhuis>ral: 0.56% of the population we could do without
15:55:12  <bnoordhuis>i guess most of them are teen girls
15:55:22  <bnoordhuis>let me rephrase that. i _hope_ most of them are teen girls
15:55:52  <bnoordhuis>the thought of a middle-aged man or woman following justin bieber on twitter is just to sad to contemplate
15:55:56  <bnoordhuis>*too
15:56:28  * HenryRjoined
15:56:51  * dapquit (Quit: Leaving.)
15:57:18  <mmalecki>bnoordhuis: I have a question about uv_tcp, if you don't mind. I'm trying to implement reconnect with tcp to a different host, but I try to connect reusing existing connect req and tcp client (after memset'ing them to 0) with no luck
15:57:52  <bnoordhuis>mmalecki: don't do that
15:58:12  <bnoordhuis>uv_close() the handle and uv_tcp_init() it in your close_cb
15:58:44  <mmalecki>bnoordhuis: I'm doing that on write error tho
15:58:53  <bnoordhuis>i repeat, don't do that :)
15:59:04  <kenperkins>[08:31:45] bnoordhu1s: we will speak no more of this
15:59:09  <kenperkins>i thought this topic was done :(
15:59:13  <bnoordhuis>in libuv, you must _always_ uv_close() the handle
15:59:33  <bnoordhuis>kenperkins: it's just too horrible to let go
15:59:41  <kenperkins>:P
15:59:48  <mmalecki>bnoordhuis: ah. I thought it was closed automatically after write error. thanks
15:59:58  <bnoordhuis>np
16:00:55  <tjfontaine>hello folks
16:01:57  * loladirojoined
16:04:54  <bnoordhuis>sup tj?
16:05:42  <bnoordhuis>that's the european 'how are you?' btw, i.e. an honest enquiry into your well-being
16:06:14  <tjfontaine>I suppose that's a question for a mental health professional then :)
16:07:21  <tjfontaine>in any event, I'm mostly ok
16:07:53  <bnoordhuis>just mostly? let's get to the bottom of this
16:08:11  * TooTallNatejoined
16:08:12  <mmalecki>bnoordhuis: I'm kind of hating the inconsistency - uv_close takes no callback
16:08:20  <bnoordhuis>mmalecki: does too
16:08:50  <mmalecki>bnoordhuis: oh. I only looked at handle private fields. there we go :)
16:10:04  <tjfontaine>bnoordhuis: mostly is about as good as it gets I suspect
16:10:25  <tjfontaine>poor freenode is still getting packetted
16:12:19  <bnoordhuis>nothing some advanced chemistry can't fix
16:12:25  <bnoordhuis>the 'mostly' that is, not freenode
16:13:12  <mmalecki>I'm going to have to agree with bnoordhuis
16:15:04  <tjfontaine>bnoordhuis: I'd probably be fine with just imbibing more alcohol, that would make it all better right?
16:15:20  * defunctzombie_zzchanged nick to defunctzombie
16:17:09  <isaacs>piscisaureus_: contextify has a pretty oddball api.
16:17:19  <bnoordhuis>alcohol is chemistry too
16:17:29  <mmalecki>not so advanced tho
16:17:34  <tjfontaine>indeed
16:17:46  <bnoordhuis>that's true
16:18:01  <bnoordhuis>i had friends who were chemistry majors
16:18:01  <mmalecki>I actually pretty much gave alcohol up recently
16:18:07  <piscisaureus_>isaacs: I wouldn't just land it like that. But add it's features to vm perhaps?
16:18:14  <bnoordhuis>they used to brew this stuff called 'lab juice'
16:18:28  <bnoordhuis>which is really just ethanol and water
16:18:34  <bnoordhuis>more ethanol than water, really
16:18:43  <isaacs>piscisaureus_: yes, there's an issue to this effect
16:19:04  <mmalecki>bnoordhuis: I used to buy alcohol from polish students in dorms
16:19:06  <bnoordhuis>mmalecki: good for you. what made you quit?
16:19:13  <isaacs>piscisaureus_: https://github.com/joyent/node/issues/3042
16:19:26  <isaacs>kenperkins: the fix is landed in the latest v0.10 branch. hasn't made it into a release, yet
16:19:39  <kenperkins>isaacs: can i shut the box down?
16:19:52  <isaacs>kenperkins: yes, go for it. thank you for your help :)
16:20:07  <mmalecki>bnoordhuis: you basically had 3 choices, medium, which is like 40 % lemon vodka, heavy ~70 % lemon vodka and super heavy. super heavy was 90 % ethanol and 3 lemons
16:20:26  <tjfontaine>indeed, thanks kenperkins
16:20:35  <mmalecki>bnoordhuis: I started smoking more than before
16:20:47  <bnoordhuis>i don't know what's worse...
16:21:09  <mmalecki>alcohol, honestly
16:21:24  <bnoordhuis>you think so? why?
16:21:49  <isaacs>piscisaureus_: iow, yes, it is a travesty that jsdom can't work in vanilla node.
16:21:57  <isaacs>piscisaureus_: our vm module is not very good.
16:21:58  <piscisaureus_>isaacs: :)
16:22:06  <piscisaureus_>isaacs: yes that was what I was after haha
16:22:26  <mmalecki>bnoordhuis: I'm still able to work after smoking moderate amounts. drinking makes my productivity way worse
16:22:33  <isaacs>there are two use cases that matter for the vm module: Node and JSDom
16:22:41  <isaacs>the vm module delivers on Node's needs pretty well.
16:22:50  <isaacs>which is basically just: runInThisContext(src, filename)
16:23:02  <isaacs>but JSDom needs much more precise control of contexts
16:28:49  * dapjoined
16:31:33  * defunctzombiechanged nick to defunctzombie_zz
16:31:53  <HenryR>piscisaureus_: Do you have time to talk about the fix for losing stdout data on Windows?
16:31:59  <piscisaureus_>Hey Henry
16:32:01  <piscisaureus_>yes
16:32:35  <piscisaureus_>HenryR
16:32:59  <HenryR>I spent time looking at how to do this via an API, but I don't see a clean way to call a different API if stdout and using a pipe.
16:34:12  <piscisaureus_>HenryR: ok, a sec, I'll look up your patch again
16:34:45  <HenryR>It may be possible to check if the file descriptor is 1 or 2. I don't know if that is a good idea.
16:36:12  <piscisaureus_>HenryR: I know I commented on the PR but I can't find it any more ...
16:37:23  <HenryR>piscisaureus_: https://github.com/joyent/node/pull/5595
16:38:40  * csaohquit (Quit: csaoh)
16:40:06  <piscisaureus_>HenryR: oh right. so here's the thing - if you make pipes synchronous if they are opened for synchronous I/O then effectively *the parent process* decides whether *we* write to a pipe sychronously or asynchronously
16:40:59  <piscisaureus_>HenryR: so my proposal would to add a flag to uv_pipe_open (or something similar) that decised whether writes are synchronous or asynchronous.
16:41:37  * bnoordhuisquit (Ping timeout: 248 seconds)
16:41:49  <piscisaureus_>HenryR: and then in uv_pipe_write we decide based on the "open mode" and the "use mode"
16:42:40  <HenryR>piscisaureus_: That part is not too bad, but I run into problems figuring out how to set this flag from node.
16:42:45  * amartensjoined
16:43:15  <piscisaureus_>HenryR: you mean - there's no API to do it?
16:43:31  * dominictarrquit (Quit: dominictarr)
16:43:36  <piscisaureus_>HenryR: or do you mean "I don't know where to do it"?
16:43:57  * defunctzombie_zzchanged nick to defunctzombie
16:44:10  * mikealjoined
16:44:36  <HenryR>piscisaureus_: I mean finding all the places in node that would have to set this, and plumbing this in everywhere.
16:44:54  * qardjoined
16:46:03  <piscisaureus_>HenryR: ok - there's only one place in node, I will point that out.
16:47:30  <piscisaureus_>HenryR: also you might want to change the mode that libuv uses for IPC pipes (it creates pipe handles that are known to be passed off to child processes in synchronous mode - except IPC pipe handles)
16:47:53  * TooTallNatequit (Quit: Computer has gone to sleep.)
16:48:01  <piscisaureus_>HenryR: for efficiency reasons *maybe* they might be better synchronous, but I'm not sure
16:48:10  <piscisaureus_>we can do that later
16:49:27  * qardquit (Ping timeout: 260 seconds)
16:50:35  <piscisaureus_>HenryR: https://github.com/joyent/node/blob/master/lib/net.js#L147 probably
16:51:38  * defunctzombiechanged nick to defunctzombie_zz
16:53:13  <piscisaureus_>HenryR: I won't be too strict if you need to make some odd api changes for it.
16:53:52  <piscisaureus_>HenryR: libuv-unix has sort of the same problem which accidentally sort of works like node expects
16:54:24  <piscisaureus_>but that needs to be fixed some day too
16:55:21  * inolenquit (Quit: Leaving.)
16:56:55  * dscape__quit (Ping timeout: 264 seconds)
16:56:56  * HenryRquit (Read error: Connection reset by peer)
16:57:07  * HenryRjoined
16:58:18  * HenryRquit (Read error: Connection reset by peer)
16:58:35  * HenryRjoined
16:58:53  <HenryR>piscisaureus_: So are you saying that in Socket() I set this.blocking = 1;
16:59:11  * kazuponquit (Remote host closed the connection)
16:59:14  <HenryR>piscisaureus_: and somewhere in pipe_wrap or stream_wrap I check this value?
16:59:29  <HenryR>piscisaureus_: How does Socket() know if this is stdout or stderr?
16:59:48  * kazuponjoined
17:02:17  <piscisaureus_>HenryR: well you could pass it as an extra param.
17:02:25  <piscisaureus_>stdout and stderr is created in src/node.js
17:02:44  <piscisaureus_>it passes {fd: 1} or {fd: 2} as the first option to the socket constructor
17:03:16  * bajtosquit (Quit: bajtos)
17:03:22  <piscisaureus_>HenryR: alternatively you could add uv_write_sync and make blocking sockets call that.
17:03:26  * TooTallNatejoined
17:03:35  <piscisaureus_>HenryR: although it would be a "hidden" option for now
17:03:44  <piscisaureus_>you would just have to support (e.g. no TCP)
17:04:46  * brsonjoined
17:13:37  * bajtosjoined
17:19:10  * CAPSLOCKBOTquit (Remote host closed the connection)
17:19:10  * LOUDBOTquit (Read error: Connection reset by peer)
17:19:10  * ikquit (Remote host closed the connection)
17:20:10  * qardjoined
17:21:35  * amartensquit (Quit: Leaving.)
17:29:39  * amartensjoined
17:33:23  * indexzerojoined
17:34:14  * papertigersjoined
17:34:55  * inolenjoined
17:35:48  * kazuponquit (Remote host closed the connection)
17:36:25  <trevnorris>morning
17:36:48  <tjfontaine>hola
17:40:40  * HenryRawasjoined
17:41:14  * HenryRquit (Read error: No buffer space available)
17:42:25  <TooTallNate>holler!
17:44:55  <HenryRawas>piscisaureus_: So after calling createHandle(options.fd);
17:45:03  <HenryRawas>piscisaureus_: should I change the next line to _handle.open(options.fd, options.blocking);
17:45:09  <HenryRawas>piscisaureus_: and then in PipeWrap:Open check if args[1] exists and is true?
17:46:00  * indexzeroquit (Quit: indexzero)
17:58:25  * AvianFlujoined
18:02:51  <trevnorris>arg. this is sucktastic. didn't realize you couldn't do "using node::Buffer" to namespaces.
18:04:36  * qard1joined
18:04:46  * qardquit (Ping timeout: 276 seconds)
18:07:47  <TooTallNate>trevnorris: hahaha
18:08:32  <trevnorris>yeah. so either devs do "node::Buffer::<whatever>" or use "using namespace". that just sucks.
18:09:59  <trevnorris>ircretary: tell bnoordhuis presuming that cutover would happen sooner, i've already done some of that in my buffer pr: https://github.com/trevnorris/node/commit/3fbfc82
18:09:59  <ircretary>trevnorris: I'll be sure to tell bnoordhuis
18:14:11  * bnoordhuisjoined
18:15:00  <piscisaureus_>HenryRawas: yes that sounds reasonable
18:15:16  <trevnorris>bnoordhuis: sup? I was getting back w/ you about pinging me. :)
18:16:02  * indexzerojoined
18:19:49  <bnoordhuis>trevnorris: hey trevor
18:20:09  <bnoordhuis>i still have your smalloc patch in my review queue, in case you're wondering
18:20:57  <bnoordhuis>re cutover, i saw a couple of v8 commits that did that for v8 tools
18:21:10  <bnoordhuis>so i guess we'll soon have to follow suit
18:22:04  <trevnorris>yeah, and probably means the other changes are coming soon (e.g. deprecate Local<>)
18:23:07  <isaacs>trevnorris: hey, do you know offhand if persona team has updated to 8.24 yet?
18:23:15  <isaacs>trevnorris: if not, do you know who i should email to get them on that?
18:23:54  * c4milojoined
18:26:07  <trevnorris>isaacs: i have a security bug open. last note is that they have the rpm built and uploaded.
18:26:19  <trevnorris>isaacs: pinging them to see when it'll all be upgraded
18:27:17  * mikealquit (Quit: Leaving.)
18:27:57  <trevnorris>bnoordhuis: there're a lot of "#ifdef V8_USE_UNSAFE_HANDLES" in v8.h. i'll take it that's a compile option node doesn't use?
18:28:38  <bnoordhuis>trevnorris: no... we could add it so we can use the old api a little longer
18:28:54  <bnoordhuis>or rather, to give addon authors a little more time
18:29:23  <bnoordhuis>for us, it doesn't really matter
18:29:41  <bnoordhuis>for addon authors, it's something for node-gyp to do or don't
18:29:46  <trevnorris>bnoordhuis: oh no. was just curious. that means Persistent doesn't inherit from Handle, and we shouldn't be using Local anymore.
18:29:46  <bnoordhuis>TooTallNate: ^
18:30:09  <trevnorris>(but i'm sure you realized that =)
18:30:15  <bnoordhuis>yeah :)
18:30:22  <TooTallNate>bnoordhuis: ya probably not a bad idea right?
18:30:31  <TooTallNate>bnoordhuis: i can add that to the addon.gypi file
18:30:57  <TooTallNate>bnoordhuis: would addons compiled with that not be compiled with the node compiled without it though?
18:31:27  <bnoordhuis>TooTallNate: they should be compatible, the changes are mostly cosmetic
18:31:42  <bnoordhuis>maybe 'cosmetic' is not the right word
18:32:00  <bnoordhuis>anyway, i meant it more as a heads-up
18:32:22  <bnoordhuis>i'll leave it to you to decide if you want to add it to node-gyp or offer it as an option or just document it or whatever
18:32:58  <TooTallNate>hmmm
18:33:36  * piscisaureus_quit (Excess Flood)
18:34:00  * piscisaureus_joined
18:35:22  <MI6>joyent/libuv: Timothy J Fontaine v0.10 * f84becc : build: make HAVE_DTRACE=0 should disable dtrace - http://git.io/PY1zPA
18:37:01  <trevnorris>TooTallNate: it'll still affect users using, say, Buffer::New. If we change it to return Handle<Object> then everyone who has Local<Object> will get a compiler error.
18:37:43  <MI6>libuv-v0.10: #92 UNSTABLE windows (3/187) smartos (2/186) http://jenkins.nodejs.org/job/libuv-v0.10/92/
18:37:47  <bnoordhuis>TooTallNate: that's one thing i learned in management class: always shift responsibility
18:38:14  <TooTallNate>bnoordhuis: so you think i should just document the define if users want it?
18:38:19  * loladiroquit (Ping timeout: 264 seconds)
18:38:27  <TooTallNate>and not really worry about it past that
18:39:27  <trevnorris>bnoordhuis: have a feeling at what point we should start cutting over?
18:39:29  * papertigersquit (Quit: papertigers)
18:39:32  <bnoordhuis>TooTallNate: probably. but i'm not about to let the responsibility get shifted back to me :)
18:39:39  <TooTallNate>hahaha
18:39:46  <TooTallNate>i see what you did there :p
18:39:58  <TooTallNate>"but bnoordhuis said so!!"
18:41:07  <bnoordhuis>trevnorris: in the next few weeks, i guess. there's no rush as long as it happens some time before v0.12
18:42:07  <trevnorris>bnoordhuis: cool. imo the more painful part is writing the "API changes between v0.10 and v0.12" wiki page
18:42:25  <MI6>libuv-v0.10-gyp: #55 UNSTABLE windows-ia32 (3/187) smartos-x64 (2/186) linux-x64 (2/186) smartos-ia32 (2/186) windows-x64 (3/187) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/55/
18:45:26  <isaacs>trevnorris: thanks. please do ping me when you have confirmation on that, or even ask them to email i@izs.me when it's done.
18:46:18  <trevnorris>isaacs: can you go create an account w/ that email at bugzilla.mozilla.org
18:46:25  <trevnorris>isaacs: can't cc you until you're in the system
18:46:35  * kazuponjoined
18:47:46  <trevnorris>wtf. github 500's every time I try to edit a wiki page
18:48:41  <trevnorris>isaacs: yeah, so fyi I created https://github.com/joyent/node/wiki/API-changes-between-v0.10-and-v0.12 but it's sorta empty. thanks github
18:49:46  <isaacs>trevnorris: oh! thanks, i've been meaning to do that
18:51:02  <isaacs>trevnorris: mozilla acct created
18:51:43  <trevnorris>isaacs: coolio, now you should be able to access https://bugzilla.mozilla.org/show_bug.cgi?id=879056
18:51:49  * kazuponquit (Ping timeout: 248 seconds)
18:52:03  * loladirojoined
18:53:52  <MI6>libuv-node-integration: #100 UNSTABLE smartos-ia32 (1/590) smartos-x64 (4/590) http://jenkins.nodejs.org/job/libuv-node-integration/100/
18:56:00  * dscape__joined
18:57:41  * mikealjoined
18:59:15  * indexzeroquit (Quit: indexzero)
19:02:42  * indexzerojoined
19:03:06  <trevnorris>isaacs: they have it on a 2 week roll out, with the question "Is there a clear way to weaponize this in the context of persona"
19:03:20  <trevnorris>isaacs: if there is, then they'll push it out quicker.
19:04:03  <bnoordhuis>piscisaureus_: what happens on windows when you call uv_shutdown(), immediately followed by uv_close()?
19:06:49  <bnoordhuis>ah, looks like it calls shutdown_cb with err=UV_ECANCELED
19:06:51  <bnoordhuis>no problem then
19:07:07  * mikealquit (Ping timeout: 260 seconds)
19:08:39  * normanmquit (Quit: Computer has gone to sleep.)
19:11:43  * EhevuTovjoined
19:13:59  <piscisaureus_>bnoordhuis: either that or it succeeds
19:17:11  * stagasjoined
19:19:44  <piscisaureus_>bnoordhuis: isaacs: re https://github.com/joyent/node/issues/5504
19:20:04  * HenryRjoined
19:20:07  <piscisaureus_>bnoordhuis implies that node was not using the libuv api correctly and isaacs is saying that there's a bug that needs to be addressed in libuv
19:20:11  <piscisaureus_>now which one is it?
19:20:12  <piscisaureus_>:)
19:20:55  <piscisaureus_>bnoordhuis: also on windows, a read error or EOF already implicitly triggers a read_stop. Why not do the same on unix?
19:22:20  * EhevuTovquit (Quit: This computer has gone to sleep)
19:22:32  * HenryRawasquit (Ping timeout: 259 seconds)
19:22:47  * EhevuTovjoined
19:26:47  <bnoordhuis>piscisaureus_: the bug fix's commit log shouldn't mention libuv
19:27:06  <bnoordhuis>i pointed it out earlier today but by then it was too late
19:27:59  <bnoordhuis>the reason libuv doesn't call uv_read_stop is because uv.h is clear what you should do on error/EOF
19:28:19  <bnoordhuis>s/libuv/uv-unix/
19:28:42  <piscisaureus_>bnoordhuis: well yes but that can be changed too right?
19:28:49  <bnoordhuis>yes. i think i'm going to enforce that users close the handle on EOF
19:29:04  <piscisaureus_>bnoordhuis: enforcing seems a bit over the top maybe?
19:29:30  <bnoordhuis>no. because it's been demonstrated that you can't always distinguish between an error and EOF
19:29:43  <piscisaureus_>bnoordhuis: also only do that when the socket has been shut and all writes are completed
19:30:02  <piscisaureus_>bnoordhuis: well it should be possible to keep the socket in write-only halfopen state
19:30:26  <bnoordhuis>you've seen the issue right?
19:30:41  <bnoordhuis>the problem is that the kernel wakes up libuv with EPOLLHUP|EPOLLERR
19:30:56  <bnoordhuis>but when libuv reads, it gets EOF rather than ECONNRESET or EPIPE
19:31:34  <piscisaureus_>bnoordhuis: that's why you have socketerror right?
19:32:29  <bnoordhuis>i haven't tested that
19:32:42  <bnoordhuis>but why would getsockopt(SO_ERROR) return something different?
19:32:56  <piscisaureus_>bnoordhuis: also I have seen no mention of this in any commit or issue
19:33:20  <bnoordhuis>it's been discussed at length in the irc channel however :)
19:35:30  <piscisaureus_>bnoordhuis: but anyhow - you can't enforce closing it unless the socket has already been shut.
19:36:22  <piscisaureus_>bnoordhuis: doing it on error while there are still writes pending is also not nice (e.g. the user might be tracking the socket states based on write callbacks)
19:36:44  <piscisaureus_>bnoordhuis: so I think enforcing read_stop would be great. *doing* it would be even better :)
19:37:05  <piscisaureus_>bnoordhuis: but I don't like enforcing uv_close
19:37:36  <bnoordhuis>well, maybe
19:37:53  <bnoordhuis>if there's no way to distinguish between eof and error, i don't see what else you can do
19:39:20  <piscisaureus_>bnoordhuis: maybe have UV_UNKNOWNERROR :)
19:39:50  <piscisaureus_>bnoordhuis: do that instead of UV_EOF when you see EPOLLERR
19:41:05  <piscisaureus_>or just ECONNRESET
19:42:41  <bnoordhuis>i guess that could work
19:42:49  <bnoordhuis>i just hope it doesn't introduce other issues
19:48:12  * HenryRquit (Ping timeout: 260 seconds)
19:48:42  * HenryRjoined
19:56:28  * bajtosquit (Quit: bajtos)
19:58:11  * mikealjoined
20:03:04  * mikealquit (Ping timeout: 276 seconds)
20:05:32  * papertigersjoined
20:06:22  * normanmjoined
20:15:20  * c4miloquit (Remote host closed the connection)
20:25:14  * chilts_changed nick to chilts
20:42:05  * indexzeroquit (Quit: indexzero)
20:49:55  * `3rdEdenjoined
20:53:14  * trevnorris&
20:53:30  <trevnorris>LOUDBOT NOOOOOOOOOOOOOOOOO
20:54:20  * dannycoatesquit (Remote host closed the connection)
20:54:42  * rendarquit
20:57:38  * brsonquit (Remote host closed the connection)
20:58:09  * qard1quit (Quit: Leaving.)
20:58:46  * dannycoatesjoined
20:58:48  * mikealjoined
21:00:16  * HenryRquit (Ping timeout: 276 seconds)
21:00:43  <bnoordhuis>piscisaureus_: i hate loop->last_err
21:01:18  <bnoordhuis>in the future, i want to start returning / passing errors instead of setting them on a loop global
21:01:47  <bnoordhuis>e.g. int uv_foo(void) { return -UV_ENOSYS; }
21:02:40  <bnoordhuis>same for things like read callbacks -> handle->read_cb(handle, -UV_ENOTCONN, ...)
21:02:47  <mmalecki>bnoordhuis: btw, I recall that you asked about SmartLogin on joyent
21:02:50  <mmalecki>er, on linux
21:02:54  <bnoordhuis>i did?
21:02:59  <bnoordhuis>wasn't that tjfontaine?
21:03:02  <mmalecki>it was you or tjfontaine
21:03:14  <mmalecki>now that I think about it it was more tjfontaine than you
21:03:22  * HenryRjoined
21:03:31  * mikealquit (Ping timeout: 276 seconds)
21:03:31  <mmalecki>bnoordhuis: sorry :)
21:03:33  <mmalecki>tjfontaine: ping?
21:04:02  <tjfontaine>what did I do?
21:04:16  <mmalecki>tjfontaine: you asked about SmartLogin on linux, right?
21:04:19  <tjfontaine>er someone was talking about it, and I mentioned you did an implementation for it
21:04:23  <tjfontaine>I'd be interested to see it
21:04:51  <mmalecki>tjfontaine: https://blog.nodejitsu.com/announcing-doorkeeper https://github.com/opsmezzo/doorkeeper
21:05:11  <tjfontaine>mmalecki: thanks!
21:05:41  <mmalecki>tjfontaine: doorkeeper itself is pluggable into opsmezzo stack but it serves quite well as a demo
21:07:19  * qardjoined
21:08:12  <mmalecki>tjfontaine: it was isaacs who asked actually :)
21:08:21  <mmalecki>finally went through logs
21:08:30  <tjfontaine>heh
21:08:35  <tjfontaine>he's such a trouble maker
21:09:01  <mmalecki>yeah, isaacs is THAT guy
21:09:30  * papertigersquit (Quit: papertigers)
21:13:47  * brsonjoined
21:18:50  * AvianFluquit (Remote host closed the connection)
21:21:58  * `3rdEdenquit (Quit: Zzzz nite)
21:22:58  * mikealjoined
21:27:28  * sblomjoined
21:32:14  * normanmquit (Quit: Computer has gone to sleep.)
21:35:57  <tjfontaine>isaacs: https://github.com/tjfontaine/node/compare/pkgsrc
21:37:05  * defunctzombie_zzchanged nick to defunctzombie
21:39:37  * sblom_joined
21:40:35  * mikealquit (Quit: Leaving.)
21:41:52  * sblomquit (Ping timeout: 276 seconds)
21:44:24  <MI6>joyent/node: isaacs v0.8 * bf16141 : npm: Upgrade to 1.2.27 - http://git.io/df6HxQ
21:44:58  <MI6>joyent/node: isaacs v0.10 * 4d13fcf : npm: Upgrade to 1.2.27 - http://git.io/xmUoqw
21:48:50  * papertigersjoined
21:51:14  <piscisaureus_>bnoordhuis: yes I fully agree
21:51:31  * papertigersquit (Client Quit)
21:51:31  <piscisaureus_>bnoordhuis: the question is whether we want to preserve the system error code and how
21:56:24  * papertigersjoined
21:58:17  <MI6>nodejs-v0.10: #234 UNSTABLE smartos-ia32 (2/590) linux-x64 (1/590) smartos-x64 (4/590) osx-x64 (1/590) http://jenkins.nodejs.org/job/nodejs-v0.10/234/
21:58:45  <piscisaureus_>bnoordhuis: you might want to remove the uv_err_s._sys_errno member and see what it breaks in node
22:00:04  <MI6>nodejs-v0.8: #45 FAILURE osx-x64 (1/472) linux-x64 (1/472) osx-ia32 (2/472) linux-ia32 (1/472) smartos-ia32 (1/472) http://jenkins.nodejs.org/job/nodejs-v0.8/45/
22:01:43  <tjfontaine>er
22:01:46  <tjfontaine>oh 0.8
22:03:41  <bnoordhuis>piscisaureus_: the only thing it would break is SetErrno()
22:03:50  <bnoordhuis>which i'm working on removing incidentally
22:03:55  <piscisaureus_>hah
22:03:55  <bnoordhuis>(for the multi-context thing)
22:04:09  <piscisaureus_>bnoordhuis: i'd like a solution for this because uv_err_t is terrible
22:04:16  <bnoordhuis>yeah, agree
22:04:31  <piscisaureus_>and also very inconsistent, e.g. some non-loop-bound functions either return uv_err_t or don't report the error code at all
22:04:40  <piscisaureus_>bnoordhuis: in any case uv_err_code should go
22:04:48  <piscisaureus_>the only thing which is maybe not great
22:05:00  <piscisaureus_>right now you can use this pattern in many cases
22:05:00  <MI6>nodejs-v0.10-windows: #63 UNSTABLE windows-x64 (8/590) windows-ia32 (7/590) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/63/
22:05:14  <bnoordhuis>like?
22:05:20  <bnoordhuis>or maybe 'what pattern'?
22:05:40  <piscisaureus_>if (uv_something(handle) < 0)
22:05:40  <piscisaureus_> handle_the_error(uv_last_error(handle->loop))
22:05:45  <piscisaureus_>^-- bnoordhuis
22:06:42  <bnoordhuis>piscisaureus_: you'd replace that with this -> err = uv_something(handle); if (err) handle_the_error(err);
22:07:01  <piscisaureus_>bnoordhuis: I know. it's just less terse :)
22:07:01  <bnoordhuis>where err is an int
22:07:16  <bnoordhuis>meh, that one line of code
22:07:23  <piscisaureus_>plus `int err` :)
22:07:34  <bnoordhuis>if you want terse, use assignment in the if statement
22:07:39  <piscisaureus_>plus negating enum values = ugly
22:07:49  * loladiroquit (Quit: loladiro)
22:07:53  <bnoordhuis>all the cool kids do it
22:08:05  <bnoordhuis>the fun thing is you can also use it for pointers
22:08:52  <bnoordhuis>you just cast the <0 error code to (void*) and it'll be an invalid pointer
22:09:24  <bnoordhuis>as a courtesy to your users, you provide an IS_ERR_PTR(ptr) macro
22:14:08  <piscisaureus_>bnoordhuis - you mean, unaligned
22:14:08  <piscisaureus_>?
22:14:25  <piscisaureus_>bnoordhuis: also note that a pointer does not necessarily fit in an int :)
22:14:44  <piscisaureus_>I think doing this would make the api too odd
22:17:23  <bnoordhuis>piscisaureus_: oh, i didn't mean for external api
22:17:32  <bnoordhuis>everything in uv.h either returns void or int
22:17:41  <bnoordhuis>with the exception of uv_buf_init
22:20:29  <bnoordhuis>i guess you're asking how the err pointer trick works on 32 bits platforms
22:20:59  <bnoordhuis>it abuses the fact that the upper 1 GB is always off-limits to user space
22:21:42  <bnoordhuis>the linux kernel goes a little further than that and restricts it to the last 4 kb of the 4 GB address space, i think
22:21:53  <bnoordhuis>don't quote me on that though :)
22:22:22  <bnoordhuis>okay, enough inane ramblings, i'm signing off for today
22:22:38  <tjfontaine>gnight ben!
22:22:44  <piscisaureus_>night bnoordhuis
22:22:56  <bnoordhuis>trevnorris: if i haven't at least partially reviewed your smalloc patch by tomorrow night, you have my permission to yell at me
22:23:15  <bnoordhuis>okay, sleep tight everyone
22:25:15  * dannycoatesquit (Remote host closed the connection)
22:27:49  * bnoordhuisquit (Ping timeout: 248 seconds)
22:30:33  * defunctzombiechanged nick to defunctzombie_zz
22:36:07  <MI6>joyent/node: Timothy J Fontaine v0.10 * f1b878c : build: add pkgsrc rule - http://git.io/xuj0cQ
22:36:36  * dsantiagoquit (*.net *.split)
22:36:36  * groundwa_quit (*.net *.split)
22:36:37  * skebcioquit (*.net *.split)
22:36:37  * hij1nxquit (*.net *.split)
22:40:33  * mbroadst_joined
22:40:34  * mbroadstquit (Ping timeout: 273 seconds)
22:42:22  * dannycoatesjoined
22:45:02  * AvianFlujoined
22:47:22  <MI6>nodejs-v0.10: #235 UNSTABLE smartos-ia32 (1/590) smartos-x64 (3/590) http://jenkins.nodejs.org/job/nodejs-v0.10/235/
22:48:16  * dsantiagojoined
22:48:16  * groundwa_joined
22:48:16  * skebciojoined
22:48:16  * hij1nxjoined
22:54:39  <MI6>nodejs-v0.10-windows: #64 UNSTABLE windows-x64 (8/590) windows-ia32 (7/590) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/64/
22:54:44  * kazuponjoined
22:55:53  * paddybyersquit (Ping timeout: 240 seconds)
22:59:59  * kazuponquit (Ping timeout: 260 seconds)
23:01:20  * st_lukejoined
23:01:31  * dsantiagoquit (*.net *.split)
23:01:31  * groundwa_quit (*.net *.split)
23:01:32  * skebcioquit (*.net *.split)
23:01:32  * hij1nxquit (*.net *.split)
23:03:00  * dominictarrjoined
23:04:51  * dsantiagojoined
23:04:51  * groundwa_joined
23:04:51  * skebciojoined
23:04:51  * hij1nxjoined
23:12:57  <trevnorris>can someone remind me what NODE_EXTERN is for? i see it only affects win, but that's about it.
23:14:29  <tjfontaine>it's just a little define to handle setting the visibility of functions so the linker won't strip them or mark them as unavailable for consumption
23:14:44  <tjfontaine>declspec is weird stuff
23:16:11  <tjfontaine>if things aren't marked as dllexport you won't be able to see/use them on windows
23:33:37  * bnoordhuisjoined
23:34:57  <TooTallNate>is `server.close()` synchronous?
23:35:03  <TooTallNate>like on an HTTP server…
23:37:45  <tjfontaine>in that it sync unbinds the listener, it seems so
23:38:07  * bnoordhuisquit (Ping timeout: 256 seconds)
23:40:58  <tjfontaine>TooTallNate: ok, so without looking into any of the uv_read_stop, uv_close -> uv__tcp_close -> uv__stream_close which then calls close() directly on the fd's
23:45:17  <TooTallNate>tjfontaine: really weird… i'm calling server.close(), yet for some reason i'm still seeing ~2 HTTP requests get through before the "close" callback happens
23:45:27  <TooTallNate>and *then* the process finally exits
23:46:48  * defunctzombie_zzchanged nick to defunctzombie
23:48:25  <TooTallNate>ok… i don't even get how this is *possible*…
23:49:34  <tjfontaine>TooTallNate: you're seeing (with tcpdump) two new requests come in after your .close?
23:50:04  <TooTallNate>tjfontaine: not on a TCP level, but I'm just console.log()ing the "request" event
23:50:08  <TooTallNate>when it happens
23:50:24  <tjfontaine>TooTallNate: I can see it being possible for there to be requests in the buffer, .close just means no new connects are accepted
23:52:20  <TooTallNate>tjfontaine: could be… i'll have to do some digging around
23:53:21  <tjfontaine>net.Socket.close though hits _handle.close which is seems sync to me
23:54:04  <tjfontaine>but it won't emit close until all outstanding requests have been drained