00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:02  <isaacs>oh, and, by the way, dude? dude.
00:00:07  * ircretaryjoined
00:00:11  <isaacs>i don't think that's the, um, perferred nomenclature
00:00:35  * kazuponjoined
00:05:08  * kazuponquit (Ping timeout: 245 seconds)
00:05:28  <tjfontaine>well it took me a bunch longer than I anticipated, but I did find a legit bug in the illumos linker
00:08:00  <isaacs>orly? nice
00:08:25  <tjfontaine>damn, I love it when jenkins finds my faults
00:08:39  <tjfontaine>isaacs: ya, you can't link multiple dtrace generated objects into the same binary
00:08:48  <tjfontaine>isaacs: well you can, but you only get the symbols for probes from the first one
00:09:26  <tjfontaine>http://jenkins.nodejs.org/job/libuv-pullrequest/29/label=smartos/console jenkins auto built my pull request, and found a condition I hadn't tested
00:11:06  <tjfontaine>hmm but why
00:11:25  <tjfontaine>I thought I had broken parallel builds, but no it works on my own test
00:16:49  * mikealjoined
00:18:38  <trevnorris>TooTallNate: you think should I always return a Handle, or is it ok to return a Local?
00:20:10  <TooTallNate>trevnorris: i think you're supposed to return Handle
00:20:17  <trevnorris>ok. thanks
00:20:29  <TooTallNate>trevnorris: Local, if i understand correctly, is supposed to be scoped to the function it's defined in
00:20:32  <TooTallNate>i.e. don't return them :p
00:20:39  <TooTallNate>at least that's my understanding…
00:21:13  * sblomquit
00:21:23  <trevnorris>TooTallNate: yeah. I just keep getting an error of "no viable conversion from Handle to Local"
00:21:52  <trevnorris>just annoying. just want users to be able to "Local<Object> buf = Buffer::New(5)"
00:22:17  <TooTallNate>trevnorris: you can do Local::New() I think
00:22:39  <TooTallNate>trevnorris: but in any case "Handle<Object> buf = Buffer::New(5)" is the same difference to me
00:23:22  <trevnorris>TooTallNate: hm. v8 returns Local: "api.cc:Local<Integer> Integer::NewFromUnsigned(uint32_t value)"
00:24:37  <trevnorris>eh, well. i'm out.
00:24:57  <trevnorris>isaacs: i'll catch you up tomorrow on the crabdude conversation.
00:24:59  * trevnorrisquit (Quit: Leaving)
00:33:15  * dominictarrjoined
00:36:13  * kevinswiberjoined
00:37:25  * defunctzombiechanged nick to defunctzombie_zz
00:39:27  * mikealquit (Quit: Leaving.)
00:40:39  <MI6>joyent/node: isaacs created tag v0.8.23 - http://git.io/2rftqQ
00:41:48  <MI6>joyent/node: isaacs v0.8 * 49dcab9 : Now working on 0.8.24 (+3 more commits) - http://git.io/LEL9JQ
00:42:17  <MI6>joyent/node: isaacs v0.10 * 67096fd : blog: Post for v0.8.23 - http://git.io/cbzvzg
00:45:29  * hzquit
00:46:39  * bnoordhuisjoined
00:57:37  * brsonquit (Ping timeout: 256 seconds)
00:59:42  <MI6>nodejs-v0.8: #37 FAILURE linux-x64 (2/470) smartos-ia32 (1/470) osx-x64 (1/470) smartos-x64 (1/470) linux-ia32 (1/470) osx-ia32 (1/470) http://jenkins.nodejs.org/job/nodejs-v0.8/37/
01:01:12  * kazuponjoined
01:01:14  <MI6>nodejs-v0.10: #122 UNSTABLE linux-x64 (1/575) linux-ia32 (2/575) windows-x64 (5/575) windows-ia32 (5/575) http://jenkins.nodejs.org/job/nodejs-v0.10/122/
01:02:57  * kevinswiberquit (Remote host closed the connection)
01:06:02  * kazuponquit (Ping timeout: 255 seconds)
01:12:38  * dominictarrquit (Quit: dominictarr)
01:15:07  * kevinswiberjoined
01:24:28  * dapquit (Quit: Leaving.)
01:52:59  * defunctzombie_zzchanged nick to defunctzombie
01:56:53  * abraxasjoined
02:05:08  <isaacs>tjfontaine: i won't say a hero, because really, what's a hero..
02:09:03  * kazuponjoined
02:24:29  * kazuponquit (Remote host closed the connection)
02:25:02  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
02:25:51  * mmalecki[fly]changed nick to mmalecki
02:38:00  * kevinswiberquit (Remote host closed the connection)
02:55:42  <tjfontaine>isaacs: damnit, you're going to make me turn it on
03:00:29  <isaacs>tjfontaine: i actually just bought the highdef on itunes
03:00:37  <isaacs>because the copy i had was not cc
03:01:24  <tjfontaine>I have one of the original dvd releases, I forget which
03:03:08  <tjfontaine>looks like original release, I know I coveted the anniversary release bowling ball
03:03:33  <tjfontaine>http://www.dvdactive.com/images/news/screenshot/2008/6/biglebowskibowlingr1art.jpg
03:24:55  * indexzerojoined
03:37:36  * aledbfquit (Quit: aledbf)
03:51:13  * indexzeroquit (Quit: indexzero)
03:55:02  * kazuponjoined
04:01:34  * TooTallNatejoined
04:10:22  * loladiroquit (Quit: loladiro)
04:17:33  * brsonjoined
04:17:34  * brsonquit (Client Quit)
04:18:01  * brsonjoined
04:18:57  * qmx|awaychanged nick to qmx
04:22:13  * loladirojoined
04:22:47  * qmxchanged nick to qmx|away
04:23:20  * indexzerojoined
04:26:32  * loladiroquit (Ping timeout: 252 seconds)
04:27:54  * TooTallNatequit (Quit: Computer has gone to sleep.)
04:43:50  * bnoordhuisquit (Ping timeout: 255 seconds)
04:54:26  * TooTallNatejoined
04:56:27  * kevireillyjoined
05:08:51  * loladirojoined
05:11:05  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
05:41:40  * indexzeroquit (Quit: indexzero)
05:50:10  * bnoordhuisjoined
05:54:10  * paddybyersjoined
05:55:05  * bnoordhuisquit (Ping timeout: 252 seconds)
05:57:04  * AvianFluquit (Read error: Connection reset by peer)
05:57:09  * AvianFlu_joined
06:07:36  * AvianFlu_quit (Remote host closed the connection)
06:35:02  * `3rdEdenjoined
06:36:31  * kazuponquit (Ping timeout: 264 seconds)
06:41:24  * dominictarrjoined
06:43:32  * wolfeida_joined
06:58:02  * dominictarrquit (Quit: dominictarr)
07:00:36  * brsonquit (Quit: leaving)
07:01:43  * dominictarrjoined
07:04:38  * kazuponjoined
07:09:37  * rendarjoined
07:13:39  * dominictarrquit (Quit: dominictarr)
07:37:49  * Chip_Zeroquit (Changing host)
07:37:49  * Chip_Zerojoined
07:41:42  * defunctzombiechanged nick to defunctzombie_zz
08:42:21  * trevnorrisjoined
08:48:12  * Raltquit (Ping timeout: 264 seconds)
08:48:44  * Raltjoined
08:57:00  * kevinswiberjoined
09:00:41  * hzjoined
09:56:35  <trevnorris>ircretary: tell indutny almost have the new buffers working, instead you can see my branch at https://github.com/trevnorris/node/tree/buffer-buffet
09:56:35  <ircretary>trevnorris: I'll be sure to tell indutny
10:10:07  * csaohquit (Quit: csaoh)
10:12:58  <indutny>tjfontaine: hahaha
10:13:06  <indutny>tjfontaine: just realized that I was running benchmarks on CI server
10:13:10  <indutny>it feels soo good
10:13:26  <indutny>also, I believe I did `pkill node` once yesterday :)
10:13:34  <indutny>and that explains all those test failures I've seen :D
10:17:12  * kazupon_joined
10:17:30  * kazuponquit (Ping timeout: 276 seconds)
10:20:07  * trevnorrisquit (Quit: Leaving)
10:25:29  * kevinswiberquit (Remote host closed the connection)
10:32:13  * kazupon_quit (Remote host closed the connection)
10:35:25  * abraxasquit (Remote host closed the connection)
10:39:20  <MI6>joyent/node: Felix Geisendörfer master * a2fd657 : docs: uncaughtException is here to stay Brings docs in line with decisio - http://git.io/p5ZqPQ
10:46:25  * csaohjoined
10:52:34  * bnoordhuisjoined
10:53:51  <indutny>bnoordhuis: hey ben
10:54:17  <indutny>bnoordhuis: how are you doing?
10:56:22  <indutny>this thing scaries me https://github.com/joyent/node/commit/0e57aafbb1c4ad9c8157bfe7f5718e867861492e
10:56:30  <MI6>nodejs-master: #143 UNSTABLE windows-x64 (7/575) linux-x64 (2/575) windows-ia32 (7/575) smartos-ia32 (2/575) smartos-x64 (2/575) http://jenkins.nodejs.org/job/nodejs-master/143/
11:01:01  * loladiroquit (Quit: loladiro)
11:09:36  * mraleph[zzz]quit (Read error: Operation timed out)
11:17:55  <bnoordhuis>indutny: sup fedor
11:18:08  <indutny>bnoordhuis: I've rewritten writev PR
11:18:23  <indutny>now StreamWrap::Writev accepts mixed array of strings and buffers
11:18:44  <indutny>performance seems to be better
11:18:54  <bnoordhuis>i don't know if i'll have time to review anything today
11:19:26  <indutny>oh, anything serious?
11:19:50  <bnoordhuis>no, just busy
11:19:56  <indutny>ah, ok ten
11:19:58  <indutny>s/ten/then/
11:27:54  * sgallaghjoined
11:42:00  * bnoordhuisquit (Ping timeout: 276 seconds)
11:55:24  * defunctzombie_zzchanged nick to defunctzombie
11:59:11  * bnoordhuisjoined
12:20:33  * mralephjoined
12:24:23  <indutny>I am not getting node.js server running means?
12:24:23  <indutny>when I am running this example it's too running.
12:24:38  <indutny>I should create markov chain to generate phrases like this
12:24:50  <indutny>but I belive, sometimes, that's how I talk to you guys
12:25:04  * aledbfjoined
12:34:12  * qmx|awaychanged nick to qmx
12:36:58  * AvianFlujoined
12:40:14  <bnoordhuis>https://github.com/joyent/node/blob/a2fd657/lib/child_process.js#L147 <- is this a bug?
12:40:38  <bnoordhuis>net#Socket() calls _read(0) iff readable===true
12:40:52  <bnoordhuis>but it ignores options.readable if options.handle is set
12:41:36  <bnoordhuis>in particular: https://github.com/joyent/node/blob/a2fd657/lib/net.js#L154 and https://github.com/joyent/node/blob/a2fd657/lib/net.js#L184
12:42:21  <bnoordhuis>i guess it works by accident
12:42:57  <bnoordhuis>but it seems the if (options.handle) code path should also set this.readable and this.writable
12:43:06  <bnoordhuis>opinions?
12:43:12  <indutny>one sec
12:44:09  <indutny>it might be intentional
12:44:27  <indutny>but looks like a bug
12:44:28  <indutny>:)
12:44:33  <indutny>agree
12:44:40  <indutny>but please run tests first
12:46:07  <bnoordhuis>sorry, i said it wrong: net#Socket() calls _read(0) iff readable!==false
12:46:21  <bnoordhuis>options.readable rather
12:46:46  <bnoordhuis>that is, you can't prevent it calling _read(0) if options.handle is set
12:47:06  <bnoordhuis>err wait, no, that's not right
12:47:28  <bnoordhuis>okay, this issue needs some further investigation :)
12:47:57  * kazuponjoined
12:49:52  <indutny>haha
12:49:55  <indutny>obviously
12:50:01  <indutny>cp is not passing readable option
12:51:55  * qmxchanged nick to qmx|brb
12:52:43  <bnoordhuis>i think the issue is that handle passing with net#createServer() doesn't work
12:53:20  <bnoordhuis>by the time the 'connection' callback gets the net#Socket object, node has already done some prep work on it
12:53:40  <indutny>what issue are you fixing?
12:53:47  <bnoordhuis>cluster round robin
12:53:52  <indutny>ohhai
12:53:58  <indutny>on what level?
12:53:59  <indutny>C or JS?
12:54:08  <bnoordhuis>javascript
12:54:12  <indutny>bummer
12:54:13  <indutny>ok
12:54:15  <bnoordhuis>why?
12:54:30  <indutny>err.. wrong word :)
12:54:41  <indutny>I didn't mean that
12:54:47  <indutny>but yeah, its sort of slow
12:55:06  <bnoordhuis>slow? *looks befuddled*
12:55:15  <indutny>every sent fd is acknowledged
12:55:29  <bnoordhuis>oh, that. that's not something i worry about right now :)
12:55:30  <indutny>and json stringified before sending and parsed upon receival
12:55:34  <indutny>ah ok
12:55:43  <indutny>also, I thought that it was working properly...
12:55:47  <indutny>sending sockets
12:55:48  <bnoordhuis>the thing i want to get right is load distribution
12:55:59  <bnoordhuis>well, it does if you use the bindings directly
12:56:29  <bnoordhuis>but when you pass the handle in the net#Server 'connection callback'
12:56:33  <bnoordhuis>i.e. conn._handle
12:57:00  <bnoordhuis>then it's already processed to the point that the child process doesn't receive all incoming data
12:57:18  <indutny>ah
12:57:31  <indutny>missing all incoming data, right?
12:57:37  <bnoordhuis>well, no
12:57:42  <indutny>ok, not all
12:57:43  <bnoordhuis>wait, let me gist it
12:57:46  <indutny>ok
13:01:05  <bnoordhuis>indutny: https://gist.github.com/bnoordhuis/1f1af0d15986c7ef7683
13:01:24  <bnoordhuis>when you connect with `nc 127.0.0.1 8000` and type something, it misses the first message
13:01:35  <bnoordhuis>if you switch to 'raw' mode, it works
13:01:53  <bnoordhuis>(see line 24)
13:02:11  <bnoordhuis>not a big issue, really, but it'd be nice if it worked
13:02:14  <indutny>interesting
13:02:26  <indutny>kewl
13:02:39  <indutny>btw, finishing http benchmarks after writev patch
13:02:47  <indutny>it looks pretty good on osx
13:02:48  * qmx|brbchanged nick to qmx
13:02:49  <bnoordhuis>ah, nice
13:02:52  <indutny>I wonder how it'll behave on linux
13:03:18  <indutny>pretty-cool = 15-50% better
13:03:26  <indutny>on my benchmark
13:03:36  <indutny>running whole suite on linux
13:08:47  <bnoordhuis>handle.readStop(); <- fixed
13:10:02  <indutny>hahaha
13:10:47  <indutny>https://github.com/indutny/sticky-session/commit/dcae5b8f724f19523cd136fe23879f6d262eca6a#L1L60
13:10:55  <indutny>I believe c.pause() was doing that before 0.10
13:16:38  * benoitcquit (Excess Flood)
13:25:15  * piscisaureus_joined
13:26:42  * benoitcjoined
13:26:54  <piscisaureus_>'lo
13:27:07  <indutny>piscisaureus_: hey bertje
13:27:14  <indutny>reveal your release secrets, master
13:28:21  <piscisaureus_>indutny: good point.
13:28:46  <indutny>sacred .cmd files
13:29:36  <piscisaureus_>indutny: haha, no it's written in this weird little language
13:29:40  <piscisaureus_>called javascript
13:29:54  <indutny>not bad... not bad at all
13:30:02  * c4milojoined
13:30:23  <indutny>so do you mind sharing them with us - comptemtible
13:30:27  <indutny>err/
13:30:30  <indutny>contemptible
13:32:42  <piscisaureus_>indutny: of course I don't mind. I keep wanting to fix some warts before I do it.
13:32:54  <piscisaureus_>but let's say I'll push them to github before the call
13:32:55  <indutny>ok, can you release libuv then?
13:32:59  <indutny>ah
13:33:02  <indutny>that's fine too
13:33:12  <indutny>I just want to update libuv in v0.10
13:33:19  <indutny>but... its not that important
13:33:27  <indutny>because I need it to come to master :)
13:33:33  <indutny>and this will happen only after 0.10 release
13:33:36  <indutny>so I can wait a bit
13:33:41  <piscisaureus_>ok
13:33:43  <indutny>piscisaureus_: thanks
13:34:01  <piscisaureus_>indutny: just curious, what is it you need in master?
13:37:25  <indutny>piscisaureus_: https://github.com/joyent/libuv/commit/895e77639ee9aa3bc17b4bc9d675d63d7940c396
13:38:22  <piscisaureus_>indutny: unicorn!
13:38:27  <indutny>yeah
13:40:04  <piscisaureus_>ssh_exchange_identification: Connection closed by remote host
13:40:05  <piscisaureus_>fatal: Could not read from remote repository.
13:40:21  <indutny>github is down
13:40:26  <piscisaureus_>did someone pull my commit bits or is it that down
13:40:27  <piscisaureus_>aha
13:40:30  <indutny>https://status.github.com/
13:42:03  <piscisaureus_>Why exactly did I always push back on path.isRelative etc
13:42:06  <piscisaureus_>now I need it :(
13:42:20  <indutny>ahahah
13:42:22  <indutny>use lib
13:42:25  <indutny>write lib
13:42:50  <piscisaureus_>maybe actually there may be a case for that
13:43:21  <piscisaureus_>i should call it NodePathModuleExW
13:43:27  <piscisaureus_>to reveal my windows roots
13:44:21  <indutny>piscisaureus_: bnoordhuis: https://github.com/joyent/node/pull/5257#issuecomment-16113132
13:44:24  <indutny>ahhaha!!!!
13:44:36  <indutny>it is either the same
13:44:43  <indutny>or 15-50% better
13:45:12  <indutny>piscisaureus_: I need that libuv patch for this node PR
13:45:21  <piscisaureus_>ah, I see
13:45:22  <indutny>otherwise it could write more than IOV_MAX data
13:45:26  <indutny>s/data/iovs/
13:49:42  <piscisaureus_>indutny: you need to disable it for pipes on windows
13:49:54  <piscisaureus_>indutny: I'm sorry, but pipes/ipc on windows dont
13:50:15  <piscisaureus_>support writing multiple bufs
13:54:18  <indutny>oh gosh
13:54:46  <indutny>I believe it should be fixed in libuv :)
13:54:50  <indutny>but I can disable it for windows
13:56:37  <piscisaureus_>indutny: I believe so too. But this is PITA :)
13:56:54  <piscisaureus_>indutny: I tried to make sblom do it one day
13:57:06  <indutny>haha
13:57:14  <indutny>well, you can just write only one buffer at once
13:57:22  <indutny>for now
13:57:25  <indutny>that shouldn't be that hard
13:57:40  <indutny>if IOV_MAX would be equal to 1 on some of unixes - it'll still work
13:58:24  <indutny>so the main idea is that its ok to write buffers one by one, but API should work on all platforms...
13:58:57  <indutny>piscisaureus_: ah, also!
13:59:07  <piscisaureus_>indutny: is there something like UV_IOV_MAX now?
13:59:08  <indutny>I wanted to ask you, why are you ROUND_UPing pointers when writing strings?
13:59:15  <indutny>piscisaureus_: nope
13:59:32  <piscisaureus_>indutny: btw I like writev for *tcp* on windows, it works for that. just not for (ipc) pipes.
13:59:34  <indutny>that's managed internally, so there're no need to expose it
13:59:39  <piscisaureus_>ah
14:00:58  <piscisaureus_>indutny: yes, we will be making multiple write calls to emulate writev. But the problem is, *that* is hard because on windows the write operation completes in the background, and it needs the uv_write_t object to store data about it.
14:01:15  <piscisaureus_>indutny: however the user will be giving us just one uv_write_t so we need to alloc more etc
14:01:19  * loladirojoined
14:02:12  <indutny>yeah, I understand it
14:02:14  <piscisaureus_>and aggregate results (e.g. the the 1st WriteFile operation succeeds, the 2nd WriteFile call fails)
14:02:21  <piscisaureus_>indutny: good :)
14:02:28  <indutny>well, you should assert then :)
14:02:45  <indutny>piscisaureus_: but from another point of view
14:02:47  <piscisaureus_>indutny: no - this can happen when it's not your fault
14:02:51  <indutny>we're already doing this sort of hackery for osx
14:03:06  <indutny>so I believe it could be managed
14:03:18  <piscisaureus_>it is possible. It's just $work :)
14:03:32  <indutny>haha :)
14:03:38  <indutny>I'm not going to pay you money for that
14:03:49  <piscisaureus_>indutny: the ROUND_UPing is to align the buffer
14:03:56  <indutny>piscisaureus_: why 16?
14:04:03  <indutny>not 8
14:04:06  <piscisaureus_>indutny: oh, ben came up with that. I don't know exactly
14:04:15  <indutny>performance?
14:04:20  <piscisaureus_>indutny: probably sizeof(void*) would've been good
14:04:29  <indutny>yeah, I think that too
14:04:33  <piscisaureus_>indutny: the alignment is for performance indeed
14:05:04  <piscisaureus_>indutny: possibly 16 beause a fast memcpy() might use SSE1/2/3 instructions which work on 128-bit values???
14:05:05  <indutny>piscisaureus_: btw, does pipes/tty call onconnection ?
14:05:09  <piscisaureus_>(just speculating)
14:05:10  <indutny>piscisaureus_: aaah, sse
14:05:14  <indutny>yes, it could be it
14:05:28  <indutny>yes they're
14:05:30  <indutny>oh gosh
14:05:31  <piscisaureus_>it's probably moot
14:05:41  <piscisaureus_>indutny: what do you mean?
14:05:53  <indutny>pipe_wrap.cc calls .onconnection()
14:05:57  <piscisaureus_>indutny: you can have a pipe server, so yes it calls onconnection
14:06:01  <piscisaureus_>tty doesn't
14:06:03  <indutny>yep
14:06:05  <indutny>ok
14:06:30  <piscisaureus_>indutny: unless the tty server gets an incoming connection of course
14:06:36  <piscisaureus_>indutny: try to make that happen :)
14:06:54  <piscisaureus_>I think we need uv_tty_listen for that :-p
14:07:38  <indutny>hahaha
14:09:17  * loladiroquit (Quit: loladiro)
14:09:42  <indutny>gtg
14:09:44  <indutny>ttyl
14:23:45  * c4miloquit (Remote host closed the connection)
14:25:19  <bnoordhuis>indutny: a few benchmarks get slower, it seems?
14:25:20  * defunctzombiechanged nick to defunctzombie_zz
14:25:43  <bnoordhuis>http/end-vs-write-end.js type=asc kb=256 c=100 method=write: ./node-original: 403.77 ./node: 368.3 ..... 9.63%
14:26:44  <bnoordhuis>the ROUND_UP(16) is for sse-enabled memcpys btw
14:30:26  * aledbfquit (Ping timeout: 252 seconds)
14:31:46  * c4milojoined
14:32:07  * aledbfjoined
14:33:07  * c4miloquit (Remote host closed the connection)
14:39:42  <tjfontaine>indutny: if it's a problem I can spin up a different host for slaves, I wasn't sure how often smartos-drone was being used
14:50:25  * loladirojoined
15:02:59  * kazuponquit (Remote host closed the connection)
15:09:48  * defunctzombie_zzchanged nick to defunctzombie
15:09:58  * loladiroquit (Quit: loladiro)
15:26:11  <bnoordhuis>(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
15:26:15  * kevinswiberjoined
15:26:15  <bnoordhuis>Trace at ChildProcess.EventEmitter.addListener (events.js:160:15) at ChildProcess.EventEmitter.once (events.js:179:8) at Server.<anonymous> (/Users/bnoordhuis/src/master/tmp/rr.js:57:20) at Server.EventEmitter.emit (events.js:95:17) at TCP.onconnection (net.js:1157:8)
15:26:21  <bnoordhuis>^ that error message is starting to annoy me
15:27:09  <bnoordhuis>then again, it may be a bug in my code
15:27:11  * `3rdEdenchanged nick to `3E|DINNER
15:27:24  <bnoordhuis>i still blame isaacs though
15:28:17  <bnoordhuis>(or was it felixge that added that error message way back?)
15:28:42  <felixge>bnoordhuis: nope, I didn't add this message
15:28:45  <felixge>I hate it as well so
15:28:46  <felixge>:)
15:30:50  * kazuponjoined
15:35:03  * stagasjoined
15:40:20  * defunctzombiechanged nick to defunctzombie_zz
15:46:31  * kazuponquit (Remote host closed the connection)
15:47:09  * kazuponjoined
15:50:29  <bnoordhuis>call in 10, people
15:50:37  <piscisaureus_>bnoordhuis: it was ryan. And I think this warning is useful.
15:50:41  <piscisaureus_>Ok, going to race home to make it for the call.
15:51:07  <bnoordhuis>i don't disagree but useful is not the same thing as not annoying
15:51:36  <bnoordhuis>in hindsight, it should probably have been some kind of debug flag
15:52:27  <indutny>bnoordhuis: isaacs: piscisaureus_: call in 8 minutes?
15:52:58  <bnoordhuis>indutny: yep
15:53:37  <bnoordhuis>i'm somewhat surprised that naive round robin outperforms native os scheduling
15:53:44  <bnoordhuis>at least, in trivial benchmarks
15:54:43  <indutny>aha
15:54:55  <indutny>well, I believe that epoll+accept doesn't work
15:54:58  <indutny>with mulitple threads
15:55:08  * piscisaureus_quit (Ping timeout: 245 seconds)
15:55:10  <indutny>s/threads/processes/
15:55:16  <indutny>and this is "by design"
15:55:22  <bnoordhuis>that at least is demonstrably true :)
15:55:25  <isaacs>call in 5 minutes
15:55:30  <indutny>5 minutes! !! !!
15:55:39  <indutny>lets include everyone from this room
15:55:45  <isaacs>ahah
15:55:57  <isaacs>no thanks
15:56:18  <bnoordhuis>on os x, it's a 4% user and 4% sys time difference
15:56:22  <bnoordhuis>that's pretty substantial
15:56:26  <indutny>bnoordhuis: 4% more?
15:56:29  <indutny>or 4% less
15:56:42  <bnoordhuis>round robin is 4+4% faster, i.e. less
15:56:46  <bnoordhuis>less cpu time
15:57:01  <indutny>kewl
15:57:05  <indutny>I'm surprised :)
15:57:14  <bnoordhuis>that's on os x, of course, so consume with a grain of salt
15:57:23  <indutny>cianide
15:57:24  * dapjoined
15:57:25  <indutny>err
15:57:27  <indutny>cyanide
15:59:00  * sblomjoined
16:01:11  <indutny>isaacs: call?
16:01:11  <bnoordhuis>call?
16:02:31  <tjfontaine>incoming
16:03:58  * inolenquit (Quit: Leaving.)
16:06:26  * piscisaureus_joined
16:31:55  * kazuponquit (Remote host closed the connection)
16:34:44  * `3E|DINNERquit (Remote host closed the connection)
16:41:35  * brsonjoined
16:42:23  * trevnorrisjoined
16:49:50  * kazuponjoined
16:52:42  <indutny>bnoordhuis: http://en.wikipedia.org/wiki/Sea_of_Azov
16:53:31  <indutny>isaacs: new writev https://github.com/joyent/node/pull/5257
16:53:51  <bnoordhuis>indutny: aha
16:54:31  <tjfontaine>indutny: you see that it's still a bit unstable right? :)
16:54:43  <indutny>tjfontaine: that's because of master branch
16:54:47  <indutny>and libuv
16:54:57  <indutny>it'll be very stable after merging v0.10 into master
16:55:00  <tjfontaine>ah ok
16:55:01  <indutny>and updating libuv
16:55:33  * bnoordhuisis biab
16:56:31  <indutny>piscisaureus_: would be good if you'll take a look at stream_wrap.cc changes here https://github.com/joyent/node/pull/5257
16:56:40  <indutny>because you've basically wrote those functions
16:57:18  * bradleymeckjoined
16:57:19  <piscisaureus_>indutny: i know. However, I'm trying to warp time.
16:57:22  <indutny>haha
16:57:32  <piscisaureus_>indutny: can you send me a reminder to do it per email?
16:57:33  <indutny>you need a special time warping device
16:57:38  <indutny>piscisaureus_: sure
16:57:50  <indutny>done
16:58:13  <indutny>cafe in omsk http://snaf-omsk.livejournal.com/1090528.html
16:58:17  <indutny>warning
16:58:18  <indutny>mature content
16:58:36  <indutny>gosh, what's happening with people in that city
16:58:43  <indutny>really happy that I moved out of it
17:00:01  * bnoordhuisquit (Ping timeout: 245 seconds)
17:01:11  * defunctzombie_zzquit (Ping timeout: 260 seconds)
17:02:34  * defunctzombiejoined
17:05:17  * loladirojoined
17:12:43  * inolenjoined
17:15:07  <isaacs>indutny: so, one thing that people ask for occasionally is "parallel write" support.
17:15:16  <indutny>parallel write?
17:15:16  <isaacs>indutny: in most cases, of course, this is completely idiotic.
17:15:22  <indutny>like
17:15:28  <isaacs>indutny: since "streaming I/O" implies that it is strictly ordered.
17:15:29  <indutny>two ._write()s simultaneously?
17:15:31  <isaacs>yeah
17:15:34  <indutny>oh gosh
17:15:48  <indutny>well, just call callback
17:15:50  <isaacs>so, let's say you're reading from a file, and then parsing each line as json, and then writing each object into coucdb.
17:16:02  <isaacs>and you want SOME backpressure, but have like, 4 transactions going at any given time.
17:16:11  <indutny>you can write it yourself
17:16:13  <isaacs>it's *kind* of like writev
17:16:22  <indutny>isaacs: yeah, its the same
17:16:29  <isaacs>like, let me coalesce up 4 writes, and then write them all at once, or something
17:16:35  <indutny>yeah
17:16:40  <isaacs>of course, it's really more like batching, then parallelism
17:16:45  <isaacs>if one is slow, they're all slow..
17:17:05  <indutny>yep
17:17:13  <indutny>better just call callbacks from ._write()
17:17:20  <isaacs>you could just create a Readable that has 4 internal writers.
17:17:27  <indutny>that's too hard
17:17:30  <isaacs>and writes to whichever one is available.
17:17:31  <indutny>just call 3 callbacks
17:17:34  <indutny>and leave last one
17:17:44  <indutny>if one of them ends you can call the last one
17:17:53  <isaacs>sure, so, plenty of ways to do this.
17:17:56  <indutny>pretty simple and could be implemented on user side
17:17:59  <isaacs>right
17:18:13  <isaacs>oh, i mean, create a Writable that has 4 internal writer streams
17:18:30  <indutny>ah, well...
17:18:35  <isaacs>so, _write(chunk,enc,cb) calls the cb right away if it can be written to one of the internal writers.
17:18:36  <indutny>that's bit harder, but possible
17:18:40  <isaacs>like a pooling kind of thing.
17:18:43  <isaacs>not something we shold do in core.
17:18:44  <indutny>ok
17:18:48  <indutny>obviously
17:18:49  <indutny>:)
17:18:49  <isaacs>userland, of course.
17:19:02  <isaacs>but i think, if someone wants batched writes, they might want to use this writev hook.
17:19:54  <isaacs>indutny: yeah, the compare script is "new old" ordering
17:20:01  <isaacs>indutny: minor bug, imo
17:20:08  * `3rdEdenjoined
17:20:25  <indutny>haha
17:20:29  <indutny>well, that's ok
17:20:39  <indutny>my mistake, actually
17:20:42  * qmxchanged nick to qmx|lunch
17:21:26  <indutny>but it was running for like a couple of hours and I don't want to start it all over again just because of representation problems
17:23:39  <indutny>isaacs: what about naming of `.flush()` method?
17:25:27  <isaacs>yeah, it's super slow
17:25:36  <isaacs>so, about flush()...
17:26:10  * csaohquit (Quit: csaoh)
17:26:26  <isaacs>_stream_transform.js
17:26:27  <isaacs>has this in it:
17:26:28  <isaacs> if ('function' === typeof this._flush)
17:26:28  <isaacs> this._flush(function(er) {
17:26:28  <isaacs> done(stream, er);
17:26:30  <isaacs> });
17:26:40  <isaacs>and i *think* the only stream we have in core with a flush() method is Zlib
17:27:34  <indutny>I know
17:27:45  <isaacs>indutny: the benchmarks look good. chunked and write-end both are much improved, and the others are effectively "no change" which is what i'd expect.
17:27:46  <indutny>hm...
17:27:59  <indutny>isaacs: yeah, results are good
17:28:02  * indutnyopens thesaurus
17:28:51  <indutny>ahaha
17:28:54  <indutny>stream.expel()
17:28:57  <indutny>thank you thesaurus
17:29:23  <indutny>ok, I give up
17:32:29  * TooTallNatejoined
17:39:56  <isaacs>hahaha
17:40:09  <isaacs>stream.finishYourCrapSoIcanClose()
17:40:16  * `3rdEdenquit (Remote host closed the connection)
17:40:48  <isaacs>indutny: i think Writable.flush() makes sense. It should throw if you're not in writev mode.
17:41:02  <isaacs>indutny: and the option should be { writev: true }. coalesce is kind of weird and hard to spell.
17:41:11  <isaacs>though it's a beautiful word
17:42:16  <tjfontaine>I always fail the number of l's test
17:42:25  <isaacs>or maybe "batch":true
17:42:27  <indutny>writev: number | true
17:42:53  <isaacs>oh, sure
17:42:57  <isaacs>true => Infinity
17:43:03  <isaacs>false => 0
17:43:21  * AvianFluquit (Read error: Connection reset by peer)
17:43:22  <isaacs>er, (false || <1 || NaN) -> 1
17:44:00  * AvianFlujoined
17:44:24  <indutny>yeah
17:44:56  <indutny>value === true ? Infinity : value ? value|0 : 0;
17:45:13  <indutny>anyway
17:45:18  <indutny>I've enabled it for client sockets
17:45:21  <indutny>and some tests are failing :)
17:45:37  <indutny>ah
17:45:42  <indutny>they're mostly bytesWritten
17:46:18  * `3rdEdenjoined
17:47:23  <isaacs>hm. yeah, that'd be tricky
17:47:31  <isaacs>because now you have two buffers to walk over.
17:47:42  <isaacs>I think bytesWritten should be a property on Writable, probably, not Socket.
17:50:06  <indutny>no, its ok
17:50:13  <indutny>its just the bug that I've fixed in v0.10
17:50:23  <indutny>there're also some other weird stuff
17:50:37  <indutny>like not -buffer inputs
17:50:43  <indutny>with buffer encoding
17:50:59  <indutny>oh gosh
17:51:02  <indutny>its binary encoding
17:53:03  <indutny>ok, got it
17:53:07  * kevinswiberquit (Remote host closed the connection)
17:53:12  <indutny>not a big deal
18:06:15  * bnoordhuisjoined
18:08:25  <tjfontaine>bnoordhuis: any problem with me putting the HAVE_DTRACE and fallback macros in internal.h?
18:10:43  * bnoordhuisquit (Ping timeout: 264 seconds)
18:10:59  <tjfontaine>I scared him off
18:28:14  * loladiroquit (Quit: loladiro)
18:31:46  * `3rdEdenquit (Remote host closed the connection)
18:35:40  <isaacs>piscisaureus_, sblom: Can one of you tell me if this is a bug, or if it's just something stupid about windows? fs.rmdir('some-file') raises ENOENT rather than ENOTDIR
18:36:51  <isaacs>The file is a read-only file, but rimraf is an "optimistic error responder" style of unix program, so it reads the first EPERM as 'Oh, I guess this must be a directory', and then gets an ENOENT, and interprets that as "I guess this thing is already deleted, success!"
18:37:07  <piscisaureus_>isaacs: right. Might be a bug :)
18:37:25  <piscisaureus_>isaacs: I think its possible to work around it so you'd probably open a libuv issue for that.
18:38:53  <isaacs>kk
18:39:05  <isaacs>will do. in the meantime, ig uess rimraf has to be a little less efficient on win32 to be correct
18:39:52  * qmx|lunchchanged nick to qmx
18:44:52  <isaacs>piscisaureus_: hey, that multi-repo npm stuff. you planning on sending that upstream?
18:45:32  <piscisaureus_>isaacs: yes. It's been on my this-needs-to-be-processed queue for a long time
19:20:46  * kazuponquit (Remote host closed the connection)
19:30:31  * inolenquit (Ping timeout: 264 seconds)
19:30:52  * `3rdEdenjoined
19:31:28  <trevnorris>isn't "size_t" unsigned?
19:32:05  * inolenjoined
19:34:11  <mmalecki>it is
19:36:40  <trevnorris>ok. there are just a couple unchecked quirks like
19:37:12  <trevnorris>Buffer(4).write('4444', -0xffffffff, 'base64')
19:37:28  <trevnorris>because of statements like: size_t offset = args[1]->Int32Value();
19:38:23  <trevnorris>but since they don't allow out of bounds access, it really is just a quirk. not a security issue or anything.
19:38:47  <trevnorris>mmalecki: almost have the new Buffer's working. just adding additional tests and running benchmarks.
19:41:04  <mmalecki>I like it. how's performance looking so far?
19:46:50  <trevnorris>mmalecki: so far pretty much the same for all practical purposes.
19:47:10  <trevnorris>that's because the SlabAllocator is still being used. haven't gotten to removing that yet.
19:47:45  <mmalecki>right, and SlabAllocator tends to be a pain in certain applications
19:53:58  * piscisaureus_quit (Ping timeout: 256 seconds)
19:58:52  <indutny>and I'm back
19:58:57  <indutny>anyone has written me anything?
19:59:52  <indutny>!sysinfo
20:03:50  <indutny>isaacs: what do you think about changing stream's options after creating it?
20:03:58  <indutny>show we expose some sort of API for doing this
20:04:08  <indutny>I don't like having this._writableState.coalesce = true; in code
20:09:08  * kevinswiberjoined
20:11:09  * piscisaureus_joined
20:12:36  * loladirojoined
20:19:32  <trevnorris>wtf. some of the buffer range checks seem so arbitrary.
20:20:17  <trevnorris>e.g. buffer.copy(b, 0, -1) coerces -1, but buffer.copy(b, 0, 0, -1) throws.
20:20:40  * bnoordhuisjoined
20:21:07  * kazuponjoined
20:22:31  * sblomquit (Ping timeout: 256 seconds)
20:22:43  <trevnorris>ah fuck. i'm the one that committed those tests. =P
20:23:24  <tjfontaine>I know that feeling all too well
20:24:03  <trevnorris>buffers walk this strange line between Array's and DataView's in their range checking.
20:24:04  <indutny>hahahahahahah
20:25:30  <trevnorris>in you all's opinion. think buffer.copy() should operate more like Array.slice or DataView.set*?
20:26:06  * kazuponquit (Ping timeout: 256 seconds)
20:26:18  <trevnorris>because .slice() coerces out of range values to their defaults, and .set* throws.
20:26:44  <trevnorris>i get confused where the line is. isaacs, have an opinion?
20:37:37  * AvianFluquit (Remote host closed the connection)
20:41:55  * sblomjoined
20:42:12  * `3rdEdenquit (Remote host closed the connection)
20:45:02  * TooTallNatequit (Quit: Computer has gone to sleep.)
20:46:01  * mikealjoined
20:47:45  * `3rdEdenjoined
20:48:41  <indutny>isaacs: yt?
20:49:09  <tjfontaine>he's not sitting at his desk, so probably in a meeting
20:49:16  <indutny>aha
20:49:19  <indutny>tjfontaine: thanks
20:49:26  <tjfontaine>my pleasure
20:49:28  <indutny>isaacs: anyway, take a look at this https://github.com/indutny/node/commit/1f3fe530fbf7c08c8b42bf3ecf590973a2d43b27 once you'll get back
20:50:53  <trevnorris>whenever I start to think the buffer code is complex, i'm reminded about streams.
20:51:29  * TooTallNatejoined
20:52:13  * AvianFlujoined
21:00:56  * rendarquit
21:02:02  <isaacs>indutny: what does writev:1 do?
21:02:08  <isaacs>indutny: shouldn't writev be *at least* 2?
21:03:13  <indutny>isaacs: right
21:03:17  <indutny>I agree
21:03:58  <indutny>fixed
21:04:09  <indutny>anything else?
21:04:31  * mikealquit (Quit: Leaving.)
21:09:32  * qmxchanged nick to qmx|away
21:10:33  <indutny>anyone will be in NYC this week?
21:10:33  <trevnorris>isaacs: benchmark/net/tcp-raw-pipe.js: "var e = new Error(syscall + ' ' + errno);" <- "errno is not defined"
21:14:58  <bnoordhuis>indutny: i'm fairly sure there will be at least 8 million people in NYC this week
21:15:07  <bnoordhuis>so yes
21:15:16  <indutny>bnoordhuis: actually that would be pretty scare if they won't be there
21:15:31  <bnoordhuis>nice and quiet though
21:15:53  <inolen>it's all just ambient noise after a while :P
21:16:43  <indutny>yeah
21:17:19  <indutny>streets are so tiny there
21:17:23  <indutny>much wider in moscow
21:17:59  <inolen>It makes street parking that much more fun during the Winter
21:18:01  <indutny>that street is near me: http://goo.gl/maps/rnhFk
21:18:04  <inolen>real life bumper cars
21:18:10  <indutny>inolen: don't tell me about street parking :)
21:18:33  <inolen>are you living there or just visiting?
21:18:44  <indutny>http://goo.gl/maps/WveJo
21:18:44  <tjfontaine>bnoordhuis: https://github.com/joyent/node/commit/2c41a8028295c72e8aa2f64c2d47c0948634e6f9 makes node v0.8 depend on openssl 1.0.0?
21:18:47  <indutny>inolen: living
21:18:51  <indutny>inolen: in moscow
21:18:58  <indutny>and will be visiting NYC
21:19:01  <inolen>ah ok
21:19:15  <indutny>btw, who are you? :)
21:19:24  <indutny>https://github.com/inolen ?
21:19:29  <inolen>aye
21:19:38  <indutny>haha :0
21:19:45  <indutny>well, I mean I see you for the first time here
21:19:53  <indutny>just curious
21:20:10  <inolen>I'm just here to listen to smart people talk
21:20:15  <indutny>sorry if it was a bit rough, that's how we russians are usually talking
21:20:30  <indutny>inolen: yeah, me too
21:20:34  <indutny>bnoordhuis is just amazing when talking
21:20:41  <inolen>^^
21:21:34  <bnoordhuis>tjfontaine: because it uses EVP_PKEY_get1_RSA? i don't think that's a 1.0 thing but i'm not 100% sure
21:21:41  * kazuponjoined
21:21:46  <tjfontaine>no it's EVP_PKEY_id that is 1.0.0+