00:06:07  * piscisaureus__joined
00:28:35  * mikealjoined
00:33:01  * mikealquit (Client Quit)
00:39:25  * piscisaureus__quit (Ping timeout: 240 seconds)
01:20:40  * brsonquit (Ping timeout: 258 seconds)
01:46:28  * mikealjoined
01:51:01  * creationixjoined
02:01:49  * piscisaureus__joined
02:13:24  * mikealquit (Quit: Leaving.)
02:49:16  * piscisaureus___joined
02:49:25  * piscisaureus__quit (Read error: Connection reset by peer)
03:02:18  * mikealjoined
03:16:36  * piscisaureus___quit (Read error: Connection reset by peer)
03:18:32  * creationixpart
05:21:48  * luxigojoined
05:34:05  * sh1mmerjoined
05:44:59  * AvianFluquit (Read error: Connection reset by peer)
06:02:57  <indutny>ryah: http://codereview.chromium.org/8373029/
06:03:07  <indutny>optimized string literal clauses for switch
08:29:13  * isaacsquit (Quit: isaacs)
09:05:54  * sh1mmerquit (Quit: sh1mmer)
12:39:49  <indutny>ryah: ping?
13:06:18  * luxigoquit (Remote host closed the connection)
13:21:05  <CIA-53>node: Maciej Małecki * r7ee29d1 / lib/net.js : (log message trimmed)
13:21:05  <CIA-53>node: net: `Server.listen`, `Server.close` and `Socket.connect` return `this`
13:21:05  <CIA-53>node: Just a syntactic sugar for doing, for example:
13:21:05  <CIA-53>node: var server = net.createServer(function (c) {
13:21:05  <CIA-53>node: c.end('goodbye, cruel world!\r\n');
13:21:06  <CIA-53>node: server.close().on('close', function () {
13:21:07  <CIA-53>node: console.log('really, goodbye!');
15:11:53  * AvianFlujoined
15:35:26  * AvianFluquit (Quit: Leaving)
16:04:38  * dapjoined
16:12:18  * dapquit (Quit: Leaving.)
16:14:34  * CoverSlidejoined
16:16:48  * dapjoined
16:31:51  * isaacsjoined
17:02:16  * igorzijoined
17:20:48  <ryah>igorzi: no - not known
17:21:06  * sh1mmerjoined
17:21:39  <ryah>piscisaureus: http parser bug - interesting
17:22:09  <igorzi>ryah: i'm investigating that (node cluster) - https://github.com/joyent/node/issues/1928. i think i know what the issue is.
17:22:43  <ryah>igorzi: oka
17:32:06  * ryahtopic: v0.6.0 friday
17:46:46  <indutny>ryah: friday friday
17:58:23  * brsonjoined
17:58:34  * AvianFlujoined
18:02:39  <piscisaureus>ryah: Are we going to have a call or are we skipping today
18:02:48  <piscisaureus>I didn't do anything, got home 3 hrs ago
18:05:52  <ryah>yes sorry - i was distracted
18:07:09  <isaacs>ryah: our streams api is way too complicated.
18:07:42  <ryah>isaacs: make a plan for v0.8
18:07:53  <ryah>the door for api changes is closed in v0.6
18:08:00  <isaacs>yeah, i know
18:08:12  <isaacs>that's next on my list after getting npm free of the system-command-line poison
18:16:29  <sh1mmer>would someone mind taking a look at this? https://github.com/joyent/node/issues/221#issuecomment-2501220
18:16:40  <sh1mmer>basically https requests get cleaned up after about an hour
18:16:46  <sh1mmer>which seems like a _really_ long time
18:16:57  <sh1mmer>I'd like to work on it some more but some points would really help
18:17:00  <sh1mmer>pointers
18:27:25  * ericktjoined
18:36:56  * AvianFluquit (Read error: Connection reset by peer)
18:38:16  * AvianFlujoined
18:41:25  * AvianFluquit (Client Quit)
18:42:06  * AvianFlujoined
18:55:41  <ryah>mikeal: yt?
18:55:48  <ryah>mikeal, isaacs: please review https://gist.github.com/1309814
18:55:54  <mikeal>yeah
18:56:29  <mikeal>why?
18:56:41  <mikeal>this breaks like… a lot
18:57:15  <mikeal>if you commit this flow control breaks
19:01:30  <ryah>no
19:01:43  <ryah>write returns false, pause source
19:01:52  <ryah>this is control flow
19:12:18  <mikeal>no
19:12:24  <mikeal>not if there is a stream in between
19:12:29  <indutny>ryah: do you need any help from me before 0.6.x?
19:13:09  <mikeal>fs.createReadStream(zlib.createZipper()).pipe(fs.createWriteStream('file.gz')
19:13:39  <mikeal>zipper can't return false on write because it has processing to do before talking to the destination
19:13:49  <mikeal>that's why we have pause() and resume()
19:13:57  <mikeal>and pause/resume events
19:14:52  <mikeal>whoops
19:15:00  <mikeal>fs.createReadStream.pipe(zlib.createZipper()).pipe(fs.createWriteStream('file.gz')
19:15:31  <mikeal>fs.createReadStream('file.txt').pipe(zlib.createZipper()).pipe(fs.createWriteStream('file.gz')
19:20:48  <isaacs>ryah: got a test for this that doesn't involve creating a giant file. just emitting random bytes, but keeping the shasum in and out
19:20:49  * AvianFlu_joined
19:20:58  <isaacs>still slow, but not crazy disk-spinning slow
19:21:04  * AvianFluquit (Disconnected by services)
19:21:09  * AvianFlu_changed nick to AvianFlu
19:21:18  <isaacs>mikeal: but the Gzip stream will return false from any writes if it has stuff in its queue
19:21:29  <isaacs>mikeal: and won't emit "drain" until it drains
19:21:58  <mikeal>right, so it's unrelated to the destination stream :)
19:22:25  <mikeal>this code isn't going to hit our gzipper
19:22:33  <mikeal>this is about filter streams
19:22:41  <mikeal>and any stream anyone uses in between core streams
19:24:18  <mikeal>fs.createReadStream('file.in').pipe(new MyStream()).pipe(fs.createWriteStream('file.out')
19:24:42  <isaacs>mikeal: right. so MyStream has to do drain/false-on-write properly if it wants flow contorl.
19:25:11  <mikeal>it has to *return* false
19:25:19  <isaacs>this isn't the full fix. it's just removing a bandaid that is causing more problems than it's fixing.
19:25:28  <mikeal>what problems?
19:25:43  <isaacs>causing upstream streams to resume when they shouldn't
19:25:54  <isaacs>it's yet another thing that has to be managed by filters.
19:25:57  <mikeal>also, how do we propogate drain?
19:26:04  <mikeal>cause there is nothing that does that
19:26:24  <isaacs>file.out drains, this causes mystream to resume. when mystream's queue is empty, it emits drain.
19:26:47  <isaacs>the goal of pause/resume propagation was to make it so that filters don't have to buffer, but filters always have to buffer somewhat.
19:26:53  <isaacs>if they're actualy doing any filtering anyway
19:26:57  <mikeal>haha, ok, so you're removing this feature that works for 90% of streams because you have one use case that keeps this internal queue?
19:27:12  <mikeal>which you can fix by simply implementing your own pause() and resume() method?
19:27:30  <mikeal>filters don't always have to buffer
19:27:34  <isaacs>well... actually i suggested just leaving it in, cuz we shouldn't fix it until we actually fix it.
19:27:41  <isaacs>:)
19:28:23  <mikeal>i think there is a better fix if we add buffering semantics to streams
19:29:40  <mikeal>also, having an internal queue isn't 1 to 1 with wanted to pause the input stream
19:29:44  <mikeal>er wanting
19:30:21  <mikeal>if you need to talk to memcache or redis and you need to buffer the input until it returns you don't want to pause the input
19:30:30  <mikeal>becuase the request will return faster than the roundtrip to the client
19:33:08  <isaacs>right
19:33:17  <isaacs>but the point is, that *has* to be handled by a filter, no matter what.
19:34:30  <mikeal>i'm proposing that we add that buffering to the core streams you always subclass
19:34:42  <isaacs>that's 0.8 talk.
19:34:53  <isaacs>(i don't disagree, just that it can't happen this week, that's all.)
19:35:25  <mikeal>right, if it can't, i think we should leave in pause() and resume()
19:35:43  <mikeal>if we're this close to release why are we removing something that is likely to break a bunch of code
19:35:54  <isaacs>for the record, i'm not convinced that adding buffering is a good idea.
19:36:07  <mikeal>i think i can convince you
19:36:07  <mikeal>:)
19:36:09  <isaacs>ryah: yeah, i'm kinda with mikeal on this one.
19:36:21  <isaacs>ryah: can we hold off on removing the "pause" and "resume" event propagation?
19:36:40  <isaacs>making random hacks at this api is how we got into this state. i'm not convinced that we will get out by approaching it the same way.
19:41:08  * igorziquit (Ping timeout: 265 seconds)
19:55:04  <mikeal>yeah, i think we should lock ourselves in a room for a weekend and go back to the drawing board
19:56:48  <isaacs>yep
19:56:51  <isaacs>maybe longer than a weekend.
19:56:55  <isaacs>and fewer people.
19:56:55  <mikeal>we have a much better understanding of what this is actually being used for now
19:56:58  <isaacs>yeap
19:57:14  <isaacs>ryah, piscisaureus, mikeal, care to review? https://github.com/isaacs/node/commit/4da6d4a2b4bde953ec5255431379afd2fbbc8684
19:57:19  <mikeal>at least half the assumptions we had the last time we did this at matt's office we know are wrong now
19:58:03  <isaacs>yeah
20:01:47  <ryah>isaacs: how long does that test take?
20:02:07  <ryah>isaacs: > 100ms should be put in pummel
20:03:45  <isaacs>ryah: way less than 100ms
20:03:53  <isaacs>ryah: it's only actually emitting a few hundred bytes
20:04:52  <isaacs>ryah: real 0m0.092s
20:04:53  <isaacs>user 0m0.053s
20:04:53  <isaacs>sys 0m0.018s
20:05:41  <ryah>isaacs++
20:05:58  <ryah>isaacs: can you test it on windows, please
20:06:26  <isaacs>ryah: hm.... i don't have a windows build env set up
20:06:58  <ryah>i will test it for you
20:07:00  <isaacs>k
20:07:07  <isaacs>i can verify that the test fails on 0.5.10, though
20:07:31  <isaacs>part of the bug is how the fs streams do this push/pull annoying thing.
20:07:52  <isaacs>*every* write returns false, when it should really only return false if the queue is not empty when you call write().
20:08:02  <isaacs>but, again, fix should wait for a proper fix.
20:09:45  * AvianFlu_joined
20:09:59  * brsonquit (Ping timeout: 244 seconds)
20:12:55  * AvianFluquit (Ping timeout: 260 seconds)
20:15:50  <ryah>building....
20:16:05  * mikealquit (Quit: Leaving.)
20:16:20  * brsonjoined
20:17:43  <ryah>isaacs: works.
20:17:46  <isaacs>sweet.
20:17:49  <isaacs>shall i land it?
20:17:52  <ryah>yeah
20:18:45  <isaacs>i'm gonna get some lunch and then focus on tar.
20:18:48  <CIA-53>node: isaacs master * r4c5751b / (lib/zlib.js test/simple/test-zlib-random-byte-pipes.js): Close #1929 zlib Respond to 'resume' events properly - http://git.io/gOsxLQ
20:18:50  <isaacs>bbiab
20:22:14  * mikealjoined
20:24:28  <CIA-53>node: Ryan Dahl master * r239b3d6 / (doc/api/streams.markdown lib/stream.js lib/util.js):
20:24:29  <CIA-53>node: Remove resume and pause events
20:24:29  <CIA-53>node: Too complex; unnecessary. - http://git.io/6bwI7A
20:29:03  * AvianFlu_changed nick to AvianFlu
21:06:24  <CIA-53>libuv: Ryan Dahl master * r5738314 / src/unix/error.c : Map EHOSTUNREACH on Unix - http://git.io/yoJG4w
21:07:59  <CIA-53>libuv: Ryan Dahl master * rb5d69f9 / src/unix/error.c : Map EHOSTUNREACH on Unix - http://git.io/MFiSkw
21:10:16  * igorzijoined
21:13:23  <sh1mmer>ryah: is there are reason https://github.com/joyent/node/blob/master/lib/tls.js#L1006 is commented out?
22:05:38  * mikealquit (Quit: Leaving.)
22:23:45  * piscisaureusquit (Read error: Connection reset by peer)
22:28:54  * piscisaureusjoined
22:29:52  <ryah>sh1mmer: hmm, i forget
22:30:23  <sh1mmer>there is an open bug for it
22:30:27  <sh1mmer>should I just close it
22:32:02  <ryah>what bug?
22:33:02  <sh1mmer>https://github.com/joyent/node/issues/903
22:33:13  <sh1mmer>line number is wrong, but I think it's that one
22:33:28  <sh1mmer>blame suggests it's that one
22:37:11  * AvianFlu_joined
22:37:38  * AvianFluquit (Disconnected by services)
22:39:25  * AvianFlu_changed nick to AvianFlu
22:43:16  * mikealjoined
22:48:43  * bnoordhuisjoined
23:21:31  <CIA-53>node: Nathan Rajlich master * r58cb0fa / lib/stream.js :
23:21:31  <CIA-53>node: Directly export the Stream constructor.
23:21:31  <CIA-53>node: Also setting up a circular reference back to the
23:21:31  <CIA-53>node: stream as `Stream.Stream`, for backwards-compatibility.
23:21:31  <CIA-53>node: Fixes #1933 - http://git.io/s0suMg
23:36:25  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)