00:06:16  * sh1mmerquit (Quit: sh1mmer)
00:06:47  * sh1mmerjoined
00:15:48  * mikealquit (Quit: Leaving.)
00:22:24  * mikealjoined
00:24:57  * mikealquit (Client Quit)
00:45:29  <CIA-115>node: Ben Noordhuis master * r03cb903 / (src/node.cc src/node_isolate.cc):
00:45:29  <CIA-115>node: isolates: remove references to uv_thread_self()
00:45:29  <CIA-115>node: uv_thread_self() is difficult to implement on Windows in a way where the return
00:45:29  <CIA-115>node: value is valid across threads. It's already been removed from upstream libuv. - http://git.io/uXK6dA
00:50:08  * indexzerojoined
01:03:29  * mikealjoined
01:20:48  * mikealquit (Quit: Leaving.)
01:47:43  * travis-cijoined
01:47:44  <travis-ci>[travis-ci] joyent/node#240 (master - 03cb903 : Ben Noordhuis): The build is still failing.
01:47:44  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/8a98c2f...03cb903
01:47:44  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/528645
01:47:44  * travis-cipart
01:59:07  * brsonquit (Ping timeout: 245 seconds)
02:31:48  * mikealjoined
02:41:17  * bnoordhuisquit (Ping timeout: 240 seconds)
02:54:48  * mikealquit (Quit: Leaving.)
02:56:16  * mralephjoined
02:56:52  * mralephquit (Client Quit)
03:38:44  * sh1mmerquit (Quit: sh1mmer)
03:40:09  * sh1mmerjoined
04:14:02  * mikealjoined
04:22:24  * mikealquit (Quit: Leaving.)
04:31:00  * Registeredjoined
04:31:52  * Registeredpart
05:38:36  * indexzeroquit (Quit: indexzero)
05:49:40  * mikealjoined
06:04:02  * mralephjoined
06:12:51  * mikealquit (Quit: Leaving.)
06:13:37  * mikealjoined
06:18:33  * mikealquit (Quit: Leaving.)
06:33:58  * mikealjoined
06:33:59  * mralephquit (Quit: Leaving.)
06:39:42  * dshaw_quit (Quit: Leaving.)
06:41:00  * mikealquit (Quit: Leaving.)
06:41:29  * isaacsquit (Remote host closed the connection)
06:52:17  <indutny_sleeping>heya
06:52:20  <indutny_sleeping>good morning
06:52:24  * indutny_sleepingchanged nick to indutny
06:58:14  * paddybyersjoined
07:08:53  * mikealjoined
07:12:44  * kuebkjoined
07:13:03  * mikealquit (Client Quit)
07:28:31  * kuebk1joined
07:31:58  * kuebkquit (Ping timeout: 252 seconds)
07:41:34  * mikealjoined
07:54:37  * mikealquit (Quit: Leaving.)
08:03:55  * mikealjoined
08:16:30  * TooTallNatejoined
08:16:30  * TooTallNatequit (Remote host closed the connection)
08:32:51  * txdvjoined
08:37:15  * AvianFluquit (Ping timeout: 255 seconds)
08:44:41  * txdvquit (Ping timeout: 244 seconds)
08:49:38  * sh1mmerquit (Quit: sh1mmer)
08:50:52  * AvianFlujoined
09:25:15  * AvianFluquit (Quit: Leaving)
09:29:04  * AvianFlujoined
10:00:33  <mmalecki>indutny: morning!
10:00:39  <indutny>mmalecki: morning
10:04:21  * mmalecki_joined
10:07:55  * rphillipsquit (*.net *.split)
10:07:56  * mmaleckiquit (*.net *.split)
10:08:57  * rphillips_joined
10:10:16  * piscisaureus_joined
10:10:43  * mmalecki_quit (Quit: Reconnecting)
10:10:47  * mmaleckijoined
10:16:09  <indutny>piscisaureus_: can you please review this https://github.com/joyent/node/pull/2542 ?
10:16:46  <indutny>piscisaureus_: I've introduced straight-forward http headers limited at yesterday night, fixing bugs with koichik now
10:18:58  <piscisaureus_>indutny: why do you remove the parser.maxHeadersCount=1000 statement?
10:19:27  <indutny>piscisaureus_: mistake
10:19:31  <indutny>piscisaureus_: or not!
10:19:45  <indutny>piscisaureus_: it's initialized in every place where parsers.alloc() is called
10:20:24  <indutny>piscisaureus_: in previous version limit was preserved if parser was reused
10:23:22  <piscisaureus_>indutny: ah ok
10:23:36  <piscisaureus_>indutny: who reviewed the previous version to your patch?
10:23:42  <indutny>piscisaureus_: isaacs
10:25:56  <piscisaureus_>indutny: ok so it looks good to me but it has to pass the tests obviously
10:26:16  <piscisaureus_>indutny: I also don't like that if the user sets the wrong type for maxHeadersCount it is ignored
10:26:23  <piscisaureus_>indutny: you should make it throw
10:26:32  <piscisaureus_>indutny: last thing, what do we do if the headers linit
10:26:33  <piscisaureus_>er
10:26:46  <piscisaureus_>what do we do if the headers / querystring limit is exceeded?
10:27:16  <indutny>piscisaureus_: ignoring subsequent headers/k=v
10:28:54  <piscisaureus_>indutny: don't you think we should just close the http connection with 413 Request Entity Too Large
10:29:25  <indutny>piscisaureus_: I thought about that
10:29:29  <piscisaureus_>same for too long query string, we should return 414 Request-URI Too Long
10:29:39  <piscisaureus_>but I think we can't do that automatically
10:30:22  <indutny>piscisaureus_: we can't do last one, yeah
10:30:41  <indutny>piscisaureus_: I think we should merge current version of patch first
10:30:46  <indutny>piscisaureus_: then backport it to 0.6
10:31:02  <indutny>piscisaureus_: and only after that start closing connection
10:31:21  <piscisaureus_>431 Request Header Fields Too Large could also be appropriate :-)
10:31:59  <indutny>:)_
10:32:20  <piscisaureus_>indutny: about too many fields in queryString
10:32:32  <piscisaureus_>indutny: I don't like that we silently ignore issues with it
10:33:11  <piscisaureus_>indutny: because it makes issues caused by our limits very difficult to detect / debug
10:33:30  <piscisaureus_>indutny: although, throwing may also not be a good solution since it will often just bring the server down
10:33:40  <indutny>piscisaureus_: yeah, that's it
10:33:43  <piscisaureus_>and browsers usually don't support query strings that exceeds 2k
10:33:57  <indutny>piscisaureus_: I think that limits will be applied in very rare cases
10:34:09  <indutny>piscisaureus_: that's why I'm not throwing or closing connections now
10:34:15  <piscisaureus_>indutny: but rejecting the http connection on too much headers is something we can do safely I think
10:34:18  <indutny>piscisaureus_: but will close in 0.7.0
10:34:24  <indutny>piscisaureus_: not for 0.6.x
10:34:32  <indutny>piscisaureus_: it'll break backwards compatibility
10:34:32  <piscisaureus_>indutny: well... I am not sure about that
10:34:40  <piscisaureus_>we can discuss with the other guys
10:34:45  <indutny>piscisaureus_: yeah
10:34:54  <indutny>piscisaureus_: can I pull my changes to master?
10:34:59  <piscisaureus_>indutny: maybe in case of querystring exceeds you should just return undefined
10:35:03  <piscisaureus_>or {}
10:35:09  <indutny>piscisaureus_: but why?
10:35:11  <piscisaureus_>indutny: yeah, if it passes all tests
10:35:24  <piscisaureus_>indutny: makes it more obvious that some limit was exceeded
10:35:30  <indutny>piscisaureus_: [03:37|% 100|+ 360|- 7]
10:35:36  <indutny>piscisaureus_: as usual on osx
10:35:41  <piscisaureus_>indutny: any *new* failures?
10:35:44  <indutny>piscisaureus_: nope
10:35:50  <piscisaureus_>ok
10:35:55  <piscisaureus_>then it's fine
10:36:00  <piscisaureus_>lets see what travis says :_)
10:36:05  <indutny>haha
10:36:06  <indutny>:)
10:36:07  <indutny>kk
10:37:34  <CIA-115>node: Fedor Indutny master * rf1678bf / (lib/http.js test/simple/test-http-max-headers-count.js):
10:37:35  <CIA-115>node: http: do not accept headers if limit is exceeded
10:37:35  <CIA-115>node: * fix limiting when parser was reused
10:37:35  <CIA-115>node: * fix maxHeadersCount = 0 is ignored ( credit to @koichik )
10:37:35  <CIA-115>node: * add test-http-max-headers-count.js ( credit to @koichik ) - http://git.io/I2uVHw
10:37:35  <CIA-115>node: Fedor Indutny master * r23de339 / (lib/querystring.js test/simple/test-querystring.js): querystring: fix maxKeys = 0 is ignored - http://git.io/TFpFgw
10:49:05  * travis-cijoined
10:49:05  <travis-ci>[travis-ci] joyent/node#241 (master - 23de339 : Fedor Indutny): The build is still failing.
10:49:05  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/03cb903...23de339
10:49:05  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/530088
10:49:05  * travis-cipart
11:08:21  <indutny>piscisaureus_: btw, have you seen this https://github.com/joyent/libuv/pull/292 ?
11:11:46  <piscisaureus_>indutny: I have and I have no problem with removing the eio_set_max_poll_reqs limit
11:13:23  <indutny>piscisaureus_: haha, I mean do you have any ideas how to change ASSERTion in that pathch/
11:13:29  <indutny>s/pathch/patch
11:14:07  <indutny>piscisaureus_: bnoordhuis isn't fine with current max_delta check
11:14:45  <piscisaureus_>indutny: i will take a look
11:15:17  <piscisaureus_>indutny: but you should remember, that starting >1 operation from a callback *always* causes leaks if done indiscrimitately
11:15:18  <piscisaureus_>e.g.
11:15:45  <piscisaureus_>function f() { process.nextTick(f); process.nextTick(f); }; f();
11:15:49  <piscisaureus_>*boom*
11:16:02  <indutny>piscisaureus_: nope, if you remove eio limit it'll equal almost every time
11:16:17  <indutny>that's not just starting > 1 operation from callback
11:16:24  <piscisaureus_>indutny: yes it is
11:16:27  <indutny>I'm not implementing callback bomb
11:16:40  <indutny>I'm doing different actions
11:16:55  <indutny>like function f() { process.nextTick(g); process.nextTick(f); }; f();
11:17:08  <indutny>and that'll work if I'll call g this way multiple times
11:17:21  <indutny>but if I use eio for queuing callbacks - it'll fail
11:18:21  <piscisaureus_>indutny: well it still highly depends on the semantics of the idle callback
11:18:45  <piscisaureus_>indutny: I mean, if you do this on windows xp it will also blow up (and it does not use eio)
11:19:06  <piscisaureus_>indutny: same in a lot of other situations
11:19:07  <indutny>piscisaureus_: but why?
11:19:23  <indutny>piscisaureus_: callbacks should be executed in order of addition if they fires simultaneosly
11:19:32  <piscisaureus_>indutny: no
11:19:36  <piscisaureus_>indutny: that's not how it works
11:19:52  <piscisaureus_>this is how ev/uv works
11:20:22  <indutny>piscisaureus_: oooh
11:20:56  <indutny>piscisaureus_: even if that can be fixed only for unixes, lets do it anyway
11:21:53  <piscisaureus_>indutny:
11:21:54  <piscisaureus_>while (refs > 0) {
11:21:55  <piscisaureus_> call_prepare_callbacks();
11:21:55  <piscisaureus_> get_new_events_from_the_system() // Some backends report only 1 event at a time
11:21:55  <piscisaureus_> call_check_callbacks();
11:21:55  <piscisaureus_> call_timers();
11:21:55  <piscisaureus_> dispatch_event_callbacks();
11:21:55  <piscisaureus_> call_idle_callbacks();
11:21:56  <piscisaureus_>}
11:22:17  <indutny>piscisaureus_: ok, that's another case-
11:22:37  <indutny>piscisaureus_: I don't care about windows, and behaviour won't chnage for it
11:22:41  <indutny>:)
11:22:52  <indutny>so we will leave together untouched
11:23:00  <piscisaureus_>^-- indutny so if you initiate more callbacks from a timer/idle/check/prepare than the system can report at once, then it will always blow up
11:23:11  <piscisaureus_>the trick is to not do that :-)
11:23:13  <indutny>piscisaureus_: yes, I understand
11:23:28  <indutny>piscisaureus_: :)
11:23:38  <piscisaureus_>eio is kind of an edge case because it has a somewhat convoluted flow that involves an uv_async
11:23:59  <piscisaureus_>but you can just regard it as a backend with a limit of 10 events per iteration (if the limit is there)
11:24:00  <indutny>piscisaureus_: it's involved with uv_work_t
11:24:11  <indutny>piscisaureus_: I don't want to do it! :)
11:24:18  <indutny>piscisaureus_: how should I handle that in case?
11:24:26  <indutny>piscisaureus_: limit incoming connections? :)
11:24:31  <piscisaureus_>indutny: uv_work_t encapsulates eio_custom which encapsulates uv_async_t
11:24:37  <indutny>piscisaureus_: ohhh
11:24:38  <indutny>right
11:24:40  <piscisaureus_>indutny: no don't limit incoming connections
11:25:02  <piscisaureus_>indutny: incoming connections are self-limited in a sense
11:25:23  <piscisaureus_>it can only really blow up if the server is bombed with an infinite flow of incoming connections
11:25:40  <indutny>piscisaureus_: yeah, that's how I'm benchmarking
11:25:40  <indutny>:D
11:25:55  <indutny>it's still possible
11:26:24  <indutny>if we would take in account, that server is spending some time processing request, before releasing control to event-loop
11:26:39  <indutny>so endless request-after-request is possible in real app
11:27:17  <indutny>whoa, just merged v8 patch into my backport CL!
11:27:27  <indutny>I hope it'll land into 3.6 soon
11:27:29  <piscisaureus_>indutny: yes it is. we call that a DOS attack :-)
11:27:36  <indutny>piscisaureus_: :)
11:27:50  <indutny>piscisaureus_: my patch is fixing some cases of it
11:27:55  <indutny>piscisaureus_: actually node-spdy will survive it
11:28:06  <piscisaureus_>indutny: well that is fine then
11:28:46  <piscisaureus_>indutny: the best solution would be to just throttle connections if the server is very busy
11:28:53  <piscisaureus_>don't accept more
11:29:37  <indutny>piscisaureus_: yeah
11:29:54  <indutny>piscisaureus_: that's what should happen if server will hit maxConnections limit, I suppose
11:30:14  <indutny>have we removed it?
11:30:15  <piscisaureus_>indutny: do we have a maxConnections limit atm?
11:30:20  <piscisaureus_>*shrug*
11:30:24  <indutny>I thought we had it sometime agou
11:30:45  <piscisaureus_>indutny: the maxConnections limit is also useful because it can help avoid EMFILE/ENFILE issues
11:30:58  <indutny>piscisaureus_: yeeah
11:31:16  <piscisaureus_>indutny: but if all those connections are idle and do not require processing by the server then having a lot of open connections is fine I suppse
11:31:19  <indutny>piscisaureus_: but it's not good for various realtime apps, where're a lot of connected clients to one server
11:31:28  <indutny>piscisaureus_: that's it ^
11:31:41  <indutny>piscisaureus_: so we need something like event-loop throttling
11:31:54  <piscisaureus_>indutny: yeah
11:32:05  <piscisaureus_>indutny: something that we could put into domains
11:32:25  <indutny>piscisaureus_: yeah
11:32:44  <piscisaureus_>indutny: in general the best solution is to finish one "job" completely instead of processing multiple at the same time
11:32:57  <piscisaureus_>because that allows us to release memory much more aggressively
11:33:43  <piscisaureus_>but this is something that's not trivial to do automatically
11:33:51  <piscisaureus_>if possible at all
11:34:39  <indutny>piscisaureus_: I think we should sort out things by priority if we're hitting some specified queue limit in uv
11:34:46  <indutny>priority = ctime
11:35:06  <indutny>and as I understand that should already happen now
11:35:11  <piscisaureus_>no
11:35:18  <indutny>on unix
11:35:19  <indutny>?
11:35:23  <piscisaureus_>we make no guarantees wrt to the order in which callbacks are processes
11:35:52  <piscisaureus_>if it accidentally happends then that is, well, accidental :-)
11:36:24  <indutny>:)
11:37:13  <piscisaureus_>indutny: so if you want a hard think about this issue, be my guest. Let me just say that eio_max_poll_reqs is not the cause of the issue nor the answer to it
11:38:25  <indutny>piscisaureus_: disagreed, it's cause of issue that I was experiencing
11:38:41  <indutny>but agreed with - it's not solution to that problem in general
11:40:15  <indutny>piscisaureus_: yay!
11:40:16  <indutny>http://codereview.chromium.org/9190001/
11:41:36  <piscisaureus_>indutny: I don't see committed status
11:42:32  <indutny>piscisaureus_: hehe, me too
11:42:36  <mmalecki>just curious, will node move to [email protected] ?
11:42:48  <piscisaureus_>mmalecki: v0.6 will not
11:42:55  <piscisaureus_>mmalecki: master tracks latest v8
11:42:56  <indutny>mmalecki: 0.7 is on it
11:43:18  <mmalecki>oh, cool, something made me think we're still on 3.6
11:43:38  <piscisaureus_>mmalecki: node 0.6 will remain on 3.6
11:43:48  <mmalecki>piscisaureus_: understandable
11:43:57  <mmalecki>but I don't really care about 0.6 :)
11:44:29  <mmalecki>(I'm the hipster guy who uses master as global node)
11:45:18  <indutny>:)
11:45:22  <indutny>I've ten or so installs
11:45:37  <mmalecki>I mean, who doesn't?
11:46:01  <indutny>I'm using 0.6.x for all nodejitsu work
11:46:05  <mmalecki>anyways, I have to think of a way to finally get rid of daemon.node
11:46:07  <indutny>and 0.7.x for my stuff
11:46:27  <mmalecki>I use 0.7.x for nodejitsu as well :)
11:46:38  <mmalecki>so that I don't have to do this crazy sprint again
11:48:17  <indutny>mmalecki: hehe, nice
11:48:49  <mmalecki>of course it's like, half of the stuff gets borked because of daemon and I have to rebuild and blah blah blah
11:50:23  <mmalecki>https://github.com/joyent/node/blob/master/lib/util.js#L524-536
11:50:37  <mmalecki>I think we should always output a warning when it's in NODE_DEBUG
11:50:44  <mmalecki>opinions? going to pull request it
11:52:10  <indutny>mmalecki: do you mean every time?
11:52:21  <mmalecki>indutny: yeah
11:52:32  <indutny>mmalecki: is it useful?
11:52:58  <indutny>mmalecki: it may be called 1000 times for one error, and one time for another
11:53:07  <indutny>mmalecki: you will miss latter one in case
11:53:15  <mmalecki>indutny: well, yeah, when running in debug mode, I want to see all the warnings
11:53:24  <indutny>you'll see them
11:53:28  <indutny>but w/o repetitions
11:54:04  <mmalecki>indutny: let's say two modules use sys, when I run my app, I'll see only first warning
11:54:13  <indutny>mmalecki: got it
11:54:15  <indutny>mmalecki: yeah, pen PR
11:54:18  <indutny>s/pen/open
11:54:24  <mmalecki>k, I'll pen it :)
11:55:58  <mmalecki>btw, I want to start contributing to libuv, so if there's anything for C programmer with medium skills, ping me
11:59:24  <piscisaureus_>mmalecki indutny: nodejitsu wants you to do node work?
11:59:36  <piscisaureus_>or are they out of projects?
11:59:40  <piscisaureus_>:-p
11:59:43  <indutny>:P
12:00:21  <indutny>I've my own passion to do core work, and it's supplied by nodejitsu
12:01:48  <mmalecki>piscisaureus_: well, I mean, I don't even know. I do some core work, nobody said it's wrong or something and I still get paid, sooo :)
12:02:08  <mmalecki>piscisaureus_: indutny is our full-time core hacker, afaik :)
12:02:38  <piscisaureus_>ah ok
12:02:40  <indutny>:)
12:02:44  <indutny>that's it
12:02:48  <mmalecki>piscisaureus_: but I still do our projects mostly, so it's all good
12:03:03  <piscisaureus_>mmalecki: well, it's fine with me
12:03:05  <indutny>mmalecki: I'm doing some non-core work too
12:03:16  <indutny>;)
12:03:20  <mmalecki>(and then I find core issues, indexzero tells people to +1 and we accidentally a shitstorm)
12:03:52  <mmalecki>indutny: oh, yeah :). still, you're the core guy :D
12:04:21  <piscisaureus_>mmalecki: there's enough to do -> https://github.com/joyent/libuv/issues
12:04:23  <piscisaureus_>:-)
12:04:54  <mmalecki>piscisaureus_: well, OK!
12:05:11  <mmalecki>(that's how I lost 1 hour of sleep per day)
12:06:51  <mmalecki>return '\033[' + colors[style][0] + 'm' + str + <- not sure why jshint says "error| Bad escapement." here
12:07:10  <mmalecki>btw, vim setup with jshinting owns
12:08:09  <piscisaureus_>mmalecki: maybe jshint doesn't like \0
12:08:15  <piscisaureus_>try something with \x
12:08:40  <piscisaureus_>\x1b I think
12:08:43  <mmalecki>oh, right, \0 is disallowed in strict mode
12:47:43  <mmalecki>oh, damn, I derped
12:47:48  <mmalecki>it won't work for sys module anyway
12:48:00  <mmalecki>but it does the Right Thing (tm)
12:56:01  * indutny_joined
12:56:57  * indutnyquit (Ping timeout: 240 seconds)
13:04:43  <mmalecki>indutny_: piscisaureus_ https://github.com/joyent/node/pull/2543
13:08:48  <indutny_>mmalecki: can you refactor it to correct js style?
13:08:55  <indutny_>mmalecki: block braces to ifs
13:09:07  <indutny_>and everything
13:09:12  <indutny_>otherwise lgtm
13:11:33  <mmalecki>indutny_: force-pushed
13:13:57  <indutny_>what's about new line at the end of the patch?
13:14:31  <mmalecki>indutny_: it's a good practice to have empty lines at EOF, you avoid this 'No newline at the end of the file' by git
13:14:41  <mmalecki>indutny_: if you don't like it, I can remove it
13:14:49  <mmalecki>it's just my habit to add them
13:14:58  <indutny_>mmalecki: that's not newline before EOF
13:15:06  <indutny_>mmalecki: that's just additional newline
13:15:32  <indutny_>mmalecki: are you using vim?
13:15:36  <mmalecki>indutny_: oh? yeah, I do
13:16:01  <indutny_>mmalecki: then you don't need to add empty line, vim will do it on save time
13:16:41  <mmalecki>oh, cool, git push -f once again
13:16:41  <mmalecki>sorry
13:17:35  <mmalecki>done
13:17:52  <indutny_>cool
13:20:41  <CIA-115>node: Maciej Małecki master * rdf62005 / lib/util.js : util: always display a warning for module in debug mode - http://git.io/YjeEDw
13:20:56  <mmalecki>indutny_: thanks
13:21:22  <indutny_>mmalecki: no, thank you!
13:21:54  <mmalecki>:)
13:24:32  * bnoordhuisjoined
13:26:10  <indutny_>bnoordhuis: haya!
13:26:17  <bnoordhuis>indutny_: hey
13:27:44  <indutny_>bnoordhuis: lets pull that uv patch in both uv and node
13:29:00  <indutny_>bnoordhuis: I don't think there're another way to check it
13:32:12  <bnoordhuis>indutny_: can you revert df62005?
13:32:14  * travis-cijoined
13:32:14  <travis-ci>[travis-ci] joyent/node#242 (master - df62005 : Maciej Małecki): The build is still failing.
13:32:14  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/23de339...df62005
13:32:14  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/530562
13:32:14  * travis-cipart
13:33:13  <indutny_>bnoordhuis: of course, why?
13:33:36  <bnoordhuis>_deprecationWarning() was written to have the lowest possible performance impact, now it's doing a non-static regex on every call
13:34:16  <indutny_>bnoordhuis: oh... we should add comment to it :)
13:34:29  <mmalecki>bnoordhuis: hm, why should it have a low performance impact?
13:34:29  <indutny_>bnoordhuis: that wasn't clear
13:34:31  <indutny_>mmalecki: sorry
13:34:35  <mmalecki>indutny_: np
13:35:00  <mmalecki>(also, it should do a indexOf check, not regex)
13:35:01  <CIA-115>node: Fedor Indutny master * r03e689f / lib/util.js :
13:35:01  <CIA-115>node: Revert "util: always display a warning for module in debug mode"
13:35:01  <CIA-115>node: This reverts commit df62005ece4bb0be0d5af645fd9093b1506ce63d. - http://git.io/e8URaw
13:35:16  <bnoordhuis>mmalecki: because it might be called often
13:35:27  * bnoordhuisis off to do the groceries
13:35:54  <mmalecki>bnoordhuis: then make it use indexOf, regexp isn't really that fast
13:36:01  <mmalecki>but whatever
13:36:49  <piscisaureus_>process.env.NODE_DEBUG is also pretty slow itself
13:36:53  <piscisaureus_>you should at least cache it
13:37:15  <piscisaureus_>because NODE_DEBUG wraps a c++ accessor and a syscall
13:37:38  <mmalecki>(or stop prematurely optimizing)
13:38:07  <mmalecki>I can't see where is it called often
13:38:26  <indutny_>it's actually called only from os.getNetworkInterfaces
13:38:30  <indutny_>and btw
13:38:37  <mmalecki>and sys
13:38:43  <mmalecki>but it's a one-time call
13:38:58  <indutny_>if user is using deprecated functionality - he should expect performance impact
13:39:20  <indutny_>but I agreed with bnoordhuis anyway
13:39:33  <indutny_>just hadn't knew how it was designed to work
13:42:01  <indutny_>bnoordhuis: please ping me when you'll return from groceries
13:42:15  <indutny_>I want to discuss merging header limitation into v0.6
13:42:31  <indutny_>piscisaureus_: do we need someone from SF guys to discuss this?
13:43:21  <piscisaureus_>indutny_: send and email to the core contributors stating your questions
13:44:07  <indutny_>piscisaureus_: yeah, sounds good
13:45:25  <bnoordhuis>back
13:45:57  <bnoordhuis>re _deprecationWarning(), it's supposed to print a one-time friendly deprecation reminder
13:46:25  <mmalecki>then why should it be super-fast?
13:46:25  <bnoordhuis>indutny_: land that libuv patch if you think it's good
13:46:28  * travis-cijoined
13:46:29  <travis-ci>[travis-ci] joyent/node#243 (master - 03e689f : Fedor Indutny): The build is still failing.
13:46:29  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/df62005...03e689f
13:46:29  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/530583
13:46:29  * travis-cipart
13:46:35  <indutny_>bnoordhuis: can I?
13:46:55  <bnoordhuis>indutny_: that magic number makes me a little uneasy... but sure
13:47:12  <bnoordhuis>you know how upgrading libuv in node works?
13:47:32  <indutny_>bnoordhuis: prob not
13:47:48  <indutny_>and I don't have access to libuv
13:47:55  <indutny_>I mean push access, of course
13:48:02  <bnoordhuis>oh, right - i'll land it for you
13:48:29  <bnoordhuis>re upgrading libuv: (rm -rf deps/uv/ && (cd ../libuv && git archive --format=tar --prefix=deps/uv/ HEAD) | tar x) && git add deps/uv/ && git commit deps/uv/ -m "uv: upgrade to xxxxxxx"
13:49:27  <indutny_>ok, cool!
13:49:40  <indutny_>piscisaureus_: bnoordhuis : sent a email
13:49:41  <mmalecki>bnoordhuis: but really, why does it matter to have super-fast _deprecationWarning?
13:49:57  <mmalecki>(not like it's super-important, just curious)
13:50:02  <bnoordhuis>mmalecki: i already told you
13:50:18  <CIA-115>libuv: Fedor Indutny master * re7758e1 / (4 files in 3 dirs):
13:50:18  <CIA-115>libuv: unix: remove eio_set_max_poll_reqs
13:50:18  <CIA-115>libuv: * added test - http://git.io/7SU0OQ
13:50:34  <mmalecki>bnoordhuis: it's called in 2 places
13:50:46  <bnoordhuis>mmalecki: at the moment
13:51:48  <mmalecki>bnoordhuis: well, it's a deprecation warning. deprecated things *can* be slow, ihmo
13:52:00  * travis-cijoined
13:52:00  <travis-ci>[travis-ci] joyent/libuv#32 (master - e7758e1 : Fedor Indutny): The build is still failing.
13:52:00  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/2651273...e7758e1
13:52:00  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/530650
13:52:00  * travis-cipart
13:52:25  <indutny_>IHMO!: )
13:52:36  <bnoordhuis>piscisaureus_: what's your opinion on those refcount tests and refcounting in general?
13:52:58  <mmalecki>yeah, well, whatever
13:53:01  <piscisaureus_>bnoordhuis: refcounting in general is unavoidable
13:53:16  <piscisaureus_>bnoordhuis: the refcount tests look sensible to me but windows has to be fixed
13:53:42  <piscisaureus_>bnoordhuis: basically you're saying that any (non-internal) request objects ref/deref the event loop
13:53:53  <bnoordhuis>piscisaureus_: or unix... i think the 'ref loop on connect or send' is unintentional
13:54:03  <piscisaureus_>bnoordhuis: it makes sense though
13:54:23  <bnoordhuis>piscisaureus_: yeah, i agree
13:54:40  <piscisaureus_>bnoordhuis: we could also go for even more libev-y semantics
13:55:02  <piscisaureus_>bnoordhuis: e.g. non-reading streams also don't ref the event loop
13:55:21  <bnoordhuis>should we ref each write request or just the first request and unref when the write queue empties?
13:55:35  <piscisaureus_>bnoordhuis: and timer/idle/prepare/check/async only refs when active
13:55:48  <piscisaureus_>but I am not sure if that's what we want
13:56:07  <bnoordhuis>why not?
13:56:28  <piscisaureus_>bnoordhuis: it's much less obvious
13:56:53  * AndreasMadsenjoined
13:57:12  <piscisaureus_>bnoordhuis: but yeah, maybe
13:57:30  <bnoordhuis>piscisaureus_: okay, let's start with connect and write requests :)
13:57:39  <piscisaureus_>bnoordhuis: maybe we should ask other libuv users ...
13:58:01  <piscisaureus_>bnoordhuis: I think for node it would actually be much more convenient to do this
13:58:02  <bnoordhuis>they're all asleep :/
13:58:47  <piscisaureus_>bnoordhuis: we should also consider if this doesn't break our plan to make uv_ref operate on a handle
13:59:17  <piscisaureus_>bnoordhuis: tbh, I would like to add ref/unref support to node at some point
13:59:39  <bnoordhuis>piscisaureus_: you mean expose to js land?
14:00:07  <piscisaureus_>bnoordhuis: so people can do: `var logger = net.createConnection(80, 'log-server'); logger.unref();`
14:00:56  <bnoordhuis>i suppose that makes sense
14:01:04  <piscisaureus_>bnoordhuis: or, if refs apply only to active handles then `logger.pause()` would do the same thing
14:01:19  <piscisaureus_>e.g. if you have a write-only stream it only refs the event loop if a write is pending
14:02:44  <bnoordhuis>uv-unix will have to implement its own reference counting scheme though
14:02:53  <bnoordhuis>it's just too easy to fuck it up with libev
14:03:01  <piscisaureus_>bnoordhuis: yes
14:03:05  <piscisaureus_>bnoordhuis: go for it
14:03:09  <piscisaureus_>bnoordhuis: write tests :-)
14:03:19  <piscisaureus_>bnoordhuis: tests are very good for defining an api :-)
14:03:48  <bnoordhuis>that's what the new refcount tests are for, they're part of the plan :)
14:22:20  <indutny_>finishing testing uv + node
14:22:27  <indutny_>going to push in a minute
14:28:08  <CIA-115>node: Fedor Indutny master * rf0c629a / (14 files in 6 dirs): uv: upgrade to e7758e1 - http://git.io/OV5P3w
14:40:43  * travis-cijoined
14:40:43  <travis-ci>[travis-ci] joyent/node#244 (master - f0c629a : Fedor Indutny): The build is still failing.
14:40:43  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/03e689f...f0c629a
14:40:43  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/530854
14:40:43  * travis-cipart
14:43:52  * rphillips_changed nick to rphillips
14:44:35  <kuebk1>guys how using node-waf can I link static libs which are in .la files?
14:45:08  <kuebk1>or .a
15:08:16  <paddybyers>bnoordhuis: question: has anyone ever proposed exposing a WeakReference or WeakHashMap primitive?
15:15:03  <indutny_>paddybyers: do you mean MakeWeak
15:15:12  <indutny_>?
15:15:44  <paddybyers>Yes; I mean a way to reference an object or a collection, where the reference does not prevent the object from being garbage collected in the case that memory needs to be reclaimed
15:15:49  <indutny_>if so - TooTallNate created a module https://github.com/TooTallNate/node-weak
15:16:05  <piscisaureus_>paddybyers: everything you can think of, no matter how filthy or profane, has been been proposed by someone at some point in time.
15:16:14  <indutny_>I even used it in https://github.com/indutny/deadbolt
15:16:19  <paddybyers>:)
15:16:29  <indutny_>not directly
15:16:44  <indutny_>but pulled some C++ parts of it
15:17:07  <piscisaureus_>MakeWeak should never be exposed
15:17:13  <indutny_>paddybyers: WeakHashMap can be exposed via v8 flag: --harmony-collections
15:17:16  <piscisaureus_>WeakHashMaps have their purpose though
15:17:29  <piscisaureus_>ah so it is already there :-)
15:17:39  <indutny_>piscisaureus_: :)
15:17:50  <indutny_>piscisaureus_: there're a lot of stuff here
15:18:00  <indutny_>./node --v8-options
15:18:09  <piscisaureus_>yes, too much stuff
15:18:30  <paddybyers>I see, thanks, I'll have a look
15:20:31  <indutny_>piscisaureus_: I especially like --hydrogen-filter and --always-opt, thanks to mraleph for pointing me on this
15:20:48  <piscisaureus_>indutny_: what does hydrogen-filter to?
15:21:23  <indutny_>piscisaureus_: --hydrogen-filter=fn and only function with name `fn` will be optimized by v8
15:21:23  <kohai>piscisaureus_ has -1 beer
15:21:28  <indutny_>piscisaureus_++
15:21:29  <kohai>piscisaureus_ has 0 beer
15:21:29  <indutny_>:D
15:21:33  <piscisaureus_>not again :-)
15:21:38  <piscisaureus_>I keep losing my beers
15:21:46  <piscisaureus_>kohai--
15:21:47  <kohai>kohai has 9 beers
15:21:49  * indutny_changed nick to indutny
15:21:53  <indutny>piscisaureus_:++
15:21:53  <kohai>piscisaureus_ has 1 beer
15:21:57  <piscisaureus_>kohai -= 10
15:22:00  <indutny>cheeting all the way :)
15:22:06  <indutny>s/cheet/cheat
15:22:41  <piscisaureus_>indutny: so what is the difference between hydrogen and crankshaft?
15:23:18  <indutny>piscisaureus_: crankshaft is marketking name AFAIK :)
15:23:28  <piscisaureus_>indutny: yes that's what I thought
15:23:42  <piscisaureus_>indutny: but they have an option --crankshaft and an option --use-hydrogen
15:23:46  <piscisaureus_>isn't that funky
15:24:11  <indutny>piscisaureus_: I don't know all the details
15:24:32  <indutny>piscisaureus_: http://webcache.googleusercontent.com/search?q=cache:MMYC44w2600J:wingolog.org/archives/2011/08/02/a-closer-look-at-crankshaft-v8s-optimizing-compiler+&cd=1&hl=en&ct=clnk
15:24:57  <indutny>As my readers might recall, Crankshaft is the marketing name of V8's optimizing compiler. It complements the "full" compiler by optimizing hot functions, while ignoring uncommon cases. It translates the JavaScript abstract syntax tree to a high-level static single-assignment (SSA) representation called Hydrogen, and tries to optimize that Hydrogen graph. Then the Hydrogen is translated to the machine-specific Lithium low-level language, w
15:25:17  <indutny>hydrogen is only part of it
15:25:28  <indutny>it generates DFG
15:25:41  <indutny>then DFG gets optimized
15:25:46  <indutny>and then compiled with lithium
15:25:53  <indutny>whole process is crankshaft
15:26:00  <piscisaureus_>ah kk thanx
15:26:04  <piscisaureus_>reading that article
15:26:37  <indutny>piscisaureus_: wingolog.org is nice blog, but server is down now for some reason
15:26:38  <indutny>:(
15:26:46  <indutny>brb
15:31:22  * kuebk1part
16:06:12  <indutny>piscisaureus_: I think we should install gyp_addon into node's bin
16:06:14  <indutny>piscisaureus_: right?
16:06:31  <piscisaureus_>indutny: wat?
16:06:53  <indutny>piscisaureus_: tools/gyp_addon
16:07:54  <piscisaureus_>indutny: *shrug* I don't know
16:08:01  <indutny>a way to build C++ extension for node :)
16:08:04  <indutny>ok I'll try it locally
16:08:05  <piscisaureus_>indutny: it seems that would requiring a whole bunch of other crap
16:08:16  <piscisaureus_>indutny: like, gyp etc
16:08:30  <indutny>ooh
16:08:43  <mmalecki>indutny: ++
16:08:43  <kohai>indutny has 4 beers
16:08:57  <piscisaureus_>kohai--
16:08:57  <kohai>kohai has 8 beers
16:09:00  <mmalecki>indutny: I know ryah has different plans tho
16:09:09  <mmalecki>piscisaureus_: y u no like kohai?
16:09:19  <indutny>kohai--
16:09:19  <kohai>kohai has 7 beers
16:09:20  <indutny>:)
16:09:24  <indutny>mmalecki: --flag
16:09:24  <kohai>mmalecki has 44 beers
16:09:28  <piscisaureus_>because it keeps stealing my beers
16:09:32  <indutny>mmalecki: understand now?
16:09:35  <piscisaureus_>kohai--
16:09:36  <kohai>kohai has 6 beers
16:09:48  <mmalecki>oh well, we can change it
16:09:50  <indutny>mmalecki: what plans do ryah have?
16:09:54  <piscisaureus_>mmalecki: --^
16:09:55  <kohai>mmalecki has 43 beers
16:10:12  <mmalecki>indutny: ryah wants users not to compile things
16:10:20  <mmalecki>so, binaries would be in npm
16:10:24  <indutny>mmalecki: yep, that's understood
16:10:28  <mmalecki>which isn't a good way ihmo
16:10:34  <einaros>that'll be fun
16:10:51  <indutny>mmalecki: but I still need something like node-waf to build it on developer's side
16:10:51  * einaroswill make millions on a cross-compile-node-addons web service
16:11:02  <bnoordhuis>i can only see that working for windows and maybe os x...
16:11:38  <mmalecki>bnoordhuis: ++
16:11:39  <kohai>bnoordhuis has 3 beers
16:12:27  <indutny>bnoordhuis: why no
16:12:30  <indutny>why not?
16:12:39  <mmalecki>indutny: then you're an advanced user and you need whole node source tree :/
16:13:42  <bnoordhuis>indutny: there's just too much difference between linux distros and archs
16:13:52  <indutny>bnoordhuis: aah, yeah
16:13:52  <bnoordhuis>maybe if you link everything statically, including glibc
16:14:00  <indutny>bnoordhuis: that's what I thought of
16:14:20  <indutny>bnoordhuis: many opensource projects are distributing .so files for each platform
16:14:32  <indutny>anyway
16:14:44  <indutny>trying to add native parts to node-spdy
16:14:58  <indutny>and met brick wall
16:15:01  <bnoordhuis>but i wager that they don't have a cross-compile farm for add-ons
16:15:02  <indutny>brickwall: hi!
16:15:45  <indutny>bnoordhuis: yeah, that's understood too
16:17:58  <mmalecki>setting up a farm is easy, it's just unpleasant
16:18:17  <indutny>mmalecki: we can provide it at nodejitsu ;)
16:18:28  <indutny>sounds like a profitable business
16:19:06  <mmalecki>indutny: haha, yeah :). it's all about provisioning vms with different systems
16:21:31  <mmalecki>(actually, if ryah wants it to happen, he should provide a farm)
16:29:25  <indutny>bnoordhuis: if dlopen returns NULL - what does it mean?
16:30:15  <bnoordhuis>indutny: that you should read the man page :)
16:30:31  <indutny>bnoordhuis: yeah, I already found
16:30:46  <bnoordhuis>call dlerror() and it'll tell you what went wrong
16:31:03  <indutny>one sec
16:34:29  <bnoordhuis>indutny: pro tip: but a breakpoint on the line after dlopen(), then `print dlerror()`
16:34:43  <bnoordhuis>or just add a printf statement :)
16:36:25  <indutny>bnoordhuis: already did
16:36:34  <indutny>bnoordhuis: just thought that may be a common case
16:36:41  <indutny>bnoordhuis: and you already know what happens
16:36:55  <indutny>bnoordhuis: debugging v8's jit code helps understanding how things works ;)
16:38:39  * Raynosquit (Remote host closed the connection)
16:38:46  <indutny>bnoordhuis: so that was not dlopen problem if you're curious
16:38:56  <indutny>bnoordhuis: I used incorrect `entry point name`
16:39:14  <bnoordhuis>indutny: one prefixed with an underscore?
16:40:34  <indutny>bnoordhuis: nope I just used extern init, instead of generic (my file is named generic.cc )
16:41:47  <bnoordhuis>indutny: i mean, is the entry point prefixed with an underscore when you `nm module.node | grep init`?
16:41:52  <bnoordhuis>it's a common error
16:42:18  <indutny>ah
16:42:20  <indutny>no
16:42:41  <indutny>oh wait
16:42:42  <indutny>yes
16:42:45  <indutny>_generic_node
16:42:47  <indutny>but it works fine
16:43:20  <indutny>btw, as I understand there're no common way to use your own Persistent handles withing node_isolate vars?
16:43:23  <indutny>bnoordhuis: ^
16:43:32  <indutny>you should consider adding that API
16:44:32  <indutny>like adding second argument to module initializer
16:44:52  <indutny>oh, that won't work
16:44:58  <bnoordhuis>indeed :)
16:45:02  <indutny>you should just function to allocate memory on isolate
16:45:19  <indutny>and store list of allocated chunks in node_var
16:45:24  <indutny>and that's not all :(
16:45:40  <indutny>nah, that won't work
16:45:49  <indutny>we need some kind of hashmap for that
16:45:58  <indutny>that'll be accessible in C++ addons
16:48:18  <indutny>indutny: ok, I've an idea, finally
16:49:43  * benviejoined
16:50:38  <indutny>bnoordhuis: yt?
16:50:44  <bnoordhuis>indutny: yes
16:50:52  <indutny>bnoordhuis: we can send isolate_list to dl function
16:51:20  <indutny>bnoordhuis: and add node_ilist_get, node_ilist_insert, node_ilist_remove methods
16:51:32  <indutny>or ones with different naming
16:51:49  <indutny>bnoordhuis: so list itself will not contain any information except it's id
16:51:51  * Raynosjoined
16:52:10  <indutny>while actual list will be stored in natives_list variable in node_vars.h
16:52:26  <indutny>which will be a ngx_queue of ngx_queues (i.e. queue of modules' lists)
16:52:43  <indutny>or even simplier
16:52:55  <indutny>list id may be unique per module+isolate
16:53:03  <indutny>bnoordhuis: is that clear?
16:53:20  <indutny>so we need some sort of wrappers for abstract structure that is stored inside node_vars
16:55:24  <bnoordhuis>it'll probably come down to something like that, yes
16:57:25  <indutny>bnoordhuis: correction, id should be equal between all isolates
16:57:43  <indutny>wrapping methods should know from each isolate we're trying to access data
16:58:07  <indutny>and addon can store that id into static var safely
17:02:37  <mmalecki>bnoordhuis: yay, found another usage for _deprecationWarning!
17:02:47  <mmalecki>https://github.com/joyent/node/pull/2546
17:06:37  * kuebkjoined
17:09:44  <CIA-115>libuv: Ben Noordhuis master * r71f6c0e / (16 files in 6 dirs):
17:09:45  <CIA-115>libuv: Merge remote-tracking branch 'origin/v0.6'
17:09:45  <CIA-115>libuv: Conflicts:
17:09:45  <CIA-115>libuv: src/win/util.c - http://git.io/kIhznQ
17:11:31  * travis-cijoined
17:11:31  <travis-ci>[travis-ci] joyent/libuv#33 (master - 71f6c0e : Ben Noordhuis): The build is still failing.
17:11:31  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/e7758e1...71f6c0e
17:11:31  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/531552
17:11:31  * travis-cipart
17:15:23  <mmalecki>any idea when is ryah going to be around?
17:15:58  <bnoordhuis>no, he's been MIA for a few days now
17:16:48  <mmalecki>oh well... I hope he's not dead or something
17:18:10  <bnoordhuis>i assume someone at joyent would've told me if that was the case
17:19:08  <mmalecki>well, maybe there was some internal memo
17:19:53  * bnoordhuischecks his joyent inbox
17:20:15  <bnoordhuis>piscisaureus_: is it possible / reasonable for loop->refs to drop below zero on windows?
17:20:26  <bnoordhuis>if not, i'm going to add an assert
17:23:14  <indutny>bnoordhuis: on unixes ref drops to -1 often
17:23:26  <indutny>rerrr
17:23:29  <indutny>ref often drops to -1
17:23:41  <bnoordhuis>indutny: yes, and i suspect that in most cases that's an error
17:23:42  <indutny>speaking like yoda
17:24:00  <indutny>bnoordhuis: I'm not sure, but I saw ASSERT( refs >= -1 ) in ev
17:24:26  <indutny>bnoordhuis: may be it's ok to unref loop with zero refs, if you're going to ref it again immediately
17:24:35  <indutny>i.e. in same function
17:24:51  <bnoordhuis>seems fishy
17:24:51  * TooTallNatejoined
17:25:01  <indutny>seems to be, but I see some reasons behind that
17:25:17  <bnoordhuis>but i ask because i'm the process of replacing libev's reference counting system with our own
17:25:26  <indutny>bnoordhuis: woot!
17:25:36  <indutny>bnoordhuis: I waited for that since... since libuv! :)
17:25:40  <bnoordhuis>heh
17:25:57  <indutny>hope that'll help debugging ref problems
17:26:01  * sh1mmerjoined
17:26:10  <indutny>last one with timers was borked a lot
17:26:20  <bnoordhuis>yeah, i'm quietly confident that it'll kill a whole lot of bugs in one go
17:26:29  <bnoordhuis>(and probably introduce a few new ones :)
17:26:36  <indutny>:)
17:26:36  <mmalecki>)
17:26:43  <indutny>that's how it happens
17:26:53  <bnoordhuis>okay, dinner time - biab
17:29:09  * kuebkquit (Ping timeout: 255 seconds)
17:31:44  * kuebkjoined
17:33:12  * isaacsjoined
17:37:25  * mrb_bkquit (Remote host closed the connection)
17:37:35  * Raynosquit (Read error: Connection reset by peer)
17:43:59  * Raynosjoined
17:45:25  * indexzerojoined
17:49:54  * luxigo_joined
17:52:54  * luxigo_quit (Client Quit)
17:53:24  <indutny>so I tried to use gyp_addon
17:53:36  <indutny>it works
17:53:38  <indutny>:)
17:53:50  * luxigojoined
17:53:54  <indutny>but it's quite... not straight-forward
17:54:03  <mmalecki>oh, btw, we'll have to use gyp in our binary modules now, right?
17:54:08  <indutny>yes
17:54:14  <indutny>but not a lot
17:54:19  <indutny>something like addon.gypi
17:54:30  <indutny>and everything will work almost magically
17:54:40  <indutny>don't need to really learn gyp
17:55:05  <piscisaureus_>bnoordhuis: no refs should never drop below 0
17:55:07  <mmalecki>indutny: I'll wait for your node-spdy implementation to see how it works :)
17:55:12  <piscisaureus_>if it happens iet i
17:55:15  <piscisaureus_>iet ies bug
17:59:25  <indutny>piscisaureus_: bnoordhuis: I'm going to devote some time to gyp_addon to provide some simple way to create/build addons, are you up for that?
17:59:36  <indutny>piscisaureus_: bnoordhuis: or will it be just a waste of my time?
17:59:57  <mmalecki>bnoordhuis: hey, I can repro this /tmp stuff, what should I do to give your guys the error code?
18:00:02  * Raynosquit (Remote host closed the connection)
18:04:33  <mmalecki>indutny: hey, how about making it possible to install gyp-addon?
18:05:38  <mmalecki>indutny: like, make install-gyp?
18:05:50  * Raynosjoined
18:05:51  <indutny>mmalecki: nope
18:06:02  <indutny>mmalecki: and that's not straight-forward
18:06:17  <indutny>mmalecki: I need to put gyp into it's folder
18:06:18  * `3rdEdenjoined
18:06:22  <mmalecki>indutny: yeah, I heard this programming thing is hard
18:06:36  <indutny>I mean that if you just copy gyp_addon to your BIN
18:06:39  <indutny>it won't work
18:06:52  <mmalecki>indutny: I know, it's python, it needs it's path and things
18:07:15  * mrb_bkjoined
18:09:31  <piscisaureus_>pquerna: hey, yt?
18:18:57  * perezdjoined
18:19:05  <indutny>piscisaureus_: bnoordhuis https://github.com/joyent/node/pull/2548
18:19:09  <indutny>isaacs: https://github.com/joyent/node/pull/2548
18:20:09  <mmalecki>indutny: ++
18:20:10  <kohai>indutny has 5 beers
18:20:15  <isaacs>indutny: bnoordhuis and ryah are the ones to convince about that.
18:20:32  <indutny>isaacs: anyway, FYI
18:21:35  <isaacs>kewl
18:21:46  <isaacs>whatever you guys all decide on that, i'll need to do some npm stuff with it
18:22:22  <indutny>bnoordhuis: you can test it by cloning git://github.com/indutny/node-spdy
18:22:27  <indutny>and running gyp_addon -f make
18:22:40  <indutny>and then make BUILDTYPE=Release
18:22:52  <indutny>it'll create out/Release/*.node files
18:23:04  <indutny>we'll change this in future
18:23:10  <indutny>probably
18:23:13  <indutny>or not
18:23:26  <indutny>I don't know much about how addons supposed to work on windows
18:23:28  <indutny>piscisaureus_: ^
18:23:29  <indutny>?
18:27:47  <pquerna>piscisaureus_: heya
18:28:56  <piscisaureus_>pquerna: hey. I kind of have a problem. I am trying to read a certificate file with openssl
18:28:59  <piscisaureus_>but it breaks
18:29:14  <piscisaureus_>How do I debug that kind of thing
18:29:30  <piscisaureus_>it's supposed to contain an unencrypted private key
18:29:34  <pquerna>okay
18:29:59  <piscisaureus_>pquerna: c# can read it :-(
18:30:22  <pquerna>are you using something like PEM_read_bio_X509?
18:31:03  <pquerna>er, PEM_read_bio_PrivateKey
18:31:10  <piscisaureus_>pquerna: well first of all I am trying stuff like `openssl rsa -in bla.cer -inform pem`
18:31:15  <bnoordhuis>indutny: re gyp_addon, go ahead. it kind of works already but there are some rough edges
18:31:16  <pquerna>oh
18:31:20  <pquerna>cli, hrm.
18:31:25  <piscisaureus_>or, replace rsa by x509
18:31:42  <piscisaureus_>pquerna: oh here's the certificate btw, it's expandable: https://gist.github.com/1622194
18:31:45  <mmalecki>bnoordhuis: how do I give you guys this error code?
18:31:54  <mmalecki>bnoordhuis: some breakpoint, right?
18:31:57  <indutny>bnoordhuis: so can I merge it?
18:32:20  <indutny>bnoordhuis: oh... prob better wrapping it
18:32:26  <indutny>bnoordhuis: it's creating a lot of junk now
18:32:27  <pquerna>what are you trying to do? sign something? rsa encrypt it?
18:33:21  <bnoordhuis>mmalecki: yeah, put a breakpoint on the UV_UNKNOWN clause in error.c
18:33:33  <bnoordhuis>indutny: merge what exactly?
18:33:47  <mmalecki>bnoordhuis: oh, yeah, it totally makes it clear :)
18:33:56  <mmalecki>bnoordhuis: (but no, really, which error.c?
18:33:58  <mmalecki>)
18:34:17  <piscisaureus_>pquerna: eventually I need to use it to pass it to a https request
18:34:19  <indutny>bnoordhuis: https://github.com/joyent/node/pull/2548/files
18:34:29  <bnoordhuis>mmalecki: sorry, that's deps/uv/src/unix/error.c
18:35:02  * Raynosquit (Remote host closed the connection)
18:35:10  * mrb_bkquit (Read error: Connection reset by peer)
18:35:11  <piscisaureus_>pquerna: so basically I need an ssl private key that is suitable to pass to tls.request
18:35:24  <bnoordhuis>indutny: if it works, sure
18:35:39  * mrb_bkjoined
18:35:44  <piscisaureus_>pquerna: unfortunately I am a complete sucker for encryption stuff
18:36:06  <bnoordhuis>piscisaureus_: do you want to generate a private key?
18:36:15  * isaacschanged nick to isaacs_away
18:36:20  <piscisaureus_>bnoordhuis: no I want to use a private key that I get elsewhere
18:36:29  <piscisaureus_>I know how to generate a private key
18:37:16  <bnoordhuis>piscisaureus_: pkcs7?
18:37:53  * mralephjoined
18:38:10  <piscisaureus_>bnoordhuis: I think it is pkcs12
18:39:21  <piscisaureus_>bnoordhuis: somewhere deep inside the asn1 structure I find a 'pkcs-12-pkcs-8ShroudedKeyBag'
18:39:25  <piscisaureus_>pquerna: ^
18:39:41  <piscisaureus_>If only I knew what that means / how to extract the relevant data :-)
18:39:53  * mrb_bkquit (Remote host closed the connection)
18:39:57  * mikealquit (Quit: Leaving.)
18:41:22  * mikealjoined
18:41:23  <bnoordhuis>piscisaureus_: `openssl pkcs12 -info` doesn't seem to recognize the format
18:42:47  * indexzeroquit (Quit: indexzero)
18:45:03  <piscisaureus_>bnoordhuis: this is what I use: http://lapo.it/asn1js/
18:45:20  <piscisaureus_>bnoordhuis: to inspect that file
18:45:24  <piscisaureus_>at least it is valid asn1
18:45:38  <CIA-115>node: Maciej Małecki master * rd5047f5 / lib/http.js : http: use `util._deprecationWarning` for deprecation warning - http://git.io/5CnG5g
18:47:04  * isaacs_awaychanged nick to isaacs
18:50:50  * Raynosjoined
18:52:06  <indutny>bnoordhuis: btw, what about naming
18:52:13  <indutny>bnoordhuis: probably, gyp_addon => node-gyp
18:52:14  <indutny>?
18:52:37  <bnoordhuis>sounds good
18:52:57  <indutny>ok
18:53:39  * mrb_bkjoined
18:55:19  * mikealquit (Quit: Leaving.)
18:58:09  * dshaw_joined
19:02:09  * mikealjoined
19:09:38  <piscisaureus_>pquerna: bnoordhuis: so you have no clue too what to do with that certificate?
19:10:23  <bnoordhuis>piscisaureus_: no. `openssl asn1parse` only sees a big blob of pkcs7 data
19:18:45  * luxigoquit (Ping timeout: 252 seconds)
19:20:52  * travis-cijoined
19:20:52  <travis-ci>[travis-ci] joyent/node#245 (master - d5047f5 : Maciej Małecki): The build is still failing.
19:20:52  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/f0c629a...d5047f5
19:20:52  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/531981
19:20:52  * travis-cipart
19:23:46  <TooTallNate>indutny: re gyp_addon: https://github.com/joyent/node/pull/2480
19:23:59  <TooTallNate>but it could be improved, as noted ^
19:24:11  <TooTallNate>and we're talking about installing gyp_addon/node-gyp now?
19:24:25  <piscisaureus_>hmm
19:24:26  <TooTallNate>what did ryah say about it?
19:24:36  <piscisaureus_>I don't think we should install that crap
19:24:52  <TooTallNate>piscisaureus_: me either personally
19:25:13  <TooTallNate>i've been trying out the gyp thing in node-ffi: https://github.com/rbranson/node-ffi
19:25:29  <TooTallNate>this little guy is interested wrt gyp: https://github.com/rbranson/node-ffi/blob/master/lib/bindings.js
19:29:28  * AndreasMadsenquit (Remote host closed the connection)
19:32:06  * mikealquit (Quit: Leaving.)
19:32:29  * mikealjoined
19:37:52  <paddybyers>piscisaureus_: if it's a valid pkcs12 file then openssl pkcs12 -info should display it
19:38:07  <paddybyers>how did you generate it?
19:38:31  <piscisaureus_>paddybyers: it's not. It's an x509 file (I think) with some pkcs 7 stuff in there that has embedded pkcs12 stuff
19:38:35  <piscisaureus_>paddybyers: I downloaded it
19:38:45  <piscisaureus_>paddybyers: from an unnamed source :-)
19:38:52  <paddybyers>oh ok :)
19:39:18  <piscisaureus_>paddybyers: it is basically an API that wants me to identify myself using the given private key
19:40:17  * mikealquit (Quit: Leaving.)
19:40:42  <paddybyers>and openssl x509 -text says?
19:41:42  <piscisaureus_>paddybyers:
19:41:43  <piscisaureus_>unable to load certificate
19:41:43  <piscisaureus_>7336:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:
19:41:43  <piscisaureus_>1294:
19:41:43  <piscisaureus_>7336:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:ta
19:41:43  <piscisaureus_>sn_dec.c:380:Type=X509_CINF
19:41:43  <piscisaureus_>7336:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 e
19:41:44  <piscisaureus_>rror:tasn_dec.c:749:Field=cert_info, Type=X509
19:43:47  <paddybyers>never seen that before; I guess that means it's not valid x509 :)
19:44:00  <paddybyers>how reliable is your source ?
19:44:21  <piscisaureus_>paddybyers: umm pretty reliable
19:44:46  <piscisaureus_>paddybyers: a colleague of mine tried it with c# (just to see if maybe openssl was faulty) and it worked fine
19:45:24  <paddybyers>openssl pkcs8 ?
19:45:56  <piscisaureus_>same error
19:47:40  <paddybyers>hmm, no idea then, sorry :(
19:47:44  <indutny>TooTallNate: sorry, I was away
19:48:01  <piscisaureus_>paddybyers: np, thnx for your time
19:48:37  <indutny>TooTallNate: yt?
19:49:11  <indutny>TooTallNate: how are you building it on windows?
19:49:24  <indutny>TooTallNate: using visual studio or mingw?
19:49:27  <TooTallNate>indutny: hey
19:49:41  <paddybyers>piscisaureus_: http://rt.openssl.org/Ticket/Display.html?id=2007&user=guest&pass=guest
19:49:47  <TooTallNate>indutny: i'm building on windows using the Visual Studio Command Prompt
19:49:51  <TooTallNate>and `msbuild`
19:49:52  <indutny>TooTallNate: node-gyp will be installed only for unixes now
19:49:58  <indutny>TooTallNate: ok, that's good to know
19:50:17  <TooTallNate>indutny: interesting, seems like a good idea though
19:50:23  <piscisaureus_>paddybyers: yes, I saw that too but it doesn't help me
19:50:27  <paddybyers>:(
19:50:28  <TooTallNate>at least, that's what most people will expect I think
19:50:52  <indutny>TooTallNate: yes, I think we'll provide different versions for different platforms
19:51:01  <indutny>TooTallNate: because install process is completely different
19:51:05  <TooTallNate>indutny: different versions of what?
19:51:09  <TooTallNate>node-gyp?
19:51:12  <indutny>TooTallNate: yes
19:51:26  <TooTallNate>how is the install process different?
19:51:37  <indutny>TooTallNate: on windows you're using msvs
19:51:49  <indutny>TooTallNate: and .lib file is installed somewhere
19:51:51  <indutny>:)
19:51:52  <TooTallNate>oh, so you mean 2 different versions essentially
19:51:57  <indutny>yes
19:52:04  <indutny>unix and win
19:52:05  * AndreasMadsenjoined
19:52:14  <TooTallNate>but don't the conditionals in gyp do a good enough job?
19:52:34  <TooTallNate>my pull only includes node.lib on windows
19:52:45  <TooTallNate>indutny: https://github.com/joyent/node/pull/2480
19:52:46  <indutny>TooTallNate: that'll work, but only partially
19:52:52  <indutny>TooTallNate: include dirs will fail
19:53:07  <indutny>oh, I can use node_include_dir
19:53:28  <TooTallNate>indutny: includes don't fail for me
19:53:59  <indutny>TooTallNate: that's because of how it's organized in windows
19:54:07  <indutny>on unixes files are put in different folders
19:54:34  <indutny>TooTallNate: https://github.com/TooTallNate/node/blob/43212f4de33bc995be1c13fa768b3ef1e0e3fac1/tools/addon.gypi#L8 <- no ../deps and no ../src
19:54:57  <indutny>but yeah, I can just use platform specific path again
19:55:09  <TooTallNate>indutny: well i'm confused why it worked for me then
19:55:31  <TooTallNate>indutny: actually, on windows those paths do exist
19:55:41  <TooTallNate>they're commited to the repo in fact
19:55:49  <TooTallNate>not generated
19:56:17  <TooTallNate>personally, the gyp_addon has been working perfectly on windows after my pull
19:56:48  <indutny>k
19:57:07  <TooTallNate>indutny: but i would like to fix the fact that the Debug dir is currently hard-coded
19:57:11  <TooTallNate>not sure how to though
19:57:15  * bnoordhuisquit (*.net *.split)
19:57:16  * pquernaquit (*.net *.split)
19:57:28  * pquernajoined
19:57:40  * bnoordhuisjoined
19:58:59  <indutny>TooTallNate: I'll pull your patch in
20:00:26  <indutny>TooTallNate: can you try this on windows? https://github.com/indutny/node/commit/ace94f1d4c992e4e3c4ac657f7cba341082b033d
20:01:54  <indutny>bnoordhuis: actually, I think that should be enough to let developers test this ^
20:02:08  * kuebkquit
20:02:37  <indutny>bnoordhuis: it would be good if you'll pull it and give it a try
20:04:42  <indutny>bnoordhuis: updated https://github.com/indutny/node/commit/76fc561
20:05:02  <indutny>bnoordhuis: can you at least review it? :)
20:05:41  <indutny>bnoordhuis: I can assure you that it builds node-spdy native addon correctly
20:06:10  <indutny>;)
20:06:45  <bnoordhuis>indutny: sure, 1 sec
20:07:00  <indutny>one sec
20:07:05  <indutny>one last change
20:07:41  <indutny>bnoordhuis: that's definitely a last version https://github.com/indutny/node/commit/3f8ce12
20:07:44  <indutny>:)
20:07:55  <indutny>changed order of files
20:08:02  <indutny>in installer.js
20:10:53  <bnoordhuis>indutny: 'include_dirs': ['../../../include/node'] <- does that also work when it's installed with `make install`?
20:10:55  <indutny>bnoordhuis: that doesn't work for me
20:11:05  <indutny>bnoordhuis: this works only with that
20:11:18  <bnoordhuis>indutny: ?
20:11:20  * piscisaureus_quit (Ping timeout: 244 seconds)
20:11:26  <indutny>bnoordhuis: { 'cond', 'true', '!!false!!'} not works
20:11:30  * mikealjoined
20:11:32  <indutny>oh
20:11:35  <indutny>sorry
20:11:40  <indutny>wrong order of true false
20:11:44  <bnoordhuis>heh
20:11:58  <indutny>yeah, works fine now
20:12:04  <indutny>what about ../../../include/node
20:12:06  <indutny>?
20:12:14  * kuebkjoined
20:12:17  <indutny>is node-gyp supposed to work w/o installed node?
20:12:39  <bnoordhuis>indutny: just double-checking say node is installed in $HOME/opt/node
20:12:46  <indutny>ah
20:13:05  <indutny>I'm ln -sf node-gyp from lib/node/tools/ folder
20:13:17  <indutny>that's why ../../../
20:13:22  <bnoordhuis>okay
20:13:32  <indutny>and I've node installed in ~/.node/dev
20:13:42  <indutny>so I'm pretty sure it works in /opt/node too
20:13:46  <bnoordhuis>good
20:13:52  <bnoordhuis>'libraries': [ '-l<(node_root_dir>/Debug/node.lib' ], <- we need to fix that sometime
20:14:04  <indutny>bnoordhuis: yes, I'll move to that later
20:14:21  <bnoordhuis>haven't tested it but lgtm
20:14:26  <indutny>bnoordhuis: I don't know how node is distributed to win
20:14:39  <indutny>bnoordhuis: ok, I'll test it on clean ubuntu with global install
20:14:42  <indutny>bnoordhuis: and push to master
20:14:53  <bnoordhuis>don't worry about that for now, the windows installer doesn't install header files anyway
20:15:09  <bnoordhuis>(neither does the os x installer)
20:15:34  <indutny>bnoordhuis: I think developers should have developer install :D
20:15:59  <indutny>bnoordhuis: distributing headers with binaries by default is a uncommon thing for all unix people
20:16:24  <bnoordhuis>yeah
20:17:38  <indutny>bnoordhuis: I'm pretty sure developers will include prebuilt platform-specific .node files when 0.8.0 will be out
20:17:49  <indutny>bnoordhuis: and npm will support "platform" property /cc isaacs
20:18:32  <bnoordhuis>i have some doubts about that but we'll see
20:19:00  <indutny>we should review this question and decide something really soon
20:19:18  <indutny>because people will start playing with it on node 0.7.0
20:20:02  <indutny>and that kind of problems will provoke a big resonance in our community
20:20:32  <bnoordhuis>then let's get the add-on build system working first, shall we? :)
20:20:43  <indutny>yes! :)
20:20:51  <indutny>but it's working fine now
20:20:56  <indutny>:D
20:20:59  <indutny>almost
20:25:42  * brsonjoined
20:33:23  <indutny>bnoordhuis:
20:33:34  <indutny>bnoordhuis: /usr/bin/ld: cannot find -lz
20:33:39  <indutny>bnoordhuis: 64bit ubuntu
20:33:49  <indutny>[email protected]:~/node# ./configure
20:33:49  <indutny>{ 'target_defaults': { 'cflags': [], 'defines': [], 'include_dirs': [], 'libraries': ['-lz']},
20:34:17  <bnoordhuis>indutny: apt-get install zlib1g
20:34:52  <indutny>already newest version
20:34:55  <AndreasMadsen>bnoordhuis: care to land this cleanup -> https://github.com/joyent/node/pull/2463
20:35:20  <bnoordhuis>AndreasMadsen: let me review it
20:36:40  <indutny>ok, zlib1g-dev helped
20:40:11  <bnoordhuis>AndreasMadsen: can you rebase your PR into two logical commits? one for the cleanup, one for std(out|err)Stream properties
20:40:50  <AndreasMadsen>bnoordhuis: yes I will do it now
20:41:26  <bnoordhuis>AndreasMadsen: and please use the commit message template
20:41:48  <AndreasMadsen>bnoordhuis: what template template?=
20:42:18  <bnoordhuis>AndreasMadsen: like this -> module: short description\n\nLonger description with newlines, yada, yada.
20:42:19  * isaacsquit (Remote host closed the connection)
20:42:53  <AndreasMadsen>bnoordhuis: oh
20:43:28  <bnoordhuis>AndreasMadsen: https://github.com/joyent/node/wiki/Contributing <- explains it in more detail
20:45:50  <CIA-115>node: Fedor Indutny master * r3d1476a / (4 files):
20:45:50  <CIA-115>node: gyp: install node-gyp
20:45:50  <CIA-115>node: * fixes #2480 - http://git.io/GkF1NA
20:47:58  <indutny>bnoordhuis: I think node-gyp is trying to build 32bit .node files
20:48:02  <indutny>how can I check this?
20:48:14  * mralephquit (Quit: Leaving.)
20:48:16  <indutny>out/Debug/v2.node: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
20:48:19  <indutny>oh, great
20:49:12  <bnoordhuis>indutny: yes, known issue - the add-on gypi script doesn't know what host_arch is set to
20:49:59  <indutny>bnoordhuis: ok, that's anyway different issue
20:50:07  <indutny>bnoordhuis: I'll fix it tomorrow
20:50:08  <indutny>ttyl
20:50:11  * indutnychanged nick to indutny_sleeping
20:50:16  <bnoordhuis>sleep tight, fedor
20:58:02  <AndreasMadsen>bnoordhuis: here you go -> https://github.com/joyent/node/pull/2463
20:58:24  * travis-cijoined
20:58:24  <travis-ci>[travis-ci] joyent/node#246 (master - 3d1476a : Fedor Indutny): The build is still failing.
20:58:24  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/d5047f5...3d1476a
20:58:24  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/532474
20:58:24  * travis-cipart
21:00:04  <bnoordhuis>AndreasMadsen: it doesn't seem to apply to master...
21:00:16  <mmalecki>indutny_sleeping: night sir!
21:00:24  <bnoordhuis>error: patch failed: lib/child_process.js:499
21:00:45  * mikealquit (Quit: Leaving.)
21:01:33  <AndreasMadsen>bnoordhuis: It applys to v0.6
21:02:09  <bnoordhuis>AndreasMadsen: i don't want to land it in v0.6 unless there's a really good reason to do so
21:02:21  <AndreasMadsen>https://github.com/joyent/node/pull/2463#issuecomment-3404826
21:02:46  <AndreasMadsen>Now I am confused
21:02:56  <bnoordhuis>oh right, i said that
21:03:16  <bnoordhuis>i don't recall what the patch looked like back then
21:03:36  <bnoordhuis>but the policy is to only land bug fixes in v0.6
21:03:54  <AndreasMadsen>The only change is that .kill would throw an error
21:04:04  <AndreasMadsen>bnoordhuis: the missing errno is a bug fix
21:04:12  <AndreasMadsen>https://github.com/AndreasMadsen/node-1/commit/f4d11fbbe11a75b807e06cac0f0fdb4a8d3984e4#lib/cluster.js-P114
21:04:54  <AndreasMadsen>Also this has been discussed: http://piscisaureus.no.de/log/2012-01-13#20:06:04.073
21:05:17  <AndreasMadsen>The only change is that .kill would throw an error (this was before the rebase to v0.6)
21:06:37  <bnoordhuis>AndreasMadsen: what missing errno?
21:07:24  <AndreasMadsen>https://github.com/joyent/node/blob/master/lib/child_process.js#L149
21:07:32  <AndreasMadsen>The errno property is not set
21:07:43  <AndreasMadsen>Should be done with errnoException
21:08:01  <bnoordhuis>okay, i suspected you meant that one
21:08:20  <bnoordhuis>i can land a patch for that but the other changes should go into master
21:08:21  <AndreasMadsen>Here it is in v0.6:
21:08:22  <AndreasMadsen>https://github.com/joyent/node/blob/v0.6/lib/child_process.js#L135
21:09:33  <AndreasMadsen>Okay, I to late here, I will split up the pull request tomorrow then.
21:09:44  <AndreasMadsen>Good night
21:11:04  * AndreasMadsenquit (Remote host closed the connection)
21:21:49  * kuebkquit (Ping timeout: 240 seconds)
21:22:23  * piscisaureus_joined
21:22:58  <bnoordhuis>piscisaureus_: ping
21:23:17  * isaacsjoined
21:23:24  <piscisaureus_>bnoordhuis: pong
21:23:40  <piscisaureus_>bnoordhuis: sorry, was afk, cleaning my bathroom
21:23:47  <bnoordhuis>piscisaureus_: should a tcp or udp handle that doesn't read or write ref the event loop?
21:24:04  <bnoordhuis>re bathroom, i've got a wife for that
21:24:38  <piscisaureus_>bnoordhuis: we agreed on YES
21:24:45  <piscisaureus_>bnoordhuis: but, we can change it
21:25:16  <piscisaureus_>bnoordhuis: I originally designed this with ryah - I want him to weigh in
21:26:03  <bnoordhuis>tomorrow then, i think today is a holiday over there
21:26:33  <piscisaureus_>bnoordhuis: it would be nice if we could get some other libuv users to weigh in as well - luvit (creationix rphilips) and one of the rust guys (brson)
21:26:38  * ryahjoined
21:26:46  <ryah>yo
21:26:55  <piscisaureus_>ryah: yo
21:27:16  <piscisaureus_>bnoordhuis: I'd like luvit to be somewhat generally usable :-)
21:27:39  <ryah>what's new?
21:27:45  <piscisaureus_>ryah: do we want to change libuv refcount semantics to change
21:27:47  <bnoordhuis>a c++ operator
21:28:19  <ryah>piscisaureus_: we want them to be the same on both win/unix and we want the node tests to pass
21:28:24  <piscisaureus_>ryah: so bnoordhuis was proposing that uv_write_t and uv_connect_t should reference the event loop (which I think unix was unintentionally doing anyway)
21:28:25  <ryah>i think those are the only constraints
21:28:38  * isaacsquit (Remote host closed the connection)
21:28:39  <ryah>i think they should too
21:28:52  <piscisaureus_>ok agreed
21:28:58  <bnoordhuis>that was easy
21:29:14  <piscisaureus_>ryah: do we want paused streams to not ref the event loop
21:29:14  <bnoordhuis>next up, should a tcp or udp handle that doesn't read or write ref the event loop?
21:29:28  <ryah>yes
21:29:37  <ryah>(answering bnoordhuis)
21:29:47  <bnoordhuis>okay, cool. motivation?
21:29:59  <ryah>open handle should keep the event loop alive
21:30:05  <ryah>*shrug*
21:30:07  <piscisaureus_>ok so here it gets difficult :-). I would say I agree with ryah
21:30:10  <piscisaureus_>I used to
21:30:23  <pquerna>how much have people used those tls changes in 0.6.7
21:30:35  <ryah>i dont care as long as it's the same for win/unix and all the node tests pass :)
21:30:40  <pquerna>we think it might be causing a double callback on some errors. russell_h is working on a test case right now.
21:30:51  <bnoordhuis>heh, okay - let's argue some more about it, piscisaureus_
21:31:04  <ryah>i want to cut 0.7.0
21:31:07  <ryah>any problems with that?
21:31:11  <igorzi>ryah bnoordhuis: is anyone working on sending FDs across isolates? if not - i can work on it
21:31:30  <piscisaureus_>bnoordhuis ryah: not ref'ing when not reading solves this issue where we have to unref() the event loop when people pause stdin
21:31:30  <ryah>igorzi: bnoordhuis started - not sure how far he is
21:31:30  <bnoordhuis>igorzi: i haven't started yet so go ahead
21:31:43  <igorzi>ryah: i have isolates working on windows.. will get that reviewed with piscisaureus_ shortly
21:31:55  <igorzi>bnoordhuis: k
21:31:59  <ryah>igorzi: were there many changes?
21:33:00  <bnoordhuis>piscisaureus_: there's another issue it solves -> node -e 'new (require("dgram").Socket)("udp4")' # hangs
21:33:05  <igorzi>ryah: no.. just uv_loop_new/uv_loop_delete, move statics into uv_loop_t, and a few changes in node
21:33:15  <bnoordhuis>piscisaureus_: edge case obviously
21:33:19  <piscisaureus_>bnoordhuis: yes.
21:33:48  <ryah>igorzi piscisaureus_: ok - i'll wait for that to land and then cut v0.7.0
21:33:55  <ryah>igorzi piscisaureus_: can we do that today?
21:34:04  <piscisaureus_>ryah: yes
21:34:10  <ryah>v0.7.0 is expected to be buggy - i just want to get the series started
21:34:45  <igorzi>ryah: yep
21:34:49  <ryah>great
21:34:55  <piscisaureus_>ryah igorzi: depends on what time the to be reviewed code arrives obviously
21:35:30  <igorzi>piscisaureus_: i'll get it to you in about 10 min
21:36:04  <piscisaureus_>bnoordhuis: ok, we are going to change the semantics
21:36:06  <mmalecki>ryah: when are you planning to release it?
21:36:13  <mmalecki>like, hours?
21:36:40  <mmalecki>ryah: sorry to bother you with these questions, I just want to get it on travis :)
21:36:56  * kuebkjoined
21:37:03  <ryah>mmalecki: a few hours
21:37:23  <mmalecki>ryah: thanks, I guess I didn't want to sleep anyway
21:37:23  <TooTallNate>ryah: did you see the gyp_addon changes from fedor?
21:37:25  <piscisaureus_>bnoordhuis: do you also want to change timers/idles and other non-fd watchers to ref *only* when active
21:37:26  <piscisaureus_>?
21:37:41  <piscisaureus_>bnoordhuis: as oppsed to what we do now, ref'in() until close
21:37:54  <piscisaureus_>bnoordhuis: obviously this means that uv_close itself needs to add a ref
21:37:55  <bnoordhuis>piscisaureus_: yes. i think that's already the case for some handle types
21:37:58  <piscisaureus_>whcih is fine
21:38:02  <piscisaureus_>bnoordhuis: no it isn't
21:38:13  <bnoordhuis>uv_idle_t?
21:38:27  <ryah>TooTallNate: nope - can you link?
21:38:45  <piscisaureus_>bnoordhuis: uv_idle_t just refs
21:38:49  <TooTallNate>ryah: i think it was just thing one: https://github.com/joyent/node/commit/3d1476a3168effe3edb32510f56cf9b00bce8392#comments
21:38:55  <TooTallNate>renamed gyp_addon -> node-gyp
21:39:05  <TooTallNate>gets installed on unix platforms
21:39:19  <bnoordhuis>piscisaureus_: right, it refs in uv_idle_init
21:39:22  <TooTallNate>but that commit kinda broke invoking the script from the node source dir
21:46:16  <ryah>meh
21:46:22  <ryah>TooTallNate: i dont know about htat
21:46:53  <ryah>i was imaging allowing the gyp_addon to depend on the node source tree
21:47:17  <TooTallNate>ryah: right, that's how it was, this commit breaks that :\
21:47:36  <bnoordhuis>TooTallNate: ping indutny about it tomorrow
21:47:45  <bnoordhuis>TooTallNate: or i can do that for you if you want
21:48:02  <mmalecki>I think this commit is a win. not like my opinion matters here, but anyway
21:48:03  <TooTallNate>ryah: i kinda liked the setup we had, but i don't oppose unix users compiling modules themselves either
21:48:30  <mmalecki>were there any breaking changes in 0.7? I want to start putting together a wiki page.
21:48:41  <mmalecki>(besides sys)
21:48:48  <mmalecki>and deprecating http.Client
21:48:58  <bnoordhuis>mmalecki: lots - but i'm having a total blackout right now
21:49:07  <TooTallNate>mmalecki: there's the whole native module overhaul :)
21:49:16  <TooTallNate>waf->gyp
21:49:23  <mmalecki>TooTallNate: oh, haha, I almost forgotten about it
21:49:41  <mmalecki>bnoordhuis: don't drink that much while coding
21:49:42  <TooTallNate>in fact node itself will be switching over in 0.7 to gyp as well
21:49:54  <mmalecki>TooTallNate: it already did
21:50:12  <TooTallNate>right, there just hasn't been a release yet
21:50:23  <mmalecki>ok
21:53:45  <CIA-115>libuv: Igor Zinkovsky master * rf5bd21f / test/test-eio-overflow.c : conform to ANSI C - http://git.io/1XByqQ
21:55:04  <mmalecki>https://github.com/joyent/node/wiki/API-changes-between-v0.6-and-v0.8
21:55:29  <piscisaureus_>mmalecki: did we not change something about http.get options etc?
21:55:32  <piscisaureus_>and https.get?
21:55:35  <piscisaureus_>or did that not land?
21:55:36  * travis-cijoined
21:55:36  <travis-ci>[travis-ci] joyent/libuv#34 (master - f5bd21f : Igor Zinkovsky): The build is still failing.
21:55:36  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/71f6c0e...f5bd21f
21:55:36  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/532856
21:55:36  * travis-cipart
21:55:42  <mmalecki>piscisaureus_: oh, yeah!
21:56:00  <mmalecki>piscisaureus_: it's in Added tho, we maintain backward compatibility there
21:56:11  <mmalecki>it's net.connect and tls.connect, I think
21:56:28  <piscisaureus_>mmalecki: oh sure
21:59:50  * kuebkquit (Ping timeout: 244 seconds)
22:01:12  <igorzi>piscisaureus_: https://github.com/igorzi/libuv/commit/ca639d5e1c7dbf70a3f79ff1989cdf331cf5d5c6
22:01:30  <igorzi>piscisaureus_: pls review --^
22:02:17  <igorzi>piscisaureus_: i assume that the thread that calls uv_loop_delete already made sure that all the handles for that loop are closed
22:02:41  <igorzi>piscisaureus_: also, i assumed that stuff in tty.c is thread-safe
22:03:04  * kuebkjoined
22:04:45  <ryah>TooTallNate bnoordhuis: we should come up with a clear strategy for gyp addons
22:04:54  <ryah>and just make sure everyone is on the same page
22:04:59  <ryah>i'll send an email
22:05:30  <TooTallNate>ryah: sure sounds good
22:05:50  <ryah>my strategy is this: node-waf will stick around for a few releases, eventually it will go away, in the future we will not install headers with node
22:06:00  <ryah>people who want to compie addons must have the source tree
22:06:16  <ryah>npm will be modified to accept binaries
22:06:24  <TooTallNate>ryah: i was against it at first, but I like your strategy now
22:06:31  <TooTallNate>it's been working well for node-ffi
22:06:39  <TooTallNate>but I've been commiting the binaries: https://github.com/rbranson/node-ffi/tree/master/compiled
22:06:50  <TooTallNate>and requireing them with this shim https://github.com/rbranson/node-ffi/blob/master/lib/bindings.js
22:07:26  <TooTallNate>and i had mmalecki test that a binary compiled on ubuntu x64 worked on fedora x64, so i think that works overall
22:07:59  <mmalecki>it doesn't mean it'll always work.
22:08:09  <CIA-115>node: Ryan Dahl master * r1afd0b5 / (4 files):
22:08:09  <CIA-115>node: Revert "gyp: install node-gyp"
22:08:09  <CIA-115>node: No.
22:08:09  <CIA-115>node: This reverts commit 3d1476a3168effe3edb32510f56cf9b00bce8392. - http://git.io/WUEhGg
22:08:20  <mmalecki>ryah: if you want such a strategy, please supply us with a build farm.
22:08:34  <ryah>mmalecki: authors must build it themselves
22:08:38  <TooTallNate>mmalecki: not always, but in the >90% case. when it doesn't work, compile manually
22:09:16  <mmalecki>ryah: exactly. are you expecting me to have all distributions and architectures running somewhere?
22:09:38  <bnoordhuis>good point
22:09:48  <TooTallNate>mmalecki: well vms work well, but I agree, a cloud compilation is needed
22:10:05  <TooTallNate>i have thought about it a lot, not started writing any code though
22:10:08  <mmalecki>TooTallNate: or just being sane and leaving this commit as it is!
22:10:37  <ryah>mmalecki: we'll need to have a way for 3rd party people to upload binaries
22:10:38  <mmalecki>or maybe even `make install-gyp`
22:10:41  * brsonquit (Ping timeout: 244 seconds)
22:10:41  <TooTallNate>mmalecki: well it's pretty broken as-is, at least when run relatively
22:11:04  <mmalecki>ryah: sorry? are you expecting me to run binaries provided by 3rd party people?
22:11:08  * brsonjoined
22:11:11  <TooTallNate>but i'm not entirely against installing node-gyp either, but it doesn't sound like ryah likes that
22:11:23  <TooTallNate>mmalecki: you do it all the time :p
22:11:45  <mmalecki>TooTallNate: they are build on servers which are trusted.
22:12:06  <mmalecki>if you're talking about .{rpm,deb} and stuff
22:12:14  <ryah>mmalecki: yep
22:12:23  <TooTallNate>i wasn't really talking about anything specifically, just an assumption :p
22:12:23  <mmalecki>ryah: that's just insane.
22:13:46  <bnoordhuis>you'll still be able to compile from source
22:14:09  <mmalecki>bnoordhuis: I know. I just don't want to deal with crazy python path issues.
22:14:20  <mmalecki>bnoordhuis: I'm fine with having to `make install-gyp`
22:14:21  <bnoordhuis>i think the weak spot in ryah's scheme is that most authors simply won't bother to upload binaries
22:14:40  <mmalecki>I'm fine with gyp not being in these crazy installers and whatever
22:14:41  <bnoordhuis>and if they do, it'll be for just one or two operating systems / architectures
22:16:27  <TooTallNate>bnoordhuis: hence the need for a build cloud
22:16:50  <ryah>there are only 3 OSes and only one arch
22:16:56  <ryah>it's not that big of a deal
22:17:08  <bnoordhuis>TooTallNate: i've tried that with sourceforge's build farm in the past, never got very far
22:17:30  <mmalecki>no, there are 3 archs and > 4 OSes.
22:17:42  <bnoordhuis>ryah: don't let paddybyers hear that :)
22:17:57  <ryah>look - if the author doesn't have access to a windows machines - it's not going to work on windows anyway
22:17:58  <TooTallNate>i have a soft spot for arm too :)
22:18:09  <ryah>if they don't have access to a solaris box - it's nt going to work there
22:18:17  <TooTallNate>^ no.de :)
22:18:19  <ryah>so we just make authors build for each platform
22:18:22  <ryah>no biggie
22:18:27  <mmalecki>ryah: except situations it's going to work.
22:18:39  <paddybyers>i heard that
22:18:39  <mmalecki>like, C is kinda portable, ya know?
22:18:53  <ryah>that's what people want you to think
22:18:57  <mmalecki>at least so I've heard, I still write node addons in asm
22:19:01  <ryah>nothing compiles out of the box of foreign platforms
22:19:12  <TooTallNate>ya my node-time compiled out-of-the-box on Windows :p
22:19:24  <TooTallNate>but... didn't quite work properly...
22:19:34  <ryah>anyway - we're going to have node-waf for a while
22:19:50  <TooTallNate>ryah: ya but that means maintaining a wscript and a bindings.gyp file :\
22:20:09  <TooTallNate>which isn't the end of the world
22:21:25  * travis-cijoined
22:21:25  <travis-ci>[travis-ci] joyent/node#247 (master - 1afd0b5 : Ryan Dahl): The build is still failing.
22:21:25  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/3d1476a...1afd0b5
22:21:25  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/532950
22:21:25  * travis-cipart
22:39:42  <ryah>TooTallNate: yeah, it sucks
22:39:49  <ryah>TooTallNate: but we must provide a smooth transition
22:40:05  <TooTallNate>indeed
22:40:39  <ryah>pquerna: what were you saying about double callback?
22:40:43  <einaros>is it unrealistic that someone will provide a travis like cross-platform build service?
22:40:44  <ryah>pquerna: do you have a test?
22:40:58  <pquerna>13:35 < russell_h> pquerna: https://gist.github.com/1623151
22:40:58  <pquerna>13:35 < tamale> [Link Info] title: double callback introduced to node in 07c27e040eb41a1f564f1d92dbe1ad07b78f3a4e * Gist
22:41:01  <pquerna>yes, in that gist
22:41:04  <pquerna>13:35 < russell_h> passes if you revert 07c27e040eb41a1f564f1d92dbe1ad07b78f3a4e
22:41:28  <mmalecki>einaros: possible-ish
22:41:28  <piscisaureus_>good ol' tamale
22:41:33  <ryah>shall we revert that?
22:41:43  <pquerna>i think russell is digging into making a fix
22:41:50  <mmalecki>!gh joyent/[email protected]
22:41:50  <kohai>mmalecki, https://github.com/joyent/node/commit/07c27e040eb41a1f564f1d92dbe1ad07b78f3a4e
22:41:51  <ryah>awesome
22:42:00  <pquerna>i can help sheppard it today, been busy with other stuff
22:42:18  <ryah>maybe notify koichik too
22:42:20  <CIA-115>node: Ryan Dahl master * r60040a4 / (177 files in 11 dirs): Upgrade V8 to 3.8.6 - http://git.io/zB2hsQ
22:42:31  <ryah>would be good to comment on that commit to let him know the situation
22:47:16  <CIA-115>node: Igor Zinkovsky master * r9584445 / (node.gyp src/ngx-queue.h src/node_vars.h): fix windows build - http://git.io/dw6Xow
22:48:56  <piscisaureus_>Hoffman explaned. “We went to Microsoft saying ‘no one has ever done a good job of abstracting asynchonous I/O across unix and windows.’’
22:49:02  <piscisaureus_>blah blah blah
22:51:02  <piscisaureus_>http://blog.programmableweb.com/2012/01/16/just-ask-joyent-finds-a-node-js-partner-in-microsoft/
22:51:18  <piscisaureus_>I feel somwhat offended.
22:51:24  * ryah_joined
22:53:45  <pquerna>history is history
22:53:58  * kuebkquit
22:55:06  * travis-cijoined
22:55:06  <travis-ci>[travis-ci] joyent/node#248 (master - 60040a4 : Ryan Dahl): The build is still failing.
22:55:06  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/1afd0b5...60040a4
22:55:06  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/533097
22:55:06  * travis-cipart
22:57:50  * isaacsjoined
22:58:12  * travis-cijoined
22:58:12  <travis-ci>[travis-ci] joyent/node#249 (master - 9584445 : Igor Zinkovsky): The build is still failing.
22:58:12  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/60040a4...9584445
22:58:12  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/533132
22:58:12  * travis-cipart
22:58:58  <piscisaureus_>pquerna: I am not entirely sure what you mean.
22:58:59  <piscisaureus_>I don't need much of appreciation, but he doesn't have to say this and still he does.
22:59:57  <isaacs>hello
23:01:56  <pquerna>piscisaureus_: history is written by the victors, and it is full of revisionism.
23:02:13  <pquerna>piscisaureus_: lesson: rax should of done a node.js paas on windows to make the story cooloer :P
23:02:50  * ryahquit (Quit: Lost terminal)
23:03:56  * russell_hjoined
23:03:57  * philipsjoined
23:04:04  <pquerna>14:54 < russell_h> when the socket emits an error
23:04:04  <pquerna>14:54 < russell_h> they have some pipe function that propagates the error to the 'cleartext' stream
23:04:07  <pquerna>14:55 < russell_h> when the http layer sees the error it calls destroy on the SecurePair
23:04:10  <pquerna>14:55 < russell_h> which then emits another error since the thing was never established
23:04:35  <pquerna>so, i assume the 'correct' behavoir, is that once the SecurePair has emitted any errors
23:04:39  <pquerna>don't emit them
23:04:41  <pquerna>again
23:04:46  <ryah_>pquerna piscisaureus_: there's nothing untrue about that - many trips were made
23:04:54  <piscisaureus_>pquerna: mostly then people try to revise history they are more subtle about that.
23:05:05  <ryah_>none by either of you
23:05:26  <ryah_>much was discussed - and it took a lot of work and a long time
23:05:53  <pquerna>so this would mean in SecurePair.destroy, if (!this._secureEstablished) { changed to secureEstabled && !error_not_previously_sent
23:07:29  <ryah_>although i think a mention of rackspace's involvement is warrented
23:07:36  <piscisaureus_>ryah_: wow so some business figured out how to abstract async io by sitting on an airplane?
23:07:46  <piscisaureus_>*business guys
23:09:19  <ryah_>certainly not - but sitting an in an airplane isn't useless
23:10:04  <ryah_>in the end we have a very good windows port
23:10:08  <CIA-115>node: isaacs v0.6 * r2541009 / (142 files in 21 dirs): Update npm to 1.1.0-2 - http://git.io/FQzNHg
23:10:21  <ryah_>and we wouldnt have this quality without those buisness guys
23:10:38  <ryah_>that's pretty clear to me
23:11:17  <pquerna>in the end it means node.js will be better and bigger. which is really what our goals came down to. Do I wish things were different, more involved, sure, but node.js on windows is great, and that is something that will stand in the long run.
23:11:35  <ryah_>yep
23:12:17  <ryah_>and we have libuv :)
23:12:24  <ryah_>which i think will be a very useful too for many
23:12:28  <pquerna>+9000
23:12:30  <piscisaureus_>well, those guys gave us igorzi which to me the best contribution
23:12:50  <ryah_>piscisaureus_: that's what i meant
23:15:57  <isaacs>_+1
23:18:01  * travis-cijoined
23:18:01  <travis-ci>[travis-ci] joyent/node#250 (v0.6 - 2541009 : isaacs): The build was broken.
23:18:01  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/f0c1376...2541009
23:18:01  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/533258
23:18:01  * travis-cipart
23:18:03  <CIA-115>node: Ryan Dahl master * r7584225 / (17 files in 6 dirs): Upgrade libuv to joyent/[email protected] - http://git.io/WFglMw
23:19:00  <piscisaureus_>But I still leaves me with a bit of a sour taste. There is a limit to the extent I can accept history rewriting for the purpose of making microsoft look cool and joyent look important. (not disregarding the awesome stuff ryan and igor have done of course)
23:19:37  <piscisaureus_>anyway, over with it
23:27:52  * isaacs_joined
23:30:28  <TooTallNate>isaacs: i know this has been asked before, but are there stats for # of downloads of a module?
23:31:01  * travis-cijoined
23:31:01  <travis-ci>[travis-ci] joyent/node#251 (master - 7584225 : Ryan Dahl): The build is still failing.
23:31:01  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/9584445...7584225
23:31:01  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/533303
23:31:01  * travis-cipart
23:31:12  * isaacsquit (Ping timeout: 245 seconds)
23:31:18  * isaacs__joined
23:33:09  * isaacs_quit (Ping timeout: 240 seconds)
23:33:10  * isaacs__quit (Remote host closed the connection)
23:33:23  * isaacsjoined
23:34:00  <isaacs>TooTallNate: no, there's no way to get that now.
23:34:12  <TooTallNate>ok thanks
23:35:03  <mmalecki>piscisaureus_: programming is a rather thankless job :(
23:36:13  <bnoordhuis>mmalecki: you mean *you* don't have groupies waiting outside your hotel room?
23:36:56  <mmalecki>bnoordhuis: well, I do, didn't want piscisaureus_ to feel bad
23:37:25  * isaacsquit (Remote host closed the connection)
23:37:50  * isaacsjoined
23:39:14  <bnoordhuis>signing off - see you tomorrow guys
23:39:28  <mmalecki>bnoordhuis: night!
23:39:37  <bnoordhuis>you too, maciej
23:39:49  <mmalecki>bnoordhuis: I wish!
23:39:53  <ryah_>bnoordhuis: night
23:40:09  <CIA-115>node: Ryan Dahl master * rca2a047 / (148 files in 26 dirs):
23:40:10  <CIA-115>node: Merge remote branch 'origin/v0.6'
23:40:10  <CIA-115>node: Conflicts:
23:40:10  <CIA-115>node: deps/uv/src/win/util.c
23:40:10  <CIA-115>node: src/udp_wrap.cc - http://git.io/11GsZA
23:40:31  <piscisaureus_>mmalecki: don't feel bad for me, I was just venting off steam.
23:40:35  <piscisaureus_>now it's fine
23:40:45  <piscisaureus_>at the end of the month I get paid and I love my job
23:40:57  <mmalecki>piscisaureus_: hey, I can send you some groupies I have here
23:41:08  <piscisaureus_>It's amazing that they call this a job in the first place
23:41:10  <mmalecki>piscisaureus_: I'm pretty sure bnoordhuis can get you some as well
23:43:51  * bnoordhuisquit (Ping timeout: 240 seconds)
23:52:53  * travis-cijoined
23:52:53  <travis-ci>[travis-ci] joyent/node#252 (master - ca2a047 : Ryan Dahl): The build is still failing.
23:52:53  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/7584225...ca2a047
23:52:53  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/533451
23:52:53  * travis-cipart