00:00:21  <piscisaureus_>bnoordhuis: well, because the handles are inheritable, and the inheritable flag is never cleared
00:00:38  <piscisaureus_>bnoordhuis: just like, on unix, you don't set the CLOEXEC flag on inherited FDs
00:01:12  <bnoordhuis>piscisaureus_: i think i'd make it explicit
00:01:31  <piscisaureus_>uv_make_stdio_noninheritable :-)
00:01:34  <piscisaureus_>that works
00:01:44  <piscisaureus_>would it be possible to implement this on unix at all ?
00:02:14  <bnoordhuis>piscisaureus_: uv__nonblock(0)?
00:02:28  <piscisaureus_>bnoordhuis: I mean, eh, what?
00:02:33  <bnoordhuis>err, uv__cloexec(0)
00:02:42  <piscisaureus_>bnoordhuis: yes, but which fds would you target?
00:02:48  <bnoordhuis>0-2
00:02:58  * isaacsquit (Remote host closed the connection)
00:03:12  <piscisaureus_>bnoordhuis: what if someone created a child with ['pipe', 'pipe', 'pipe', 'pipe'] ?
00:03:20  <bnoordhuis>sucks to be them
00:03:42  <piscisaureus_>btw - the api doesn't yet expose the 4th pipe
00:03:54  <bnoordhuis>i suppose we could scan for file descriptors
00:04:01  <bnoordhuis>but that kind of sucks
00:04:03  <piscisaureus_>that's ehm, ugly
00:04:43  <piscisaureus_>maybe readdir(/proc/<pid>/fd) ?
00:04:50  <piscisaureus_>is that portable ?
00:05:09  <bnoordhuis>no
00:05:20  <bnoordhuis>not reliable either
00:05:30  * isaacsjoined
00:06:16  <piscisaureus_>seems to work on sunos :-)
00:06:20  <piscisaureus_>bnoordhuis: why not reliable ?
00:06:39  <bnoordhuis>piscisaureus_: unreliable in the sense that there doesn't have to be a procfs
00:07:01  <piscisaureus_>like. on unix?
00:07:05  <piscisaureus_>er, on linux?
00:07:11  <bnoordhuis>yes, as in 'not mounted'
00:07:17  <piscisaureus_>aah
00:07:30  <isaacs>what's the problem?
00:07:46  <piscisaureus_>unix y u so retarded
00:08:05  <isaacs>give it a break, it's like 40 years old
00:08:31  <piscisaureus_>bnoordhuis: ok, fd 0-3 is fine then
00:08:37  * xaqquit (Remote host closed the connection)
00:08:41  <bnoordhuis>0-3 or 0-2?
00:09:03  <piscisaureus_>0 <= x < 3
00:14:41  <isaacs>piscisaureus_: but, what if you really want to inherit an inherited stdio?
00:14:44  <isaacs>i dont' get the problem.
00:15:36  <isaacs>i've got these three cases working: https://gist.github.com/2920955
00:16:32  <piscisaureus_>isaacs: you mean you *want* child stdio be inherited by the child of a child ?
00:16:44  * isaacsshrug
00:16:45  <isaacs>maybe
00:17:07  <piscisaureus_>isaacs: you should set that explicitly in uv_spawn_options_t then
00:17:15  <isaacs>maybe you want a few generations all sharing the same stdout or something
00:17:31  <piscisaureus_>isaacs: this doesn't make that impossible
00:17:34  <isaacs>it doesn't sound too crazy to me. maybe i'm just not seeing the problem.
00:17:44  <piscisaureus_>isaacs: it just makes sure that it doesn't happen accidentally
00:17:49  <isaacs>piscisaureus_: i dsee.
00:17:59  <isaacs>so, just changing the default value from 'inherit' to 'pipe' or something?
00:18:10  <piscisaureus_>isaacs: huh, no
00:18:24  <isaacs>how would it happen accidentally?
00:18:40  <piscisaureus_>isaacs: well, you open fd 29 with a pipe
00:18:42  * hij1nxquit (Ping timeout: 248 seconds)
00:18:46  <piscisaureus_>and then you spawn a child
00:18:52  <piscisaureus_>then the child spawns a grandchild
00:19:00  <isaacs>did i give 29 to the child?
00:19:01  <piscisaureus_>now the grandchild also has fd 29 open
00:19:03  * hij1nxjoined
00:19:05  <piscisaureus_>yes
00:19:11  <piscisaureus_>welcome to the world of unix
00:19:13  <isaacs>as 29? or as 3 or something?
00:19:18  <piscisaureus_>no 29 as 29
00:19:33  <isaacs>via a stdio or via ipc?
00:19:39  <piscisaureus_>isaacs: va stdio
00:19:53  <piscisaureus_>isaacs: welcome to the world of unix :-)
00:19:59  <isaacs>so, child_process.spawn(c,a,{stdio:[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,29]}) or something?
00:20:14  <isaacs>you keep welcoming me, but i live here.... ;P
00:20:16  <piscisaureus_>isaacs: yes, that would be the way if you want it
00:20:21  <isaacs>ok
00:20:33  <piscisaureus_>isaacs: but suppose this:
00:20:33  <isaacs>well, that's weird, but ok.
00:20:51  <piscisaureus_>parent: spawn(child, {stdio:[,,,,,,,,,,,,,,,,29]})
00:21:07  <piscisaureus_>child: spawn(grandchild, stdio:defaults)
00:21:20  <piscisaureus_>isaacs: the grandchild now inherits 29 too
00:21:32  <piscisaureus_>that is not desirable
00:21:36  <piscisaureus_>isaacs: the problem is this
00:21:47  <isaacs>the default should be [0,1,2] or [-1,-1,-1], depending on whether you called spawn or exec
00:21:53  <piscisaureus_>yes
00:21:57  <isaacs>anything outside of 0-2 should default to 'ignore'
00:22:04  <piscisaureus_>isaacs: yes, I agree
00:22:06  <isaacs>k
00:22:28  <piscisaureus_>isaacs: unfortunately, I have to welcome you to the world of unix and windows :-)
00:22:38  <isaacs>ok, so, the "unix and windows" world is not very welcoming.
00:22:42  <piscisaureus_>nope
00:22:44  <isaacs>unix = yes. windows = hmm... maybe.
00:22:49  <isaacs>unix + windows = "unpleasantness"
00:23:04  <piscisaureus_>isaacs: so on windows this problem is aggravated
00:23:06  <isaacs>so, what has to happen to make this dtrt on both nix and windows?
00:23:40  <piscisaureus_>isaacs: well, for (every stdio fd) { set_cloexec(fd) }
00:24:02  <piscisaureus_>isaacs: the problem: on unix you cant get a list is of stdio fds
00:24:06  <isaacs>hm....
00:24:12  <piscisaureus_>because that is sort of an abstraction that we invented :-)
00:24:25  <isaacs>it's a NICE abstraction, i must say
00:24:33  <piscisaureus_>yes, I like it too
00:24:33  <isaacs>i'm using it a little in this test, adn it's SO nice.
00:24:35  <isaacs>it's like bash.
00:24:56  <isaacs>$ cmd &3< # boom, fd 3 is readable.
00:25:20  <isaacs>oh, i did that wrong
00:25:28  <isaacs>whatever, bash is ugly, i have to look up how to do it every time.
00:25:40  <piscisaureus_>isaacs: on windows the problem is aggravated, that's why I need to fix it now
00:26:10  <isaacs>ok
00:26:14  <isaacs>you know what to do?
00:26:30  <piscisaureus_>isaacs: on unix if the child does spawn(grandchild, [], { stdio: [x, y, z] }) then atleast fd 0-2 are not accidentally inherited by the grandchild
00:26:39  <piscisaureus_>because they were overridden so to speak
00:26:42  <piscisaureus_>not on windows
00:26:44  <isaacs>k
00:26:47  <piscisaureus_>on windows everything is inherited
00:26:50  <AvianFlu>aha! now I get it.
00:26:54  <piscisaureus_>it's just not accessible as a file descriptor
00:28:13  <piscisaureus_>that's why test-spawn-detached hangs :-)
00:35:43  <piscisaureus_>I will fix this tomorrow
00:50:31  <CIA-108>node: Bert Belder master * r5209dad / test/gc/test-net-timeout.js : test-net-timeout: make it pass on Windows - http://git.io/SOtmSQ
00:50:37  <piscisaureus_>down to 15 failures
00:57:17  * dapquit (Quit: Leaving.)
00:57:40  <piscisaureus_>I also don't understand how the message tests work
00:57:43  * ericktquit (Ping timeout: 245 seconds)
00:57:51  <piscisaureus_>they fail... but I can't see how they would not fail on unix
01:01:25  <TooTallNate>piscisaureus_: there's at least one of the message tests failing on unix right now
01:03:53  <CIA-108>node: Bert Belder master * r0dba4ad / (3 files): tests: make all message tests pass on Windows - http://git.io/8djuSA
01:03:55  <piscisaureus_>TooTallNate: no more, I think
01:07:03  <piscisaureus_>looking good guys
01:07:18  <piscisaureus_>afaict no really really serious bugs
01:07:29  <piscisaureus_>time to sleep now
01:07:53  <piscisaureus_>bnoordhuis: are you coming to 020 any day this week?
01:08:26  <bnoordhuis>piscisaureus_: maybe tomorrow, maybe thursday
01:08:40  <piscisaureus_>bnoordhuis: I suppose tomorrow is not going to happen :-)
01:08:47  <piscisaureus_>but you still could
01:08:47  <bnoordhuis>oh, it's only 3 am
01:08:53  <piscisaureus_>I am going to check out now
01:09:01  <piscisaureus_>if you do that too, you might even ...
01:09:16  <TooTallNate>rape zombies?
01:09:19  <bnoordhuis>i can make do with 5 hours of sleep, no problem
01:09:22  <bnoordhuis>sleep tight, bertje
01:09:26  <piscisaureus_>later
01:09:34  <piscisaureus_>fixing tests is rewarding and boring at the same time
01:13:36  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
01:17:51  * pieternquit (Quit: pietern)
01:23:35  <isaacs>ircretary: tell piscisaureus_ Yes, the message tests have failed since the recent v8 changes. been meaning to fix them.
01:23:35  <ircretary>isaacs: I'll be sure to tell piscisaureus_
01:26:52  <TooTallNate>bnoordhuis: so 37fd953378ecdfcbe8e3656e1827b17fdc4fd969 is what `git bisect` says broke /dev/tty (it used to work)
01:26:54  <TooTallNate>https://github.com/joyent/node/commit/37fd953378ecdfcbe8e3656e1827b17fdc4fd969 that is
01:27:04  <TooTallNate>hopefully that sets off some lightbulb :)
01:29:50  <bnoordhuis>TooTallNate: noted. remind me again tomorrow, i'm off to bed. :)
01:29:59  <TooTallNate>bnoordhuis: will do; sleep tight
01:32:47  <bnoordhuis>TooTallNate: thanks. you too, guys
01:33:08  * bnoordhuisquit (Quit: Leaving)
01:36:11  <isaacs>TooTallNate (or whoever's awake): How do you feel about moving ._handle to .handle
01:36:34  <TooTallNate>isaacs: i suppose that's in response to your gist ;)
01:36:55  <isaacs>TooTallNate: well... it seems like more and more we're accessing this property, setting it, etc.
01:37:16  <isaacs>it's not quite public... but we're sort of expecting users to at some point have some understanding of what it is.
01:37:31  <TooTallNate>right, especially with the new stdio stuff
01:37:34  <isaacs>it's a bit like readStream.fd or something
01:37:37  <isaacs>right
01:37:51  <TooTallNate>do we still have readStream.fd?
01:37:53  <isaacs>yeah
01:37:56  <isaacs>file streams have an fd member
01:38:28  <TooTallNate>right. is it public API? do people get/set it?
01:38:29  <isaacs>i mean, the ._foo (to me at least) means "This is super off limits. pretend you can't see this. definitely do not write it."
01:38:38  <isaacs>.fd? not really.
01:38:43  <isaacs>you're welcome to look at it.
01:38:51  <TooTallNate>ya definitely
01:38:52  <isaacs>but you shouldn't set it yourself, unless you sort of know what you' doing.
01:38:59  <isaacs>shoudl be the same with .handle, i'd think.
01:39:12  <isaacs>but like, i want to be able to do stuff like: server.listen(otherServer)
01:39:13  <TooTallNate>i mean i agree
01:39:15  <isaacs>and have it just share the handle.
01:39:20  <TooTallNate>let's just document the assumed use-cases
01:39:34  <isaacs>i guess we should probably put it off until 0.9
01:39:36  <TooTallNate>is .fd documented?
01:39:37  <isaacs>it's api cleanup.
01:39:40  * isaacssigh.
01:39:48  <isaacs>.fd? yeah, should be.
01:40:45  <isaacs>hm. no, it isn't.
01:41:02  <isaacs>meh. we can do it later, i guess.
01:41:17  <isaacs>i'm just trying to document listen({fd:n}) and kind of noticing the inconsistency
01:43:33  <TooTallNate>isaacs: i mean it's pretty minor, we could probably squeeze it in
01:43:38  <isaacs>nah.
01:43:42  <isaacs>it's a LOT of lines.
01:43:48  <isaacs>we'll miss something.
01:44:05  <isaacs>gotta be saying no to more and more stuff.
01:44:16  <isaacs>basically anything that wasn't promised a month ago is out.
01:44:32  <TooTallNate>indeed
01:44:36  <TooTallNate>what about os.tempDir()?
01:44:37  * hij1nxquit (Quit: hij1nx)
01:45:10  <isaacs>well... ryah's a vip.
01:45:12  <isaacs>:)
01:45:20  <isaacs>plus we can land that right now.
01:45:30  <isaacs>one sec..
01:45:49  <isaacs>running tests with the listen-fd stuff
01:47:30  <TooTallNate>seems like a pretty easy pattern at least: $ grep -rn "\._handle" lib/ src/
01:47:44  <TooTallNate>there's a few matches in test/ too
01:47:48  <TooTallNate>$ grep -rn "\._handle" lib/ src/ test/
01:52:31  <isaacs>TooTallNate: yeah
01:53:56  <isaacs>the fact that we dink around with it in tests sort of implies to me that it ought to just bite the bullet and expose it
01:54:30  <TooTallNate>ya, that's a good argument
01:54:50  * abraxasjoined
01:55:09  <TooTallNate>isaacs: do you think fs.ReadStream.fd should be .handle in that case also?
01:55:16  <TooTallNate>i mean, it's not an fd on windows right?
01:55:22  <isaacs>TooTallNate: no, it is
01:55:43  <isaacs>windows HAS file descriptors.
01:55:55  <isaacs>they're just a bit less core than on unix.
01:56:08  <TooTallNate>noted
02:05:33  * c4miloquit (Remote host closed the connection)
02:07:47  <isaacs>TooTallNate: got a sec?
02:07:47  <isaacs>https://github.com/joyent/node/pull/3423
02:09:59  <isaacs>had to force-push a lint fix
02:11:03  <TooTallNate>isaacs: ok, want me to push it to master?
02:11:18  <isaacs>nah, just say it's good so i can blame you when it breaks shit ;)
02:11:34  <TooTallNate>well there's a lint violation in the test as well
02:11:43  <isaacs>oh, tests can be linty
02:11:45  <isaacs>new rule :)
02:11:49  <TooTallNate>oh right, forgot
02:11:51  <TooTallNate>:D
02:11:54  <TooTallNate>lgtm then!
02:12:19  <CIA-108>node: isaacs master * ra11bf99 / (doc/api/os.markdown lib/os.js test/simple/test-os.js): Fix #3407 os.tmpDir() - http://git.io/7I_RDQ
02:12:22  <isaacs>thanks
02:14:04  <TooTallNate>isaacs: np
02:14:09  <TooTallNate>and i'm out then :)
02:14:10  <TooTallNate>laterz
02:15:19  * ericktjoined
02:15:52  * TooTallNatequit (Quit: Textual IRC Client: www.textualapp.com)
02:17:21  * isaacsquit (Remote host closed the connection)
02:22:37  * isaacsjoined
02:23:03  * isaacsquit (Remote host closed the connection)
02:47:24  * brsonquit (Ping timeout: 265 seconds)
02:50:29  * sh1mmerjoined
03:26:49  * brsonjoined
03:46:03  * c4milojoined
03:51:25  * iraquit (Quit: Leaving...)
04:00:15  * c4miloquit (Remote host closed the connection)
04:57:41  * avalanche123quit (Ping timeout: 244 seconds)
04:58:40  * ericktquit (Quit: erickt)
05:01:11  * avalanche123joined
05:13:25  * toothrquit (Ping timeout: 240 seconds)
05:44:00  * paddybyersjoined
06:45:29  * stephankquit (Quit: *Poof!*)
06:54:36  * mikealquit (Quit: Leaving.)
07:06:36  * mikealjoined
07:24:34  * rendarjoined
07:40:42  * avalanche123quit (Quit: Computer has gone to sleep.)
07:55:43  * paddybyersquit (Quit: paddybyers)
08:14:16  * toothrjoined
08:18:32  * mralephquit (Quit: Leaving)
08:26:46  * \toothrotjoined
08:26:55  * toothrquit (Ping timeout: 240 seconds)
08:31:16  * toothrjoined
08:31:55  * \toothrotquit (Ping timeout: 240 seconds)
08:56:50  * hij1nxjoined
09:13:16  * \toothrotjoined
09:14:50  * toothrquit (Ping timeout: 245 seconds)
09:24:43  * brsonquit (Remote host closed the connection)
09:32:05  * paddybyersjoined
09:48:49  * paddybyersquit (Read error: Connection timed out)
09:54:19  * hij1nxquit (Quit: hij1nx)
10:08:32  * paddybyersjoined
10:21:20  * loladirojoined
10:21:44  * loladiroquit (Client Quit)
10:46:01  * loladirojoined
11:33:08  * irajoined
11:33:23  * iraquit (Client Quit)
11:42:50  * hij1nxjoined
11:45:37  * abraxasquit (Remote host closed the connection)
12:03:31  * loladiroquit (Quit: loladiro)
12:09:08  * piscisaureus_joined
12:09:24  <piscisaureus_>ircretary: notes
12:09:48  <piscisaureus_>ircretary: tell isaacs I fixed the message tests
12:09:48  <ircretary>piscisaureus_: I'll be sure to tell isaacs
12:11:10  <indutny>ircretary: notes
12:11:10  <ircretary>indutny: I don't have any notes for you.
12:11:16  <indutny>interesting
12:11:20  * loladirojoined
12:13:07  * loladiroquit (Client Quit)
12:13:36  * hij1nxquit (Quit: hij1nx)
12:40:27  * paddybyersquit (Read error: No route to host)
12:41:25  * paddybyersjoined
12:49:11  * paddybyersquit (Quit: paddybyers)
12:52:07  <CIA-108>node: Bert Belder v8-3.11 * r6836b50 / (374 files in 21 dirs): v8: upgrade to 3.12.0 (candidate) - http://git.io/s3WCWw
12:52:07  <CIA-108>node: Bert Belder v8-3.11 * ra73ac4f / (deps/v8/build/common.gypi deps/v8/src/debug-agent.cc): v8: reapply floating patches - http://git.io/RbYJ3g
12:52:41  <indutny>piscisaureus_: looks like they'd solved performance issues, right?
12:52:44  <indutny>piscisaureus_: v8 team
12:52:46  <piscisaureus_>yes
12:52:49  <piscisaureus_>indutny: try that branch
12:53:17  <indutny>piscisaureus_: will do
12:58:09  <piscisaureus_>indutny: hold off a little
12:58:19  <piscisaureus_>indutny: this one is based on bleeding edge
12:58:28  <piscisaureus_>indutny: I am going to do a patch that is based on trunk + that patch
12:58:36  <piscisaureus_>that's much closer to what the final result would be
12:58:43  <indutny>huh
12:59:07  <piscisaureus_>indutny: they did the final push to trunk for 3.11 already, bleeding edge is now slated for 3.12
12:59:14  <piscisaureus_>but the patch will be backported to 3.11
12:59:19  <indutny>oook
12:59:29  <indutny>build failed anyway :P
12:59:56  <piscisaureus_>it didn't for me
13:00:02  <piscisaureus_>you should help me get the unix build right
13:00:09  <piscisaureus_>there was some issue with the postmortem I think
13:01:33  <indutny>piscisaureus_: floating patches?
13:01:52  <indutny> /Users/indutny/Code/indutny/node/out/Release/obj/gen/debug-support.cc:41: error: ‘kContentArrayIndex’ is not a member of ‘v8::internal::DescriptorArray’
13:01:57  <indutny>that's how it failed for me anyway
13:02:01  <piscisaureus_>indutny: yes, that's known broken in v8
13:02:10  <piscisaureus_>indutny: if you fix it, v8 will take the patch
13:02:14  <piscisaureus_>erik just confirmed that
13:02:26  <indutny>ok
13:06:35  <indutny>oh, quite simple actually
13:07:31  <indutny>just need to figure out what is a correct value for kContentArrayIndex
13:08:05  <indutny>:D
13:09:40  * paddybyersjoined
13:12:50  <indutny>ah, it was removed
13:12:56  <piscisaureus_>ircretary: tell bnoordhuis we're working on a proper fix for https://github.com/joyent/node/commit/26f754d
13:12:56  <ircretary>piscisaureus_: I'll be sure to tell bnoordhuis
13:14:25  <indutny>piscisaureus_: huh?
13:14:41  <piscisaureus_>indutny: ?
13:14:52  <indutny>piscisaureus_: nvm
13:14:55  <piscisaureus_>indutny: well, that patch needs to go upstream
13:15:14  <piscisaureus_>indutny: but instead of treating a partial send as a failure, we just need to retry with the rest of the bytes
13:15:55  <indutny>piscisaureus_: oh, that should be quite simple
13:15:59  <piscisaureus_>yes
13:16:04  <indutny>piscisaureus_: I fixed postmortem thing
13:16:06  <indutny>doing build
13:16:10  <piscisaureus_>we just have to change platform-posix
13:16:33  <indutny>piscisaureus_: do you need my help on that thing?
13:16:44  <piscisaureus_>indutny: not really, I think
13:17:04  <indutny>ok
13:17:12  <piscisaureus_>indutny: if you really like to do it, you can tho
13:17:27  <indutny>I don't mind if you'll do it :P
13:39:23  <saghul>piscisaureus_ did you test the ares update to 1.8 on Windows?
13:39:47  <saghul>ben's branch, that is
13:41:56  <piscisaureus_>nope
13:42:01  * irajoined
13:42:04  <piscisaureus_>indutny: did you finish that patch ?
13:44:07  <saghul>ok
13:44:24  <saghul>something changed in there, it's dog slow :-S
13:44:32  <indutny>piscisaureus_: https://chromiumcodereview.appspot.com/10539132/
13:45:07  <piscisaureus_>indutny: cool
13:45:31  <piscisaureus_>indutny: I am going to repush the v8.11 branch
13:45:37  <piscisaureus_>with your patch included
13:45:44  <indutny>ok
13:46:15  * c4milojoined
13:49:47  * hz|pc2joined
13:49:54  <hz|pc2>hello
13:50:44  <hz|pc2>can libuv make non blocking-read from stdin?
13:51:02  <hz|pc2>(on win)
13:51:14  <piscisaureus_>yes, well, it depends on what stdin is
13:51:21  <piscisaureus_>from the console?
13:51:23  <piscisaureus_>yes
13:51:31  <hz|pc2>generic stdin
13:51:46  <piscisaureus_>libuv does not understand the concept of a generic stdin right now
13:51:58  <hz|pc2>so it handles only consoles?
13:51:58  <piscisaureus_>you'd have to see whether it is a file, a pipe or a console
13:52:04  <piscisaureus_>and act appropriately
13:52:04  <piscisaureus_>no
13:52:12  <piscisaureus_>it can also deal with pipes
13:52:19  <hz|pc2>mmm
13:52:36  <piscisaureus_>if it is a file you can use the uv_fs_ methods
13:52:50  <hz|pc2>i read everywhere posts talking about make pipe connection or use thread reader
13:52:51  <piscisaureus_>but that's a very different interface from pipes and ttys
13:53:04  <hz|pc2>but it sound very dirty solution
13:53:18  <piscisaureus_>that is what libuv does under the hood if it has no other options
13:53:28  <piscisaureus_>well, it never makes a pipe coupling
13:53:28  <hz|pc2>i see
13:53:41  <piscisaureus_>but when you use line-buffered read it will use a thread, yes
13:55:15  <hz|pc2>src\win\process.c?
13:55:32  <hz|pc2>all this hidden login is into this file?
13:55:46  <hz|pc2>logic*
13:56:13  <piscisaureus_>hz|pc2: no it is in src/win/tty.c
13:56:26  <hz|pc2>lets check :D
13:56:31  <hz|pc2>tnx for reply
14:00:36  <CIA-108>node: Bert Belder v8-3.11 * r25b4599 / (373 files in 21 dirs): v8: upgrade to v3.11.10 - http://git.io/EsuUpw
14:00:37  <CIA-108>node: mstarzinger@chromium.org v8-3.11 * r09aad64 / (3 files in 2 dirs): Fix performance regression caused by r11202. - http://git.io/7YWAqQ
14:00:37  <CIA-108>node: Bert Belder v8-3.11 * r99195c9 / deps/v8/build/common.gypi : v8: reapply floating patches - http://git.io/GkmwuA
14:00:37  <CIA-108>node: Fedor Indutny v8-3.11 * re04398d / deps/v8/tools/gen-postmortem-metadata.py : v8: fix postmortem debugging tools build - http://git.io/2ZNRtg
14:01:51  <indutny>nice
14:03:41  * iraquit (Quit: Computer has gone to sleep.)
14:05:26  * ericktjoined
14:07:27  <hz|pc2>which ide libuv source can be opened with?
14:08:03  <piscisaureus_>umm
14:08:06  <piscisaureus_>any ide?
14:08:11  <tjfontaine>vim
14:08:53  <piscisaureus_>hz|pc2: you can generate visual stduio project files with `vcbuild nobuild`. But you'd have to install gyp and python first.
14:09:02  <piscisaureus_>(otherwise generating does not work)
14:09:55  <hz|pc2>have you considered cmake?
14:10:03  * xaqjoined
14:10:26  <piscisaureus_>considered, yes
14:10:31  <piscisaureus_>and we didn't go for it
14:10:33  <hz|pc2>discarded?
14:10:48  <hz|pc2>what a pity :)
14:11:46  * xaqquit (Read error: Connection reset by peer)
14:11:53  <piscisaureus_>hz|pc2: try to spend some time what there is now before you start complaining about engineering decisions
14:12:03  <piscisaureus_>hz|pc2: we picked gyp because it's much better than cmake :-)
14:12:18  * xaqjoined
14:12:56  <hz|pc2>im not complaining at all :)
14:17:01  <piscisaureus_>:)
14:17:44  <hz|pc2>it ares a dns lib client?
14:17:53  <piscisaureus_>yes
14:18:01  <piscisaureus_>at some point we will remove ares from libuv
14:18:11  <piscisaureus_>integrating ares and libuv is quite easy
14:18:27  <piscisaureus_>and for the not so demanding users there is uv_getaddrinfo
14:20:45  <hz|pc2>nice
14:26:57  <indutny>gyp is just awesome
14:27:17  <indutny>especially when embedding one gyp project into another
14:27:31  <indutny>and it can figure out some dependencies automatically
14:27:34  <indutny>I really like gyp
14:28:15  * toothrjoined
14:29:25  * \toothrotquit (Ping timeout: 240 seconds)
14:32:05  <hz|pc2>can you suggest me a test (from libuv tests) using non-blocking or async stdin read?
14:32:56  <hz|pc2>im trying with test-tty.c
14:33:01  <hz|pc2>lets see
14:33:27  * hij1nxjoined
14:35:01  <piscisaureus_>hz|pc2: test-tty doesn't really do async tty read
14:35:14  <piscisaureus_>hz|pc2: however you can quite easily hack it to do that
14:35:35  <hz|pc2>im looking for a ready code to study how to use it
14:36:52  <piscisaureus_>hz|pc2: I don't think there is any test that does that (because it's quite impossible to automate tests that do that)
14:37:04  <piscisaureus_>hz|pc2: however, the trick is to set up a read callback
14:37:17  <hz|pc2>yes
14:37:39  <hz|pc2>i noticed just few mins ago its a big automated test
14:37:59  <piscisaureus_>eg. you would change uv_tty_t to do this
14:38:06  <piscisaureus_>uv_read_start((uv_stream_t*)(req->handle), alloc_cb, read_cb);
14:38:29  <piscisaureus_>you can copy alloc_cb from test-ping-pong.c
14:38:55  <piscisaureus_>and the read cb should look like
14:39:14  <hz|pc2>im trying
14:40:53  <piscisaureus_>static void read_cb(uv_stream_t* stream, ssize_t nread, uv_buf_t buf) {
14:40:53  <piscisaureus_> if (nread > 0) fwrite(buf.base, 1, nread, stdout)
14:40:53  <piscisaureus_> if (buf.base != NULL) free(buf.base)
14:40:56  <piscisaureus_>}
14:40:58  <piscisaureus_>^-- easy
14:44:17  <indutny>piscisaureus_: alloc_cb is some sort of wrapper of malloc?
14:44:31  <hz|pc2>its alloc a buffer
14:44:36  <piscisaureus_>indutny: libuv will call that if it needs a buffer to read into
14:44:50  <piscisaureus_>indutny: so, naively, you can just make it call malloc
14:45:02  <tjfontaine>but block and arena allocators for the win
14:45:03  <piscisaureus_>indutny: in node we use it to link libuv to the slab allocator
14:45:22  <indutny>yeah
14:47:50  * bnoordhuisjoined
14:48:11  <pfox__>howdy. 0.8 is coming up. pretty exciting!
14:48:51  <pfox__>i have some q's, re: uv_ip*_addr .. how do you determine a failed parse?
14:48:53  <indutny>indeed :)
14:49:35  <hz|pc2>uv_read_start -> uv_tcp_read_start, uv_pipe_read_start, uv_tty_read_start
14:50:01  <hz|pc2>mm
14:50:38  * irajoined
14:51:57  <piscisaureus_>pfox__: it will return INADDR_NONE
14:53:01  <piscisaureus_>pfox__: although I think uv_ip6_addr handles failures well
14:53:06  <pfox__>piscisaureus_: also, i see uv_walk is in uv.h on master.. congrats!
14:53:07  <hz|pc2>every handle has a loop
14:53:09  <piscisaureus_>pfox__: I could change that
14:53:15  <hz|pc2>what is this loop?
14:53:36  <piscisaureus_>hz|pc2: a reference to the event loop
14:53:49  <piscisaureus_>you create a loop with uv_loop_init or uv_default_loop()
14:53:55  <piscisaureus_>and you run a loop with uv_run(loop)
14:54:06  <hz|pc2>i see
14:54:16  <bnoordhuis>piscisaureus_: https://github.com/joyent/node/commit/26f754d <- what proper fix?
14:54:26  <bnoordhuis>i think that patch landed upstream btw
14:54:35  <hz|pc2>uv_loop_t* loop = handle->loop; ... uv_tty_queue_read(loop, handle);
14:54:36  <piscisaureus_>bnoordhuis: the fix you did
14:54:44  <pfox__>piscisaureus_: the return val of uv_ip4_addr is a sockaddr_in struct..
14:54:53  <pfox__>will INADDR_NONE be set on one of the props?
14:54:57  <piscisaureus_>aah hmm
14:54:57  <piscisaureus_>yes
14:55:02  <piscisaureus_>pfox__: this is not so nice tho
14:55:24  <piscisaureus_>pfox__: in case of ipv4 it will set set it to sockaddr_in.in_addr
14:55:34  * pfox__nods
14:55:39  <pfox__>and for a sockaddr_in6?
14:55:45  <piscisaureus_>it doesn't handle failures
14:55:47  <piscisaureus_>:-9
14:55:49  * hij1nxquit (Read error: Connection reset by peer)
14:55:53  <piscisaureus_>this has to be fixed
14:56:04  <pfox__>what is the behavior? crash? undefined?
14:56:28  <bnoordhuis>gigo
14:56:31  <bnoordhuis>garbage in, garbage out
14:56:35  <bnoordhuis>(i think)
14:56:35  <piscisaureus_>yes, that
14:56:37  <piscisaureus_>undefined crap
14:56:57  * ericktquit (Quit: erickt)
14:56:59  <piscisaureus_>pfox__: so the return value on parse error is garbage
14:57:04  <piscisaureus_>\o/ yay
14:57:18  * pfox__nods
14:57:23  <piscisaureus_>I wonder if we could fix that properly tho
14:57:30  <piscisaureus_>would require an API change I am afraid
14:58:28  <pfox__>and for uv_ip*_name() .. if the result is non-zero.. is there a meaningful error in uv_last_error() or should i assume bad input ..?
14:59:04  <bnoordhuis>pfox__: they don't set errors
14:59:11  <bnoordhuis>consider them convenience functions, nothing more (i do)
14:59:13  <piscisaureus_>they set ares errors I think
14:59:19  <pfox__>could probably use uv_ip6_name to determine if a sockaddr_in6 produced via uv_ip6_addr is valid...?
14:59:41  <piscisaureus_>bnoordhuis: we could change these things to look like
14:59:41  <piscisaureus_>uv_err_t uv_ip4_name(foo& output)
14:59:41  <bnoordhuis>maybe it's time for uv_ip4_addr2 and uv_ip6_addr2
14:59:57  <piscisaureus_>yeah
15:00:21  <pfox__>so how's the refcount refactor been working out for you guys?
15:00:25  <bnoordhuis>great
15:00:27  <piscisaureus_>bnoordhuis: https://chromiumcodereview.appspot.com/10416006
15:00:28  <pfox__>ive got a bunch of work pending to land in rust
15:00:35  <piscisaureus_>bnoordhuis: that was the proper fix
15:00:37  <pfox__>will probably update our submodule and adjust things, after that
15:01:41  <bnoordhuis>piscisaureus_: ah right, i wondered if that needed to be handled on windows as well
15:01:48  <piscisaureus_>bnoordhuis: I think you did
15:01:52  <piscisaureus_>bnoordhuis: but it's not needed
15:02:02  <piscisaureus_>bnoordhuis: send() does a partial send on windows
15:02:12  <piscisaureus_>er, it *never* does
15:02:22  <bnoordhuis>ah, right :) that makes more sense
15:02:37  <piscisaureus_>bnoordhuis: but just for the sake of correctness, https://chromiumcodereview.appspot.com/10416006/patch/1/3
15:02:40  <piscisaureus_>it is there anyway
15:02:55  <bnoordhuis>cool
15:03:19  <bnoordhuis>pfox__: re refcount refactor: i daresay libuv has become a lot more stable / bug free
15:03:29  <bnoordhuis>also easier to reason about
15:04:18  <bnoordhuis>easier to use, too
15:04:30  <pfox__>nice
15:07:23  <hz|pc2>LOOP_ONCE its not once :)
15:07:40  <hz|pc2>if ((loop)->refs <= 0) { break;
15:08:20  <tjfontaine>did you expect uv_run_once?
15:11:26  * avalanche123joined
15:13:13  <hz|pc2>i end up here: uv_tty_queue_read_raw
15:14:04  * mikealquit (Quit: Leaving.)
15:17:53  <piscisaureus_>hz|pc2: what's up with that ?
15:18:35  <hz|pc2>i just figure out how read request form tty being packet and enqueued
15:18:44  <hz|pc2>from*
15:19:05  <hz|pc2>hard to track this code :)
15:19:15  <hz|pc2>void * everywhere
15:19:18  <piscisaureus_>hz|pc2: uv_tty_queue_read_raw calls RegisterWaitForSingleObject(tty->handle)
15:19:31  <hz|pc2>yes
15:19:41  <piscisaureus_>windows will wait for the tty handle to become signaled
15:19:57  <piscisaureus_>(because that's what happens when there are keypresses waiting in the buffer)
15:20:14  <piscisaureus_>and when that happens it calls a function in the wait thread pool
15:20:15  <hz|pc2>in unwrapped code i would waitfor handle
15:20:17  <hz|pc2>direclty
15:20:23  <hz|pc2>blocking
15:20:27  <piscisaureus_>yes
15:20:43  <hz|pc2>this is for IOCP?
15:20:44  <piscisaureus_>so the callback (that runs in the wait thread pool) posts the request to the completion port
15:20:58  <piscisaureus_>and then the main thread picks it up from the completion port
15:21:26  <piscisaureus_>and it dispatches it to uv_tty_process_read_req_raw (or something similar)
15:21:50  <piscisaureus_>which uses ReadConsoleInput (or maybe PeekConsoleInput) to read the keypresses and translate them into vt100 key codes
15:21:59  <piscisaureus_>and then calls the user callback
15:22:06  <hz|pc2>:)
15:22:15  <hz|pc2>so IOCP is used here
15:22:28  <piscisaureus_>yes, well, the iocp is always used
15:22:37  <piscisaureus_>but it only makes much sense for sockets
15:23:09  <hz|pc2>general events too
15:23:13  <piscisaureus_>bit since the main thread blocks on GetQueuedCompletionStatus we have to wake up the main loop somehow when the console handle is signaled
15:23:45  <hz|pc2>yes
15:23:46  * TheJHjoined
15:23:54  <piscisaureus_>in the end, everything must go through the iocp
15:23:58  <hz|pc2>you eventize console_readiness
15:24:09  <hz|pc2>and post this event on IOCP
15:29:20  <hz|pc2>do you ahve some diagram to study calls?
15:29:32  <hz|pc2>life diagram..?
15:31:29  <hz|pc2>sequence diagrams i mean
15:34:43  <hz|pc2>to emulare e non-blocking call can i use waitforsingleobject with very low timeout?
15:34:53  <hz|pc2>its a reasonable idea?
15:35:30  <piscisaureus_>hz|pc2: no
15:38:20  <hz|pc2>better alternative?
15:38:43  * paddybyersquit (Quit: paddybyers)
15:39:52  <piscisaureus_>hz|pc2: it depends entirely on your situation. I have no clue what you are doing, what you're working or, and why a blocking read would not work.
15:39:52  <piscisaureus_>However, I can tell you that WaitForSingleObject with a low timeout is not a reasonable solution for any problem :-0
15:40:54  <piscisaureus_>hz|pc2: my 2 cents: unless you have a very important reason to not do it, just create a thread for it
15:41:49  <CIA-108>node: Bert Belder master * r0187b65 / (5 files in 3 dirs): Move resource files to src/res. - http://git.io/tEUb4w
15:44:10  <hz|pc2>i just want to effer non blocking method as an api
15:44:42  <hz|pc2>i ust need something like try_read
15:44:47  <piscisaureus_>aah
15:44:52  <piscisaureus_>PeekConsoleInput maybe?
15:46:07  <hz|pc2>mmm if can i peek 0 bytes its ok
15:54:34  <hz|pc2>errr
15:54:43  <hz|pc2>what i said? lol
15:54:50  <hz|pc2>i can use peek and after read
15:54:51  <hz|pc2>?
15:55:57  <hz|pc2>2 calls.. non very nice
16:01:38  * hij1nxjoined
16:04:35  <piscisaureus_>hz|pc2:
16:04:36  <piscisaureus_>BOOL WINAPI GetConsoleInput(
16:04:36  <piscisaureus_> IN HANDLE hConsoleInput,
16:04:36  <piscisaureus_> OUT PINPUT_RECORD lpBuffer,
16:04:36  <piscisaureus_> IN DWORD nLength,
16:04:36  <piscisaureus_> OUT LPDWORD lpNumberOfEventsRead,
16:04:36  <piscisaureus_> IN USHORT wFlags,
16:04:37  <piscisaureus_> IN BOOLEAN Unicode
16:04:37  <piscisaureus_> )
16:04:38  <piscisaureus_>dwFlags: CONSOLE_READ_NOREMOVE, CONSOLE_READ_NOWAIT
16:04:39  <piscisaureus_>dll: Kernel32.dll
16:06:10  <piscisaureus_>or rather, just use ReadConsoleInputEx
16:09:01  <hz|pc2>tnx ill try
16:09:26  * stephankjoined
16:12:49  * xaqquit (Read error: Connection reset by peer)
16:13:18  * xaqjoined
16:16:11  * ericktjoined
16:18:45  * dapjoined
16:22:26  * bnoordhuistopic: #libuv - no zombies were harmed in the making of this library
16:42:21  <pfox__>only the living!
16:42:32  <hz|pc2>piscisaureus_: i cant find GetConsoleInput on msdn
16:42:35  <hz|pc2>its strange
16:43:42  <hz|pc2>windows.h neither
16:48:27  <AvianFlu>�isn't harming zombies generally a good thing?
16:55:34  * loladirojoined
16:59:13  * loladiroquit (Read error: Connection reset by peer)
16:59:19  * loladiro_joined
17:04:51  * loladiro_quit (Read error: Connection reset by peer)
17:04:56  * loladirojoined
17:05:11  * pieternjoined
17:06:08  * loladiro_joined
17:09:17  * loladiroquit (Ping timeout: 244 seconds)
17:09:18  * loladiro_changed nick to loladiro
17:12:57  * ericktquit (Quit: erickt)
17:18:46  <CIA-108>libuv: Bert Belder master * r07c6ac2 / (5 files in 3 dirs): windows: move child stdio buffer ops to a separate file - http://git.io/Ek6DPg
17:20:43  * travis-cijoined
17:20:43  <travis-ci>[travis-ci] joyent/libuv#409 (master - 07c6ac2 : Bert Belder): The build passed.
17:20:43  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/9f44b0e393f6...07c6ac2b553b
17:20:43  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1612664
17:20:43  * travis-cipart
17:22:16  * stephankquit (Quit: *Poof!*)
17:22:25  * loladiroquit (Ping timeout: 240 seconds)
17:28:36  * TheJHquit (Ping timeout: 248 seconds)
17:33:12  * loladirojoined
17:33:49  * loladiropart
17:37:06  * stephankjoined
17:38:54  * iraquit (Quit: Textual IRC Client: http://www.textualapp.com/)
17:38:55  * loladiro_joined
17:40:23  * isaacsjoined
17:43:45  * TooTallNatejoined
17:44:17  * ericktjoined
17:50:57  * brsonjoined
17:52:51  <isaacs>good morning
17:55:05  <TooTallNate>isaacs: morning
17:56:54  * c4miloquit (Remote host closed the connection)
17:57:07  <piscisaureus_>mornin isaacs
18:00:32  <isaacs>piscisaureus_: can you review? https://github.com/joyent/node/pull/3422
18:04:40  <piscisaureus_>isaacs: so you also added listen(handle) ?
18:05:00  <isaacs>piscisaureus_: it was actually already there, i just cleaned it up a little
18:05:07  <isaacs>piscisaureus_: cluster uses it
18:05:32  <piscisaureus_>as a part of the api cleanup in 0.9 we should expand the object syntax there
18:05:44  <piscisaureus_>but so far it looks good
18:05:45  <isaacs>piscisaureus_: i just made it so you can do server.listen(otherServer) instead of server.listen(otherServer._handle)
18:06:01  <isaacs>"expand the object syntax there" ?
18:06:24  <piscisaureus_>isaacs: listen({port: 123, host: '129.1.2.3'})
18:06:38  <piscisaureus_>isaacs: we are kind of inconsistent here
18:06:46  <isaacs>oh, right
18:06:48  <isaacs>yeah, that's a messa
18:06:49  <isaacs>*mes
18:06:55  <piscisaureus_>e.g. net.connect({ port: 123 }) // doesn't work
18:07:02  <piscisaureus_>tls.connect({ port: 123 }) // works
18:07:06  <piscisaureus_>that's just lame
18:07:37  <piscisaureus_>new net.Socket({port: 123}) // works
18:08:36  <piscisaureus_>isaacs: 1e2fa5f3984d25dacd6a75a07c1d86b35dc3b962
18:08:43  <piscisaureus_>isaacs: i don't think that works
18:09:22  <piscisaureus_>isaacs: it only works in an inheritance scenario right ?
18:09:32  <isaacs>piscisaureus_: what part of it doesn't work?
18:09:46  <isaacs>if the master has a fd open, then the children can listen on that fd
18:10:04  <piscisaureus_>isaacs: yes, but the fd doesn't have the same value in all processes
18:10:09  <isaacs>doesn't matter
18:10:13  <isaacs>the fd is only actually in the master process
18:10:21  <isaacs>that's where it gets opened, and the handle sent to the children
18:10:52  <isaacs>the children don't actually have it, only the parent does
18:11:40  <piscisaureus_>isaacs: well, the children have it, but the fd is different :-)
18:12:00  <isaacs>sure, i mean, they don't have an fd:3 to listen on
18:13:36  <piscisaureus_>this is actually one of these scenarios where 'accidental' inheritance of fds is desirable ;-)
18:13:47  <piscisaureus_>I think , the first one I ever encountered
18:15:52  <piscisaureus_>although it would never be reliable
18:19:59  <CIA-108>libuv: Bert Belder reviewme * r30060d3 / (4 files in 3 dirs): unix, windows: implement uv_disable_stdio_inheritance - http://git.io/5cw7_Q
18:20:12  * irajoined
18:21:29  <piscisaureus_>bnoordhuis: ^-- can you review that
18:21:55  * travis-cijoined
18:21:56  <travis-ci>[travis-ci] joyent/libuv#410 (reviewme - 30060d3 : Bert Belder): The build passed.
18:21:56  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/fab7b7bbf7f7...30060d3472ee
18:21:56  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1613105
18:21:56  * travis-cipart
18:22:02  <piscisaureus_>isaacs: do you have some time for me?
18:22:09  <isaacs>piscisaureus_: yeah, if someone's using cluster, i really don't expect that they'll ned listenFD
18:22:11  <isaacs>piscisaureus_: sure.
18:22:12  <piscisaureus_>isaacs: when a worker does listen({fd: 29})
18:22:24  <piscisaureus_>who'se fd does it listen on?
18:22:36  <piscisaureus_>the worker's or the parent's 29 ?
18:22:36  <isaacs>whatever fd=29 points to in the master
18:22:39  <isaacs>the master's
18:22:43  <isaacs>parent's
18:22:50  <isaacs>it works just like listen port=8000
18:23:05  <isaacs>the worker says, "Hay, master, make a listen on 8000, and gimme the handle"
18:23:12  <piscisaureus_>isaacs: ok, I see
18:23:15  <isaacs>now, the worker says, "Hay, master, make a listen on fd=3, and gimme the handle"
18:23:17  <isaacs>so ti's the master's fd
18:23:22  <isaacs>again, that's *very* unlikely.
18:23:33  <isaacs>cluster is already a much better way to share listening
18:23:44  <isaacs>this is only relevant in cases where you've received a fd from somewhere else, and want to listen on it
18:23:55  * AndreasMadsenjoined
18:24:51  <piscisaureus_>isaacs: right, ok
18:25:21  * loladiro_quit (Ping timeout: 244 seconds)
18:25:27  <piscisaureus_>isaacs: it seems to me that this should be documented.
18:25:34  <piscisaureus_>isaacs: then I can live with it :-)
18:26:01  <isaacs>great!
18:26:24  <isaacs>piscisaureus_: what does it do on windows?
18:26:26  <piscisaureus_>isaacs: it seems rather odd though that this scenario is possible (in a worker):
18:26:26  <piscisaureus_>fd = fs.openSync('foo'); //3
18:26:26  <piscisaureus_>net.listen({fd: 3}) <-- omg it works, I am listening a file
18:26:27  * TheJHjoined
18:26:27  <isaacs>anything useful?
18:26:38  <piscisaureus_>isaacs: no, it doesn't work on windows
18:26:41  <piscisaureus_>:-)
18:26:41  <isaacs>kewl
18:26:52  <piscisaureus_>isaacs: I will actually try it now
18:26:56  <isaacs>does it break in an obvious way, or should we add a platform check to make sure?
18:27:00  <piscisaureus_>so it seems we have to disable the tests on windows :-)
18:27:07  <piscisaureus_>isaacs: I am going to try now
18:29:57  <piscisaureus_>test\simple\test-listen-fd-cluster.js: ENOTSUP
18:30:10  <isaacs>hooray!!
18:30:19  <isaacs>ENOTSUP was the error i was hoping for
18:30:33  <piscisaureus_>all the other tests fail with enotsup
18:30:42  <piscisaureus_>isaacs: can you skip them on windows?
18:30:55  <isaacs>k, will do
18:31:04  <isaacs>i was waiting for you to tell me there's no clever way to make it work
18:31:15  <piscisaureus_>isaacs: there is :-)
18:31:27  <isaacs>orly? worth doing, or no?
18:31:39  <piscisaureus_>isaacs: but I am going to tell you now, I am not going to anytime soon, er even at all
18:31:52  <isaacs>ok, kewl
18:31:52  <piscisaureus_>isaacs: well, it's a lot of work to cover a fringe case
18:31:56  <isaacs>right
18:32:00  <isaacs>i'm totally fine with that
18:32:13  <piscisaureus_>isaacs: on windows no other process, ever, would supply you with a bound socket to listen on
18:32:33  <piscisaureus_>isaacs: however I can make it work for situations where a node process does that to another node process
18:33:15  <piscisaureus_>(by allocating more room for the lpReserved2 buffer than necessary, and adding appropriate WSA_INFOW structures there
18:33:22  <piscisaureus_>however, don't hold your breath :-)
18:33:45  <isaacs>yep
18:34:10  <piscisaureus_>isaacs: I mean, we currently also don't support sending connected tcp sockets over an ipc channel
18:34:17  <piscisaureus_>that seems like a more useful scenario to me
18:34:36  <piscisaureus_>hmm maybe igorzi_ made that work
18:34:43  <piscisaureus_>anyway there's a lot of unsupported stuff in this area
18:37:28  * igorzi_quit (Ping timeout: 245 seconds)
18:38:27  <isaacs>yep.
18:43:01  * loladirojoined
18:45:32  <piscisaureus_>isaacs: lgtm btw
18:45:35  * c4milojoined
18:45:38  <isaacs>kewl
18:45:55  * TheJHquit (Ping timeout: 240 seconds)
18:46:02  <piscisaureus_>isaacs: but please doc that behaviour w/ cluster
18:47:04  <piscisaureus_>bnoordhuis: what if someone does spawn(x, a, {stdio: [pipe, pipe, pipe, ignore, ignore, pipe]})
18:47:14  <piscisaureus_>bnoordhuis: it will stop at the first ignore
18:47:27  <isaacs>writing the doc now
18:53:52  * xaqquit (Read error: Connection reset by peer)
18:54:25  * xaqjoined
19:00:41  * japjjoined
19:06:20  <isaacs>bnoordhuis, piscisaureus_: thoughts on listen(0) in cluster?
19:06:42  <isaacs>i'm tempted to just document it now, while i'm here in the cluster doc, but it's not hte first time someone's complained, and there's a pull req to fix it.
19:06:44  <piscisaureus_>isaacs: should probably bind on a random port in the master
19:06:53  <piscisaureus_>isaacs: does it not?
19:07:13  <isaacs>piscisaureus_: it binds to the same random port on the master each time a child does listen(0)
19:07:19  <isaacs>piscisaureus_: instead of a new one each time
19:07:22  <piscisaureus_>aah
19:07:26  <piscisaureus_>yeah that's lame
19:07:48  <piscisaureus_>although, heh
19:08:00  <isaacs>if you don't want server sharing why are you using cluster?
19:08:00  <piscisaureus_>how would the other processes know on which random port it binds?
19:08:14  <isaacs>well, there are some valid use cases, i suppose
19:08:19  <piscisaureus_>I mean, we could change it to listen on a random port
19:08:27  <piscisaureus_>but then there's no point of going through master
19:08:34  <isaacs>let's say i want my http server to be shared across, and each cluster module to have a tcp server so i can repl into them individually
19:08:55  <isaacs>right, so the cluster._getServer would see port=0 and just not ask the parent.
19:08:57  <piscisaureus_>isaacs: yeah, but what if you want a worker to listen on a shared port
19:09:06  <piscisaureus_>and *also* on a private port ?
19:09:08  <isaacs>piscisaureus_: then you specify which port it is
19:09:13  <isaacs>hm...
19:09:14  <isaacs>yeah
19:09:29  <piscisaureus_>isaacs: but what if you wanted to listen on a specific shared port?
19:09:33  <isaacs>well, another way you could do that is have the master manage who gets what ports
19:09:47  <isaacs>so, it's shared, but only with you
19:09:48  <piscisaureus_>like 10000 + worker.id :-)
19:09:50  <isaacs>sure
19:10:32  <AndreasMadsen>isaacs: you can listen to more than one port in a worker so both listen(8000) and listen(0) but you only wan't 8000 to be shared. I won't say whats the best solution in this case, just don't limit your decissionmaking to the case where a worker only listen to an random port
19:10:45  <isaacs>AndreasMadsen: right
19:10:51  <AndreasMadsen>s/wan't/want
19:10:58  <isaacs>AndreasMadsen: what about something like, listen(8000, { shared: false }) or something
19:11:09  <piscisaureus_>isaacs: listen({port: 80, private: true}) :-p
19:11:15  <isaacs>sure, that too
19:11:16  <isaacs>:)
19:11:26  <isaacs>so, if it has private: true, don't ask the parent at all
19:11:37  <piscisaureus_>I dunno
19:11:45  <piscisaureus_>maybe {shared: true} would be ebtter
19:12:00  <isaacs>yeah, it's not that it's *private*
19:12:02  <isaacs>it's that it's not shared
19:12:04  <piscisaureus_>let it rest for a minute
19:12:05  <isaacs>not the same thign
19:12:08  <isaacs>kewl.
19:12:18  <isaacs>i'm just gonna document that 0 is "the same random"
19:12:33  <AndreasMadsen>isaacs: I have thought about that, it is a good solution but I'm like you concerned that cluster will turn intro an high level child_process.fork.
19:12:55  <isaacs>let's clean it up in 0.9
19:13:01  <isaacs>punting for now. just gonna document the weirdness.
19:13:11  <isaacs>we can come up with something nice later.
19:14:43  <AndreasMadsen>isaacs: fine, they can always just send a request to the master and manually send the Server object using process.send if I'm not mistaken.
19:15:09  <isaacs>AndreasMadsen: yeah, or listen(worker.id + 10000)
19:16:03  <AndreasMadsen>isaacs: hehe, that too but you never know what these kids have running now days.
19:18:08  * hij1nxquit (Quit: hij1nx)
19:19:01  <isaacs>piscisaureus_: https://github.com/joyent/node/pull/3422#commits-pushed-cedca35
19:19:13  <isaacs>piscisaureus_: also removed the extraneous cases from the switch, but that's not showing up yet.
19:23:05  <piscisaureus_>isaacs: lgtm, minus a typo
19:23:06  * loladiroquit (Ping timeout: 252 seconds)
19:23:43  <isaacs>piscisaureus_: s/therefor/therefore/
19:23:44  <isaacs>?
19:23:51  <isaacs>(which yes, is a typo, i don't see any other ones)
19:23:52  <piscisaureus_>isaacs: yes
19:24:02  <isaacs>k
19:24:11  <isaacs>fixed
19:24:23  <isaacs>ok, i'm gonna squash into one commit and land it.
19:24:37  * loladirojoined
19:27:49  <CIA-108>node: isaacs master * re733dc3 / (10 files in 3 dirs): Fix #3388 Support listening on file descriptors - http://git.io/xbIyPA
19:29:57  * xaqquit (Read error: Connection reset by peer)
19:30:16  <isaacs>oh, i should've split the doc patch out to be more git-correct and atomic. oh well.
19:30:23  * xaqjoined
19:32:23  * hij1nxjoined
19:33:03  <piscisaureus_>shrug
19:34:27  * hij1nxquit (Client Quit)
19:36:12  * TheJHjoined
19:39:15  <CIA-108>libuv: Bert Belder reviewme * rf043a73 / src/unix/core.c : Unix: make uv_disable_stdio_inheritance more aggressive - http://git.io/yaR61w
19:39:23  <piscisaureus_>bnoordhuis: ^-- like that, then ?
19:39:50  * travis-cijoined
19:39:50  <travis-ci>[travis-ci] joyent/libuv#411 (reviewme - f043a73 : Bert Belder): The build was broken.
19:39:50  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/30060d3472ee...f043a73ff8dc
19:39:50  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1613635
19:39:50  * travis-cipart
19:42:59  <CIA-108>libuv: Bert Belder reviewme * rdfffbc0 / src/unix/core.c : Unix: make uv_disable_stdio_inheritance more aggressive - http://git.io/wt0i7w
19:43:05  <piscisaureus_>travis-ci++
19:44:18  * loladiroquit (Read error: Connection reset by peer)
19:44:56  * travis-cijoined
19:44:56  <travis-ci>[travis-ci] joyent/libuv#412 (reviewme - dfffbc0 : Bert Belder): The build was fixed.
19:44:56  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/f043a73ff8dc...dfffbc09e764
19:44:56  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1613656
19:44:56  * travis-cipart
19:45:14  * loladirojoined
20:02:29  * igorzijoined
20:10:09  * loladiroquit (Read error: Connection reset by peer)
20:10:24  * loladirojoined
20:13:36  <CIA-108>node: Bert Belder master * r74c8041 / test/pummel/test-child-process-spawn-loop.js : test-child-process-spawn-loop: make it pass on Windows. - http://git.io/zCW2BA
20:13:38  <piscisaureus_>igorzi: yes
20:23:22  * bitprobejoined
20:29:52  * brsonquit (Ping timeout: 244 seconds)
20:32:24  * brsonjoined
20:38:08  * xaqquit (Remote host closed the connection)
20:40:52  * xaqjoined
20:41:36  <japj>isaacs: I have a question related to https://github.com/joyent/node/issues/2318 and npm 'bin' scripts on windows
20:42:38  <piscisaureus_>japj: I would take a (libuv) patch for that :-)
20:42:41  <japj>isaacs: I am trying to use mocha through roto which tries to 'spawn' mocha, which does not work since mocha is a .cmd file and not an .exe
20:43:21  <isaacs>japj: you should be able to spawn mocha
20:43:26  <isaacs>japj: i spawn cmd's sometimes
20:43:33  <piscisaureus_>japj: you should spawn it with spawn('cmd', ['/c', 'mocha.cmd'], { windowsVerbatimArguments: true })
20:44:00  <japj>well, roto spawns mocha and it does not know about cmd /c
20:44:06  <isaacs>oh, right, that
20:44:18  <isaacs>japj: it should probably exec() mocha instead :)
20:44:27  <japj>similar to every other thing using spawn I guess
20:44:50  * brsonquit (Ping timeout: 245 seconds)
20:45:05  <japj>hmm
20:45:56  <japj>atleast there should be some kind of uniform pattern/instruction on how to deal with this correctly from a cross platform point of view
20:46:16  <japj>it's driving me slightly insane ;)
20:47:57  * TheJHquit (Ping timeout: 244 seconds)
20:48:35  <japj>oh wait, it seems roto is actually spawning process.argv[0] with args '/node_modules/.bin/_mocha' ... sigh
20:49:08  <isaacs>japj: that's very wrong
20:49:08  * loladiroquit (Read error: Connection reset by peer)
20:49:13  <AvianFlu>yeah lol
20:49:15  <isaacs>japj: don't !@#$ing do that.
20:49:18  * loladirojoined
20:49:27  <japj>I didnt do that, the author of roto did
20:49:30  <piscisaureus_>huh, does that even work on unix
20:49:31  <isaacs>japj: if *anything* it should be spawing node_modules/.bin/mocha
20:49:46  <isaacs>piscisaureus_: yes, but only by accident, and it breaks the third wall
20:49:56  <isaacs>piscisaureus_: tj could change the location of the bin in the project, and it'll break
20:50:05  <isaacs>japj: wait... _mocha?
20:50:09  <isaacs>japj: sorry, i read that wrong
20:50:11  <AvianFlu>do you mean "fourth wall"? or is it not the same joke
20:50:22  <isaacs>AvianFlu: oh, right, fourth wall
20:50:28  <japj>isaacs: yes
20:50:31  <isaacs>don't directly address the packages that npm shows you :)
20:50:42  <isaacs>just call it "mocha" and get it from where it resolves to
20:50:43  <japj>isaacs: btw, will npm also generate 'sh' shims for 'bin' scripts?
20:50:46  <piscisaureus_>we should revert libuv@8ed2ffb, and paste `cmd /c` before the command when encountering anything not .exe/.com
20:50:54  <piscisaureus_>I've heard just one too many complaints about this
20:51:33  <piscisaureus_>I wish bnoordhuis wasn't watching football
20:51:57  <japj>piscisaureus_: when thinking I was solving an issue a while ago, I made a javascript PATH/PATHEXT traversal thingie https://github.com/japj/node-exec/blob/master/lib/exec.js
20:52:07  <isaacs>japj: yes.
20:52:09  <japj>piscisaureus_: then I discovered cmd.exe does the same
20:52:17  <piscisaureus_>japj: hehe
20:52:25  <japj>it was a nice exercise though
20:52:35  <isaacs>japj: check out my `which` module
20:52:44  <piscisaureus_>japj: well, I would prefer to have libuv still do the path search
20:52:46  <isaacs>japj: works like which(1), but on windows resolves the .exe/bat/cmd thing
20:53:00  <piscisaureus_>yes, or isaac's solution
20:53:16  <isaacs>that doesn't need to be in libuv
20:53:17  <japj>isaacs: oh, that should be similar then.. I'm going to have a quick look
20:53:40  <piscisaureus_>isaacs: well, i'd like to have spawn('git', ['commit']) etc to just wor
20:53:41  <piscisaureus_>k
20:53:51  <piscisaureus_>isaacs: but not real hurry now
20:54:24  <piscisaureus_>isaacs: TooTallNate: other topic - why are we not putting `weak` in the node tree?
20:54:34  <piscisaureus_>I find this npm thing very brittle
20:56:36  <TooTallNate>piscisaureus_: i suppose we could, and just have the Makefile/vcbuild recompile the binary part with node-gyp
20:56:52  <TooTallNate>i think isaacs was reluctant to commit a node_modules dir to the root of the repo though
20:56:53  <piscisaureus_>TooTallNate: well, as much as I like node-gyp
20:57:08  <piscisaureus_>TooTallNate: I think we should just add it to node.gyp :_)
20:57:21  <piscisaureus_>TooTallNate: we could put the node_modules folder inside test/gc, right?
20:57:28  <TooTallNate>ya
20:58:00  <TooTallNate>so you want to build it at the same time as the regular build?
20:58:39  <piscisaureus_>TooTallNate: yes, or some other way involving 'tools/gyp_node weak`
20:58:43  * AndreasMadsenquit (Remote host closed the connection)
20:58:55  <piscisaureus_>but yes, I'd like to add it to the gyp file
20:58:57  <TooTallNate>that's fair
20:59:06  * paddybyersjoined
20:59:12  <piscisaureus_>TooTallNate: I am somewhat allergic to complex build processes
20:59:21  <TooTallNate>it'd be `tools/gyp_addon test/gc/node_modules/weak/binding.gyp` or something like that
20:59:30  <piscisaureus_>or that
20:59:31  <piscisaureus_>yeah
21:00:51  <piscisaureus_>TooTallNate: we've now gone to a point where the build process involves a lot random stuff, and adding node-gyp and npm to the mix are recipes for headache
21:01:02  <piscisaureus_>I like to do as much with gyp as reasonably possible
21:01:37  <ryah>piscisaureus_: +1 build process should be simple as possible
21:01:43  <TooTallNate>lemme try to whip something up using just gyp & (make|msbuild)
21:01:48  * brsonjoined
21:01:54  <piscisaureus_>TooTallNate: cool
21:02:09  <isaacs>piscisaureus_, ryah: Part of the goal of having a binary addon build in node's build process is to force us to make it a nicer experience.
21:02:10  <piscisaureus_>TooTallNate: maybe you can just add `weak` as a target to node.gyp
21:02:12  <piscisaureus_>that's what I would do
21:02:29  <isaacs>if the npm thing is brittle, we should make it not brittle.
21:02:30  <piscisaureus_>isaacs: for that, we should have `make test-build-addon-pain`
21:03:01  <ryah>what piscisaureus_ says :)
21:03:10  <TooTallNate>piscisaureus_: well that's what `make node_modules/weak` currently does
21:03:16  <isaacs>piscisaureus_: fair enough. but that should be in the default tests, and it should be added before we remove the node_modules/weak build taret.
21:03:27  <TooTallNate>piscisaureus_: but i think you don't like it because there's no vcbuild.bat equivalent at the moment
21:03:37  <isaacs>it's not a real test if we're not actually using the tools to get something done.
21:03:43  <isaacs>it's just "oh, it built, ok"
21:03:47  <isaacs>no skin in teh game.
21:04:07  <isaacs>if we're actually relying on it, then it actually bugs us when it sucks.
21:04:19  <piscisaureus_>isaacs: yeah, but right now, if it breaks I cannot run tests
21:04:26  <piscisaureus_>that's the very definition of brittle
21:04:38  <piscisaureus_>isaacs: I would be okay with a test for building addons
21:04:45  <piscisaureus_>although it should probably live in npm :-)
21:05:11  <igorzi>piscisaureus_: https://github.com/igorzi/node/compare/etw
21:05:12  <isaacs>piscisaureus_: 'live in npm' is becoming more and more 'live in node'
21:05:28  <isaacs>piscisaureus_: they haven't quite moved in together entirely, but there's tooth brushes in both bathrooms...
21:06:21  <isaacs>teh presence of an addon build in my normal day to day tests has already helped us make the experience much better for our users.
21:06:51  <isaacs>i can see the benefit of course of having it not prevent the running of other tests
21:07:10  <isaacs>but it needs to be a very noisy failure, that's all.
21:08:57  <ryah>isaacs: +1
21:09:10  <ryah>i'm just going to speak in "+1"s from now on
21:09:13  <isaacs>hahahah
21:09:48  <isaacs>"We've replaced Node's BDFL with a robot that randomly raises or lowers its hand.... let's see if they notice."
21:09:57  <piscisaureus_>isaacs: yes - so what I do not like:
21:09:57  <piscisaureus_>* if it breaks, I cannot run other tests
21:09:57  <piscisaureus_>* we're now relying on the node-weak author to not mess up.
21:09:57  <piscisaureus_>isaacs: my +1 would go to:
21:09:57  <piscisaureus_>* a test that installs a dummy package using npm and node-gyp, and verifies that it works
21:10:32  <isaacs>piscisaureus_:
21:10:33  <isaacs>$ npm owner ls weak -q
21:10:34  <isaacs>TooTallNate <nathan@tootallnate.net>
21:10:34  <isaacs>tootallnate <nathan@tootallnate.net>
21:10:42  <isaacs>piscisaureus_: we're *already* relying on that guy to not mess up ;P
21:10:53  <TooTallNate>lulz
21:11:01  <piscisaureus_>isaacs: yes, that's bad enough as it is :-)
21:11:16  <piscisaureus_>Can I also have my own dependency
21:11:39  <piscisaureus_>job security ftw
21:11:57  <isaacs>piscisaureus_: having it break and not be able to install other tests is a problem, yes. but i don't want just some random node module that builds and doesn't actually get used in a real way.
21:12:09  <isaacs>piscisaureus_: it's easy for subtle things to break and us not notice.
21:12:13  <isaacs>and compilation !== works
21:12:17  <piscisaureus_>well, that's exactly what I want :-)
21:12:18  <TooTallNate>node-weak is mostly ben's code anyways :p
21:12:25  <piscisaureus_>we seem to disagree more and more, isaacs
21:12:33  <isaacs>hah
21:12:36  <piscisaureus_>let's have a good old fight in the parking lot
21:12:54  <piscisaureus_>bring anything but automated weapons
21:13:08  <isaacs>piscisaureus_: make test-addon could install weak in some other location, and then use it to run the gc tests.
21:13:17  <piscisaureus_>yes, that would be good
21:13:25  <isaacs>piscisaureus_: but we could have our own stable-ish copy of weak in the source tree, which is normally used.
21:13:35  <isaacs>piscisaureus_: plus, double the gc testing! woo!
21:13:39  <piscisaureus_>wooo
21:13:54  <piscisaureus_>the extra bonus would be (for me) that I can run the tests without waiting for that stuff to download
21:14:15  <piscisaureus_>(or alternatively, to not update it and face the risk that it is broken/outdated)
21:16:32  <isaacs>yes.
21:16:40  * piscisaureus_enters `vcbuild.bat debug nosnapshot test-all | tee out.txt` once more and gets a beer
21:16:46  <isaacs>ok, wanna send a pull request?
21:17:13  <piscisaureus_>if TooTallNate doesn't, I will
21:17:17  <piscisaureus_>but first things first
21:17:22  <piscisaureus_>this thing is going down to 0 failures
21:18:46  <piscisaureus_>test-realpath is a tough one
21:20:31  <piscisaureus_>isaacs: ryah: btw, did you guys try the v8-3.11 branch ?
21:20:42  <isaacs>piscisaureus_: i haven't tried it yet
21:20:48  <piscisaureus_>Erik tells me that they are going to create a branch within a week
21:20:55  <piscisaureus_>which makes it 'stable'
21:21:00  <piscisaureus_>last pust-to-trunk was today
21:21:00  <isaacs>heh
21:21:04  <isaacs>nice
21:21:07  <piscisaureus_>from here there will be only bug fixes
21:21:20  <isaacs>piscisaureus_: if it's faster than 3.9, and not insanely broken, then i'm all for it.
21:21:33  <isaacs>"insanely broken" = "does javascript wrong". random things being undefined right after you set them, etc.
21:21:40  <isaacs>but i suspect all that got fixed by now.
21:21:54  <piscisaureus_>isaacs: well, they are not really happy about maintaining 3.9 for a long time
21:22:26  <TooTallNate>isaacs: i just published node-gyp v0.5.0 which uses npmlog
21:25:27  * loladiroquit (Read error: Connection reset by peer)
21:26:11  * loladirojoined
21:33:09  <igorzi>piscisaureus_: can you review this pls? https://github.com/igorzi/node/compare/etw
21:34:50  <piscisaureus_>igorzi: there is one small thing...
21:34:53  <piscisaureus_>tools/msvs/etw/node_etw_provider.man
21:35:01  <piscisaureus_>I'd like to move that to src/res
21:35:26  <piscisaureus_>igorzi: I find it a little strange to move these parts to the installer directory
21:35:32  <piscisaureus_>igorzi: but lgtm
21:35:42  <piscisaureus_>igorzi: so I would say, if you don't mind, change that and land it
21:36:03  <TooTallNate>isaacs: btw, this syntax is invalid: https://github.com/joyent/node/blob/master/.gitignore#L44
21:36:11  <piscisaureus_>igorzi: (I also moved node.res and the icon to src/res btw)
21:36:14  <TooTallNate>it needs to be simply "/node_modules", without the .
21:36:25  <igorzi>piscisaureus_: ahh ok, i was going to ask about that
21:36:35  <igorzi>piscisaureus_: ok, i'll move it and land
21:36:40  <piscisaureus_>igorzi: cool
21:37:52  <isaacs>TooTallNate: it is??
21:38:01  <isaacs>TooTallNate: seems to work for me
21:38:06  <isaacs>TooTallNate: does /node_modules work?
21:38:49  <TooTallNate>well without that change i see:
21:38:54  <TooTallNate># Untracked files:
21:38:54  <TooTallNate># (use "git add <file>..." to include in what will be committed)
21:38:56  <TooTallNate>#
21:38:56  <TooTallNate># node_modules/
21:45:47  <isaacs>i see
21:46:05  * loladiroquit (Read error: Connection reset by peer)
21:46:14  * loladirojoined
21:46:23  <isaacs>TooTallNate: hm. yes, you are correc.t
21:46:29  <isaacs>i'd removed it, which is why it wasn't there.
21:47:07  <piscisaureus_>fs.watch seems to be an infinite source of tickets
21:47:32  <piscisaureus_>[29:08|% 100|+ 459|- 8]: Done
21:47:35  <piscisaureus_>^-- windows
21:47:40  <piscisaureus_>down from 25 last week :-)
21:47:43  <TooTallNate>piscisaureus_++
21:47:44  <kohai>piscisaureus_ has 11 beers
21:48:01  <piscisaureus_>now I am just waiting for bnoordhuis to approve a libuv patch
21:51:17  * rendarquit
21:57:29  <ryah>piscisaureus_: +1
21:57:51  <ryah>is there a node branch with v8 3.11 ?
21:57:53  <ryah>i'd like to try it
21:59:05  * hz|pc2quit (Quit: Leaving.)
22:01:42  <ryah>er - found it
22:10:29  * mralephjoined
22:11:01  <TooTallNate>piscisaureus_: is this something like what you wanted? https://github.com/TooTallNate/node/commit/weak
22:11:14  <ryah>isaacs, piscisaureus_ https://gist.github.com/2926804
22:11:17  <TooTallNate>its still invoking node-gyp, but not downloading it at least
22:11:26  <ryah>looks like it's faster
22:11:36  <bnoordhuis>piscisaureus_: what patch?
22:11:41  <isaacs>ryah: how's current master
22:12:07  <isaacs>ryah: i mean, how does 3.10 master compare with 3.9 master?
22:12:11  <isaacs>er, 3.11
22:12:23  <ryah>isaacs: also on par
22:12:39  <ryah>it seems thy fixed whatever was fucking it up last week though
22:12:54  <isaacs>kewl
22:13:04  <isaacs>let's do it!
22:13:14  <isaacs>3.9 is going to not get as many fixes over the life of node 0.8.x
22:13:20  <ryah>isaacs: it seems fedor has some floating patches on origin/v8-3.11
22:13:21  * c4miloquit (Remote host closed the connection)
22:13:27  <isaacs>we should bet on 3.11 i think
22:13:27  <ryah>im also running those - not sure what that is
22:13:33  <isaacs>k
22:13:53  <isaacs>before anything else, though, i just realized that i have not eaten since breakfast and it's super late.
22:13:56  * isaacsto the tacos!
22:14:05  <ryah>isaacs: yes, it would be good to get 3.11 since they are going stable now
22:14:18  * c4milojoined
22:17:13  * c4miloquit (Remote host closed the connection)
22:18:47  <piscisaureus_>ryah: fedor's patch will make it into 3.11
22:19:31  <piscisaureus_>ryah: it already landed in v8 bleeding edge but they couldn't land on trunk because chromium was in the process of splitting branches
22:19:59  <piscisaureus_>ryah: same goes for the perf regression fix that Michael did
22:20:52  * japjquit (Remote host closed the connection)
22:21:34  <piscisaureus_>bnoordhuis: https://github.com/joyent/libuv/compare/reviewme
22:22:25  <piscisaureus_>TooTallNate: the patch looks good to me. Did you test it on windows, or do you want me to?
22:23:35  <TooTallNate>piscisaureus_: i'm trying to test on windows right now, but it'd be cool if you could verify
22:25:14  * paddybyersquit (Quit: paddybyers)
22:25:38  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/commit/dfffbc09e7649f1e3ece91cf31a70d86b80886ed#commitcomment-1455323
22:25:56  <piscisaureus_>bnoordhuis: crap
22:26:02  <piscisaureus_>bnoordhuis: I meant EINTR
22:26:15  <piscisaureus_>bnoordhuis: and I am scanning through the first 16 FDs
22:26:38  * mralephquit (Quit: Leaving.)
22:27:14  <piscisaureus_>TooTallNate: testing
22:27:17  <bnoordhuis>piscisaureus_: i don't think fcntl(F_SETFL) returns EINTR
22:27:28  <piscisaureus_>ok
22:27:50  <piscisaureus_>bnoordhuis: and what about fcntl(F_GETL) ?
22:28:20  <piscisaureus_>bnoordhuis: but if you say so I will simplify
22:28:29  <piscisaureus_>just say the word
22:30:10  <bnoordhuis>piscisaureus_: linux never does. then again, it won't hurt
22:30:26  <piscisaureus_>bnoordhuis: ok. so I will replace EAGAIN by EINTR and land
22:30:57  <bnoordhuis>piscisaureus_: it looks so gnarly though...
22:31:23  <piscisaureus_>it's not pretty I agree
22:31:23  <bnoordhuis>piscisaureus_: let me write the unix part
22:31:29  <piscisaureus_>bnoordhuis: ok
22:31:32  * brsonquit (Ping timeout: 248 seconds)
22:31:46  <piscisaureus_>bnoordhuis: you have time now?
22:31:54  <bnoordhuis>sure. reviewme branch, right?
22:31:59  <piscisaureus_>bnoordhuis: yes
22:32:15  <piscisaureus_>bnoordhuis: sorry for the pressure, I am sitting here with a dirty node tree that needs a libuv upgrade :-)
22:32:23  * brsonjoined
22:33:24  * hij1nxjoined
22:33:34  * hij1nxquit (Remote host closed the connection)
22:33:43  <piscisaureus_>TooTallNate:
22:33:44  <piscisaureus_>python: can't open file 'D:\node5"\tools\gyp_addon': [Errno 22] Invalid argument
22:33:44  <piscisaureus_>ERR! Error: `gyp_addon` failed with exit code: 2
22:33:44  <piscisaureus_> at ChildProcess.onCpExit (D:\node5\deps\npm\node_modules\node-gyp\lib\configure.js:255:16)
22:33:44  <piscisaureus_> at ChildProcess.emit (events.js:90:17)
22:33:44  <piscisaureus_> at Process.onexit (child_process.js:654:10)
22:33:44  <piscisaureus_>ERR! not ok
22:34:12  <piscisaureus_>TooTallNate: you want me to fix that?
22:34:13  <TooTallNate>piscisaureus_: do you know why %~dp0 is adding a " at the end?
22:34:25  <piscisaureus_>TooTallNate: it shouldn't
22:35:10  <piscisaureus_>probably some python goof-ness
22:35:29  <piscisaureus_>you see, python doesn't have me and igor :-0p
22:35:38  <TooTallNate>:p
22:37:25  <piscisaureus_>hmm
22:37:28  <piscisaureus_>could also be node, actually
22:37:41  <TooTallNate>or nopt
22:38:00  <CIA-108>node: Igor Zinkovsky master * r35a1421 / (11 files in 4 dirs): Windows: Enable ETW events. - http://git.io/q-i6tg
22:38:14  <piscisaureus_>igorzi++
22:38:14  <kohai>igorzi has 7 beers
22:38:34  * loladiroquit (Read error: Connection reset by peer)
22:38:40  * loladiro_joined
22:38:48  <piscisaureus_>TooTallNate: which node-gyp file is the logic that spawn's python in?
22:38:57  <TooTallNate>piscisaureus_: lib/configure.js
22:41:18  <piscisaureus_>TooTallNate: yeah. Somehow nodedir ends up being set to "D:\node5\""
22:41:37  * bitprobequit (Quit: Computer has gone to sleep.)
22:42:01  <TooTallNate>piscisaureus_: ya, very strange. any ideas? here's process.argv:
22:42:03  <TooTallNate>[ 'Release\\node',
22:42:03  <TooTallNate> 'C:\\node\\deps\\npm\\node_modules\\node-gyp\\bin\\node-gyp',
22:42:05  <TooTallNate> '--verbose',
22:42:05  <TooTallNate> 'rebuild',
22:42:07  <TooTallNate> '--directory=C:\\node\\test\\gc\\node_modules\\weak',
22:42:07  <TooTallNate> '--nodedir=C:\\node"' ]
22:42:11  <piscisaureus_>TooTallNate: ah, I see it now
22:42:24  <piscisaureus_>TooTallNate: windows command line arg quoting rules :-)
22:42:32  <piscisaureus_>TooTallNate: do
22:42:42  <piscisaureus_>--nodedir="%~dp0."
22:42:44  <piscisaureus_>instead of
22:42:45  <piscisaureus_>--nodedir="%~dp0"
22:42:55  <TooTallNate>oh wow
22:42:55  <TooTallNate>haha
22:43:03  <TooTallNate>it works!!!
22:43:24  <piscisaureus_>TooTallNate: ok, now to add a minor thing
22:43:50  <TooTallNate>piscisaureus_: it would be good to skip the rebuild if it's already been built
22:43:55  <TooTallNate>the Makefile does that implicitly
22:44:02  <piscisaureus_>TooTallNate: also, bail out if node-gyp fails
22:44:08  <piscisaureus_>TooTallNate: no, don't skip
22:44:24  <piscisaureus_>TooTallNate: do you mind if I amend your patch and land
22:44:26  <piscisaureus_>?
22:44:34  <TooTallNate>piscisaureus_: not at all :)
22:57:57  <CIA-108>libuv: Ben Noordhuis reviewme * r64b92db / src/unix/core.c : unix: simplify uv_disable_stdio_inheritance() - http://git.io/l7N1HA
22:57:57  <CIA-108>libuv: Ben Noordhuis reviewme * r61a1852 / src/unix/core.c : unix: make uv__cloexec() EINTR resilient - http://git.io/8mkyZw
22:57:58  <CIA-108>libuv: Ben Noordhuis reviewme * r35b1211 / src/unix/core.c : unix: make uv__nonblock() EINTR resilient - http://git.io/typfug
22:58:03  <bnoordhuis>piscisaureus_: ^
22:58:27  <CIA-108>node: Nathan Rajlich master * r6a8b5b3 / (8 files in 4 dirs): test: bundle node-weak in test/gc so that it doesn't need to be downloaded - http://git.io/IMne6A
22:58:28  <CIA-108>node: Bert Belder master * r029e01b / vcbuild.bat : vcbuild.bat: add duplicate arg-ok label to work around cmd.exe bug - http://git.io/RyDBYA
22:58:35  <piscisaureus_>TooTallNate: ^
22:59:04  <piscisaureus_>bnoordhuis: you inversed the logic
22:59:08  <TooTallNate>piscisaureus_: nice :)
22:59:14  <bnoordhuis>piscisaureus_: wut? how?
22:59:16  <TooTallNate>piscisaureus_: woah, what's up with that second commit, haha?
22:59:21  <piscisaureus_>bnoordhuis: well, it used to do this
22:59:42  <piscisaureus_>set cloexec until EBADF, but at least try fd 0 - 15
22:59:54  * travis-cijoined
22:59:54  <travis-ci>[travis-ci] joyent/libuv#413 (reviewme - 35b1211 : Ben Noordhuis): The build passed.
22:59:54  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/dfffbc09e764...35b1211b82dc
22:59:54  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1614928
22:59:54  * travis-cipart
22:59:59  <piscisaureus_>bnoordhuis: now it is: stop when fd == 16 or EBADF, whichever comes first
23:00:28  <bnoordhuis>piscisaureus_: ah, like that
23:00:28  <piscisaureus_>TooTallNate: yeah, the cmd.exe bug is unpredictable and bites us sometimes and sometimes it seems to go away inexplicably
23:00:31  <bnoordhuis>easily fixed
23:01:51  <bnoordhuis>piscisaureus_: then again, when would you have gaps?
23:02:12  <bnoordhuis>oh well, i guess it won't hurt
23:02:20  <piscisaureus_>bnoordhuis: spawn('foo', [], {stdio: ['pipe', 'pipe', 'pipe', 'ignore', 'pipe']})
23:03:18  <CIA-108>libuv: Ben Noordhuis reviewme * rb31b87d / src/unix/core.c : unix: simplify uv_disable_stdio_inheritance() - http://git.io/JFno0w
23:03:18  <CIA-108>libuv: Ben Noordhuis reviewme * r3d2cdcb / src/unix/core.c : unix: make uv__cloexec() EINTR resilient - http://git.io/teMsjg
23:03:18  <CIA-108>libuv: Ben Noordhuis reviewme * r4408a73 / src/unix/core.c : unix: make uv__nonblock() EINTR resilient - http://git.io/yypxTw
23:03:27  <bnoordhuis>piscisaureus_: ^
23:04:23  <piscisaureus_>bnoordhuis: wrong again
23:05:07  <bnoordhuis>piscisaureus_: explain
23:05:15  * travis-cijoined
23:05:15  <travis-ci>[travis-ci] joyent/libuv#414 (reviewme - 4408a73 : Ben Noordhuis): The build passed.
23:05:15  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/35b1211b82dc...4408a7321287
23:05:15  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1614955
23:05:15  * travis-cipart
23:05:33  <piscisaureus_>bnoordhuis:
23:05:33  <piscisaureus_>for (fd = 0; ; fd++)
23:05:33  <piscisaureus_> if (uv__cloexec(fd, 1) && fd >= 16)
23:05:33  <piscisaureus_> break;
23:06:07  <piscisaureus_>bnoordhuis: *shrug* whatever
23:06:14  <piscisaureus_>bnoordhuis: If you have better logic in mind
23:06:15  <bnoordhuis>yes... but why would you continue if you get !EBADF?
23:06:54  <piscisaureus_>bnoordhuis: well, maybe we inherited a broken fd or something?
23:07:07  <bnoordhuis>how can a file descriptor be broken?
23:07:40  <piscisaureus_>I dunno. So 2 things can happen: success and EBADF
23:07:52  <bnoordhuis>yes. anything else means that something is seriously wrong
23:07:57  <piscisaureus_>bnoordhuis: we want to do this: if (EBADF) continue until 16
23:08:08  <piscisaureus_>if (success) continue indefinitely
23:08:21  * xaqquit (Remote host closed the connection)
23:08:22  <bnoordhuis>ah
23:08:26  <piscisaureus_>bnoordhuis: or, some other logic. But the code you just wrote does not what I think you want to do
23:08:43  <piscisaureus_>bnoordhuis: I will unconditionally accept the next patch you submit
23:08:45  <bnoordhuis>i thought we were just considering the first 16 fds, no more
23:08:54  <piscisaureus_>bnoordhuis: oh, that was not the idea
23:09:06  <piscisaureus_>bnoordhuis: I want to close all the fds, and skip over gaps
23:09:26  <piscisaureus_>but since you can never tell whether there is a gap, I want to atleast try through fd 15
23:09:38  <bnoordhuis>right, now i understand
23:09:47  <piscisaureus_>bnoordhuis: but whatever- as I said I will take whatever patch you send me, as long as the code does what you say it should do :-)
23:12:06  * loladiro_quit (Read error: Connection reset by peer)
23:12:13  * loladirojoined
23:15:04  <CIA-108>libuv: Ben Noordhuis reviewme * r88a58ee / src/unix/core.c : unix: simplify uv_disable_stdio_inheritance() - http://git.io/yQnXPA
23:15:05  <CIA-108>libuv: Ben Noordhuis reviewme * r1fbffa9 / src/unix/core.c : unix: make uv__nonblock() EINTR resilient - http://git.io/Xf5seA
23:15:06  <CIA-108>libuv: Ben Noordhuis reviewme * r8a75f0d / src/unix/core.c : unix: make uv__cloexec() EINTR resilient - http://git.io/YPTHaw
23:15:11  <bnoordhuis>piscisaureus_: ^ take 3
23:16:32  * bitprobejoined
23:16:59  * travis-cijoined
23:16:59  <travis-ci>[travis-ci] joyent/libuv#415 (reviewme - 1fbffa9 : Ben Noordhuis): The build passed.
23:16:59  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/4408a7321287...1fbffa91393c
23:16:59  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1615026
23:16:59  * travis-cipart
23:22:14  <bnoordhuis>piscisaureus_: https://github.com/joyent/node/pull/3434
23:22:15  <CIA-108>libuv: Ben Noordhuis master * rb3a97f8 / src/unix/core.c : unix: make uv__cloexec() EINTR resilient - http://git.io/WZZyOQ
23:22:16  <CIA-108>libuv: Ben Noordhuis master * r94cb06f / src/unix/core.c : unix: make uv__nonblock() EINTR resilient - http://git.io/gxxSog
23:22:16  <CIA-108>libuv: Bert Belder master * rade6930 / (4 files in 3 dirs): windows: implement uv_disable_stdio_inheritance - http://git.io/zEu-yA
23:22:16  <CIA-108>libuv: Ben Noordhuis master * r4d7f1e1 / src/unix/core.c : unix: implement uv_disable_stdio_inheritance() - http://git.io/-RF0Jg
23:22:47  <piscisaureus_>bnoordhuis: I saw that. But I think I will first land v8-3.11 and see what needs fixing then
23:22:58  <piscisaureus_>isaacs: do you agree with landing v8-3.11 ?
23:26:59  * bitprobequit (Quit: Textual IRC Client: http://www.textualapp.com/)
23:27:01  * travis-cijoined
23:27:02  <travis-ci>[travis-ci] joyent/libuv#416 (master - 4d7f1e1 : Ben Noordhuis): The build passed.
23:27:02  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/07c6ac2b553b...4d7f1e186498
23:27:02  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1615058
23:27:02  * travis-cipart
23:32:30  <CIA-108>node: Bert Belder master * r37d75ba / (7 files in 5 dirs): uv: upgrade to 4d7f1e18 - http://git.io/RniS1g
23:32:30  <CIA-108>node: Bert Belder master * r09be360 / src/node.cc : Inherited FDs should not accidentally be inherited by child processes - http://git.io/B0NYIg
23:35:01  <piscisaureus_>TooTallNate: hey
23:35:47  <piscisaureus_>anyone objected to landing v8-3.11 in master?
23:35:47  <piscisaureus_>^-- bnoordhuis ryah isaacs ?
23:36:02  <piscisaureus_>^-- TooTallNate igorzi ?
23:36:36  <bnoordhuis>piscisaureus_: haven't tested it. was that hidden properties thing the only major bug?
23:36:42  <piscisaureus_>bnoordhuis: yes
23:37:10  <piscisaureus_>bnoordhuis: apparently so. Ryah says it's faster than 0.6 and on par with 3.9
23:37:14  <piscisaureus_>I saw the same thing.
23:37:34  <bnoordhuis>i don't object
23:38:08  <piscisaureus_>ok
23:38:12  <piscisaureus_>let's just go for it
23:38:18  <CIA-108>node: Bert Belder master * r50464cd / (373 files in 21 dirs): v8: upgrade to v3.11.10 - http://git.io/2GgMIg
23:38:19  <CIA-108>node: mstarzinger@chromium.org master * r48893af / (3 files in 2 dirs): Fix performance regression caused by r11202. - http://git.io/sU-Eqg
23:38:19  <CIA-108>node: Bert Belder master * rac64c9e / deps/v8/build/common.gypi : v8: reapply floating patches - http://git.io/UNQRrg
23:38:19  <CIA-108>node: Fedor Indutny master * rfac6c69 / deps/v8/tools/gen-postmortem-metadata.py : v8: fix postmortem debugging tools build - http://git.io/ovaLaA
23:41:31  * bnoordhuisrecompiles again
23:51:32  <CIA-108>node: Bert Belder master * r158387c / deps/v8/build/common.gypi : Unbreak the snapshotted build on Windows - http://git.io/0ZnW_g
23:52:16  <CIA-108>node: Bert Belder master * r2701a6b / deps/v8/build/common.gypi : Unbreak the snapshotted build on Windows - http://git.io/fnv5qA
23:54:15  <isaacs>\o/
23:58:57  <isaacs>piscisaureus_: thanks
23:59:13  <piscisaureus_>isaacs: np. It was sitting there anyway
23:59:38  <isaacs>piscisaureus_: why the double "unbreak" commit at the end?
23:59:50  <piscisaureus_>isaacs: force push
23:59:54  <isaacs>oh, ok