00:03:56  <igorzi>bnoordhuis ryah_: so any ideas about how we can fix the ref-counting issue with child isolates?
00:04:04  <igorzi>bnoordhuis ryah_: do we want the channel to keep the isolate alive?
00:05:11  <igorzi>bnoordhuis ryah_: or at least it should be kept alive if someone has process.on('message')
00:06:05  * isaacsjoined
00:14:30  * `3rdEdenquit (Quit: Zzzzz)
00:24:14  <isaacs>bnoordhuis: hey
00:24:24  <isaacs>bnoordhuis: rmustacc said that you had asked something or other?
00:24:37  <isaacs>bnoordhuis: the joyent sf office is under attack by internet gremlins of some sort.
00:35:58  * paddybyersquit (Quit: paddybyers)
00:39:06  <bnoordhuis>isaacs: nothing special, i was just curious what kind of file descriptor that node app listens on
00:40:22  <bnoordhuis>igorzi: bert and i are fixing refcount behaviour in libuv
00:40:57  <bnoordhuis>(there's a lot of subtle differences between uv-win and uv-unix right now)
00:43:14  <isaacs>bnoordhuis: it's a thing that node-zpool is doing.
00:43:48  <isaacs>bnoordhuis: some tricky business where it creates a connection between the global zone and the child zone, such that the GZ can route messages and such to just that child zone.
00:43:56  <isaacs>bnoordhuis: there's really no way to do it without using listenFD
00:44:15  <isaacs>(or at least, not without completely restructuring the app from the ground up)
00:44:43  <bnoordhuis>i agree with bert that not having the ability to watch arbitrary fds is an oversight in the libuv api
00:45:08  <bnoordhuis>*arguably an oversight
00:45:25  <bnoordhuis>but seeing what the policy on new features is, i don't see this being fixed in v0.6
00:45:39  <isaacs>so, it sounds like the reasonable course of action would be to a) remove the assert in 0.6, and b) replac listenFD with a cleaner api in 0.7
00:45:49  <isaacs>whether or not this is "new api" is somewhat debatable.
00:46:01  <isaacs>i mean, we're not adding a function, we're just making it not throw..
00:46:08  <isaacs>same with the udp stuf.
00:47:10  <bnoordhuis>well... listenFD was removed for a reason
00:47:32  <bnoordhuis>the udp multicast / broadcast / ttl patches simply didn't make the cut
00:48:23  <igorzi>bnoordhuis: presumably once the refcount is figured out in libuv we'll still come back to this problem.. something needs to keep the child isolate alive when it has process.on('message')
00:48:47  <igorzi>right now it seems like unix impl is just getting lucky
00:49:08  <bnoordhuis>igorzi: we can fix that by not unref'ing the message channel
00:49:19  <bnoordhuis>crying baby, biab
00:53:33  <isaacs>signal from the child process.
00:57:58  <igorzi>SIG-feed-me-now :)
00:58:34  <bnoordhuis>talking about, i think i'll be sending myself a SIGSUSP
00:58:43  <bnoordhuis>see you tomorrow, guys
01:00:15  <igorzi>night, bnoordhuis
01:02:08  <isaacs>bnoordhuis: have fun
01:02:59  * bnoordhuisquit (Ping timeout: 248 seconds)
01:21:52  * CoverSlidequit (Ping timeout: 240 seconds)
01:33:17  * brsonquit (Ping timeout: 240 seconds)
01:36:10  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
01:44:51  * piscisaureus_joined
01:45:09  <piscisaureus_>isaacs: short question
01:45:21  <isaacs>yo
01:45:27  <piscisaureus_>isaacs: at joyent you wanna do listenFD - but where does that fd come from?
01:46:05  <isaacs>piscisaureus_: it's a socket opened up between the global zone and a child zone on the server.
01:46:11  <isaacs>piscisaureus_: a solaris zone thingie
01:46:23  <ryah_>piscisaureus_: we should probably do the listenFD if possible on windows
01:46:24  <piscisaureus_>isaacs: ok - so who opens the socket?
01:46:38  <ryah_>there are various times when you need to interface with the system to do this sort fo stuff
01:47:04  <ryah_>also we're already exposing FDs to users through fs.open
01:47:22  <ryah_>piscisaureus_: an addon opens the socket
01:47:53  <piscisaureus_>ryah_: aha
01:48:07  <ryah_>(i think)
01:48:49  <piscisaureus_>ryah_: I think we should make uv_pipe_open and uv_tcp_open work well
01:48:54  <piscisaureus_>(insofar they don't already)
01:49:08  <piscisaureus_>ryah_: and we must allow compiled addons to create wraps
01:50:19  * brsonjoined
01:51:23  <piscisaureus_>I am offline. No wired internet, and exceeded my limit for mobile :-(
01:51:31  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
02:02:53  * perezdquit (Quit: perezd)
02:03:18  * sh1mmerquit (Quit: sh1mmer)
02:04:38  * sh1mmerjoined
02:14:04  * dshaw_1quit (Quit: Leaving.)
02:23:03  <igorzi>ryah_: i don't know if we'll be able to get listenFD implemented on windows with the same semantics as on unix
02:24:54  <igorzi>ryah_: we can make uv_pipe_open/uv_tcp_open better with stdio FDs.. but not with arbitrary FDs
02:26:02  <igorzi>what we need is listenHandle(handle), where handle is an object not an integer
02:29:20  <ryah_>hm okay
02:29:34  <ryah_>we might need to do this one as a one-off then for unix addon people
02:30:49  * pieternquit (Quit: pietern)
02:33:14  <isaacs>ryah_: if we just remove the assert in libuv, then unix people can sort of hack it together for the short term.
02:33:25  * mikealquit (Quit: Leaving.)
02:33:30  <isaacs>ryah_: and then do a better handle-wrapping API in 0.7
02:34:22  <ryah_>yeah - if ben is okay with it
02:34:37  <CIA-115>node: isaacs v0.6 * r4afc46d / (27 files in 6 dirs): Upgrade V8 to 3.6.6.19 - http://git.io/Q5qATw
02:35:07  * mikealjoined
02:40:28  <isaacs>Test, please: http://nodejs.org/dist/v0.6.8-RC/node-v0.6.8-RC1.tar.gz
02:41:25  <ryah_>testing...
02:42:24  * travis-cijoined
02:42:24  <travis-ci>[travis-ci] joyent/node#281 (v0.6 - 4afc46d : isaacs): The build was fixed.
02:42:24  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/4fdec07...4afc46d
02:42:24  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/547426
02:42:24  * travis-cipart
03:06:20  <ryah_>solaris: [12:55|% 100|+ 689|- 5]: Done
03:15:03  * brsonquit (Quit: leaving)
03:17:23  <ryah_>linux: [22:31|% 100|+ 688|- 6]: Done
03:17:44  <ryah_>osx: [25:22|% 100|+ 690|- 4]: Done
03:24:07  * mikealquit (Quit: Leaving.)
03:27:12  <isaacs>yep, i'm seeing similiar results.
03:27:20  <isaacs>same old miscreants.
03:28:07  <isaacs>alright, pulling the trigger on this.
03:41:36  * mikealjoined
03:42:54  * mikealquit (Client Quit)
03:55:26  <CIA-115>node: isaacs v0.6 * rd18ceba / (6 files in 4 dirs): (log message trimmed)
03:55:26  <CIA-115>node: 2012.01.19, Version 0.6.8 (stable)
03:55:26  <CIA-115>node: * Update V8 to 3.6.6.19
03:55:26  <CIA-115>node: * Numeric key hash collision fix for V8 (Erik Corry, Fedor Indutny)
03:55:26  <CIA-115>node: * Add missing TTY key translations for F1-F5 on Windows (Brandon Benvie)
03:55:26  <CIA-115>node: * path.extname bugfix with . and .. paths (Bert Belder)
03:55:27  <CIA-115>node: * cluster: don't always kill the master on uncaughtException (Ben
04:01:28  <isaacs>retweet every tweet! https://twitter.com/#!/nodejs/status/160210072805453824
04:03:16  * travis-cijoined
04:03:16  <travis-ci>[travis-ci] joyent/node#282 (v0.6 - d18ceba : isaacs): The build was broken.
04:03:16  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/4afc46d...d18ceba
04:03:16  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/547606
04:03:16  * travis-cipart
04:05:18  <isaacs>man, we gotta fix whatever race condition makes node's travis builds succeed *half* the time
04:08:51  * mikealjoined
04:09:06  * mikealquit (Client Quit)
04:13:39  * isaacsquit (Remote host closed the connection)
04:17:15  * mikealjoined
04:27:50  <pquerna>https://github.com/joyent/node/blob/v0.6/ChangeLog
04:28:05  <pquerna>hrm, issacs gone, but some of the patches koichi did aren't reflected in that
04:28:18  <pquerna>double callback on error fix etc
04:36:28  * mikealquit (Quit: Leaving.)
04:48:28  * perezdjoined
04:58:45  * dshaw_joined
05:15:37  <CIA-115>node: isaacs v0.6 * rec1d1ee / src/node_version.h : Now working on 0.6.9 - http://git.io/CyKjvg
05:23:25  * travis-cijoined
05:23:25  <travis-ci>[travis-ci] joyent/node#283 (v0.6 - ec1d1ee : isaacs): The build is still failing.
05:23:25  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/d18ceba...ec1d1ee
05:23:25  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/547750
05:23:25  * travis-cipart
06:05:32  * mraleph1joined
06:11:25  <igorzi>isaacs: the signfificant fs.stat perf improvement on windows isn't in the changelog (https://github.com/joyent/node/issues/2521)
06:36:11  * mikealjoined
06:44:46  * mraleph1quit (Quit: Leaving.)
06:44:46  <indutny>morning
06:45:47  * perezdquit (Quit: perezd)
06:52:37  * paddybyersjoined
07:14:49  * mikealquit (Quit: Leaving.)
07:20:22  * kuebkjoined
07:33:30  * mikealjoined
07:35:30  * kuebk1joined
07:38:48  * kuebkquit (Ping timeout: 252 seconds)
07:44:45  * mikealquit (Quit: Leaving.)
07:44:56  <indutny>q
07:44:58  <indutny>oops
07:54:38  * mikealjoined
08:11:31  * mikealquit (Quit: Leaving.)
08:14:07  * mralephquit (Quit: Leaving)
08:49:45  * mikealjoined
10:50:07  * kuebk1part
11:22:35  * AvianFluquit (Ping timeout: 244 seconds)
11:38:04  * AvianFlujoined
12:40:47  * piscisaureus_joined
13:10:27  * bnoordhuisjoined
13:48:07  <CIA-115>node: Shigeki Ohtsu master * r2156e5e / src/node_file.cc :
13:48:07  <CIA-115>node: fs: don't assert on uv_fs_*() errors
13:48:07  <CIA-115>node: Pass errors to the JS callbacks, don't assert in C++ land.
13:48:07  <CIA-115>node: Fixes among other things the case where Node aborts because uv_fs_futimes()
13:48:07  <CIA-115>node: returns ENOSYS. - http://git.io/syxsbg
14:00:52  * travis-cijoined
14:00:52  <travis-ci>[travis-ci] joyent/node#284 (master - 2156e5e : Shigeki Ohtsu): The build is still failing.
14:00:52  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/0f33768...2156e5e
14:00:52  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/549026
14:00:52  * travis-cipart
14:12:28  <indutny>bnoordhuis: heya
14:12:35  <bnoordhuis>indutny: hoya
14:18:50  <mmalecki>morning everyone!
14:25:47  * bnoordhu1sjoined
14:30:08  * bnoordhu1squit (Ping timeout: 244 seconds)
14:35:11  <piscisaureus_>uya
14:35:51  <indutny>oya
14:50:00  <piscisaureus_>I wish github would prevent people from submitting pull requests without signing the CLA
14:52:58  <mmalecki>piscisaureus_: bot?
14:53:20  <piscisaureus_>mmalecki: yeah write a bot for that
14:54:07  <mmalecki>piscisaureus_: where do you store list of people who singed it?
14:54:29  <piscisaureus_>mmalecki: in google docs - but it's not a public list
14:55:02  * mmaleckisearches npm for google docs module
14:55:08  <piscisaureus_>mmalecki: but you can assume that everyone who is in AUTHORS has signed it as well
14:57:01  <piscisaureus_>mmalecki: I can't give you access to the CLA list at this point but if you can actually come up with something that works then we can probably work something out :-)
14:58:00  <mmalecki>piscisaureus_: sounds fun. I'll put it on my TODO list :)
15:02:37  <CIA-115>node: Ben Noordhuis master * r4e52477 / (src/handle_wrap.cc src/node_file.cc):
15:02:38  <CIA-115>node: fs, handle_wrap: use Loop(), not uv_default_loop()
15:02:38  <CIA-115>node: Using the default loop will fail in unexpected and interesting ways when
15:02:38  <CIA-115>node: isolates are used. - http://git.io/CNq80Q
15:02:38  <CIA-115>node: Ben Noordhuis master * r6b58537 / common.gypi :
15:02:38  <CIA-115>node: build: disable NDEBUG in release builds for now
15:02:38  <CIA-115>node: assert() sanity checks are a good thing. - http://git.io/d7lzSQ
15:15:52  * travis-cijoined
15:15:53  <travis-ci>[travis-ci] joyent/node#285 (master - 6b58537 : Ben Noordhuis): The build is still failing.
15:15:53  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/2156e5e...6b58537
15:15:53  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/549274
15:15:53  * travis-cipart
15:19:45  <bnoordhuis>piscisaureus_: so what did we decide yesterday? ref/unref is persistent and idempotent, handles ref when created or when started?
15:20:01  * isaacsjoined
15:20:06  <piscisaureus_>handles ref when started
15:20:13  <piscisaureus_>ref/unref is persistent and idempotent
15:20:22  <piscisaureus_>all uv_req_t also refs
15:20:38  <bnoordhuis>right
15:20:39  <piscisaureus_>uv_close also refs
15:20:46  <bnoordhuis>i'm going to split that in handle_refs and req_refs
15:21:02  <piscisaureus_>I am not :-)
15:21:09  <piscisaureus_>bnoordhuis: but go ahead :-)
15:21:18  <bnoordhuis>i will
15:21:21  <piscisaureus_>bnoordhuis: basically, the loop only exits when there's really nothing more to do
15:21:39  <piscisaureus_>bnoordhuis: but you have the option to ignore particular handles
15:22:14  <piscisaureus_>bnoordhuis: https://github.com/xk/node-threads-a-gogo --> wtf
15:22:50  <bnoordhuis>oh, it's that jorge guy
15:22:54  <piscisaureus_>bnoordhuis: very bold claim but if you look at the sources, they are all empty
15:23:01  <piscisaureus_>looks like BS to me
15:23:30  <bnoordhuis>he's probably from the school of less-is-more
15:23:46  <bnoordhuis>and, truth be told, i don't see any immediate bugs in his code
15:23:53  <piscisaureus_>hahaha
15:32:12  <isaacs>bnoordhuis: wow, all the tests pass!
15:32:23  <isaacs>it must work.
15:42:48  <bnoordhuis>TDD at it's best!
15:43:02  <bnoordhuis>https://github.com/joyent/libuv/pull/232 <- anyone have opinions on this PR?
15:43:56  <bnoordhuis>did i just type "it's best"? oh my
15:56:13  * pieternjoined
16:10:33  <piscisaureus_>bnoordhuis: do we have a gyp command that builds only v8?
16:10:38  * piscisaureus_needs to learn gyp
16:11:03  <bnoordhuis>piscisaureus_: cd into deps/v8, `gyp tools/gyp/v8.gyp`, make -j 8
16:11:18  <piscisaureus_>bnoordhuis: thnx
16:11:41  <piscisaureus_>bnoordhuis: I am chopping up that patch that appeared on the ML to support x64 builds for v8
16:12:30  <bnoordhuis>piscisaureus_: win x64 builds, right?
16:12:38  <piscisaureus_>bnoordhuis: yeah
16:17:12  <piscisaureus_>bnoordhuis: no more procrastination
16:18:01  <bnoordhuis>piscisaureus_: who? you or me? :)
16:18:07  <piscisaureus_>bnoordhuis: yme
16:18:22  <bnoordhuis>piscisaureus_: i know a girl by that name
16:18:27  <bnoordhuis>tall, slender, blond - you'd like her
16:18:35  <piscisaureus_>who wouldn't?
16:18:49  <piscisaureus_>unless you are now going to enumerate her deficiencies?
16:18:57  <bnoordhuis>none whatsoever
16:19:05  <bnoordhuis>you can have her if you don't mind sloppy seconds
16:25:28  <isaacs>bnoordhuis: hey.
16:25:35  <bnoordhuis>isaacs: ho
16:25:44  <isaacs>bnoordhuis: what's up with the udp stuff? any chance we can get that in for 0.6.9?
16:25:58  <bnoordhuis>isaacs: you mean the multicast / broadcast / ttl stuff?
16:26:07  <isaacs>yeah, the stuff that fell on the floor.
16:26:16  <bnoordhuis>i asked the guy to rebase it
16:28:15  <piscisaureus_>I am down with adding that to 0.6
16:28:25  <piscisaureus_>we always said we were going to add it to 0.6.2 or something
16:28:27  <bnoordhuis>yeah, me too
16:28:42  <bnoordhuis>i actually feel kind of bad about postponing it for so long :/
16:29:24  <isaacs>yeah. we need more core devs.
16:29:28  <isaacs>everyone's too busy.
16:30:28  * AndreasMadsenjoined
16:32:17  <isaacs>bnoordhuis: github seems to think that https://github.com/joyent/node/pull/2163 will merge cleanly against 0.6
16:33:18  <bnoordhuis>isaacs: it needs to be split into libuv and node parts
16:33:26  <bnoordhuis>let me try that
16:34:05  <bnoordhuis>no wait, the guy didn't sign the cla yet
16:35:20  <isaacs>d'oh.
16:35:21  <bnoordhuis>the patch also doesn't apply
16:35:26  <isaacs>oh, ok
16:35:32  <isaacs>yeah, that green bar is a bit of a liar sometimes.
16:35:40  <isaacs>not a liar. just an idiot.
16:35:43  <isaacs>it's too trusting.
16:35:50  <bnoordhuis>computers, what can you expect?
16:36:46  <AndreasMadsen>Now that we talk UDP, when will `node -e "require('dgram').createSocket('udp4');"` be fixed?
16:37:18  <piscisaureus_>yeah we should fix that
16:37:35  <piscisaureus_>it will be fixed in v0.7 anyway because we make the libuv refcount work differently
16:37:46  <piscisaureus_>but maybe we should "backport" that to 0.6 somehow
16:38:13  <bnoordhuis>AndreasMadsen: working on that
16:38:26  <AndreasMadsen>bnoordhuis: Oh, good
16:38:38  <bnoordhuis>backport won't be trivial though, it changes libuv's semantics quite profoundly
16:58:07  <piscisaureus_>bnoordhuis: true
16:59:37  * perezdjoined
17:02:59  <isaacs>piscisaureus_: what would be the result of that backporting?
17:03:20  <piscisaureus_>isaacs: well for example node -e "process.stdin" would not hang :-)
17:03:53  <piscisaureus_>isaacs: basically we would go back to node 0.4 semantics
17:04:05  <isaacs>hm... i thought we already sort of hacked around that in 0.6.7
17:04:11  * mrb_bkquit (Read error: Connection reset by peer)
17:04:11  * Raynosquit (Write error: Broken pipe)
17:04:13  <piscisaureus_>isaacs: yes but poorly
17:04:16  <isaacs>sure
17:04:29  <isaacs>but if it's going to be tricky to backport, i'd say skip it.
17:04:40  <isaacs>let's put the good fixes in 0.7, do the minimum possible for 0.6
17:05:10  <isaacs>we do need to get udp in there, and at least unblock listenFD, but hopefully 0.6.9 would be the last one. (of course, we said that about 0.4.9, too)
17:05:11  <piscisaureus_>isaacs: the v0.7 version would basically change libuv
17:05:12  <piscisaureus_>isaacs: and we would remove almost all uv_ref and uv_unref from node
17:05:25  <isaacs>piscisaureus_: that sounds very exciting.
17:05:27  <isaacs>and much cleaner.
17:05:38  <isaacs>but also way too big a change for a stable branch.
17:06:00  <piscisaureus_>isaacs: yeah so if we would do the backport then we would actually add more uv_ref and uv_unref :-0
17:06:23  <isaacs>every part of that makes my alarms start going off.
17:07:47  <bnoordhuis>isaacs: i just replied to that listenFD email thread, actually
17:07:55  <isaacs>sweet, thanks.
17:08:04  <bnoordhuis>well... read the email first :)
17:08:36  <bnoordhuis>piscisaureus_: the more i think about it, the more i think uv_ref and uv_unref should go
17:08:44  <isaacs>bnoordhuis: it sounds like we have consensus.
17:09:06  <isaacs>bnoordhuis: remove the assert. no, a module like that doesn't exist yet, but if it can be done in pure-js, and you think it would be trivial to write, it would be much appreciated.
17:09:06  <bnoordhuis>ref handles and requests, not loops! (not, admittedly, a great slogan)
17:09:39  <bnoordhuis>isaacs: c++, not js - otherwise it's relatively trivial
17:10:19  <piscisaureus_>bnoordhuis: yes, exactly
17:10:39  <isaacs>bnoordhuis: ok, well, let's try that, then.
17:11:38  <isaacs>bnoordhuis: just so i'm clear, is sendFD removed as well, or is that still there?
17:11:46  <isaacs>it looked like just listenFD was crippled.
17:12:05  <piscisaureus_>isaacs: sendFD is also removed I think, but we have sendHandle now
17:12:27  <isaacs>hm. ok.
17:13:07  <isaacs>for 0.7, then, should we have Server.listenHandle(handle), and just try to replace all fd's with handles everywhere?
17:13:14  <piscisaureus_>isaacs: yes, that's closer
17:13:31  <isaacs>so, fs.open() gives you a handle, fs.fchown takes a handle, etc, etc.
17:13:41  <piscisaureus_>isaacs: well for files we don't do this yet
17:13:47  <isaacs>ok..
17:13:49  <piscisaureus_>isaacs: but actually I would like to
17:13:56  <isaacs>i mean, that seems conceptually cleaner.
17:14:01  <piscisaureus_>isaacs: I agree
17:14:26  <isaacs>but also sounds like a lot of tedious work :)
17:14:50  * isaacs.oO( maybe node needs some interns... )
17:14:51  <piscisaureus_>isaacs: it's also not really important though
17:14:58  <piscisaureus_>:-)
17:15:00  <isaacs>yeah
17:15:06  <bnoordhuis>isaacs: where does the handle argument to Server.listenHandle() come from?
17:15:30  <isaacs>bnoordhuis: from opening a socket somewhere in another process, and then doing child.sendHandle(handle)
17:15:33  <piscisaureus_>isaacs: it was never possible to use file FDs and socket FDs interchangeably in node anyway
17:15:34  <bnoordhuis>right
17:15:45  <bnoordhuis>i mean, it won't work for systemd like approaches
17:15:56  <bnoordhuis>where a process gets an extra file descriptor at startup
17:16:08  <piscisaureus_>bnoordhuis: for systemd we need a way for addon authors to create a HandleWrap
17:16:40  <piscisaureus_>bnoordhuis: from an FD
17:16:48  <bnoordhuis>piscisaureus_: yes
17:17:16  <isaacs>piscisaureus_: you can actually use file FDs and socket FDs as one another in some ways in node on unix. it opens the door for weird behavior, but it's possible.
17:17:23  * Raynosjoined
17:17:43  <piscisaureus_>isaacs: gimme examples
17:17:49  <piscisaureus_>isaacs: maybe you could fstat a unix socket fd
17:17:54  <piscisaureus_>isaacs: but that's about it
17:18:09  * Raynosquit (Read error: Connection reset by peer)
17:19:06  <isaacs>piscisaureus_: you used to be able to do fs.open("some-file", function (fd) { var s = new net.Stream({fd: fd}); s.write("foo") })
17:19:13  <isaacs>like i said, you get weird behavior a lot of the time.
17:19:17  <isaacs>but it kind of tries to work.
17:19:26  <isaacs>in 0.4, anyway.
17:19:28  <piscisaureus_>isaacs: yeah that would create a blocking stream to a file
17:19:38  <piscisaureus_>isaacs: that's pretty backwards if you ask me
17:19:42  <isaacs>sure.
17:19:59  <isaacs>in the 0.2 days there was some npm thing i remember having to work around using stupid tricks like that.
17:20:11  <isaacs>that's where the --outfd and --logfd arguments came from originally.
17:21:06  <isaacs>but anyway... yeah, we need to support the systemd and child.sendFD/server.listenFD use cases in a good way.
17:21:13  <isaacs>supporting them in a hacky way for 0.6 is fine.
17:21:27  <isaacs>or requiring a binary addon to do it.
17:21:58  <piscisaureus_>isaacs: the good way would be (new net.Server({handle: the_handle}).)listen(1234) imho
17:22:30  <piscisaureus_>isaacs: and we need to export something like HandleWrap::HandleWrap(int fd) from node.h
17:22:51  <isaacs>piscisaureus_: that sounds nice.
17:23:27  <isaacs>piscisaureus_: what would be the hazard in having HandleWrap exposed in JS?
17:23:47  <isaacs>piscisaureus_: var handle = handleWrap(fd); new net.Server({handle: handle}).listen(1234)
17:25:07  * creationixpart
17:31:10  <piscisaureus_>isaacs: nothing - except for the fact that that can't be made cross-platform
17:32:01  <isaacs>piscisaureus_: right, but there's no way to get a fd on windows anyway, right?
17:32:11  <isaacs>i mean, except by opening a file, i suppose.
17:32:43  <isaacs>but no way to get an fd to anything that you'd be able to listen on.
17:35:20  <piscisaureus_>isaacs: well windows has something similar to FDs, namely sockets
17:35:38  <piscisaureus_>isaacs: or HANDLEs
17:35:49  * sh1mmerquit (Quit: sh1mmer)
17:35:56  <piscisaureus_>isaacs: and FDs even but they are normally not used for sockets, although you could
17:36:58  <piscisaureus_>piscisaureus_: but SOCKETs and HANDLEs may be 64-bit so there's no way to represent them in JS
17:37:04  <piscisaureus_>er, isaacs ^
17:38:17  <piscisaureus_>isaacs: so that's why I rather have people create a "wrapper" for FDs in c++ and then use that in node
17:38:28  <isaacs>yeah
17:38:41  <isaacs>i was a little surprised the first time i saw node just gives you a straight-up Number for that.
17:39:02  <isaacs>i mean, it's very rarely going to be larger than 2^53-1 or whatever
17:39:36  <piscisaureus_>isaacs: well SOCKETs and HANDLEs are basically pointers so the value can be *anything*
17:39:42  <isaacs>right
17:39:43  <piscisaureus_>whereas on unix they're guaranteed to be small
17:39:56  <isaacs>unless you keep opening them, but the os will nuke you way before then
17:40:19  <isaacs>but yeah, otherwise we have like (2^64 - 2^53) time bombs
17:40:24  <isaacs>which is kind of a lot
17:42:48  * mrb_bkjoined
17:44:05  * Raynosjoined
17:47:58  * mikealquit (Quit: Leaving.)
17:48:36  * mikealjoined
17:59:23  * AndreasMadsenquit (Remote host closed the connection)
18:02:57  * orlandovjoined
18:03:05  * orlandovquit (Client Quit)
18:04:05  * orlandovftwjoined
18:04:29  <orlandovftw>word up
18:06:32  <isaacs>orlandovftw: so, i summarized in xmpp, but http://piscisaureus.no.de has more of the discussion if you're curious.
18:07:18  <isaacs>piscisaureus_: so, that's why i think it sounds sort of nice to just always have handles everywhere.
18:07:36  <isaacs>piscisaureus_: no integer fd's, period. fs.open() gives you an object. fs.fstat takes an object. etc.
18:07:42  <piscisaureus_>isaacs: yeah we could have handles everywhere
18:08:09  <piscisaureus_>isaacs: I agree with that and ryan actually suggested that on the ml at some point
18:08:14  <isaacs>piscisaureus_: i think every time a user has to write C++ to do something other than bind to some external library, it should hurt a little.
18:08:18  <piscisaureus_>isaacs: but we never really got around to oing it
18:08:22  <isaacs>yeah
18:08:29  <isaacs>0.6 is a lot like 0.2 in some ways.
18:08:37  <isaacs>i hope that 0.8 will be more like 0.4
18:08:44  <isaacs>but cross-platform
18:08:55  <piscisaureus_>yeah
18:09:17  <isaacs>so we don't have just an even-odd stability cycle, we have a %2/%4 cycle
18:09:21  <isaacs>:)
18:09:36  <piscisaureus_>actually we should keep polishing and not doing anything radical until 1.0 arrives
18:09:39  <isaacs>maybe 0.16 will be 1.0
18:09:44  <isaacs>yeah
18:09:49  <orlandovftw>isaacs: yep what you guys covered sounds good. i'm curious however if i'm doing the right thing by using pipe_wrap? i mean, it does work...
18:09:49  <piscisaureus_>we could use hex numbering
18:10:05  <isaacs>orlandovftw: it works in 0.6.8?
18:10:14  <piscisaureus_>orlandovftw: if it works then I guess it's fine
18:10:18  <orlandovftw>havent tried 0.6.8, but it works in 0.6.7
18:10:23  <isaacs>oh, baller.
18:10:34  <piscisaureus_>orlandovftw: we are not going to do anything fancy in 0.6
18:10:36  <isaacs>ok, i didn't realize that
18:10:43  <isaacs>yeah, let's not move anything around then.
18:10:50  * orlandovftwhappy
18:10:56  <piscisaureus_>if it works 0.6.7 then it will also work in 0.6.8
18:11:03  <orlandovftw>rad
18:11:12  <isaacs>awesome.
18:11:14  <piscisaureus_>orlandovftw: we will make sure we have a good story for you when 0.8.0 arrives
18:11:22  <isaacs>ok, then it's just udp, really.
18:11:25  <orlandovftw>that makes me feel warm and fuzzy :)
18:11:40  <orlandovftw>you guys rock
18:11:41  <isaacs>and whatever other small bug fixes we have lying about.
18:17:26  * orlandovftwquit (Ping timeout: 252 seconds)
18:19:55  <CIA-115>node: isaacs v0.6 * rf25ec07 / ChangeLog :
18:19:55  <CIA-115>node: Add missing ChangeLog item re: fs.stat improvement
18:19:55  <CIA-115>node: This was a very significant improvement that should have been called out
18:19:55  <CIA-115>node: explicitly.
18:19:55  <CIA-115>node: I added 'review all libuv changes' to my build checklist. It won't
18:19:56  <CIA-115>node: happen again. Sorry, @igorzi. - http://git.io/bphGLw
18:21:38  <mmalecki>we're missing one ChangeLog item as well
18:21:57  <mmalecki>net.connect(object) and tls.connect(object)
18:22:16  <mmalecki>with first one authored by koichik, second one by me
18:22:25  <mmalecki>or maybe the other way?
18:22:53  * mikealquit (Quit: Leaving.)
18:23:46  * AndreasMadsenjoined
18:24:38  * kuebkjoined
18:25:12  <isaacs>mmalecki: what's net.connect(object) do?
18:25:31  <mmalecki>isaacs: net.connect({host: ..., port: ...})
18:25:43  <mmalecki>isaacs: instead of net.connect(host, port)
18:25:49  <mmalecki>isaacs: it's minor change, tho
18:25:50  <isaacs>mmalecki: that's not a major change.
18:25:58  <pquerna>isaacs: also https://github.com/joyent/node/issues/2549
18:26:01  <isaacs>if anyone wants to see *every* change they can run git log themselves.
18:26:25  <isaacs>pquerna: also minor.
18:26:53  <isaacs>pquerna: the changelog should only be items that are likely to upset someone, or likely to convince them to upgrade.
18:27:21  <pquerna>double error on https connections blocked us from upgrade to 0.6.x fwiw, but sure.
18:27:24  <isaacs>a lot of users were complaining about 0.6's fs.stat being super slow on windows, so omitting that was a significant drop.
18:27:40  * travis-cijoined
18:27:41  <travis-ci>[travis-ci] joyent/node#286 (v0.6 - f25ec07 : isaacs): The build was fixed.
18:27:41  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/ec1d1ee...f25ec07
18:27:41  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/550312
18:27:41  * travis-cipart
18:27:49  <isaacs>changing the changelog fixes the build!
18:27:50  <isaacs>hooray!
18:27:59  <isaacs>race conditions in tests make every CI build exciting.
18:28:14  <mmalecki>I can try to fix this test later.
18:29:23  <mmalecki>oh, we should totally link to github users there...
18:29:32  <mmalecki>hm, thanks isaacs.
18:38:56  <piscisaureus_>bnoordhuis: yt?
18:40:07  * TooTallNatejoined
18:42:29  * mrb_bkquit (Remote host closed the connection)
18:42:30  * Raynosquit (Write error: Broken pipe)
18:43:17  * mralephjoined
18:43:31  * igorziquit (Ping timeout: 258 seconds)
18:45:59  * piscisaureus_quit (Ping timeout: 260 seconds)
18:48:21  * Raynosjoined
18:48:51  <AndreasMadsen>hi all, where is ryan these days?
18:49:18  <AndreasMadsen>he need to review that cluster patch, nothing happens when I write to him :/
18:50:08  * igorzijoined
18:50:35  * `3rdEdenjoined
18:51:24  <AndreasMadsen>Oh, this channel is a void too :)
18:54:53  * mrb_bkjoined
19:04:37  * AvianFluquit (Quit: Leaving)
19:07:15  * kuebkquit (Ping timeout: 255 seconds)
19:12:46  * isaacstopic: welcome to the void*
19:16:54  * AndreasMadsenquit (Remote host closed the connection)
19:19:26  * mikealjoined
19:25:48  <indutny>isaacs: ++
19:25:48  <kohai>isaacs has 4 beers
19:26:00  <isaacs>indutny: ?
19:26:49  <indutny>isaacs: void*
19:27:03  <isaacs>oh, heh
19:27:23  <isaacs>yeah, the topic was causing a syntax error for me.
19:27:27  * isaacsftfy
19:28:42  * indutnyhopes that valgrind will finish running and he'll finally get sleeping
19:32:56  <CIA-115>libuv: Igor Zinkovsky ipc_threads * r9811e0f / (11 files in 6 dirs): import/export streams accross loops - http://git.io/6VwEJA
19:33:28  * travis-cijoined
19:33:28  <travis-ci>[travis-ci] joyent/libuv#43 (ipc_threads - 9811e0f : Igor Zinkovsky): The build failed.
19:33:28  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/commit/9811e0f
19:33:28  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/550623
19:33:28  * travis-cipart
19:33:37  <igorzi>bnoordhuis: ^-- pls do the unix impl when you get a chance.. after that we can land this in master
19:46:01  * orlandovftwjoined
19:55:52  * brsonjoined
19:57:21  * orlandovftwquit (Quit: leaving)
19:57:38  * orlandovftwjoined
20:18:59  * isaacsquit (Remote host closed the connection)
20:19:15  * isaacsjoined
20:23:40  * dshaw_quit (Quit: Leaving.)
20:25:40  * mikealquit (Quit: Leaving.)
20:26:32  * mikealjoined
20:39:29  * AndreasMadsenjoined
20:40:19  <AndreasMadsen>Is this still a void?
20:40:41  * bnoordhuisquit (Ping timeout: 272 seconds)
20:43:02  <AndreasMadsen>Oh, I see somebody has set a new topic, very funny isaacs :)
20:43:39  <isaacs>AndreasMadsen: it's not a void. it's a void*. that could be *LITERALLY ANYTHING!*
20:43:44  <isaacs>you have no idea.
20:44:04  <mmalecki>so meta.
20:45:48  <AndreasMadsen>isaacs: libuv is a void (the essence of nothingness), anything else would be false advertising.
20:46:12  <AndreasMadsen>isaacs: anyway do you know where ryan is, he it pretty lazy about landing that cluster patch.
20:57:29  <ryah_>AndreasMadsen: link?
20:57:33  <ryah_>ill land it
20:57:48  <AndreasMadsen>https://github.com/joyent/node/pull/2470
20:57:49  <AndreasMadsen>wow
20:58:28  <AndreasMadsen>ryah_: ^
21:01:58  <indutny>ryah_: tough guy
21:02:01  <indutny>:)
21:08:48  <ryah_>=== release test-eio-limit ===
21:08:48  <ryah_>Path: simple/test-eio-limit
21:08:48  <ryah_>node.js:216
21:08:48  <ryah_> throw e; // process.nextTick error, or 'error' event on first tick
21:08:48  <ryah_> ^
21:08:51  <ryah_>AssertionError: false == true
21:08:53  <ryah_>^--
21:09:49  <ryah_>=== release test-zlib-dictionary ===
21:09:49  <ryah_>Path: simple/test-zlib-dictionary
21:09:49  <ryah_>../src/node_zlib.cc:338: failed assertion `err == Z_OK && "Failed to set dictionary"'
21:09:52  <ryah_>Command: out/Release/node /Users/ryan/projects/node/test/simple/test-zlib-dictionary.js
21:09:55  <ryah_>^-- master
21:10:35  <CIA-115>node: Andreas Madsen master * rf9a47de / (5 files in 3 dirs):
21:10:35  <CIA-115>node: Add cluster.setupMaster
21:10:35  <CIA-115>node: Fixes #2470 - http://git.io/LuiJKA
21:11:16  <indutny>hm..
21:11:17  <ryah_>AndreasMadsen: thanks
21:11:26  <indutny>ryah_: Debug ?
21:11:37  <indutny>ryah_: mode=debug ?
21:11:48  <ryah_>release
21:12:02  <indutny>k
21:12:06  <indutny>ll look
21:12:07  * `3rdEdenquit (Read error: Connection reset by peer)
21:12:16  <AndreasMadsen>ryah_: awesome, next patch will be graceful disconnect. Remember to close https://github.com/joyent/node/pull/2420 as well.
21:12:18  * `3rdEdenjoined
21:12:55  * indutnychanged nick to indutny_sleeping
21:12:58  <indutny_sleeping>going to sleep, ttyl!
21:13:00  <mmalecki>AndreasMadsen: ++ for graceful disconnect
21:13:01  <kohai>AndreasMadsen has 5 beers
21:13:03  <mmalecki>indutny_sleeping: night!
21:16:09  <mmalecki>so, indutny_sleeping has some awesome idea here. going to sleep as well, night.
21:16:24  <AndreasMadsen>mmalecki: The code and testcases has been made but it would be nice to get that "disconnect and process isolation thing" landed first.
21:16:59  * mmaleckichanged nick to mmalecki[sleep]
21:17:13  <AndreasMadsen>If someone could review that patch it would be awesome: https://github.com/joyent/node/pull/2426
21:19:15  <CIA-115>node: Nicolas LaCasse v0.6 * r40c9348 / (lib/zlib.js test/simple/test-zlib-invalid-input.js):
21:19:16  <CIA-115>node: Fix #2365 zlib crashing on invalid input
21:19:16  <CIA-115>node: Fix zlib crashes on error due to improper use of removeListener
21:19:16  <CIA-115>node: in the error handler - http://git.io/a98zYw
21:23:23  * travis-cijoined
21:23:23  <travis-ci>[travis-ci] joyent/node#287 (master - f9a47de : Andreas Madsen): The build is still failing.
21:23:23  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/6b58537...f9a47de
21:23:23  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/550931
21:23:23  * travis-cipart
21:26:56  * travis-cijoined
21:26:56  <travis-ci>[travis-ci] joyent/node#288 (v0.6 - 40c9348 : Nicolas LaCasse): The build passed.
21:26:56  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/f25ec07...40c9348
21:26:56  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/550954
21:26:56  * travis-cipart
21:28:19  * dshaw_joined
21:32:30  * sh1mmerjoined
21:36:15  * mmalecki[sleep]changed nick to mmalecki
21:37:07  <mmalecki>damn.
21:38:01  <AndreasMadsen>mmalecki: did you got a nightmare
21:38:28  <mmalecki>no, just one of these nights I know I ain't getting no sleep
21:40:28  <AndreasMadsen>mmalecki: UTC+1 going to bed too - long day tomorrow :)
21:40:58  <mmalecki>AndreasMadsen: sleep tight :)
21:41:21  <AndreasMadsen>Thanks
21:41:22  * AndreasMadsenquit (Remote host closed the connection)
21:44:01  <mrb_bk>mikeal: sup
21:44:05  <mmalecki>moving path.exists{,Sync} to fs.exists{,Sync} and aliasing first to another. opinions?
21:44:13  <mikeal>hiya
22:03:34  * sh1mmerquit (Quit: sh1mmer)
22:19:21  <isaacs>mmalecki: i'd say we should just get rid of exists, and tell people how to use stat
22:19:33  <isaacs>mmalecki: it breaks the pattern of all other fs modules, and is the only non-string-munging thing on path
22:19:38  <isaacs>but, if it can't go, then it belongs on fs.
22:19:56  <isaacs>mmalecki: feel free to send a pull req against master that moves it from path to fs.
22:20:54  <mmalecki>isaacs: ok. with aliasing?
22:21:07  <isaacs>mmalecki: no. it should just be moved from path to fs.
22:21:36  <isaacs>maybe put a "path.exists has been moved to fs.exists" deprecation thingie
22:22:23  <mmalecki>isaacs: ok
22:22:50  <isaacs>also, there's a serious problem with it:
22:22:59  <isaacs>if you try to stat something that you don't have permission to look at, then it fails.
22:23:02  <isaacs>but the thing *does* exist
22:23:25  <isaacs>really, it should return true unless there's an error AND the error.code === "ENOENT"
22:24:42  <mmalecki>agreed. but you know, warm and fuzzy feeling of doing that with one line.
22:46:23  * mralephquit (Quit: Leaving.)
22:55:24  * `3rdEdenquit (Quit: Linkinus - http://linkinus.com)
22:57:07  * mikealquit (Quit: Leaving.)
23:02:08  * mjr_quit (Quit: mjr_)
23:12:50  <isaacs>mmalecki: you can still do it in one line :)
23:13:11  <isaacs>mmalecki: cb(!er || er.code !== "ENOENT")
23:13:29  <isaacs>but, just move it for now.
23:13:33  <isaacs>dont' change semantics.
23:13:35  <isaacs>even though they're wrong.
23:13:37  <isaacs>:)
23:13:43  * isaacsknows when he's in the minority
23:14:57  <mmalecki>I mean, if semantics is wrong, it should be changed
23:15:06  <mmalecki>and that https://github.com/joyent/node/blob/master/lib/path.js#L404-408 looks wrong to me as well
23:18:48  * AvianFlujoined
23:22:29  * paddybyersquit (Quit: paddybyers)
23:26:50  * rmustaccpart
23:33:02  * mikealjoined
23:57:08  * mikealquit (Quit: Leaving.)