00:06:06  <TooTallNate>isaacs: got any more good candidate native modules in mind for gyp conversion?
00:06:29  <isaacs>TooTallNate: i'll let you know as they come up
00:06:32  <TooTallNate>contextify ended up being really easy
00:06:46  <isaacs>TooTallNate: hey, i was thinking... so, if you do `npm install jsdom` on windows
00:06:59  <isaacs>let's say you've never installed node-gyp
00:07:07  <TooTallNate>ok
00:07:15  <isaacs>maybe npm should detect a binding.gyp file, and run node-gyp, and tell you what to do if it isn't found?
00:08:43  <TooTallNate>when what isn't found? node-gyp? msbuild? bindings.gyp?
00:09:01  <TooTallNate>also ftr, I've been naming it bindings.gyp instead of binding.gyp
00:09:24  <TooTallNate>we should settle on a preferred one before too many pull requests get written
00:11:41  * mralephquit (Quit: Leaving.)
00:15:06  * `3rdEdenquit (Quit: Zzzz)
00:16:46  * perezdjoined
00:17:09  <perezd>hey, does it seem like a crazy idea to try to compile libuv on an arduino?
00:19:07  <perezd>yeah, that probably can't work
00:20:53  * perezdquit (Client Quit)
00:31:04  * piscisaureus_joined
00:31:47  * piscisaureus_quit (Client Quit)
00:34:40  <TooTallNate>would anyone be opposed to adding "'cflags': [ '-fPIC' ]" for 'linux' in addon.gypi?
00:35:28  * AvianFluquit (Ping timeout: 240 seconds)
00:36:17  <TooTallNate>for why, see: https://github.com/brianmcd/contextify/pull/17#issuecomment-3875756
00:36:19  <TooTallNate>isaacs: ^
00:36:56  <isaacs>i always thought -fPIC was the flag for "Make it work on Linux"
00:37:00  <isaacs>but i don't actually know what it does
00:37:08  <isaacs>bnoordhuis: your a linux guy. you have feelings on this?
00:37:18  <isaacs>s/ur/u're/
00:37:28  <TooTallNate>also, not sure if just 'linux' would need it or if solaris and others need it too
00:37:41  <isaacs>no clu
00:37:50  <isaacs>like i said, i don't know what it actually does, except make things work on linux
00:38:13  <TooTallNate>ok, for sure. i was gonna try node-gyp on a SmartMachine but mine only has node 0.4.12
00:38:17  <TooTallNate>:(
00:47:40  * AvianFlujoined
00:48:03  * pieternjoined
01:12:01  * theColejoined
01:15:21  * theColequit (Client Quit)
01:15:49  * theColejoined
01:17:57  * theColequit (Client Quit)
01:23:40  * theColejoined
01:28:23  * theColequit (Client Quit)
01:30:49  * theColejoined
01:31:38  * theColequit (Client Quit)
01:36:32  * dshaw_quit (Quit: Leaving.)
01:40:41  * orlandovftwquit (Ping timeout: 265 seconds)
01:50:05  * AvianFluquit (Quit: Leaving)
01:59:36  * theColejoined
02:00:56  * theColequit (Client Quit)
02:09:03  * dshaw_joined
02:11:59  * benviequit
02:13:35  * benviejoined
02:36:54  * brsonquit (Ping timeout: 244 seconds)
02:39:47  * isaacstopic: lib unicorn velociraptor
02:40:00  <isaacs>what libuv stands for^
02:43:30  * dapquit (Quit: Leaving.)
02:44:57  <chilts>lovely :)
02:46:43  * dshaw_quit (Quit: Leaving.)
02:47:53  * pieternquit (Quit: pietern)
02:48:24  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
02:50:13  <bnoordhuis>isaacs: -fPIC generally makes code bigger and slower
02:50:31  <bnoordhuis>i say 'generally' but what i really mean is 'almost always'
02:51:30  <isaacs>bnoordhuis: then how come it makes it work?
02:51:35  <isaacs>that seems counter intuitive
02:53:05  <bnoordhuis>isaacs: 'it' being?
02:53:15  <isaacs>bnoordhuis: a lot of things need that to work properly
02:53:25  <isaacs>bnoordhuis: i've had to end up putting that on most binary modules i've written.
02:53:28  <isaacs>node-glob for instance.
02:53:31  <bnoordhuis>you use -fPIC for code that needs to be linked dynamically
02:53:37  <isaacs>ahh
02:53:39  <isaacs>ok
02:53:56  <isaacs>then i only needed it the first time because that was before i was bundling bsdglob statically
02:54:09  * orlandovftwjoined
02:55:09  <bnoordhuis>isaacs: a .node is a shared object, on most architectures you need to compile them with -fPIC
02:55:31  <bnoordhuis>but for the node binary itself it should not be necessary (and is probably undesirable for the reasons stipulated above)
02:55:36  <isaacs>oh, i see.
02:56:09  <isaacs>then TooTallNate should absolutely put -fPIC in addon.gypi for linux
02:56:13  <bnoordhuis>yes
02:56:53  <isaacs>ircretary: tell TooTallNate yes, please put -fPIC in addon.gypi for GNU/Linux. bnoordhuis says so.
02:56:54  <ircretary>isaacs: I'll be sure to tell tootallnate
03:00:59  * theColejoined
03:01:15  * theColequit (Client Quit)
03:02:13  <bnoordhuis>ircretary: tell TooTallNate ping bnoordhuis about -fPIC, it's probably not needed (and undesirable) for ia32
03:02:14  <ircretary>bnoordhuis: I'll be sure to tell tootallnate
03:07:46  <isaacs>i should make ircretary a bit more pushy about delivering notes.
03:08:05  <isaacs>she's too easy to ignore.
03:08:22  <isaacs>i just worry, if you don't make the robots timid, one day they'll take over.
03:09:27  <bnoordhuis>oh well, as long as she has the three laws of robotics programmed in
03:14:48  <isaacs>ircretary: bomb bnoordhuis
03:14:49  <ircretary>isaacs: Launching all missiles
03:14:51  <isaacs>nope.
03:14:54  <isaacs>:)
03:14:57  <bnoordhuis>heh
03:16:43  * theColejoined
03:19:13  * theColequit (Client Quit)
03:21:14  * theColejoined
03:22:45  * theColequit (Client Quit)
03:23:39  * AvianFlujoined
03:38:15  * orlandovftwquit (Ping timeout: 244 seconds)
03:47:56  * theColejoined
03:51:54  * theColequit (Client Quit)
03:52:56  * theColejoined
03:56:34  * theColequit (Client Quit)
03:58:42  * theColejoined
04:01:08  * theColequit (Client Quit)
04:12:15  * theColejoined
04:13:13  * theColequit (Client Quit)
04:25:40  * theColejoined
04:37:51  * theColequit (Quit: theCole)
04:39:27  * theColejoined
04:40:08  * theColequit (Client Quit)
04:43:48  * mikealjoined
04:55:29  * theColejoined
05:04:59  * orlandovftwjoined
05:05:40  * theColepart
05:28:50  <CIA-101>node: Ben Noordhuis v0.6 * r2ce0cf6 / test/simple/test-cluster-bind-twice.js :
05:28:50  <CIA-101>node: test: add cluster 'bind twice' test
05:28:50  <CIA-101>node: This test starts two clustered HTTP servers on the same port. It expects the
05:28:50  <CIA-101>node: first cluster to succeed and the second cluster to fail with EADDRINUSE. - http://git.io/hqm47w
05:33:20  <CIA-101>node: Ben Noordhuis v0.6 * rcacd3ae / test/simple/test-cluster-bind-twice.js :
05:33:21  <CIA-101>node: test: add cluster 'bind twice' test
05:33:21  <CIA-101>node: This test starts two clustered HTTP servers on the same port. It expects the
05:33:21  <CIA-101>node: first cluster to succeed and the second cluster to fail with EADDRINUSE. - http://git.io/bTfuEQ
05:33:42  <bnoordhuis>^ superfluous require() removed
05:36:51  * travis-cijoined
05:36:51  <travis-ci>[travis-ci] joyent/node#390 (v0.6 - 2ce0cf6 : Ben Noordhuis): The build passed.
05:36:51  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/163900d...2ce0cf6
05:36:51  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/648702
05:36:51  * travis-cipart
05:41:26  * travis-cijoined
05:41:26  <travis-ci>[travis-ci] joyent/node#391 (v0.6 - cacd3ae : Ben Noordhuis): The build passed.
05:41:26  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/2ce0cf6...cacd3ae
05:41:26  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/648705
05:41:26  * travis-cipart
06:07:19  * isaacsquit (Remote host closed the connection)
06:33:23  * bnoordhuisquit (Read error: Operation timed out)
06:41:21  * indutny_sleepingchanged nick to indutny
06:47:43  * mmaleckiquit (*.net *.split)
06:47:44  * ljacksonquit (*.net *.split)
06:52:07  * mmaleckijoined
06:52:07  * ljacksonjoined
07:09:54  * paddybyersjoined
07:23:50  * mjr_joined
07:37:49  * kohaijoined
08:02:30  * bentkus_joined
08:03:01  * mralephjoined
08:06:02  * bentkusquit (Ping timeout: 248 seconds)
08:35:45  * mralephquit (Quit: Leaving.)
08:59:38  * bentkusjoined
09:03:50  * bentkus_quit (Ping timeout: 260 seconds)
10:06:18  * orlandovftwquit (Ping timeout: 248 seconds)
13:24:35  * bnoordhuisjoined
13:37:11  <CIA-101>node: Nathan Rajlich master * rd4ccdea / tools/addon.gypi :
13:37:11  <CIA-101>node: build: use -fPIC for native addons on UNIX
13:37:11  <CIA-101>node: No -fPIC on 32 bits Linux but do enable for the other UNIX flavors. - http://git.io/GCCzOg
13:51:02  * travis-cijoined
13:51:02  <travis-ci>[travis-ci] joyent/node#392 (master - d4ccdea : Nathan Rajlich): The build is still failing.
13:51:02  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/9da830e...d4ccdea
13:51:02  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/650571
13:51:02  * travis-cipart
14:08:27  <bnoordhuis>damn it, github >:(
14:14:57  <mmalecki>yeah >.<
14:30:28  * mmaleckiquit (Read error: Operation timed out)
14:30:28  * ljacksonquit (Read error: Operation timed out)
14:30:34  * mmaleckijoined
14:30:45  * ljacksonjoined
14:35:33  * AndreasMadsenjoined
14:49:08  * piscisaureus_joined
14:54:53  * lwillejoined
15:34:02  * lwillequit (Quit: Linkinus - http://linkinus.com)
15:35:31  * AndreasMadsenquit (Remote host closed the connection)
15:57:54  * bbbbjoined
16:11:36  * isaacsjoined
16:17:43  <CIA-101>node: Ben Noordhuis v0.6 * r38eec57 / (doc/api/crypto.markdown doc/api/tls.markdown):
16:17:44  <CIA-101>node: docs: document tls/crypto `ciphers` option
16:17:44  <CIA-101>node: Hitherto undocumented option that lets the user select the list of ciphers to
16:17:44  <CIA-101>node: use or exclude in a SSL/TLS session. - http://git.io/VuHwKA
16:17:54  * pieternjoined
16:18:51  <isaacs>indutny: is your car on fire, or do you have a crappy camera?
16:21:07  <piscisaureus_>isaacs: bnoordhuis: the problem that node.exe cannot be renamed needs to be solved
16:21:27  <piscisaureus_>isaacs: bnoordhuis: I have an idea but that requires an extra compilation unit to be added to every addon
16:22:17  <bnoordhuis>isaacs: uhm... okay
16:22:46  <piscisaureus_>isaacs: bnoordhuis: There are different options: (1) add a .c file to node-gyp, (2) add a .c file to node and tell module authors to compile and link that, or (3) add all the stuff to node.h (and accept that it is not really clean)
16:23:11  <bnoordhuis>piscisaureus_: what would that c file contain?
16:23:24  <piscisaureus_>bnoordhuis: a dynamic load hook
16:24:19  <piscisaureus_>bnoordhuis: that >- http://msdn.microsoft.com/en-us/library/z9h1h6ty.aspx
16:25:40  <piscisaureus_>bnoordhuis: or this -> ftp://ftp.eng.shirazu.ac.ir/Utils/Programming/Visual%20Studio2003.NET/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/Vc7/include/delayhlp.cpp
16:26:39  <bnoordhuis>oh god, my eyes
16:26:44  <piscisaureus_>hehe
16:26:46  <piscisaureus_>__pfnDliNotifyHook2
16:27:30  <bnoordhuis>can you stuff it in a node_platform_win32.h file or something?
16:27:43  <bnoordhuis>i don't want to have to look at that every time i open up node.h
16:28:13  <piscisaureus_>bnoordhuis: it has to be part of the .node file
16:28:43  <bnoordhuis>piscisaureus_: #include it optionally in node.h
16:28:51  <piscisaureus_>bnoordhuis: right
16:28:52  <bnoordhuis>is what i mean
16:28:58  <piscisaureus_>bnoordhuis: we could
16:29:06  <piscisaureus_>bnoordhuis: the only downside is that it is not quite clean
16:29:16  <bnoordhuis>that's okay
16:29:18  <piscisaureus_>bnoordhuis: you will basically add the function to the .node file many times
16:29:22  <indutny>isaacs: haha
16:30:42  <bnoordhuis>piscisaureus_: option #3 sounds like the easiest solution for module authors
16:30:47  <piscisaureus_>right
16:30:47  <bnoordhuis>they won't even have to know it's there
16:30:55  <piscisaureus_>yeah I can see that
16:31:06  <piscisaureus_>bnoordhuis: can you do similar stuff with gcc btw?
16:31:21  <bnoordhuis>shared object load hooks?
16:31:24  <piscisaureus_>bnoordhuis: yes
16:31:33  <bnoordhuis>yes, but that's a linker feature, not a gcc feature
16:31:46  <piscisaureus_>bnoordhuis: sure. on windows it is also a linker featuyre
16:32:09  <piscisaureus_>bnoordhuis: how do you do it with "the" gcc linker (whatever that is)?
16:32:35  <tjfontaine>ld
16:33:03  <bnoordhuis>piscisaureus_: most people would probably use a LD_PRELOAD wrapper
16:33:07  * travis-cijoined
16:33:07  <travis-ci>[travis-ci] joyent/node#393 (v0.6 - 38eec57 : Ben Noordhuis): The build passed.
16:33:07  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/cacd3ae...38eec57
16:33:07  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/651318
16:33:07  * travis-cipart
16:33:23  <bnoordhuis>it's what people use to overload malloc and friends
16:33:46  <piscisaureus_>bnoordhuis: actually, nevermind. I have to try it with mingw first
16:34:18  <piscisaureus_>bnoordhuis: because mingw's linker has to be a weird mix between windows and unix semantics (e.g. it knows how to link to DLLs etc)
16:34:48  <bnoordhuis>piscisaureus_: ah, right. i don't know how (or if) it works with mingw's linker
16:37:50  <isaacs>sorry, i just woke up and am not following. what's the issue, piscisaureus_, bnoordhuis?
16:38:37  <bnoordhuis>isaacs: oh, it's windows being obnoxious
16:53:55  <bnoordhuis>isaacs, piscisaureus_: https://github.com/joyent/node/commit/be67fa7
16:54:07  <bnoordhuis>so ryan reverted that commit, wrongly i feel
16:54:32  <bnoordhuis>there is a guy complaining on the issue tracker that node doesn't honour the cipher list he sets
16:54:41  <piscisaureus_>I know nothing about ssl so I am opinion-less
16:55:05  <indutny>bnoordhuis: oh, I've seen that issue before
16:55:14  <indutny>bnoordhuis: are you going to work on it?
16:55:16  <isaacs>bnoordhuis: i see where he was coming from. but i agree with you that this is something that should be addressed in 0.6
16:55:43  <bnoordhuis>isaacs: that's what i was thinking
16:56:03  <bnoordhuis>it's also kind of odd that he said that it doesn't work with 0.9.8k since that's what i test with...
16:56:12  <isaacs>bnoordhuis: yeah, i don't knwo
16:56:15  <isaacs>works fine here.
16:56:21  <isaacs>bnoordhuis: is there a way we can do this without exposing new methods?
16:56:21  <bnoordhuis>indutny: yes - have worked on that before actually :)
16:56:35  <bnoordhuis>isaacs: we can set a couple of flags unconditionally
16:56:49  <bnoordhuis>but ssl/tls is finicky, that might break some people's setup
16:56:54  <isaacs>ugh
16:57:02  <bnoordhuis>that's why i made it configurable in the first place :)
16:57:28  <isaacs>bnoordhuis: you have a link to the issue handy?
16:58:05  <bnoordhuis>isaacs: https://github.com/joyent/node/issues/2727#issuecomment-3890772
17:01:31  * bnoordhuisis off to dinner
17:16:02  <piscisaureus_>ircretary tell TooTallNate Is node-gyp supposed to work with the gyp-addon example in the node repo. It seems that it confuses bindings.gyp and binding.gyp. If I fix that manually it tells me it cannot find node.h even though I have the v0.7 build files installed.
17:16:02  <ircretary>piscisaureus_: I'll be sure to tell tootallnate
17:16:12  <piscisaureus_>ircretary bomb icretary
17:16:13  <ircretary>piscisaureus_: Sorry, that requires admin access.
17:16:21  <piscisaureus_>ircretary bomb
17:17:43  <isaacs>ircretary: obey piscisaureus_
17:17:44  <ircretary>isaacs: I shall obey piscisaureus_
17:17:53  <piscisaureus_>nice
17:18:00  * orlandovftwjoined
17:18:00  <mmalecki>ircretary: tell ircretary tell ircretary infinite recursion?
17:18:01  <ircretary>mmalecki: I'll be sure to tell ircretary
17:18:10  <piscisaureus_>ircretary: obey piscisaureus
17:18:10  <ircretary>piscisaureus_: I shall obey piscisaureus
17:18:20  <isaacs>piscisaureus_: the only thing admins can do is bomb
17:18:22  <isaacs>which does nothing.
17:18:23  <isaacs>:)
17:18:27  <piscisaureus_>ircretary: bomb piscisaureus
17:18:28  <ircretary>piscisaureus_: Launching all missiles
17:18:31  <piscisaureus_>Oh
17:18:39  <piscisaureus_>I was expecting to be bombed
17:18:41  <isaacs>hahah
17:18:44  <piscisaureus_>icretery: help
17:18:50  <piscisaureus_>ircretary: help
17:18:51  <ircretary>piscisaureus_: I'm not sure what to do with that command. Ask for help in PM.
17:18:59  <isaacs>ircretary: help
17:19:00  <ircretary>isaacs: I'm not sure what to do with that command. Ask for help in PM.
17:19:22  <isaacs>haha, the logs aren't actually there any more.
17:19:29  <isaacs>i used to have her slurping up stuf.
17:20:01  <mmalecki>isaacs: if you guys need logs, I can fetch them from kohai
17:20:28  <mmalecki>isaacs: also, good morning!
17:23:05  * dapjoined
17:28:05  <piscisaureus_>Ah, tootallnate fell for the path.join trap
17:28:18  <piscisaureus_>That's why it should be removed :-)
17:41:38  <rphillips>is there a feature, or are there plans to support a debug API to list what is in the libuv event loop?
17:42:41  <dap>+1 if not
17:43:06  <tjfontaine>piscisaureus_: which trap?
17:48:01  * mikealquit (Quit: Leaving.)
18:00:41  * sh1mmerquit (Quit: sh1mmer)
18:11:30  <piscisaureus_>rphillips: yes, there should be
18:11:34  <piscisaureus_>er, there will be
18:16:20  <indutny>noooo
18:16:21  * orlandovftwquit (Ping timeout: 265 seconds)
18:16:32  <indutny>:)
18:20:51  * dshaw_joined
18:29:26  <isaacs>piscisaureus_: hey, got a minute to talk about child process stdio fds?
18:29:37  <piscisaureus_>isaacs: yeah
18:30:10  <isaacs>piscisaureus_: what would it actually take to do soemthing akin to customFds for windows?
18:30:33  <piscisaureus_>isaacs: well we support the [0, 1, 2] case
18:30:44  <isaacs>piscisaureus_: right, but there are a few use cases where people open a socket or something, and then need to pass that to a child process.
18:30:50  <isaacs>to use as its stdio
18:30:56  <piscisaureus_>isaacs: yeah - that's the problem
18:31:03  <isaacs>right or wrong, there are existing unix programs that this is the only way to interact with them properly.
18:31:11  <isaacs>and doing that all thorugh JS is pretty painful
18:31:52  * mikealjoined
18:32:14  <isaacs>customFds is a very ugly interface, but it did allow for this kind of behavior, and this is keeping some people stuck on 0.4.
18:32:24  <piscisaureus_>isaacs: well first of all they should take HANDLEs and not FDs. FDs are are used only for some stuff, which are normally stdio and files. Sockets ususally use HANDLEs.
18:32:57  <piscisaureus_>isaacs: but the bigger problem is: windows programs usually can deal with pipes and files for stdio, but sockets almost never work
18:33:22  <isaacs>what about if we just threw ENOTSUP on windows?
18:33:27  <isaacs>but let unix do this.
18:33:39  <isaacs>how much does that offend you?
18:34:03  <piscisaureus_>isaacs: the think is, on unix you can just write() to an fd, and regardless of the type of file descriptor it will do the right thing. On windows you actually have to be careful and decide whether you want to use WriteFile, overlapped WriteFile, WSASend, etc
18:34:18  <isaacs>right
18:34:40  <mjr_>This "windows" sounds hard.
18:34:42  <isaacs>so, passign in customFds:[8, 7, 7] could never ever work.
18:34:56  <isaacs>here's a use case: https://github.com/joyent/node/issues/1940
18:35:19  <piscisaureus_>isaacs: well, it could if 8 and 7 happen to be an open file, or a pipe that's been openened in blocking mode (which node doesn't - it opens pipes in overlapped mode)
18:35:44  <isaacs>what if we had a way to create a pipe pair, but it returns handle objects that contain some information about what they are?
18:35:46  <piscisaureus_>And in the future we may wanna open files in overlapped mode as well so then it could really never work
18:37:14  <piscisaureus_>isaacs: so basically what this guy needs is a writable stdout, am i right?
18:37:55  <piscisaureus_>btw - I know windows is madness but unix makes people do this crap.
18:39:33  <mjr_>oh unix has plenty of crap
18:41:15  <piscisaureus_>isaacs: I have a better hack for boudehlo.
18:41:35  <piscisaureus_>var qmail_queue = cp.spawn('qmail-queue');
18:41:53  <piscisaureus_>qmail_queue.stdin.readable = qmail_queue.stdout.writable = true;
18:41:57  <piscisaureus_>works just fine :-)
18:42:07  <piscisaureus_>but that's kind of OT
18:43:46  * TooTallNatejoined
18:44:05  <isaacs>piscisaureus_: wait, that works?
18:44:07  <isaacs>that's.... weird.
18:44:10  <isaacs>does that work on windows?
18:44:15  <isaacs>i mean, does that work on unix?
18:44:28  <piscisaureus_>isaacs: it happens to work on either platform. But it relies on implemenation details :-)
18:44:38  <isaacs>ok
18:44:46  <isaacs>well... we need to be careful what we suggest.
18:44:50  <piscisaureus_>yeah
18:44:55  <piscisaureus_>I don't want to suggest this
18:45:05  <isaacs>i mean, another option is just to use JS stream objects, and Stream.pipe them together
18:45:12  <isaacs>but that is a pita
18:45:32  <piscisaureus_>isaacs: but this guy just needs writable stdout righ?
18:45:47  <isaacs>i'm not sure
18:45:48  * bbbbquit (Ping timeout: 276 seconds)
18:46:33  <isaacs>there's also some internal stuff at joyent that breaks with the removal of arbitrary customFds
18:46:53  <piscisaureus_>isaacs: so, what would that be?
18:46:59  <isaacs>well, i'm trying to get details.
18:48:21  <piscisaureus_>isaacs: but... let's not settle on solutions yet.
18:48:38  <isaacs>k
18:48:53  <isaacs>btw, i see throwing ENOTSUP on windows as a very very last resort.
18:49:19  <piscisaureus_>heh
18:50:22  <tjfontaine>see, the example already used qmail, so insanity was implied
18:55:30  <bentkus>400 watchers on node.native
18:55:38  <bentkus>poor dude
18:56:04  <mmalecki>power of ryah's tweets
18:56:08  <piscisaureus_>And it barely works
18:59:00  <bentkus>well, not that many c++ devs following ryah
19:02:31  <mmalecki>customFds supports only -1, 1, 2, 3, right?
19:03:25  <indutny>mmalecki: I think 0,1,2
19:04:20  * sh1mmerjoined
19:04:56  <mmalecki>oh, right, 0, 1, 2
19:05:04  <mmalecki>-1 is null
19:06:09  <mmalecki>indutny: but only these? no file fds?
19:06:14  <TooTallNate>piscisaureus_: wow, crazy gyp bug
19:06:30  <mmalecki>it seems like this from the source
19:06:44  <piscisaureus_>TooTallNate: yeah, I already tracked it down to a gyp bug but didn't get any further
19:07:00  <TooTallNate>oh ok :\
19:07:15  <TooTallNate>so for now.... don't compile across drives!
19:07:25  <TooTallNate>lame though
19:10:05  * orlandovftwjoined
19:12:09  * pieternquit (Ping timeout: 245 seconds)
19:18:28  * pieternjoined
19:22:28  <isaacs>mmalecki: yes, either -1 or the standard stdio fd's.
19:22:31  <isaacs>mmalecki: that's it
19:36:43  <mmalecki>isaacs: thanks
19:36:54  * brsonjoined
19:37:09  <creationix>piscisaureus_, if I hit this assert, am I doing something wrong or is it a bug in libuv?
19:37:09  <creationix>https://github.com/joyent/libuv/blob/master/src/unix/stream.c#L586
19:37:42  <creationix>there was some error, and the user didn't call close
19:37:56  <piscisaureus_>hmm
19:38:20  <creationix>if I'm reading the comments right, I need to call uv_close in my on_read callback?
19:38:29  <piscisaureus_>I don't think we ever agreed that the user is obliged to immediately call uv_close() on error
19:38:39  <piscisaureus_>After an error, the socket is unusable yes
19:38:59  <creationix>unusable sure, but the assert is a hard crash
19:39:00  <piscisaureus_>Let me look at uv_win
19:39:10  <piscisaureus_>which is the reference implementation :-p
19:40:14  <creationix>so libuv was windows first, then the others?
19:40:31  <piscisaureus_>no
19:40:38  <piscisaureus_>I was half kidding
19:40:55  <piscisaureus_>But ryan was definitely more sloppy than me when writing that thing :-)
19:41:01  <piscisaureus_>Or, he was probably more busy
19:41:07  <piscisaureus_>https://github.com/joyent/libuv/blob/master/src/win/tcp.c#L823
19:41:13  <piscisaureus_>on error we should just stop reading
19:42:00  <piscisaureus_>creationix: so you may wanna send a patch that calls uv_read_stop before making the callback
19:42:21  <creationix>so I have to sign a new CLA or is the node one good enough?
19:42:31  <piscisaureus_>The node one is good
19:43:16  <piscisaureus_>creationix: I am off for dinner, but I am sure bnoordhuis can help you.
19:43:21  <piscisaureus_>otherwise I will see your pull
19:43:32  <creationix>also dvv says he talked to bnoordhuis about this yesterday and the issue wasn't in libuv, but in luvit
19:43:40  <creationix>I'll try making a patch though
19:46:23  <piscisaureus_>creationix: when did bnoordhuis way that?
19:48:10  * sh1mmer_joined
19:48:33  * sh1mmer_quit (Remote host closed the connection)
19:48:45  <creationix>dvv says yesterday, but I think he meant that we should be calling uv_close on error
19:48:52  <creationix>which isn't the same thing exactly
19:49:09  * sh1mmer_joined
19:51:44  * sh1mmerquit (Ping timeout: 245 seconds)
19:51:45  * sh1mmer_changed nick to sh1mmer
19:52:15  <creationix>hmm, libuv seems to have 7 failed unit tests before I change anything
19:52:23  <creationix>well, my patch doesn't seem to add any new failures?
19:52:38  <mmalecki>creationix: yeah. also, check travis for latest build results :)
19:53:49  <creationix>hmm, travis says zero failures
19:54:11  <mmalecki>creationix: libuv, I mean
19:54:30  <mmalecki>http://travis-ci.org/#!/joyent/libuv/builds/638644
19:54:53  <creationix>ahh, I was looking at node
19:55:35  * piscisaureus_quit (Ping timeout: 248 seconds)
19:57:24  * CoverSlidequit (Read error: Connection reset by peer)
19:58:03  * CoverSlidejoined
20:09:17  <TooTallNate>where do i download solaris 64-bit?
20:10:41  <bnoordhuis>creationix: you rang?
20:10:49  <bnoordhuis>TooTallNate: opensolaris
20:11:09  <bnoordhuis>indiana / illumos
20:11:19  <tjfontaine>does that still exist?
20:11:59  <bnoordhuis>which one?
20:12:06  <tjfontaine>sometimes it's difficult to remember what oracle cut and didn't
20:12:28  <bnoordhuis>opensolaris is admittedly mostly dead
20:12:38  <bnoordhuis>the two other are going reasonably strong though
20:12:45  <bnoordhuis>"two other"...
20:13:09  <bnoordhuis>sorry, that was a dutchism creeping in
20:13:54  <CoverSlide>i'm assuming there's no code sharing of solaris 11
20:15:00  <bnoordhuis>i doubt it. oracle takes a very utilitarian approach to open source
20:15:41  <tjfontaine>though someone did "leak" the 11 kernel recently
20:16:39  <isaacs>bnoordhuis: that's the most complimentary thing i've ever heard about oracle with respect to open source.
20:17:05  <tjfontaine>the channel is logged afterall
20:17:10  <isaacs>haha
20:17:25  <isaacs>check out SmartOS or what's the other one? that's debian-like?
20:17:30  <isaacs>the other illumos
20:17:38  <tjfontaine>nexenta?
20:17:52  <isaacs>nexenta, right
20:18:06  <isaacs>er, wait, no
20:18:09  <isaacs>nexenta's the company
20:18:29  <CoverSlide>nexenta is now illumian
20:18:49  <tjfontaine>everything keeps changing
20:18:52  <isaacs>ah, ok
20:19:59  <isaacs>right, illumian
20:19:59  <isaacs>https://www.illumos.org/projects/illumian
20:20:35  <TooTallNate>ok smartos seems like the most user-friendly
20:21:08  <creationix>bnoordhuis, https://github.com/joyent/libuv/pull/310
20:21:23  <creationix>bnoordhuis, but you think I should still call uv_close on error within luvit?
20:21:25  <isaacs>TooTallNate: smartos is made by a company that explicitly gives a damn about node :)
20:21:31  <isaacs>so that's always nice.
20:21:41  <bnoordhuis>creationix: yes
20:21:51  <TooTallNate>isaacs: is there an x64 version?
20:21:57  <isaacs>not sure
20:22:10  <bnoordhuis>creationix: that probably needs to be documented a little better but closing on error is the correct approach
20:22:27  <creationix>can I run smartos on an old pc desktop and get Xorg and friends?
20:22:45  * mralephjoined
20:22:55  <creationix>bnoordhuis, I understand it should be closed, my question is should I do it automatically or let users of luvit close it
20:23:01  <creationix>does node close in that situation?
20:23:38  <bnoordhuis>creationix: yes
20:24:49  <bnoordhuis>creationix: you probably want to copy that behaviour, makes things a little easier on your users
20:26:08  <bnoordhuis>isaacs: do you have a couple of high-prio bugs you'd like fixed for the next release?
20:26:26  <isaacs>bnoordhuis: next 0.6 or master?
20:26:41  <bnoordhuis>next 0.6 but master is okay too
20:26:50  <isaacs>bnoordhuis: if you are offering, i'd like you to take a look at these recent ssl things that have been posted.
20:27:03  <bnoordhuis>with pleasure
20:27:20  * isaacsis mildly disturbed by what gives bnoordhuis pleasure, though thankful for it.
20:27:39  <bnoordhuis>oh, you should see my basement
20:27:41  <bnoordhuis>then again, maybe not
20:27:44  <isaacs>hahah
20:28:16  <isaacs>we cannot add new exposed methods in 0.6. that is a somewhat unreasonable constraint, i know, but try to approach it from that point of view.
20:29:32  <isaacs>if it's absolutely necessary to change some exposed API surface for security reasons, maybe, but please verify that that's the case by at least trying to fix it 100% internally.
20:30:24  <isaacs>bnoordhuis: then let's plan on a v0.6 next week.
20:31:25  <bnoordhuis>isaacs: okay, there are some subtleties. the reason i initially added those methods is that node can pick a set of sane defaults that will work for 99% of people
20:31:47  <bnoordhuis>but the remaining 1% needs a way to override them
20:31:56  <isaacs>right
20:32:05  <bnoordhuis>so what would be acceptable? new keys to the options object, environment variables?
20:32:35  <isaacs>ugh. every option is crappy.
20:33:05  <isaacs>adding a method that's exposed to the user is the worst approach, though
20:33:43  <isaacs>what would the environment variable or options key look like? what is the thing that's being overridden?
20:33:58  <bnoordhuis>ehm... for example, insecure tls negotation
20:34:06  <bnoordhuis>you nearly always want to disable that until you don't
20:34:30  <bnoordhuis>so allowInsecureRenegotation:true or NODE_TLS_ALLOW_INSECURE_RENEG=1
20:34:41  <bnoordhuis>something like that
20:38:51  <isaacs>hm.
20:39:24  <isaacs>bnoordhuis: add a config option that defaults to false.
20:40:05  <bnoordhuis>that would be my preferred method as well
20:43:08  <isaacs>ok.
20:43:39  <isaacs>please do the minimum possible change, though. this makes me very apprehensive to be doing in v0.6, but it's clearly necessary.
20:46:39  * bnoordhuisrewrites lib/tls.js in coffeescript
20:46:54  <mmalecki>use coco.
20:48:50  * mikealquit (Quit: Leaving.)
20:51:03  <bnoordhuis>maybe moonscript
20:51:22  <creationix>moonscript, lol
20:52:09  <creationix>in the comments, "... and also I replaced v8 with luajit so I could write the script in moonscript"
20:52:19  <mmalecki>lol
20:52:31  <mmalecki>"this also made node 3x faster. accidentally."
20:56:59  * indexzerojoined
20:59:23  <creationix>mmalecki, and broke 100% of the existing community modules
21:00:12  <mmalecki>creationix: well, it'd be fine if he did it on master
21:08:57  <CIA-101>libuv: Igor Zinkovsky v0.6 * rae1b9f5 / test/test-fs.c : fix windows build - http://git.io/IpMMNA
21:09:00  <CIA-101>libuv: Igor Zinkovsky v0.6 * r8f7634c / src/win/pipe.c : windows: allow client connections to half-duplex pipes - http://git.io/q70yNQ
21:09:04  <CIA-101>libuv: Igor Zinkovsky v0.6 * r9615913 / src/win/pipe.c : wip - http://git.io/FBzUGA
21:09:16  <bnoordhuis>igorzi: wip?
21:09:23  <tjfontaine>windows installer stuff
21:09:38  <tjfontaine>oh perhaps work in progress
21:09:39  <bnoordhuis>yes, but igor's pushing it to the v0.6 branch
21:09:47  <igorzi>crap.. sorry. that wasn't supposed to go to v0.6
21:09:50  <tjfontaine>ut oh
21:10:18  <igorzi>i'll revert
21:10:36  * travis-cijoined
21:10:36  <travis-ci>[travis-ci] joyent/libuv#84 (v0.6 - ae1b9f5 : Igor Zinkovsky): The build is still failing.
21:10:36  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/c800043...ae1b9f5
21:10:36  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/652820
21:10:36  * travis-cipart
21:12:02  <igorzi>or should i force-push?
21:14:12  <CIA-101>libuv: Ben Noordhuis master * r62206c2 / include/uv.h : Clarify API doc comments in uv.h - http://git.io/t2iiDA
21:14:16  <bnoordhuis>igorzi: just force-push
21:16:07  * travis-cijoined
21:16:07  <travis-ci>[travis-ci] joyent/libuv#85 (master - 62206c2 : Ben Noordhuis): The build is still failing.
21:16:07  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/4a5f3bb...62206c2
21:16:07  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/652863
21:16:07  * travis-cipart
21:18:01  <CIA-101>libuv: Igor Zinkovsky v0.6 * r53eb993 / test/test-fs.c : fix windows build - http://git.io/vdAgVg
21:18:15  <igorzi>ok fixed.. sorry about that
21:19:41  * travis-cijoined
21:19:41  <travis-ci>[travis-ci] joyent/libuv#86 (v0.6 - 53eb993 : Igor Zinkovsky): The build is still failing.
21:19:41  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/ae1b9f5...53eb993
21:19:41  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/652880
21:19:41  * travis-cipart
21:21:34  * piscisaureus_joined
21:21:58  * isaacs_mobilejoined
21:23:37  <piscisaureus_>isaacs: how do I make ircretary stop watching something
21:25:53  <isaacs>piscisaureus_: you do "ircretary: stop watching something"
21:25:57  <isaacs>ircretary: stop watching npm
21:25:58  <ircretary>isaacs: Done.
21:26:03  <isaacs>ircretary: watch npm
21:27:32  <piscisaureus_>isaacs: doesn't work unfortunately
21:27:37  <piscisaureus_>ircretary: watch
21:27:46  <piscisaureus_>ircretary: watch
21:28:02  <piscisaureus_>isaacs: It says "done" but it keeps doing it
21:30:17  <isaacs>hrm.. really?
21:30:28  <piscisaureus_>yes
21:30:45  <isaacs>indeed.
21:30:48  <isaacs>she's very watchful :)
21:31:00  <isaacs>i'll debug toay
21:31:06  <isaacs>what do you want her to stop watching?
21:31:15  <piscisaureus_>isaacs: everything
21:31:27  <isaacs>heh, ok
21:31:29  <piscisaureus_>isaacs: Watching for all mentions of: bnoordhuis piscisaureus bert -bnoordhuis stop help
21:31:36  <isaacs>uh oh
21:31:40  <isaacs>yeah, that's a lot of crud
21:31:42  * isaacs_mobilequit (Remote host closed the connection)
21:32:05  <piscisaureus_>isaacs: because at first I didin't know what it did, or what it would do, I though I'd let her watch bnoordhuis
21:32:10  <isaacs>ahhh
21:32:14  <isaacs>like, watch what he's up to
21:32:17  <piscisaureus_>someone needs to keep an eye on him
21:32:21  <isaacs>hehe
21:32:22  <isaacs>right
21:32:31  <piscisaureus_>but she doesn't need to bug me with that
21:32:45  <isaacs>yeah
21:32:47  <bnoordhuis>piscisaureus_: your obsession with me is growing out of control
21:32:53  <bnoordhuis>i can't blame you though
21:33:31  <piscisaureus_>bnoordhuis: Now that I have cameras in your bedroom I don't need ircretary any more for that
21:33:42  <isaacs>piscisaureus_: please finish writing up the domains email. stop whatever else you're doing. turn off irc if ircretary is being too noisy.
21:33:55  <isaacs>:)
21:34:05  <bnoordhuis>piscisaureus_: i don't mind. learn from the master, eh?
21:34:08  <piscisaureus_>getting all bossy-y um?
21:34:26  <isaacs>piscisaureus_: please :)
21:34:41  <piscisaureus_>bnoordhuis: yes you vacuum clean like you never did anything else :-)
21:35:15  <isaacs>bbiab
21:35:17  <bnoordhuis>'vacuum clean'... is that an euphemism you youngster use?
21:35:19  * isaacsquit (Remote host closed the connection)
21:36:04  <piscisaureus_>bnoordhuis: I can say "suck" if you prefer.
21:36:10  <piscisaureus_>bnoordhuis: now get back to work.
21:36:16  <bnoordhuis>anyone feel like writing an ipv6 address parsing state machine in c? https://github.com/joyent/http-parser/issues/29
21:36:27  <bnoordhuis>piscisaureus_: that's no way to talk to your boss, bertje
21:37:24  <CIA-101>libuv: Igor Zinkovsky half-duplex-pipes * rf9be43a / (6 files in 4 dirs): support half-duplex pipes - http://git.io/NnIA_w
21:37:36  <igorzi>piscisaureus_ bnoordhuis: --^
21:37:45  <igorzi>piscisaureus_ bnoordhuis: review pls
21:38:50  <bnoordhuis>igorzi: lgtm but what's it needed for?
21:39:06  * travis-cijoined
21:39:06  <travis-ci>[travis-ci] joyent/libuv#87 (half-duplex-pipes - f9be43a : Igor Zinkovsky): The build failed.
21:39:06  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/commit/f9be43a
21:39:06  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/652974
21:39:06  * travis-cipart
21:39:18  <igorzi>bnoordhuis: there's a bug on windows when you try to connect to read-only pipe from node
21:40:04  <igorzi>bnoordhuis: this fixes that bug and exposes readable/writable, which node will use
21:40:32  <bnoordhuis>igorzi: piscisaureus_ is probably in a better position to review the patch than i am
21:40:41  <piscisaureus_>bnoordhuis: do the unix part
21:40:43  <bnoordhuis>the unix specific bits look okay though :)
21:40:56  <igorzi>bnoordhuis: yep, i wanted you to review the unix part
21:41:12  <piscisaureus_>igorzi: what will happen if someone makes a half-duplex connection to our pipe server?
21:41:35  <igorzi>"our pipe server" -> node pipes server?
21:41:52  <piscisaureus_>igorzi: yeah, a pipe server that is created by libuv?
21:42:18  <piscisaureus_>igorzi: als maybe uv_is_writable should verify if the stream is actually of a readable/writable type
21:42:26  <igorzi>piscisaureus_: you can't create half-duplex connection to libuv pipe server (cause it always creates a duplex pipe)
21:42:53  <igorzi>piscisaureus_: readable/writable are set automatically (not explicitly by the client)
21:43:13  <piscisaureus_>oh - right
21:45:38  * indexzeroquit (Quit: indexzero)
21:47:15  <igorzi>piscisaureus_: "maybe uv_is_writable should verify if the stream is actually of a readable/writable type" .. are there streams that can never be writable? (or readable)
21:47:36  <piscisaureus_>igorzi: they are not readable if they are a server. Or not connected.
21:47:44  <piscisaureus_>igorzi: so you should check that the appropriate flags are set
21:48:06  <igorzi>piscisaureus_: ahh right
21:49:42  <igorzi>piscisaureus_: on windows i think that means checking UV_HANDLE_CONNECTION flag
21:51:23  <igorzi>piscisaureus_: so, what do we do if a stream is a server? just say that it's not readable/writable? or error?
21:52:02  <piscisaureus_>igorzi: actually, scrap that for 0.6
21:52:44  <piscisaureus_>igorzi: sorry about that. UV_HANDLE_CONNECTION doesn't mean anything - it could still be unconnected
21:53:56  <piscisaureus_>igorzi: I will refactor it so that we just use the UV_HANDLE_READABLE and UV_HANDLE_WRITABLE flags on windows
21:54:05  <piscisaureus_>igorzi: but lets do that in 0.8
21:54:50  <igorzi>piscisaureus_: k.. i'll have the node patch shortly
21:55:05  <igorzi>piscisaureus_: ok to land?
21:55:17  <piscisaureus_>igorzi: go ahead
21:58:12  <CIA-101>libuv: Igor Zinkovsky v0.6 * rf9be43a / (6 files in 4 dirs): support half-duplex pipes - http://git.io/NnIA_w
21:59:52  * travis-cijoined
21:59:52  <travis-ci>[travis-ci] joyent/libuv#88 (v0.6 - f9be43a : Igor Zinkovsky): The build is still failing.
21:59:52  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/53eb993...f9be43a
21:59:52  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/653139
21:59:52  * travis-cipart
22:19:35  * isaacsjoined
22:30:57  * pieternquit (Quit: pietern)
22:39:39  * paddybyersquit (Quit: paddybyers)
23:02:49  * AvianFluquit (Quit: Leaving)
23:08:25  * diogosnowsjoined
23:09:26  * piscisaureus_quit (*.net *.split)
23:10:01  * piscisaureus_joined
23:13:42  <isaacs>mraleph: hey. am i remembering this right? wasn't there some v8 thing called "callsites" or something that you could use to dive into the JS program at run-time?
23:17:00  <isaacs>oh, found it
23:21:02  <mraleph> m?
23:31:39  <isaacs>was looking for stack[n].fun
23:42:52  <bnoordhuis>i don't understand why waf sometimes insist on rebuilding all of node...
23:45:50  <isaacs>bnoordhuis: it's more pythonic that way.
23:52:37  <bnoordhuis>piscisaureus_: why does uv_tcp_bind() defer EADDRINUSE errors?
23:53:58  <piscisaureus_>bnoordhuis: probably because either windows or unix does that by default
23:54:14  <piscisaureus_>bnoordhuis: I think on windows EADDRINUSE could be reported by spawn/connect and not by bind
23:54:43  <bnoordhuis>piscisaureus_: then it's probably that because on unix we go to great lengths to carry over the error...
23:55:13  <piscisaureus_>bnoordhuis: we were more picky to not leak platform details
23:55:17  <piscisaureus_>bnoordhuis: so keep it :-)
23:55:35  <bnoordhuis>i will, just curious
23:55:44  <bnoordhuis>it breaks the cluster module sometimes
23:55:51  <bnoordhuis>https://github.com/joyent/node/issues/2721
23:55:54  <piscisaureus_>bnoordhuis: how?
23:56:27  <benvie>couldn't there be some way for node to encapsulate the concept of file descriptors, or at a higher level the concept of I/O interfaces that are closer to system level, and provide for translation between the system's representation (file descriptor for example) and the thing wrapper in node
23:57:09  <benvie>basically something that'd be importable/exportable between node and the system at large, whatever that is for that OS
23:57:12  <bnoordhuis>piscisaureus_: net._createServerHandle() checks if r == -1 (which it's not), then hands off the fd to the worker process
23:57:33  <bnoordhuis>but said fd is not actually bound
23:59:50  <benvie>on windows it would be say something like an object wrapping the handle to an overlapped operation or whatever