00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:02:09  * Benvie_quit (Ping timeout: 248 seconds)
00:02:43  * Benvie_joined
00:03:05  * piscisaureus__joined
00:03:55  * piscisaureus_quit (Read error: Connection reset by peer)
00:04:12  * amartensquit (Quit: Leaving.)
00:09:15  * mikolalysenkojoined
00:39:26  <piscisaureus__>TooTallNate: it's scary that cloudup asks to tweet on behalf of me ...
00:40:28  <bnoordhuis>http://kripken.github.io/mloc_emscripten_talk/#/20 <- spot the bug
00:40:33  <TooTallNate>piscisaureus__: are you signing up through twitter?
00:40:44  <piscisaureus__>TooTallNate: yes
00:40:49  <piscisaureus__>it worked also
00:41:02  <TooTallNate>piscisaureus__: ya... we should probably remove that "permission"... i don't think we're using it
00:41:29  <TooTallNate>piscisaureus__: glad that it worked though :)
00:41:32  <piscisaureus__>TooTallNate: so you guys want to take on dropbox?
00:42:34  <TooTallNate>piscisaureus__: in a sense... we're focusing mostly on the presentation of the files
00:42:48  <TooTallNate>basically trying to handle virtually every file format inside the web browser
00:43:12  <TooTallNate>i.e. you don't *need* Photohshop just to view a .psd file that your friend/coworker is sending to you
00:43:19  <piscisaureus__>https://cloudup.com/cQQ5qJt6ZWr
00:43:43  <TooTallNate>piscisaureus__: nice :)
00:44:04  <piscisaureus__>I was just confirming it works
00:44:08  * chiltsquit (Remote host closed the connection)
00:45:38  <TooTallNate>piscisaureus__: try a PDF!
00:45:47  <TooTallNate>(just one of the file formats that we've nailed so far)
00:45:59  <piscisaureus__>TooTallNate: can you share a pdf with me?
00:46:12  <TooTallNate>ya one sec
00:46:41  <TooTallNate>piscisaureus__: https://cloudup.com/cUjNhRXuJxc
00:47:27  * qardquit (Quit: Leaving.)
00:47:59  <TooTallNate>pdf.js rocks :)
00:50:39  * mikolalysenkoquit (Quit: Lost terminal)
01:00:50  * TooTallNatequit (Quit: Computer has gone to sleep.)
01:10:37  * loladirojoined
01:17:22  * loladiroquit (Quit: loladiro)
01:18:28  * loladirojoined
01:21:23  * loladiroquit (Client Quit)
01:27:11  * dapquit (Quit: Leaving.)
01:29:04  * piscisaureus__quit (Quit: ~ Trillian Astra - www.trillian.im ~)
01:35:00  * hij1nxquit (Ping timeout: 256 seconds)
01:37:24  * abraxasjoined
01:43:36  * loladirojoined
01:51:23  * bnoordhuisquit (Ping timeout: 240 seconds)
02:04:03  * inolenquit (Quit: Leaving.)
02:04:21  * inolenjoined
02:15:43  * sblomquit (Ping timeout: 246 seconds)
02:15:56  * chiltsjoined
02:20:30  * chiltsquit (Ping timeout: 264 seconds)
02:21:17  * icarotjoined
02:21:42  * chiltsjoined
02:26:53  * chiltsquit (Ping timeout: 240 seconds)
02:27:53  * amartensjoined
02:28:58  * indexzerojoined
02:28:58  * indexzeroquit (Quit: indexzero)
02:29:07  * chiltsjoined
02:30:40  * indexzerojoined
02:54:05  * brsonquit (Ping timeout: 255 seconds)
02:57:17  * chiltsquit (Read error: Operation timed out)
02:58:12  * bnoordhuisjoined
03:02:36  * bnoordhuisquit (Ping timeout: 246 seconds)
03:07:28  * chiltsjoined
03:12:17  * perezdquit (Quit: perezd)
03:26:42  * AvianFluquit (Read error: Connection reset by peer)
03:27:39  * timoxleyjoined
03:29:22  * AvianFlujoined
03:31:08  * hij1nxjoined
03:31:35  * dapjoined
03:41:01  * TooTallNatejoined
03:42:04  * indexzeroquit (Quit: indexzero)
03:47:23  * qardjoined
03:50:51  * qardquit (Client Quit)
03:55:06  * icarotquit (Remote host closed the connection)
03:56:36  * indexzerojoined
04:11:06  * kazuponjoined
04:14:58  * c4miloquit (Remote host closed the connection)
04:30:18  * defunctzombie_zzchanged nick to defunctzombie
05:04:47  * defunctzombiechanged nick to defunctzombie_zz
05:11:56  * TooTallNatequit (Quit: Computer has gone to sleep.)
05:29:14  * groundwaterquit (Ping timeout: 246 seconds)
05:30:25  * paddybyersjoined
05:33:13  * groundwaterjoined
06:04:16  * dapquit (Quit: Leaving.)
06:30:10  * groundwaterquit (Ping timeout: 246 seconds)
06:32:20  * groundwaterjoined
06:37:30  * rendarjoined
06:55:20  * timoxleyquit (Quit: Computer has gone to sleep.)
06:55:41  * timoxleyjoined
07:02:18  * loladiroquit (Quit: loladiro)
07:11:41  * TooTallNatejoined
07:11:59  * TooTallNatequit (Client Quit)
07:29:35  * groundwaterquit (Ping timeout: 252 seconds)
07:32:13  * groundwaterjoined
07:39:48  * paddybyersquit (Ping timeout: 246 seconds)
07:39:59  * paddybyersjoined
08:20:47  * groundwaterquit (Ping timeout: 246 seconds)
08:21:34  * amartensquit (Quit: Leaving.)
08:22:39  * groundwaterjoined
08:22:56  * hzjoined
08:47:34  * bnoordhuisjoined
08:52:02  * amartensjoined
08:58:53  * amartensquit (Ping timeout: 240 seconds)
09:02:20  * groundwaterquit (Ping timeout: 252 seconds)
09:05:32  * groundwaterjoined
09:34:58  * groundwaterquit (Ping timeout: 246 seconds)
09:37:52  * groundwaterjoined
09:40:16  * bnoordhuisquit (Ping timeout: 260 seconds)
09:47:45  * st_lukejoined
09:51:42  * kazuponquit (Remote host closed the connection)
09:55:30  * groundwaterquit (Ping timeout: 252 seconds)
09:56:38  * amartensjoined
09:56:48  * groundwaterjoined
10:00:50  * amartensquit (Ping timeout: 246 seconds)
10:26:26  * groundwaterquit (Ping timeout: 246 seconds)
10:28:38  * groundwaterjoined
10:32:40  * bnoordhuisjoined
10:46:14  * indexzeroquit (Quit: indexzero)
10:47:38  * bajtosjoined
10:50:52  * groundwaterquit (Ping timeout: 252 seconds)
10:52:25  * groundwaterjoined
10:57:00  * amartensjoined
11:01:24  * amartensquit (Ping timeout: 246 seconds)
11:03:10  * groundwaterquit (Ping timeout: 246 seconds)
11:03:24  * bnoordhuisquit (Ping timeout: 240 seconds)
11:03:38  * kazuponjoined
11:07:24  * groundwaterjoined
11:09:06  * bnoordhuisjoined
11:13:59  * abraxasquit (Remote host closed the connection)
11:23:51  * bnoordhuisquit (Ping timeout: 260 seconds)
11:26:04  * bnoordhuisjoined
11:39:17  * piscisaureus_joined
11:41:20  <bnoordhuis>piscisaureus_: so i want to finish up the windows side of the errno changes
11:41:23  <piscisaureus_>bnoordhuis: lol. I don't believe they actually use that for strlen()
11:41:33  <piscisaureus_>bnoordhuis: so ... ?
11:41:38  <bnoordhuis>but first i have to wait while windows installs 24 updates...
11:41:45  <piscisaureus_>ah
11:41:46  <piscisaureus_>lol
11:41:56  <piscisaureus_>you need to boot it more often
11:41:59  <bnoordhuis>yeah
11:42:04  <piscisaureus_>or just disable automatic updates
11:42:19  <piscisaureus_>set it to "notify" instead of "auto install"
11:42:27  <bnoordhuis>right. next time :)
11:42:31  <bnoordhuis>what's with strlen?
11:42:51  <piscisaureus_>bnoordhuis: the bug you pointed out http://kripken.github.io/mloc_emscripten_talk/#/20
11:43:00  <bnoordhuis>oh, that
11:43:27  <piscisaureus_>I wonder why they |0 all the time
11:43:54  <bnoordhuis>to force it to (and hint that it's) a uint32
11:44:20  <piscisaureus_>bnoordhuis: so your faster division patch also affects that path only right?
11:44:34  <piscisaureus_>bnoordhuis: how often do you see people do (x/y)|0
11:44:57  <bnoordhuis>oh, no - v8 usually infers when it's integer divison
11:44:59  <bnoordhuis>*division
11:45:19  <bnoordhuis>the use case is e.g. Math.floor(10 / 3)
11:45:29  <bnoordhuis>bad example
11:45:49  <bnoordhuis>v8 would replace the 10 / 3 with a constant
11:45:54  <piscisaureus_>Yeah I get it
11:46:23  <piscisaureus_>bnoordhuis: so I found that this algorithm in the general case is very complex
11:46:40  <bnoordhuis>yeah, it is
11:46:41  <piscisaureus_>and computing the magic number is not even constant-time
11:47:09  <bnoordhuis>you probably want to hard-code magic values for common divisors and let everything else just fall through
11:47:23  <bnoordhuis>fall through to the idiv code path, that is
11:48:19  * inolenquit (Read error: Connection reset by peer)
11:48:40  * inolenjoined
11:51:21  * groundwaterquit (Ping timeout: 252 seconds)
11:53:28  * groundwaterjoined
11:57:18  * amartensjoined
12:01:44  * amartensquit (Ping timeout: 255 seconds)
12:13:50  * kazuponquit (Remote host closed the connection)
12:25:26  * piscisaureus_quit (Ping timeout: 246 seconds)
12:41:23  * bnoordhuisquit (Ping timeout: 240 seconds)
12:45:23  * hzquit (Ping timeout: 246 seconds)
12:46:05  * groundwaterquit (Ping timeout: 246 seconds)
12:49:34  * groundwaterjoined
12:53:55  * piscisaureus_joined
12:57:37  * amartensjoined
13:01:54  * amartensquit (Ping timeout: 240 seconds)
13:24:59  * kazuponjoined
13:29:29  * kazuponquit (Ping timeout: 246 seconds)
13:41:32  * st_lukequit (Remote host closed the connection)
13:44:33  * hzjoined
13:56:13  <tellnes>https://gist.github.com/tellnes/5831209
13:56:16  <tellnes>Am I doing something fundamentally wrong or is this a bug in the http streams 2?
13:57:55  * amartensjoined
13:58:04  * indexzerojoined
13:58:37  * indexzeroquit (Client Quit)
14:00:03  * groundwaterquit (Ping timeout: 252 seconds)
14:00:25  * defunctzombie_zzchanged nick to defunctzombie
14:01:27  * groundwaterjoined
14:02:13  * amartensquit (Ping timeout: 248 seconds)
14:05:53  * groundwaterquit (Ping timeout: 246 seconds)
14:09:32  * groundwaterjoined
14:09:53  * defunctzombiechanged nick to defunctzombie_zz
14:18:15  * hzquit
14:18:19  * papertigersjoined
14:20:34  * groundwaterquit (Ping timeout: 252 seconds)
14:23:29  * groundwaterjoined
14:30:00  * pachetjoined
14:31:41  * defunctzombie_zzchanged nick to defunctzombie
14:38:28  * bnoordhuisjoined
14:40:32  * groundwaterquit (Ping timeout: 246 seconds)
14:42:38  * bnoordhuisquit (Ping timeout: 246 seconds)
14:44:41  * groundwaterjoined
14:55:36  * c4milojoined
14:56:55  * groundwaterquit (Ping timeout: 264 seconds)
14:58:16  * amartensjoined
14:59:10  * groundwaterjoined
15:02:59  * amartensquit (Ping timeout: 256 seconds)
15:03:36  * groundwaterquit (Ping timeout: 246 seconds)
15:04:05  * st_lukejoined
15:05:50  * kazuponjoined
15:07:36  * groundwaterjoined
15:10:01  * groundwa_joined
15:12:31  * groundwaterquit (Ping timeout: 264 seconds)
15:14:28  * groundwa_quit (Ping timeout: 252 seconds)
15:15:25  * groundwaterjoined
15:19:41  * groundwaterquit (Ping timeout: 246 seconds)
15:24:24  * stagasjoined
15:25:30  * groundwaterjoined
15:29:51  * groundwaterquit (Ping timeout: 246 seconds)
15:31:54  * st_lukequit (Ping timeout: 264 seconds)
15:42:22  * AvianFluquit (Read error: Connection reset by peer)
15:42:55  * AvianFlujoined
15:43:38  * bnoordhuisjoined
15:47:10  <isaacs>tellnes: testing
15:48:05  * bnoordhuisquit (Ping timeout: 255 seconds)
15:48:09  <tellnes>isaacs: it looks like the req.write callback is never called
15:51:21  * bajtosquit (Quit: bajtos)
15:53:07  <isaacs>tellnes: yes, OutgoingMessage is still not quite 100% a Streams2 stream
15:53:16  <isaacs>tellnes: specifically, OutgoingMessage.write does not take a callback.k
15:53:18  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
15:53:19  <isaacs>tellnes: this is a bug
15:55:08  <tellnes>isaacs: ok, thanks. Should I open an issue with the test-case?
15:56:11  <tellnes>isaacs: and can I expect to get it backported til v0.10?
15:56:18  * bajtosjoined
15:56:45  <isaacs>tellnes: yes, and yes
15:56:52  <isaacs>tellnes: i'ts not quite trivial to fix.
15:57:09  * AvianFluquit (Read error: Connection reset by peer)
15:57:17  <isaacs>tellnes: because we do this magic thing where when we buffer the output, we concatenate same-encoding chunks
15:57:31  <isaacs>tellnes: so if you do req.write('foo', 'ascii'); req.write('bar', 'ascii')
15:57:43  * AvianFlujoined
15:57:43  <isaacs>tellnes: then the actual buffered output is: ['foobar'], ['ascii']
15:57:54  <isaacs>tellnes: however, functions don't concatenate so well like that :)
15:59:02  <isaacs>tellnes: but now that ES6 will maybe someday have operator overloading, we could someday make it so that: function foo + function bar == function(args) { return [foo(args), bar(args)] }
15:59:06  <isaacs>or something :)
15:59:28  * isaacsthrew up in his mouth a little bit...
15:59:30  <isaacs>;)
15:59:32  * bajtosquit (Client Quit)
16:00:13  <tellnes>maybe an internal `buffer written` event and attach the functions to that event is the solution?
16:00:46  <isaacs>tellnes: probably, we could just make the callback a new function
16:01:25  <isaacs>tellnes: if (old && !cb) cb = old; else if (cb && !old) cb = cb; else { cb_ = cb; cb = function(er) { old(er); cb_(er) } }
16:01:33  <tjfontaine>isaacs: I threw up on my keyboard.
16:01:37  <isaacs>where cb is the new one, and old is the old one
16:01:41  <isaacs>tjfontaine: eewwww
16:01:54  <isaacs>tjfontaine: you're not in the office are you? i was planning on heading in, butmight skip it, knowing that there's puke there.
16:01:59  <isaacs>;P
16:01:59  <tjfontaine>hah
16:10:27  * dapjoined
16:11:08  * bnoordhuisjoined
16:11:40  * stagasquit (Ping timeout: 252 seconds)
16:14:35  <tellnes>isaacs: https://github.com/joyent/node/issues/5729 :)
16:15:05  * amartensjoined
16:16:18  * st_lukejoined
16:17:14  <isaacs>tellnes: thanks
16:17:22  <isaacs>tellnes: edited to put the irc log inline, and remove the vomit talk
16:17:24  <isaacs>:)
16:17:28  <tjfontaine>your scrum all set?
16:17:30  <tjfontaine>awww
16:17:35  <isaacs>yea
16:17:37  <tjfontaine>k
16:17:53  <isaacs>gotta run one quick errand, then heading int
16:17:57  <tjfontaine>k
16:18:04  <isaacs>see ya in a bit
16:18:09  <tjfontaine>I'll be here
16:18:10  <tellnes>isaacs: ok, I'll remember that to next time
16:21:35  * qardjoined
16:25:28  * hzjoined
16:29:19  * mikolalysenkojoined
16:33:32  * bajtosjoined
16:34:51  * st_lukequit (Remote host closed the connection)
16:34:58  * piscisaureus_joined
16:37:54  * bajtosquit (Ping timeout: 240 seconds)
16:51:03  * dominictarrjoined
16:51:29  <tjfontaine>why do we noramlize the drive letter on windows to lower case?
16:56:15  <piscisaureus_>tjfontaine: I don't remember. sblom did that.
16:56:23  <tjfontaine>I know I found the commit
16:56:48  <tjfontaine>seems like it was to make other tests pass
16:59:29  * pachetquit (Quit: leaving)
17:02:03  <piscisaureus_>I remember I wasn't thrilled about it but it seemed harmless
17:04:28  <tjfontaine>well, of course executable path test fails, because the drive letter is always captialized, and interestingly path.normalize(__dirname) doesn't lowercase the drive letter, but a path.join() will
17:05:21  <tjfontaine>this is all weird
17:14:48  * c4miloquit (Remote host closed the connection)
17:21:42  <tjfontaine>it's one thing to make a typo in lib/*.js and have to rebuild on unix, but it's down right time sucking to do that on windows :/
17:27:57  * dannycoatesjoined
17:33:59  * bajtosjoined
17:34:11  <tjfontaine>lower casing the drive letter simply can't be the right answer, if anything we should be normalizing up
17:38:24  * bajtosquit (Ping timeout: 240 seconds)
17:42:06  * piscisaureus_quit (Ping timeout: 264 seconds)
17:43:04  * perezdjoined
17:44:50  <tellnes>isaacs: patch on the way
17:50:14  * kazuponquit (Remote host closed the connection)
17:59:46  * loladirojoined
18:07:09  <trevnorris>morning
18:19:44  * piscisaureus_joined
18:21:59  * brsonjoined
18:25:19  * c4milojoined
18:27:36  * pachetjoined
18:30:16  <trevnorris>tjfontaine: know if there's a way to tell the python script to run a set of tests like simple/test-net* ?
18:30:45  <tjfontaine>you can just do that
18:30:53  <tjfontaine>python tools/test.py simple/*net*
18:31:04  <trevnorris>oh, heh, thanks.
18:31:40  * loladiroquit (Quit: loladiro)
18:35:19  * piscisaureus_quit (Ping timeout: 264 seconds)
18:45:15  * loladirojoined
18:46:53  * defunctzombiechanged nick to defunctzombie_zz
18:47:55  * brsonquit (Ping timeout: 264 seconds)
18:54:39  <tjfontaine>indutny: so, tls is stalling on windows ...
18:54:39  <tjfontaine>client readable 1024 2077696 2097152
18:54:40  <tjfontaine>client readable 1024 2078720 2097152
18:54:40  <tjfontaine>client readable 1024 2079744 2097152
18:54:55  <tjfontaine>in test/simple/test-tls-client-destroy-soon.js
18:56:12  <indutny>heya
18:56:16  <indutny>wtf
18:56:28  <indutny>in master?
18:56:44  <tjfontaine>yes
19:05:54  * bnoordhuisquit (Ping timeout: 240 seconds)
19:06:27  * bnoordhuisjoined
19:10:35  <trevnorris>tjfontaine: is jenkins down?
19:13:38  <tjfontaine>it's in its unhappy place
19:14:37  <tjfontaine>basically at some point javur starts spinlooping on something and won't respond to anyone
19:14:42  * timoxleyquit (Quit: Computer has gone to sleep.)
19:17:50  * defunctzombie_zzchanged nick to defunctzombie
19:19:02  <indutny>isaacs: I've almost finished that couchdb thingy
19:19:12  <indutny>with the help of rnewson
19:20:47  * kazuponjoined
19:27:51  * kazuponquit (Ping timeout: 240 seconds)
19:28:46  * stagasjoined
19:36:43  * bajtosjoined
19:39:27  * bajtosquit (Client Quit)
19:45:52  * st_lukejoined
19:54:24  * kazuponjoined
19:55:11  * mikolalysenkoquit (Ping timeout: 246 seconds)
19:59:30  * kazuponquit (Ping timeout: 264 seconds)
20:05:43  * mikolalysenkojoined
20:06:15  * papertigersquit (Quit: papertigers)
20:08:46  * c4miloquit (Remote host closed the connection)
20:09:27  * c4milojoined
20:16:22  * brsonjoined
20:26:26  <trevnorris>isaacs: ping
20:30:35  <tjfontaine>you're psychic
20:30:42  <trevnorris>:)
20:41:31  <trevnorris>putting together some performance numbers for https://github.com/joyent/node/pull/5720
20:41:38  <trevnorris>here, https://gist.github.com/trevnorris/5827001
20:42:31  <trevnorris>there i'm showing off the perf gains, but there are a few losses, specifically in http, that i'm still working through.
20:45:04  <trevnorris>what i'm wondering is if merging sooner rather than later would be possible, and could work though the later more easily.
20:45:27  <trevnorris>(want to stay away from another "buffer" patch scenario at all costs)
20:45:30  <trevnorris>isaacs: ^
20:55:43  * kazuponjoined
20:58:28  * dominictarrquit (Quit: dominictarr)
21:00:33  * kazuponquit (Ping timeout: 256 seconds)
21:08:54  <bnoordhuis>windows... install updates? reboot. install programs? reboot. resize a hard drive? reboot.
21:09:05  <tjfontaine>don't bother, reboot.
21:13:13  <trevnorris>don't reboot, constantly annoy the user until they do.
21:18:38  * c4miloquit (Remote host closed the connection)
21:19:08  <trevnorris>oh, and my favorite. install updates, reboot into update installer, reboot when complete and startup. realize you forgot all the updates...
21:19:20  <trevnorris>s/all/some of
21:24:49  <isaacs>trevnorris: sorry, in the middle of tracking down some highly mysterious HTTP breakage
21:25:17  <trevnorris>isaacs: ah, a fun one. ticket open for it?
21:29:33  * c4milojoined
21:31:32  <bnoordhuis>#define FILETIME_TO_UINT(filetime) \ (*((uint64_t*) &(filetime)) - 116444736000000000ULL)
21:31:51  <bnoordhuis>^ i guess that's one way to convert a struct timespec to an uint64_t
21:32:37  <tjfontaine>don't get me started
21:32:51  <tjfontaine>I think we had this conversation once :)
21:33:30  * defunctzombiechanged nick to defunctzombie_zz
21:35:53  <trevnorris>bnoordhuis: thanks for the reminder about removing the unnecessary offset, length args. allowed me to drop the .slice() in the onread, which is leading to some fun improvements. :)
21:41:31  * rendarquit
21:42:23  <tjfontaine>trevnorris: btw I think jenkins really cranky when it can't talk to github wrt authorization, at least it just happened to me and the error spew was that github took too long to respond
21:42:55  <trevnorris>hm. interesting.
21:52:37  * mikolalysenkoquit (Quit: Lost terminal)
21:53:16  * mikolalysenkojoined
21:56:29  * kazuponjoined
21:58:37  * pachetquit (Quit: leaving)
21:59:35  <trevnorris>bnoordhuis: what's your opinion on a patch that introduces both performance regression and improvements, but the regressions could be dealt w/ later?
22:00:54  * kazuponquit (Ping timeout: 240 seconds)
22:02:54  <bnoordhuis>trevnorris: not favorable
22:03:07  <trevnorris>:P
22:03:38  <bnoordhuis>were you around when streams2 was landed?
22:03:41  <bnoordhuis>those were not happy times
22:04:15  <trevnorris>this isn't that severe for sure
22:05:17  <trevnorris>any regression is below 10%, and only for specific cases.
22:05:30  <bnoordhuis>still
22:05:41  <bnoordhuis>i would only consider that when the cause is well understood
22:05:47  <trevnorris>ok.
22:05:47  <bnoordhuis>and there's a clear path to addressing it
22:06:04  <bnoordhuis>in which case i'd probably ask you why you're not fixing it in the first place :)
22:06:29  <trevnorris>the main reason is so it doesn't turn into a massive patch like my buffers.
22:06:43  <trevnorris>i have enough performance enhancements on track to take up a year
22:07:03  <trevnorris>also i'd like to get community response on some stuff, for example here are some numbers: https://gist.github.com/trevnorris/5827001
22:07:22  <trevnorris>the dispose column is using the new buffer.dispose() method (directly on a Buffer instance)
22:08:27  <bnoordhuis>so are cause and remedy known?
22:08:34  <trevnorris>yeah, for every case.
22:08:40  <trevnorris>it'll just take time to implement.
22:08:47  <bnoordhuis>how much time?
22:10:00  <trevnorris>definitely before v0.12. but probably within the 1-2 month range
22:10:43  <bnoordhuis>my old manager taught me to multiply by 2 and add 8
22:11:00  <bnoordhuis>so 2-4 months, give or take a week
22:11:00  <trevnorris>lol. so did mine. :)
22:11:42  <bnoordhuis>the thing is, v0.12 will have a ~4-6 week code freeze period
22:11:59  <bnoordhuis>where we'll be fixing just bugs and performance regressions
22:12:12  <bnoordhuis>that's not a good time to land big patches
22:12:36  <bnoordhuis>iow, what are the fixes going to look like?
22:13:14  <trevnorris>first, and main, is ~10% regression on very small http requests (e.g. < 1KB)
22:14:03  <trevnorris>partially the hit comes from the path, data comes in, turns into a buffer, sent to http_parser, turned into an object.
22:15:07  <trevnorris>honestly, the cost of malloc per request is tiny compared to what's going on in v8.
22:15:55  <trevnorris>bit, at least for me, it's easier to make those improvements when I don't have to keep track of the slab.
22:16:38  <trevnorris>ooh, thanks. you just gave me another idea :)
22:21:02  * papertigersjoined
22:21:50  <trevnorris>bnoordhuis: there are other things I'd like to see as well. like being able to propagate the desired encoding all the way down to StreamWrap, so Buffer's don't have to be created unnecessarily.
22:23:47  * c4miloquit (Remote host closed the connection)
22:26:59  * c4milojoined
22:27:43  * arlolrajoined
22:28:32  * c4miloquit (Remote host closed the connection)
22:29:12  * c4milojoined
22:30:13  * c4miloquit (Remote host closed the connection)
22:36:10  <bnoordhuis>trevnorris: not a bad idea
22:36:27  <trevnorris>thanks :)
22:37:55  * mikolalysenkoquit (Ping timeout: 246 seconds)
22:45:55  * defunctzombie_zzchanged nick to defunctzombie
22:47:02  * hij1nxquit (Ping timeout: 268 seconds)
22:51:47  * hij1nxjoined
22:51:57  * hzquit
22:52:46  <trevnorris>bnoordhuis: my observation is overall throughput isn't inhibited by the extra malloc's. taking the tcp raw c2s size down to 16 bytes has the same results for master and patch.
22:52:57  <trevnorris>bnoordhuis: in http's case it has to do w/ how it handles the data once it comes in.
22:54:49  <trevnorris>bnoordhuis: oh v8 DataView impl: https://github.com/v8/v8/commit/67de009
22:56:54  <trevnorris>hm. nm. nothing special. nothing exposed in include/v8.h
22:57:14  * kazuponjoined
22:59:45  * st_lukequit (Remote host closed the connection)
23:02:27  * kazuponquit (Ping timeout: 268 seconds)
23:03:50  * stagasquit (Ping timeout: 246 seconds)
23:04:57  * arlolraquit (Quit: Linkinus - http://linkinus.com)
23:13:33  <trevnorris>bnoordhuis: ok, fwiw the disparity between benchmark results are much larger running make bench-http than when I run benchmark/http_simple.js and wrk directly.
23:13:55  <trevnorris>it's almost outside the margin of error.
23:21:18  <trevnorris>all alone :(
23:21:29  <trevnorris>WILL YOU COMFORT ME LOUDBOT?
23:21:30  <LOUDBOT>LET ME FIRE UP NETBEANS HERE
23:21:43  <trevnorris>ooh. definitely not comforting.
23:23:00  * c4milojoined
23:24:02  * qardquit (Quit: Leaving.)
23:24:23  * c4miloquit (Remote host closed the connection)
23:25:01  <tjfontaine>poor trevnorris, fighting with github
23:25:11  <trevnorris>lol. that was fast.
23:25:37  * c4milojoined
23:25:45  <trevnorris>just a brain fart. on code review they have a "close form" button in the same place they have that "close pull request" button
23:26:11  <tjfontaine>don't worry soon they'll just remove text and leave only icons
23:26:22  <tjfontaine>you know what that button does, right?
23:26:29  <trevnorris>haha
23:26:31  <trevnorris>what?
23:26:55  <tjfontaine>trevnorris: you haven't noticed how much github loves buttons, or text as buttons?
23:27:10  <trevnorris>yeah. the text as buttons thing is a complete freakin UI fail.
23:27:21  <trevnorris>I can say that having developed web ui for years.
23:28:34  * mikolalysenkojoined
23:40:04  * paddybyersquit (Ping timeout: 268 seconds)
23:44:28  <trevnorris>tjfontaine: thoughts on this addition? http://git.io/ENFkrQ
23:45:10  <trevnorris>tjfontaine: though I don't like the name "dispose" since in v8 .Dispose() doesn't actually free the associated memory
23:45:21  <trevnorris>but buffer.free() looks kinda strange, imho
23:45:21  * papertigersquit (Quit: papertigers)
23:45:42  <tjfontaine>trevnorris: well, lemme ask this
23:46:07  <tjfontaine>if someone else in c++ makes a buffer and specifies a free_cb, and I call .dispose() in js what happens?
23:46:49  <trevnorris>it free's the memory and returns NULL to the cb. definitely not what I'd like for sure.
23:47:05  <trevnorris>but since I can't recover the associated Persistent I can't call the callback and pass the data
23:47:21  <tjfontaine>ok so on that point, we *have* to call the creators cb, otherwise this is just a disaster waiting to happen
23:47:30  <tjfontaine>or you have to make .dispose a noop in that case
23:48:35  <trevnorris>oy. right now there's no way to communicate that. I could attach the Persistent to the Buffer instance but then there goes the performance advantages.
23:48:48  <tjfontaine>set a flag or do *something*
23:49:15  <tjfontaine>the other question I would have on semantics
23:49:38  <tjfontaine>if this is disposed, you set the length to 0, so I get outofbounds exceptions?
23:49:44  <trevnorris>ok. have an idea. it'll make those objects slow as the old ones, but at least their usage is an edge case.
23:50:16  <trevnorris>can't. in cc I disassociate the external memory from the object and zero it out there as well.
23:50:48  <tjfontaine>so will every subsequent op throw at least?
23:50:54  <tjfontaine>.write() and .read()?
23:51:12  <trevnorris>you mean on the Buffer instance?
23:51:27  <tjfontaine>yes
23:51:43  <trevnorris>no. it just transforms it into a zero-length buffer.
23:52:38  <tjfontaine>right, so outofbounds errors
23:52:51  <trevnorris>ah, I see what you're saying. yeah.
23:53:05  <trevnorris>i thought you meant if they used array accessors
23:53:25  <tjfontaine>what happens on an array accessor, just undefined on get?
23:54:11  <trevnorris>yeah
23:55:57  <trevnorris>tjfontaine: the main use case for this is when you bring data in, then do something quickly w/ it (e.g. write to disk, send over network)
23:56:07  <trevnorris>then once the operation is complete you free the memory.
23:56:23  <trevnorris>mainly so GC doesn't have to deal w/ cleanup.
23:56:25  <tjfontaine>ya I get it
23:56:44  <tjfontaine>I am just really *really* afraid of the user after free bugs that will come after we let people do this
23:58:06  <tjfontaine>did you watch that google io presentation? btw
23:58:13  <trevnorris>tjfontaine: point taken. and no
23:59:22  <trevnorris>tjfontaine: have a link?
23:59:43  <tjfontaine>looking for it