00:14:04  <piscisaureus__>bnoordhuis: what do you need him for?
00:14:20  <bnoordhuis>piscisaureus__: i had some questions about jemalloc
00:14:20  <piscisaureus__>het familiediner?
00:14:34  <bnoordhuis>ho ho ho
00:14:58  <bnoordhuis>but anyway, i was playing around with jemalloc but it seems to be about 5% slower than glibc's malloc
00:15:20  <bnoordhuis>https://github.com/bnoordhuis/node/compare/jemalloc <- in case you want to try it
00:15:54  <bnoordhuis>oh, and the reason i was looking for pietern is that redis uses it
00:16:15  <piscisaureus__>hmm
00:16:18  <piscisaureus__>schade
00:16:35  <bnoordhuis>more's the pity, yes
00:17:07  <bnoordhuis>well, off to bed
00:17:10  <bnoordhuis>sleep tight, piscisaureus_
00:17:17  <piscisaureus__>sleep tight, bnoorduis
00:21:35  * bnoordhuisquit (Ping timeout: 240 seconds)
00:50:58  * mikealjoined
01:10:55  <piscisaureus__>igorzi_: can you review https://github.com/joyent/node/commit/df2fa9413cbe4729bb23dfd5668e982002742ca1?
01:17:44  <piscisaureus__>shit - wrong
01:21:26  <CIA-95>node: Bert Belder reviewme * rdf2fa94 / (lib/path.js src/node.cc): Windows: correctly resolve drive-relative paths (+33 more commits...) - http://git.io/Pod3_g
01:21:28  * dapquit (Quit: Leaving.)
01:22:00  <piscisaureus__>igorzi_: review https://github.com/joyent/node/commit/48e4b7d23cf23c9da4d808d7dfa6fa0c05dbb6cf
01:22:14  <CIA-95>node: Bert Belder v0.6 * rcbcf4fe / src/node.cc : Don't die when arguments are passed to process.cwd() - http://git.io/hMsBVg
01:22:19  <CIA-95>node: Bert Belder reviewme * r48e4b7d / (lib/path.js src/node.cc): Windows: correctly resolve drive-relative paths - http://git.io/F0pwJQ
01:26:20  * mikealquit (Quit: Leaving.)
01:27:30  <igorzi_>piscisaureus: env_key always initialized to L"=X:" ?
01:27:55  <piscisaureus__>igorzi_: yes
01:28:09  <piscisaureus__>igorzi_: but I replace X by the actual drive letter a few lines later
01:28:40  <piscisaureus__>igorzi_: the next line actually
01:28:49  <igorzi_>piscisaureus__: ohh, sorry i missed that
01:29:49  <igorzi_>piscisaureus__: mem leak: https://github.com/joyent/node/commit/48e4b7d23cf23c9da4d808d7dfa6fa0c05dbb6cf#L1R1236 need to free buffer
01:30:16  <piscisaureus__>oh crap forgot :-/
01:30:22  <igorzi_>piscisaureus__: very unlikely to happen, but..
01:31:14  <piscisaureus__>igorzi_: no I never free the buffer actually ;-)
01:32:15  <igorzi_>piscisaureus__: oh right, String::New() makes a copy, right?
01:32:25  <piscisaureus__>yep, copies to the v8 heap
01:33:02  <CIA-95>node: Bert Belder reviewme * r65a14aa / (lib/path.js src/node.cc): Windows: correctly resolve drive-relative paths - http://git.io/z_wqTg
01:33:07  <piscisaureus__>updated
01:33:51  <piscisaureus__>codereview ftw
01:34:19  <igorzi_>lgtm
01:34:26  <piscisaureus__>igorzi_: thnx
01:39:05  <CIA-95>node: Bert Belder v0.6 * r86fba38 / (lib/path.js src/node.cc): Windows: correctly resolve drive-relative paths - http://git.io/SPRQNg
01:54:32  * piscisaureus__quit (Quit: ~ Trillian Astra - www.trillian.im ~)
01:55:09  * ericktquit (Quit: erickt)
01:55:43  * piscisaureus__joined
02:23:26  * piscisaureus__quit (Quit: ~ Trillian Astra - www.trillian.im ~)
02:25:41  * piscisaureus__joined
03:01:51  * mikealjoined
03:03:44  * sh1mmerquit (Quit: sh1mmer)
03:19:49  * mikealquit (Quit: Leaving.)
03:53:43  * mikealjoined
03:55:26  * mikealquit (Client Quit)
04:23:21  * mikealjoined
04:31:09  * mikealquit (Quit: Leaving.)
05:16:17  * arlolrajoined
05:25:22  * felixgejoined
05:25:32  * felixgequit (Changing host)
05:25:32  * felixgejoined
05:45:47  * sh1mmerjoined
06:00:55  * felixgequit (Quit: felixge)
06:14:39  * arlolrapart ("Linkinus - http://linkinus.com")
06:15:20  * felixgejoined
06:15:20  * felixgequit (Changing host)
06:15:20  * felixgejoined
06:22:07  * felixgequit (Quit: felixge)
06:40:19  * felixgejoined
06:46:42  * paddybyersjoined
08:00:25  * mikealjoined
08:00:34  * indexzerojoined
08:17:03  * kuebkjoined
08:36:05  * paddybyers_joined
08:38:47  * paddybyersquit (Ping timeout: 240 seconds)
08:38:47  * paddybyers_changed nick to paddybyers
08:46:08  * mikealquit (Quit: Leaving.)
08:50:31  * indexzeroquit (Ping timeout: 244 seconds)
11:59:46  * piscisaureus__quit (Ping timeout: 276 seconds)
12:04:44  * piscisaureus__joined
12:09:34  * bnoordhuisjoined
12:17:47  * felixgequit (Remote host closed the connection)
12:18:02  * felixgejoined
12:18:02  * felixgequit (Changing host)
12:18:02  * felixgejoined
12:18:44  <piscisaureus__>bnoordhuis: http://groups.google.com/group/nodejs/browse_thread/thread/c294ead91fde78e2
12:19:13  <bnoordhuis>piscisaureus__: yeah, i was just catching up
12:20:10  <piscisaureus__>I wonder why this dude calls himself wankdanker
12:24:03  <bnoordhuis>curious, isn't it?
12:25:11  <piscisaureus__>curious it is Mike
12:28:56  <paddybyers>bnoordhuis: quick question: what's the status of native add-on support on win32?
12:29:33  <bnoordhuis>paddybyers: lacking
12:29:55  <bnoordhuis>no official method support yet but there are workarounds
12:29:59  <bnoordhuis>-method
12:30:06  <paddybyers>is it being actively worked on?
12:33:03  <bnoordhuis>piscisaureus__: ^
12:33:25  <bnoordhuis>(this is piscisaureus__ department really)
12:34:19  <bnoordhuis>piscisaureus__: https://github.com/joyent/node/issues/2177
12:36:01  <paddybyers>piscisaureus__: so .. my understanding is that you can't export symbols from an exe on windows - so you need to split the exe into an exe and all, with the relevant symbols - v8 and node-related - exported by the dll
12:36:42  <paddybyers>then the addon links against the dll
12:43:09  * sh1mmerquit (Read error: Operation timed out)
12:43:57  * sh1mmerjoined
13:11:11  * indutnyquit (Ping timeout: 240 seconds)
13:12:42  * piscisaureus__changed nick to piscisaureus
13:12:58  <piscisaureus>paddybyers: native addon building should work now
13:13:09  <piscisaureus>bnoordhuis: you *can* export symbols from an exe
13:13:16  <piscisaureus>er, paddybyers
13:13:34  <piscisaureus>you just have to do some setup work because there is no node-waf equivalent
13:13:39  <paddybyers>piscisaureus: ok, I didn't know that
13:14:13  <paddybyers>it's not the building the addon itself that I was concerned about, but how to link
13:14:19  <piscisaureus>paddybyers: I am looking up the ML thread for you
13:14:33  <piscisaureus>piscisaureus: if you build node yourself it will generate node.lib
13:14:49  <piscisaureus>which is the import lib to link against
13:17:22  <paddybyers>piscisaureus: but then you're linking at runtime against symbols exported by the exe, not duplicating code in the addon?
13:17:34  <piscisaureus>paddybyers: nope
13:17:39  <piscisaureus>paddybyers: that's just the way you do it
13:17:58  <piscisaureus>piscisaureus: the .lib only contains stubs that are replaced by DLL calls at load time
13:18:12  <paddybyers>piscisaureus: i see, thanks
13:18:28  <paddybyers>btw addons working on Android now :)
13:22:03  <paddybyers>piscisaureus:I guess this is the thread: http://groups.google.com/group/nodejs/browse_thread/thread/f14e7d4c4f8d58bd
13:22:32  <piscisaureus>paddybyers: http://groups.google.com/group/nodejs/msg/f627eca6277b2421
13:23:14  <paddybyers>piscisaureus: thanks
13:27:52  <paddybyers>piscisaureus, bnoordhuis: anyone looked at doing gyp support for that to replace node_waf? I did one that worked on darwin and it could be generalised easily
13:28:19  <piscisaureus>paddybyers: you have a link to that commit
13:28:31  <piscisaureus>paddybyers: we *will* move of waf for sure
13:31:22  <piscisaureus>bnoordhuis: re https://github.com/joyent/node/issues/2177
13:31:34  <piscisaureus>bnoordhuis: do you understand what his problem is?
13:31:47  <paddybyers>piscisaureus: I will when I've committed it. Current problem is it's no linking against the executable on darwin but against a shared library. It seems to be possible to link directly against the executable but I haven't got that working yet.
13:31:55  <bnoordhuis>piscisaureus: apparently windows sometimes raises an error
13:32:06  <piscisaureus>I am not sure this is an issue or feature. When I write a udp server, if a client is die, the error callback will raise and the socket dit not use.
13:32:07  <piscisaureus>So how to handle it? Ignore it in nodejs layer by refer solution or reopen in js?
13:32:52  <piscisaureus>if a client is die, the error callback will raise and the socket dit not use.
13:33:03  <piscisaureus>Ignore it in nodejs layer by refer solution or reopen in js?
13:33:16  <piscisaureus>wtf does that mean?
13:35:42  <piscisaureus>bnoordhuis: aah ok. So what happens is that recvfrom() reports an error when sendto() previously resulted in an ICMP unreachable message
13:35:49  <piscisaureus>bnoordhuis: how does that work on unix?
13:35:54  <piscisaureus>bnoordhuis: does that ever happen?
13:36:02  <bnoordhuis>piscisaureus: no-ish
13:36:10  <bnoordhuis>linux reports errors but i ignore them
13:36:19  <bnoordhuis>other unices only report errors in connected mode
13:36:23  <piscisaureus>bnoordhuis: it reports error to recvfrom()
13:36:26  <piscisaureus>?
13:36:50  <bnoordhuis>i think it can return errors from both syscalls
14:13:20  <piscisaureus>bnoordhuis: can you review https://gist.github.com/1391433 ?
14:13:34  <bnoordhuis>sure
14:13:40  <bnoordhuis>got a recruiter email
14:13:44  <piscisaureus>bnoordhuis: I am going to send this to `issue2177.dude` first
14:13:45  <bnoordhuis>Salaris tussen € 3000- € 4000 bruto (afhankelijk van kennis en kunde) <- BWAHAHAHA
14:14:00  <piscisaureus>bnoordhuis: van welk?
14:14:08  <bnoordhuis>computer futures
14:14:44  <piscisaureus>misschien moeten we recruiter emails gaan sparen
14:15:16  <bnoordhuis>ik ga vragen of ze me van hun lijst willen halen, het zijn altijd van die onzinmails
14:22:24  <piscisaureus>Je moet gewoon zeggen dat je minimaal een salaris van 8K wilt
14:22:40  <piscisaureus>Maak er 10K van
14:22:48  <piscisaureus>het is tenslotte stom werk :-)
14:23:33  <piscisaureus>bnoordhuis: why is it not possible to send strings to udp btw?
14:23:58  <bnoordhuis>stom werk ja, dan zou het minsten 15-16K moeten zijn
14:24:01  <bnoordhuis>piscisaureus: er?
14:24:07  <bnoordhuis>you mean in node?
14:24:13  <piscisaureus>yeah
14:24:15  <piscisaureus>there's only dgram.send(buf, offset, length, port, address, [callback])
14:24:17  <piscisaureus>:-/
14:25:55  <bnoordhuis>no idea, i copied the interface from 0.4
14:26:20  <bnoordhuis>string support is trivial to add though
14:27:28  <piscisaureus>I don't really care
14:27:30  <piscisaureus>I never use udp
14:27:36  <piscisaureus>but it just looks like a hole\
14:27:40  <bnoordhuis>talking about udp
14:27:51  <piscisaureus>also, what's funk
14:27:54  <piscisaureus>y
14:28:03  <bnoordhuis>i'm thinking we should make the dns resolver 100% javascript
14:28:04  <piscisaureus>is that binding an udp socket twice crashes the repl
14:28:10  <bnoordhuis>wut?
14:28:21  <piscisaureus>bnoordhuis: that's what pquerna also suggested
14:28:30  <bnoordhuis>ah, great minds
14:28:31  <piscisaureus>bnoordhuis: it's better than cares for sure :-)
14:29:45  <piscisaureus>bnoordhuis: https://gist.github.com/546b412734dca6d87388
14:29:56  <bnoordhuis>piscisaureus: btw, i mailed pietern about jemalloc - according to him there was no discernible difference to glibc malloc in redis
14:30:13  <bnoordhuis>but redis doesn't allocate all that much, much less than we do
14:30:39  <piscisaureus>then why do they use jemalloc?
14:30:56  <bnoordhuis>piscisaureus: maybe because it's faster on other unices?
14:31:22  <bnoordhuis>openbsd's malloc for example is butt slow
14:31:34  <bnoordhuis>(note how i anglicized 'retetraag')
14:33:04  <bnoordhuis>piscisaureus: re binding twice, that's expected behaviour - the socket is already bound, you can't rebind it
14:33:15  <piscisaureus>bnoordhuis: I know
14:33:33  <piscisaureus>bnoordhuis: but exceptions usually don't crash the repl - so why does this?
14:33:59  <bnoordhuis>piscisaureus: good question, some other exceptions do it too
14:34:38  <piscisaureus>bnoordhuis:
14:34:38  <piscisaureus>s=require('dgram').createSocket('udp4');s.bind();s.bind(); <-- crashes
14:34:38  <piscisaureus>require('fs').readFileSync('notexist.txt'); <-- crashes not
14:36:23  <bnoordhuis>piscisaureus: s.on('error', console.error) <- do that before the .bind() call
14:37:16  <piscisaureus>bnoordhuis: it works
14:38:03  <piscisaureus>bnoordhuis: but why do we crash the repl on unhandled error event?
14:38:22  <bnoordhuis>piscisaureus: you ask questions to which i have no answers
14:38:30  <piscisaureus>bnoordhuis: also, bind() should just fail synchronously
14:38:42  <bnoordhuis>piscisaureus: no
14:39:02  <piscisaureus>why?
14:39:33  <piscisaureus>bnoordhuis: ^
14:40:16  <bnoordhuis>piscisaureus: we need to pick a single strategy - either always fail immediately or always defer the error
14:40:58  <piscisaureus>bnoordhuis: yes, I agree we need to do that for write
14:41:02  <bnoordhuis>a mishmash of both makes it too confusing for users
14:41:20  <piscisaureus>bnoordhuis: but synchronous functions like bind should fail synchronously I think
14:41:25  <piscisaureus>bnoordhuis: just like constructors
14:41:38  <bnoordhuis>yeah, but bind() doesn't have to be synchronous
14:41:45  <bnoordhuis>that it is right now is an implementation detail
14:41:47  <piscisaureus>bnoordhuis: why?
14:41:57  <piscisaureus>bnoordhuis: ok, then we need to give it a callback
14:42:18  <bnoordhuis>i'm actually not against that
14:43:14  <bnoordhuis>but it already emits a 'listening' event on the next tick
14:43:34  <piscisaureus>bnoordhuis: hmm okay
14:43:48  <piscisaureus>bnoordhuis: I think at the very least we should make the api consistent
14:43:58  <piscisaureus>bnoordhuis: so s/bind/listen
14:44:03  <piscisaureus>and it should take a callback
14:44:18  <piscisaureus>and it should report errors the same way tcp.listen() does
14:44:29  <piscisaureus>er, Server.listen()
14:44:33  * igorzi_quit (Ping timeout: 265 seconds)
14:46:03  <bnoordhuis>piscisaureus: how does net.Server.listen() do it? it emits error events, right?
14:46:12  <piscisaureus>Maybe it does, yeah
14:46:15  <piscisaureus>let's check
14:46:24  <bnoordhuis>yes, it does
14:47:58  <piscisaureus>okay. Then bind() should have a callback
14:48:04  <piscisaureus>and it should be aliased to listenO
14:48:08  <piscisaureus>but let's punt on that
14:48:32  <bnoordhuis>piscisaureus: https://github.com/joyent/node/issues/2178
14:48:46  <bnoordhuis>oh, i can fix that in master
14:49:01  <bnoordhuis>unifying the APIs is a good idea
14:49:01  <piscisaureus>http://stuffdutchpeoplelike.files.wordpress.com/2011/07/air-holland-met-camper.jpg?w=350&h=214
14:49:10  <bnoordhuis>ho ho ho
15:19:29  <piscisaureus>bnoordhuis: https://gist.github.com/1391433 review ?
15:19:49  <bnoordhuis>looks like windows code
15:20:43  <bnoordhuis>piscisaureus: "WSAECONNRESET is ignore because"
15:20:53  <bnoordhuis>you speak engrish good much
15:21:42  <bnoordhuis>so windows code does return errors?
15:22:32  <piscisaureus>bnoordhuis: So far I can't reproduce
15:22:35  <bnoordhuis>well... we unix people do too
15:22:52  <piscisaureus>bnoordhuis: but msdn says so, and issue2177.reporter does too
15:23:44  <bnoordhuis>okay, lgtm
15:24:04  <piscisaureus>bnoordhuis: sure? :-)
15:24:12  <bnoordhuis>piscisaureus: well, maybe for one thing
15:24:26  <bnoordhuis>i think you stop the handle on error? we don't on unix
15:24:55  <piscisaureus>bnoordhuis: on a serious error we stop, yeah
15:25:05  <piscisaureus>bnoordhuis: otherwise we start busylooping
15:25:37  <piscisaureus>I don't think this is really an issue though
15:25:57  <bnoordhuis>probably not - but something to keep in mind for when the bug reports come in :)
15:26:02  <piscisaureus>:-)
15:26:18  <piscisaureus>bnoordhuis: when a serious read error occurs, the user should uv_close the socket
15:28:13  <bnoordhuis>https://github.com/joyent/node/pull/736#issuecomment-2849210 <- i think adding .setImmediate() is a good idea
15:29:02  <bnoordhuis>it's more aptly named than process.nextTick()
15:30:50  <piscisaureus>yeah
15:31:19  <piscisaureus>bnoordhuis: there is a addressing problem in error reporting somewhere
15:31:22  <piscisaureus>TypeError: Object 4D♠§☻
15:31:38  <piscisaureus>I've seen this occasionally
15:31:40  <bnoordhuis>piscisaureus: oh, that's a buffer that got .toString()'ed
15:31:53  <piscisaureus>bnoordhuis: oh that could be
15:32:08  <piscisaureus>bnoordhuis: but I also have it sometimes when a parser error is reported
15:32:21  <piscisaureus>it would look like:
15:32:59  <piscisaureus>node.js:3934
15:32:59  <piscisaureus> #$(*&^#(&$*garbage(*#&*$%)(#$
15:32:59  <piscisaureus> ^ Error: some error
15:33:30  <bnoordhuis>hrm... test case?
15:33:51  <piscisaureus>bnoordhuis: I though a stringified buffer looks like Buffer <00 01 02>?
15:34:36  <bnoordhuis>piscisaureus: not always, i think it happens with slowbuffers
15:34:54  <piscisaureus>this is too cryptic and needs fixin'
15:34:56  <piscisaureus>brb
15:37:26  * indutnyjoined
15:37:40  <indutny>isaacs: yt?
15:38:50  <bnoordhuis>indutny: probably not, it's thanksgiving in the US of A
15:40:06  <indutny>ah
15:40:15  <indutny>thanks for reminding, bnoordhuis
15:49:29  <piscisaureus>bnoordhuis: why Buffer.lenght == 3
15:49:30  <piscisaureus>why?
15:49:37  <piscisaureus>*length
15:50:41  <bnoordhuis>piscisaureus: no idea :)
15:55:17  * kuebkpart
16:00:38  * sh1mmerquit (Quit: sh1mmer)
16:15:57  * creationixjoined
16:24:05  * creationixpart
16:34:05  * ericktjoined
16:36:25  * AvianFlujoined
16:42:28  * indutnyquit (Quit: Lost terminal)
16:46:41  * creationixjoined
16:48:12  <piscisaureus>igorzi_: I found another windows bug
16:58:27  * ericktquit (Quit: erickt)
17:22:12  * creationixquit (Ping timeout: 240 seconds)
17:30:50  * creationixjoined
17:43:55  * felixgequit (Quit: felixge)
17:45:16  * felixgejoined
17:47:05  * ericktjoined
17:50:07  * indutnyjoined
17:50:16  * indutnyquit (Client Quit)
17:50:35  * indutnyjoined
18:16:04  * sh1mmerjoined
18:16:10  * sh1mmerquit (Client Quit)
18:18:01  <CIA-95>libuv: Bert Belder reviewme * r0ded5d2 / src/win/winsock.c : Win: fix improper treatment of real ntstatus codes as mapped win32 errors - http://git.io/FaJg9A
18:18:01  <CIA-95>libuv: Bert Belder reviewme * r261d792 / src/win/winsock.c : Win: map STATUS_HOPLIMIT_EXCEEDED status to WSAECONNRESET error - http://git.io/eXTNZA
18:18:02  <CIA-95>libuv: Bert Belder reviewme * rea63f06 / src/win/udp.c : Win: ignore ECONNRESET when receiving udp packets - http://git.io/jFRLuw
18:18:49  <CIA-95>node: Bert Belder reviewme * r83152d1 / lib/dgram.js : Dgram: correctly report recvmsg errors - http://git.io/BBGe4w
18:18:49  <CIA-95>node: Bert Belder reviewme * rcc55292 / test/simple/test-dgram-send-error.js : Add test for GH-2177 - http://git.io/tGrO0A
18:19:01  <piscisaureus>bnoordhuis: can you review these ^
18:19:03  <piscisaureus>:-)
18:19:12  <piscisaureus>it's not as bad as it looks
18:48:30  <CIA-95>node: Bert Belder reviewme * rf23201e / test/simple/test-dgram-send-error.js : Add test for GH-2177 - http://git.io/OHpjGA
18:57:42  <CIA-95>node: Bert Belder reviewme * ra639cf7 / test/simple/test-dgram-send-error.js : Add test for GH-2177 - http://git.io/kHEifQ
18:57:43  <CIA-95>node: Bert Belder reviewme * r7244b9c / (5 files in 2 dirs): Upgrade libuv to ea63f06 - http://git.io/3qFYYQ
19:08:26  * creationixquit (Ping timeout: 252 seconds)
19:20:48  * felixgequit (Quit: felixge)
19:25:18  * creationixjoined
19:47:35  * creationixquit (Ping timeout: 258 seconds)
19:51:28  <piscisaureus>bnoordhuis: I am awaiting your review :-)
19:51:41  <piscisaureus>I myself are going to slack off now
19:52:45  * creationixjoined
20:01:17  * creationixquit (Ping timeout: 245 seconds)
20:15:20  * creationixjoined
20:29:46  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
20:34:45  * ericktquit (Quit: erickt)
20:38:05  * mikealjoined
20:38:59  * mikealquit (Client Quit)
20:44:07  * igorzijoined
20:44:37  <igorzi>piscisaureus_: https://gist.github.com/1392234 + https://gist.github.com/1392239
20:44:45  <igorzi>piscisaureus_: pls review
20:46:52  * brsonjoined
21:03:49  * piscisaureus__joined
21:05:12  * piscisaureus__changed nick to piscisaureus
21:05:50  <piscisaureus>igorzi: can you review https://github.com/joyent/libuv/compare/v0.6...reviewme and https://github.com/joyent/node/compare/v0.6...reviewme then?
21:06:57  <piscisaureus>igorzi: 1392234 lgtm
21:11:37  <igorzi>piscisaureus: lgtm
21:12:18  <piscisaureus>igorzi: your forgot a semicolon ... that's all I have
21:12:41  <piscisaureus>exports._makeLong = isWindows ? ... : ...
21:13:05  * mikealjoined
21:13:30  <CIA-95>libuv: Bert Belder v0.6 * r0ded5d2 / src/win/winsock.c : Win: fix improper treatment of real ntstatus codes as mapped win32 errors - http://git.io/FaJg9A
21:13:30  <CIA-95>libuv: Bert Belder v0.6 * r261d792 / src/win/winsock.c : Win: map STATUS_HOPLIMIT_EXCEEDED status to WSAECONNRESET error - http://git.io/eXTNZA
21:13:30  <CIA-95>libuv: Bert Belder v0.6 * rea63f06 / src/win/udp.c : Win: ignore ECONNRESET when receiving udp packets - http://git.io/jFRLuw
21:14:09  <CIA-95>node: Bert Belder v0.6 * r83152d1 / lib/dgram.js : Dgram: correctly report recvmsg errors - http://git.io/BBGe4w
21:14:09  <CIA-95>node: Bert Belder v0.6 * ra639cf7 / test/simple/test-dgram-send-error.js : Add test for GH-2177 - http://git.io/kHEifQ
21:14:09  <CIA-95>node: Bert Belder v0.6 * r7244b9c / (5 files in 2 dirs): Upgrade libuv to ea63f06 - http://git.io/3qFYYQ
21:14:33  <igorzi>piscisaureus: ok thx.. when is the release?
21:15:12  <piscisaureus>igorzi: friday 0:00 PST / 9:00 CEST
21:15:49  <igorzi>~11 hours from now, right?
21:15:57  <piscisaureus>yup
21:18:15  <igorzi>piscisaureus: i'm going to do more testing on this patch, and land it some time before the release... need to go offline for now..
21:18:49  <piscisaureus>igorzi: yeah you're supposed to eat turkey now...
21:18:55  <piscisaureus>igorzi: thnx for the patch
21:19:19  <piscisaureus>happy thanksgiving btw
21:21:04  <igorzi>piscisaureus: thx :)
21:21:36  * igorziquit (Quit: Page closed)
21:29:53  * creationixquit (Read error: Operation timed out)
21:30:24  * benviequit
21:53:23  <bnoordhuis>piscisaureus: ping
21:53:34  <piscisaureus>bnoordhuis: pong
21:54:05  <bnoordhuis>piscisaureus: is there a reason why src/node.js makes process.stdout a net.Stream if stdout is a pipe?
21:54:15  <bnoordhuis>i mean, is that a windows hack?
21:55:02  <piscisaureus>bnoordhuis: instead of... ?
21:55:20  <bnoordhuis>piscisaureus: fs.SyncWriteStream or tty.WriteStream
21:59:13  * mikealquit (Quit: Leaving.)
21:59:56  <piscisaureus>bnoordhuis: tty.WriteStream won't work because a tty != pipe
22:00:26  <bnoordhuis>piscisaureus: and fs.SyncWriteStream?
22:00:56  <piscisaureus>bnoordhuis: why would we want to use that?
22:01:05  <piscisaureus>bnoordhuis: it's not a file, right?
22:01:20  <bnoordhuis>piscisaureus: no... but it's not a net.Stream either
22:01:25  <piscisaureus>Using PipeWrap for stdout when stdout is a pipe seems like the right thing to do
22:01:36  <bnoordhuis>for context: https://github.com/joyent/node/issues/2175#issuecomment-2864598
22:02:10  <bnoordhuis>the problem with calling net.Stream.write in a loop is that the write requests keep stacking up
22:02:44  <bnoordhuis>trivial problem, i know, people shouldn't do stupid shit like that but still...
22:03:38  <piscisaureus>bnoordhuis: I don't know ... Maybe SyncWriteStream would work
22:03:57  <piscisaureus>bnoordhuis: but it could also break :-)
22:04:10  * mikealjoined
22:04:21  <piscisaureus>bnoordhuis: I will try it tomorrow after the release
22:04:47  <bnoordhuis>piscisaureus: i'll write a quickie patch
22:07:33  <bnoordhuis>piscisaureus: when are you going to do the release? tomorrow 9 am?
22:08:41  <piscisaureus>yep
22:08:56  <piscisaureus>bnoordhuis: if you are working tonight, can you test on solaris?
22:09:29  <piscisaureus>igorzi is going to land some patches later that affect only windows
22:09:32  <bnoordhuis>piscisaureus: sure, you're building the rc?
22:09:54  <piscisaureus>bnoordhuis: but I landed a new test (test/simple/test-dgram-send-error.js) that I would like to not fail on any platform.
22:10:07  <piscisaureus>bnoordhuis: not yet ... tomorrow
22:10:19  <piscisaureus>bnoordhuis: just build the v0.6 branch
22:11:59  * bnoordhuisbuilds
22:12:19  <bnoordhuis>btw, https://github.com/bnoordhuis/node/compare/issue2175
22:13:46  <piscisaureus>bnoordhuis: I will try tomorrow
22:14:27  <piscisaureus>bnoordhuis: I don't really want to land it before 0.6 because it will cause an issue spree if it has unforseen consequences
22:14:40  <piscisaureus>bnoordhuis: and I have very little time left to test stuff
22:14:43  <bnoordhuis>piscisaureus: sure, i didn't intend it to
22:15:07  <bnoordhuis>this is as low prio as it gets
22:16:36  <bnoordhuis>it's only a partial fix too btw, tty.WriteStream is a net.Socket / net.Stream under the hood as well
22:17:04  <piscisaureus>bnoordhuis: it's all about the wrap it uses
22:17:14  <piscisaureus>bnoordhuis: on windows it MUST be correct
22:17:54  <bnoordhuis>piscisaureus: while (true) process.stdout.write('foo'); // <- that's the issue
22:17:55  <piscisaureus>bnoordhuis: but I kind of think that stdout may be an exception to that rule (unless the parent process is node, then it definitely can't be a file stream)
22:18:06  <piscisaureus>bnoordhuis: I know
22:18:07  <bnoordhuis>with net.Stream it keeps stacking up write requests until memory runs out
22:18:31  <piscisaureus>bnoordhuis: because the ReqWraps aren't freed?
22:18:40  <piscisaureus>bnoordhuis: or because of deferred writing?
22:18:59  <bnoordhuis>piscisaureus: because the ReqWraps and their JS counterparts aren't freed until the next tick
22:19:08  <bnoordhuis>and that next tick never comes in a busy loop
22:19:10  <piscisaureus>yeah
22:19:15  <bnoordhuis>like i said, stupid problem
22:19:29  <piscisaureus>we must make stdout blocking always
22:19:37  <piscisaureus>hmm now
22:19:41  <piscisaureus>hmm no
22:19:54  <bnoordhuis>i'm pretty sure it already is
22:20:13  <piscisaureus>bnoordhuis: if is for files and ttys
22:20:21  <piscisaureus>bnoordhuis: but for pipes I am not sure
22:20:31  <piscisaureus>bnoordhuis: it makes sense if you use stdout for logging
22:20:50  <piscisaureus>bnoordhuis: but if you use stdout for ipc you just have to handle backpressure properly
22:20:50  <bnoordhuis>i was testing it with 10M+ writes and they always succeeded (verified with strace)
22:20:51  * mikealquit (Quit: Leaving.)
22:21:14  <bnoordhuis>and kernel pipe buffers are only 64K so stdout must be blocking
22:21:38  <bnoordhuis>oh, there are no fcntl(1, O_NONBLOCK) syscalls either
22:21:38  <piscisaureus>bnoordhuis: it looks like a bug to me :-)
22:21:58  <bnoordhuis>i am grudgingly coming around to that >:(
22:22:38  <piscisaureus>bnoordhuis: I kind of think we should have a writeSync binding that does not produce wraps
22:23:24  <piscisaureus>bnoordhuis: at the very least a sync write should sometimes return false and emit resume at the next tick
22:23:50  <bnoordhuis>i think i concur
22:24:39  <piscisaureus>bnoordhuis: actually I think that we might add _writeSync to files and pipes, and have console.log|error use that
22:24:54  <piscisaureus>so stdout can still be properly nonblocking when used for IPC
22:25:01  <bnoordhuis>piscisaureus: write throttling is kind of broken for tcp too right now, net.Socket.write never returns false (unless you haven't yet connected)
22:25:19  <piscisaureus>bnoordhuis: hmm... that's bad
22:25:27  <piscisaureus>bnoordhuis: I think on windows this is not the case
22:25:41  <piscisaureus>bnoordhuis: at least, not when you send buffers.
22:25:56  <piscisaureus>I don't know if string writes change the game
22:26:05  <bnoordhuis>check the code in master
22:26:09  <bnoordhuis>wait, i'll link you to it
22:26:18  <piscisaureus>ok
22:26:28  <piscisaureus>after that I am going to be
22:26:31  <piscisaureus>get up early tomorrow
22:27:06  <bnoordhuis>piscisaureus: https://github.com/joyent/node/blob/1db9a2a/lib/net.js#L391 and https://github.com/joyent/node/blob/1db9a2a/lib/net.js#L428
22:27:38  <bnoordhuis>note how the only paths that return false are 'busy connecting' and 'write error'
22:27:57  <bnoordhuis>eh wait, i'm wrong
22:28:04  <piscisaureus>bnoordhuis: https://github.com/joyent/node/blob/1db9a2a/lib/net.js#L443
22:28:12  <piscisaureus>that's where the magic happens
22:28:28  <piscisaureus>I am pretty sure i would have noticed yesterday
22:28:59  <piscisaureus>since I used a raw tcp stream to transport a 3.7gb movie from my home pc to my office laptop over the internet
22:29:01  <bnoordhuis>okay, let's pretend this never happened :)
22:29:45  <bnoordhuis>that's what you get when you get up at 8 am, babysitting mees
22:30:22  * AvianFluquit (Quit: Leaving)
22:36:12  <piscisaureus>heh
22:42:03  <piscisaureus>bnoordhuis: yes we should have writeSync for pipes
22:42:05  <piscisaureus>bnoordhuis
22:42:15  <piscisaureus>on unix you could just have a small select() loop
22:42:22  <piscisaureus>on windows there are ways too
22:43:10  <piscisaureus>and for TTYs too
22:43:12  <bnoordhuis>piscisaureus: you mean something like uv_pipe_init(UV_PIPE_SYNC)?
22:43:46  <piscisaureus>bnoordhuis: no uv_write_sync(uv_pipe_t*, uv_buf_t*, int)
22:44:30  <piscisaureus>bnoordhuis: so console.log can use that
22:45:05  <bnoordhuis>piscisaureus: that so feels like a special-case hack :(
22:47:48  <piscisaureus>bnoordhuis: I know
22:48:06  <piscisaureus>bnoordhuis: but srsly, I don't want blocking stdout when we are the
22:48:12  <piscisaureus>child process of another node
22:48:45  <bnoordhuis>well... it's bad for the main thread too
22:48:56  <bnoordhuis>if someone decides to pipe the output of node to some other process
22:49:12  <bnoordhuis>and that other process is slow, it'll block node when the pipe buffer gets full
22:49:23  <piscisaureus>bnoordhuis: yes exactly
22:49:32  <piscisaureus>a general blocking stdout is bad
22:49:45  <piscisaureus>but for log messages the situation is different
22:49:58  <piscisaureus>you want them to get out immediately
22:50:43  <piscisaureus>that's why stdout is blocking now for files and TTYs
22:50:58  <bnoordhuis>hmm okay, maybe
22:51:01  <bnoordhuis>let me sleep on it
22:51:05  <piscisaureus>do that
22:51:08  <piscisaureus>goodnight
22:51:29  <bnoordhuis>(i'm not really off to bed)
22:51:47  <piscisaureus>no you are doing the solaris build :-)
22:51:59  <piscisaureus>I am having a light dinner and then I will go to bed
23:03:29  <bnoordhuis>talking about
23:03:40  <bnoordhuis>[16:47|% 100|+ 638|- 12]: Done <- `make test-all` on my sunos box
23:04:09  <piscisaureus>judgement?
23:04:30  <piscisaureus>also, does test-dgram-send-error work?
23:05:29  <bnoordhuis>this one's kind of odd:
23:05:29  <bnoordhuis>TypeError: Object #<Object> has no method 'lchmod'
23:05:30  <bnoordhuis> at Object.<anonymous> (/home/jill/src/node/test/simple/test-fs-chmod.js:138:6)
23:06:27  <bnoordhuis>piscisaureus: test-dgram-send-error passes in release and debug mode
23:09:03  * DrPizzaquit (*.net *.split)
23:09:07  * raggi_quit (*.net *.split)
23:09:09  * piscisaureusquit (*.net *.split)
23:09:12  * indutnyquit (*.net *.split)
23:09:13  * CIA-95quit (*.net *.split)
23:09:15  * ircretaryquit (*.net *.split)
23:09:15  * ryahquit (*.net *.split)
23:09:16  * brsonquit (*.net *.split)
23:13:38  * piscisaureusjoined
23:13:38  * brsonjoined
23:13:38  * indutnyjoined
23:13:38  * raggi_joined
23:13:38  * ircretaryjoined
23:13:38  * ryahjoined
23:13:38  * CIA-95joined
23:14:27  <piscisaureus>[01:59|% 100|+ 290|- 8]: Done <-- win
23:14:46  <bnoordhuis>piscisaureus: want me to test linux?
23:15:12  <piscisaureus>yeah
23:15:23  * DrPizzajoined
23:15:31  <piscisaureus>linux should be -0
23:15:40  <piscisaureus>i think D:\node3\test\simple\test-stdin-from-file.js:61 needs fixing
23:16:05  * DrPizzaquit (Excess Flood)
23:16:11  * DrPizzajoined
23:16:34  <bnoordhuis>piscisaureus: yes - but it was broken in 0.6.2 as well
23:27:43  * paddybyersquit (Quit: paddybyers)
23:28:35  <bnoordhuis>having lots of tests is great and all but `make test-all` takes an eternity
23:31:26  <bnoordhuis>TypeError: Object #<Object> has no method 'lchmod' <- wut?
23:32:04  <piscisaureus>ok that needs fixig
23:32:08  <piscisaureus>fixing too
23:32:29  <piscisaureus>bnoordhuis: is it bisect-able?
23:32:47  <bnoordhuis>i know that isaacs broke it :)
23:33:10  <bnoordhuis>i can probably fix it, one sec
23:35:43  <piscisaureus>bnoordhuis: before you upgrade libuv, I am going to land 1 or 2 patches too
23:37:59  <bnoordhuis>[15:28|% 100|+ 643|- 7]: Done <- linux :/
23:38:46  <piscisaureus>bnoordhuis: fs-fsync is broken on windows, but the fsync binding is never called :-/
23:39:07  <bnoordhuis>piscisaureus: how is that my problem?
23:39:19  <piscisaureus>er
23:39:23  <piscisaureus>it isnt
23:46:56  <bnoordhuis>i like that
23:53:55  * felixgejoined
23:53:55  * felixgequit (Changing host)
23:53:55  * felixgejoined
23:54:01  * felixgequit (Client Quit)
23:56:41  <CIA-95>node: Ben Noordhuis v0.6 * r55a8a3a / test/simple/test-fs-chmod.js :
23:56:41  <CIA-95>node: test: better fs.lchmod() availability check
23:56:41  <CIA-95>node: fs.lchmod() is a BSD-ism, not a "not Windows"-ism. - http://git.io/dnj_Iw
23:57:09  <piscisaureus>hmm. somehow the fixture that fsync tries to open is write-only