00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:04:29  * c4miloquit (Remote host closed the connection)
00:05:39  <trevnorris>isaacs: pingidy. serious implementation question.
00:05:54  <isaacs>pongidy
00:05:59  <isaacs>whassup?
00:06:10  <trevnorris>isaacs: so... i was thinking, would it be crazy to create domain specific nextTick and callback functions, then override the normal ones when require('domain') is loaded?
00:06:21  <isaacs>hrm,/.
00:06:32  <isaacs>it's only a little crazy
00:06:43  <trevnorris>ok, i can handle a little crazy.
00:06:45  <isaacs>but... i don't want to get a benchmark improvement just if you never load domains.
00:06:54  <isaacs>that's kinda crap.
00:07:05  <isaacs>i mean, node should be fast if you're using domains.
00:07:19  <isaacs>that sorta feels like premature optimization.
00:07:32  * isaacssearching his gut...
00:07:41  <isaacs>my gut says that's a scary road to go down.
00:07:46  <trevnorris>isaacs: actually it would be faster for both. since we we don't need to check either way.
00:07:52  <isaacs>having two tickCallbacks and nextTicks and MakeCallbacks to manage...
00:07:53  <isaacs>ugh
00:08:01  <trevnorris>yeah. that part is a pain.
00:08:19  <trevnorris>ok, i'll leave that one out. just a "little" crazy thought. ;-)
00:08:21  <isaacs>you'll always have a mix of domain'ed and non-domain'ed callback objects.
00:08:46  <isaacs>so you still have to check, right?
00:09:36  <trevnorris>isaacs: the problem is we'd need to check every callback for domain before it runs. that's the hit i've been trying to avoid most of all.
00:10:10  <trevnorris>so we can optimize the old domain callback, which will still run faster than it did
00:10:22  <trevnorris>but if you never use a domain, then it'll be like supa fast.
00:10:43  <isaacs>right..
00:10:53  <isaacs>but it'll only be supafast until you do require('domain')
00:11:01  <isaacs>and then we have to check every callback
00:11:08  <trevnorris>we had to do that anyways.
00:11:14  <trevnorris>and will always have to.
00:11:30  <isaacs>so.. i don't get the benefit
00:11:48  <trevnorris>if you don't use domains it will be a lot faster. if you do use domains then it will be a little faster than it was.
00:12:09  <trevnorris>for example, nextTick won't have to check for a domain every time.
00:12:20  <trevnorris>it just is like. push that callback on, and forget the stinkin domain.
00:12:48  <isaacs>right
00:12:52  <isaacs>so then you do require('domain')
00:12:55  <isaacs>and now you have a mix
00:13:03  <isaacs>now you have to check all the time.
00:13:09  <isaacs>so it's only faster if you're not using domains *at all*
00:13:18  <isaacs>but even once you *might* be using domains, it goes right back where we are now.
00:13:19  <isaacs>right?
00:13:41  <trevnorris>well. i've made enough improvements that it'll still be a little faster using domains. just not as much as if you don't.
00:14:09  <trevnorris>(e.g. setting process.domain = null by default helps a lot with type conversion checks)
00:14:29  <isaacs>right
00:14:38  <isaacs>we can get rid of the whole "usingDomains" bs in EventEmitter() as well
00:14:44  <trevnorris>yeah, exactly.
00:14:50  <isaacs>just set it to null at the outset, and always do this.domain = process.domain;
00:14:57  <trevnorris>yeah.
00:15:06  <isaacs>that's orthogonal to the makeCallback/nextTick improvements, though
00:15:10  <isaacs>let's put it off for now
00:15:13  <trevnorris>will do.
00:15:44  <isaacs>trevnorris: +1 on naming wiht - instead of _
00:15:53  <trevnorris>coolio
00:17:57  <trevnorris>but just so we understand, the first time you load a domain, all callbacks must be run with a domain check until the queue (tick?) empties.
00:19:02  <isaacs>no
00:19:20  <isaacs>the domain is attached to the object passed to MakeCallback
00:19:28  <isaacs>or to the tock object, timer, or EventEmitter
00:19:45  <isaacs>at creation time, they get attached to process.domain (the active domain)
00:19:53  <isaacs>then that domain exits, etc. eons pass.
00:20:17  <isaacs>then their thing triggers. *their* domain becomes active (ie, calls .enter() on it), the function runs, and then it exits.
00:20:57  <isaacs>but, even in that tick, there may be some mix of domains. and well AFTER that tick ends, anything *scheduled* in that tick needs to have a domain check.
00:21:08  <trevnorris>and each callback can load/unload it's own domain. so each callback object must be checked, right?
00:21:10  <isaacs>so, once you have touched domains, you have to check for domains, literally forever.
00:21:16  <isaacs>yes.
00:21:20  <trevnorris>ok, yeah.
00:21:58  <isaacs>require('domain').create().on('error', console.log).run(function(){setTimeout(funciton() {throw 'foo'},100000)})
00:22:13  <isaacs>once that line runs, any future callback could be the one with the domain
00:23:59  <isaacs>so.. we may as well just make the "maybe domains" world faster.
00:24:09  <isaacs>rather than optimize for never using domains
00:24:23  <trevnorris>both have had the living shiz optimized out of them.
00:24:37  <isaacs>well... that's good. you dont' want any living shiz inside of your code.
00:24:38  <isaacs>:)
00:24:42  <trevnorris>lol, yeah.
00:25:01  <trevnorris>the entire logic path has been optimized so once a domain is/isn't detected it knows exactly what to do w/o any more checks.
00:25:24  <trevnorris>(or at least w/ few as possible)
00:27:42  <trevnorris>ok. going to post this soon. then going to try the external data array trick real quick to see if it does anything.
00:28:45  <isaacs>awesome
00:28:54  <isaacs>don't get too much stuff in a single pull req.
00:28:59  <isaacs>it's a lot easier to pull if it's smaller :)
00:29:04  <isaacs>and also manage, review, etc.
00:29:30  <isaacs>trevnorris: i know i kinda got you to sneak a few bugfixes and stuff into it, so i'm partly to blame there :)
00:30:07  <isaacs>but the most important thing is just getting it working. especially with performance improvements, you can definitely sit there slicing away at it forever.
00:30:12  * isaacsguilty of doing this many times.
00:30:27  <trevnorris>lol, yeah. really easy to do.
00:30:38  <MI61>joyent/node: isaacs v0.8 * 82ad5fb : blog: Forgot slug on peer-dependencies article - http://git.io/tyc1Cg
00:30:43  * karupaneruraquit (Excess Flood)
00:31:45  <isaacs>trevnorris: i think a good rule of thumb is a net improvemnet on relevant benchmarks of at least 2% for high-level stuff (http, net, tls) and 10% on "targeted" stuff (basically, everything I'm putting in benchmark/misc/)
00:32:04  <trevnorris>cool.
00:32:13  <isaacs>if you can get more, sure, of course that's better, but that's the time to start cleaning it up and shipping it
00:33:10  <trevnorris>guess since i'm not a maintainer feel more freedom to have fun w/ the small stuff. ;-)
00:33:21  <trevnorris>but after this pr i'm going to kick the shiz outta those streams.
00:33:48  * karupanerurajoined
00:37:22  <isaacs>nice :)
00:41:03  <trevnorris>isaacs: you have any idea why the net-raw tests are slower than v0.8? very little lives in js land there.
00:42:18  * indexzeroquit (Quit: indexzero)
00:44:02  <isaacs>probably this makecallback nexttick stuff
00:44:11  <isaacs>src/node.js changed quite a lot
00:44:17  <isaacs>and not all for the better
00:44:21  <isaacs>(as oyu know)
00:44:31  <trevnorris>yeah. so far i'm getting 10% more than w/ just your revert.
00:44:42  <trevnorris>so getting closer, but not quite.
00:44:59  <isaacs>that's fantastic
00:45:04  <isaacs>ship it!
00:45:19  <isaacs>polish up the commits, send a pull req :)
00:45:23  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
00:45:24  * isaacsoff to clean up benchmark2
00:45:29  <isaacs>thanks for the reviews
00:45:39  <trevnorris>heh, now that's just for raw. streams are messing with the other net benchmarks.
00:45:40  <trevnorris>np
00:45:51  * qmx|awaychanged nick to qmx
00:49:15  <isaacs>yeah
00:49:40  <MI61>joyent/node: isaacs master * 2789323 : net: Respect the 'readable' flag on sockets Previously, we were only des - http://git.io/bI2dKA
00:54:29  * jmar777joined
00:54:35  * abraxasjoined
00:58:21  * abraxasquit (Remote host closed the connection)
00:58:58  * abraxasjoined
00:59:33  * abraxasquit (Read error: Connection reset by peer)
01:00:12  * indexzerojoined
01:01:57  * abraxasjoined
01:05:37  * c4milojoined
01:18:12  <MI61>joyent/node: Ben Noordhuis master * 3f7e88a : buffer: accept negative indices in Buffer#slice() A negative start or en - http://git.io/nIqyKg
01:18:27  <trevnorris>ah, come on. just rebased...
01:21:19  * qmxchanged nick to qmx|away
01:22:58  <trevnorris>isaacs: done and up. have fun!
01:23:00  * trevnorrisquit (Quit: Leaving)
01:23:17  <isaacs>nice :)
02:01:48  * AvianFluquit (Remote host closed the connection)
02:06:26  * dapquit (Quit: Leaving.)
02:41:42  * AvianFlujoined
02:49:12  * abraxasquit (Read error: Connection reset by peer)
02:49:45  * abraxasjoined
02:55:09  * abraxasquit (Remote host closed the connection)
02:55:46  * abraxasjoined
03:00:17  * abraxasquit (Ping timeout: 248 seconds)
03:03:22  * abraxasjoined
03:12:57  * TooTallNatequit (Quit: Computer has gone to sleep.)
03:13:59  * jmar777quit (Remote host closed the connection)
03:23:48  * kazuponjoined
03:29:45  * brsonquit (Ping timeout: 276 seconds)
03:45:05  * trevnorrisjoined
03:59:46  * mmaleckichanged nick to mmalecki[zzz]
03:59:58  * mikealjoined
04:02:41  * indexzeroquit (Quit: indexzero)
04:17:43  * abraxasquit (Remote host closed the connection)
04:18:16  * abraxasjoined
04:22:41  * abraxasquit (Ping timeout: 255 seconds)
04:24:07  * mikealquit (Quit: Leaving.)
04:26:26  * mikealjoined
04:34:51  * TooTallNatejoined
04:44:07  * trevnorrisquit (Quit: Leaving)
04:59:35  * c4miloquit (Remote host closed the connection)
05:11:16  * abraxasjoined
05:14:30  * indexzerojoined
05:23:05  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
05:35:48  * mikealquit (Quit: Leaving.)
05:42:34  * loladirojoined
06:06:06  * mikealjoined
06:07:27  * wolfeidauquit (Remote host closed the connection)
06:09:49  * trevnorrisjoined
06:24:56  * AvianFluquit (Remote host closed the connection)
06:50:18  * mikealquit (Quit: Leaving.)
07:06:05  * mikealjoined
07:18:32  * abraxasquit (Remote host closed the connection)
07:31:57  * rendarjoined
07:34:20  * loladiroquit (Quit: loladiro)
07:43:25  <indutny>hoya
07:43:26  <indutny>good morning
07:43:34  * indexzeroquit (Quit: indexzero)
08:12:27  * Raltjoined
08:24:35  * `3rdEdenjoined
09:09:29  * abraxasjoined
09:18:58  * kazuponquit (Remote host closed the connection)
09:57:22  * kazuponjoined
10:09:29  * indutnyquit (Quit: IRCRelay - http://ircrelay.com)
10:11:42  * indutnyjoined
10:30:57  * trevnorrisquit (Ping timeout: 276 seconds)
10:37:17  <indutny>ircretary: tell bnoordhuis to take a look at https://blogs.oracle.com/pgdh/entry/how_not_to_load_balance1
10:37:17  <ircretary>indutny: I'll be sure to tell bnoordhuis
11:01:29  * abraxasquit (Remote host closed the connection)
11:02:02  * abraxasjoined
11:06:15  * abraxasquit (Ping timeout: 252 seconds)
11:19:50  * wolfeidaujoined
11:28:18  <indutny>bnoordhuis: where art thou?
11:55:43  * kazuponquit (Remote host closed the connection)
12:07:37  * c4milojoined
12:16:51  * bnoordhuisjoined
12:18:17  <indutny>bnoordhuis: morning
12:24:28  <bnoordhuis>indutny: sup fedor?
12:24:40  <indutny>wanna discuss load-balancing a little bit?
12:24:41  <indutny>bt
12:24:42  <indutny>btw
12:24:52  <indutny>have you seen the link I've sent you 2 hours ago?
12:24:56  <indutny>https://blogs.oracle.com/pgdh/entry/how_not_to_load_balance1
12:25:08  <bnoordhuis>oh hah
12:25:20  <bnoordhuis>i miss privmsgs all the time because i've no notifications set up here
12:26:31  <bnoordhuis>so what do you want to talk about?
12:27:15  <indutny>about our problem with load balancing
12:27:23  <indutny>I don't think that usleep(1) is really solving it
12:27:34  <indutny>also
12:27:47  <bnoordhuis>i disabled that already
12:27:50  <indutny>yep
12:27:51  <indutny>I know
12:28:02  <indutny>I wanted to ask you if calling accept() in a loop is worth it
12:28:18  <indutny>probably its not that bad to do it just once per epoll_wait()/kevent() return
12:28:32  <indutny>to verify my assumption
12:28:36  <indutny>can I ask you to build https://github.com/indutny/fork-accept
12:28:42  <indutny>and run ./fork-accept 24
12:28:44  <indutny>and then benchmark it
12:29:12  <indutny>and then move initialization code inside the loop: https://github.com/indutny/fork-accept/blob/master/fork-accept.c#L127
12:29:14  <indutny>and benchmark again
12:31:02  <bnoordhuis>i'm on the same os as you currently
12:31:16  <bnoordhuis>so i expect we'll see the same numbers
12:31:36  <bnoordhuis>btw, accept()ing once per loop iteration is something i've tried in the past
12:31:44  <indutny>bnoordhuis: and?
12:31:56  <bnoordhuis>it didn't really help, distribution was still very uneven
12:32:03  <indutny>interesting
12:32:15  <indutny>so the problem is that epoll_wait()/kevent() is returning for all threads at once
12:32:20  <indutny>s/threads/forks/
12:32:30  <indutny>in the most of the cases
12:32:31  <indutny>or
12:32:35  <bnoordhuis>no
12:32:41  <indutny>it returns nearly at the same time
12:32:42  <bnoordhuis>only one thread gets the readiness event
12:32:48  <indutny>that's impossible
12:32:55  <indutny>kqueue/epoll is level-triggered by default
12:33:16  <indutny>so one incoming socket should trigger all forks that were listening
12:33:26  <bnoordhuis>i'm pretty sure they don't
12:33:35  <bnoordhuis>that's the thundering herd problem all over again
12:33:43  <indutny>well
12:33:44  <bnoordhuis>but you can verify that yourself, of course
12:33:48  <indutny>why not?
12:33:49  <indutny>I mean
12:33:51  <indutny>this is logical
12:34:00  <indutny>otherwise it doesn't work as it is documented
12:34:07  <bnoordhuis>i might be wrong. try it and find out :)
12:34:10  <indutny>suppose you've 32 forks that ain't calling accept() at all
12:34:33  <indutny>my guess, is that every fork will observe that server socket has received incoming connection
12:34:51  <indutny>(which is true only for level-triggered systems)
12:35:03  <indutny>otherwise implementation is incorrect
12:35:35  <bnoordhuis>well, maybe
12:35:44  <indutny>so, this is what really causes the problem
12:35:48  <indutny>as far as I understand it
12:35:51  <bnoordhuis>if those 32 threads are calling accept() in blocking mode, only one is woken up though
12:35:55  <indutny>yes
12:35:57  <indutny>exactly
12:36:13  <indutny>and that way load balancing works a little bit better
12:36:15  <indutny>right?
12:36:55  <indutny>well, I'm pretty sure it is
12:37:49  <indutny>what I think we could try to do is randomly (or in a round-robin way) ignoring events for server socket
12:38:01  <bnoordhuis>err
12:38:04  <indutny>yeah
12:38:14  <indutny>I'll experiment with it more
12:38:21  <indutny>but it seems to be the right way to solve it
12:38:23  <indutny>btw
12:38:30  <indutny>do you know how nginx deals with this problem?
12:39:33  <indutny>hint: http://wiki.nginx.org/EventsModule
12:39:34  <indutny>accept_mutex
12:40:05  <bnoordhuis>is that a process-shared mutex?
12:40:10  <indutny>yes
12:40:18  <indutny>we can't really use it
12:40:30  <indutny>but its pretty interesting that this hack is enabled by default
12:41:04  <indutny>ah
12:41:15  <indutny>it seems that its just reducing contention inside kernel
12:42:01  * qmx|awaychanged nick to qmx
12:57:28  <indutny>bnoordhuis: must admit usleep() solution works pretty well on ubuntu for me too
12:57:47  <indutny>not like all processes are getting the same amount of work-load
12:57:50  <indutny>but its pretty close
13:06:09  * kazuponjoined
13:11:10  <indutny>I'm scared
13:11:54  * kazuponquit (Ping timeout: 272 seconds)
13:16:36  <bnoordhuis>hah :)
13:16:51  <bnoordhuis>the only problem is that it kills throughput
13:17:43  <indutny>yes
13:17:52  <indutny>and it does it surprisingly well
13:21:26  * kazuponjoined
13:22:56  * kazuponquit (Remote host closed the connection)
13:28:44  * jmar777joined
13:44:34  * benoitcquit (Excess Flood)
13:44:41  * benoitcjoined
14:23:45  * mmalecki[zzz]changed nick to mmalecki
14:55:32  * bradleymeckjoined
14:55:38  * loladirojoined
15:13:22  <MI61>joyent/node: Ben Noordhuis master * 7bdd05b : stream_wrap, udp_wrap: add read-only fd property Expose the file descrip (+2 more commits) - http://git.io/E5tYqg
15:29:27  <saghul>bnoordhuis is the fd "public" now?
15:30:06  <saghul>at the libuv level, that is
15:35:53  <bnoordhuis>saghul: no. i'm the only one that's allowed to cheat
15:36:18  <bnoordhuis>because the only code i'll be breaking if i change it is my own
15:36:29  <saghul>bnoordhuis haha, I see
15:40:49  <MI61>joyent/node: Dan Kohn v0.8 * 2e1ebbf : doc: add prompt to fix repl_test.js example Running repl.start without t - http://git.io/WCT0kQ
15:53:23  * AvianFlujoined
15:55:05  * loladiroquit (Quit: loladiro)
15:59:25  * hzjoined
16:10:30  * bnoordhuisquit (Ping timeout: 272 seconds)
16:11:42  * qmxchanged nick to qmx|lunch
16:18:18  * `3rdEdenquit (Remote host closed the connection)
16:21:58  * TheJHjoined
16:36:43  * TheJHquit (Read error: Operation timed out)
16:40:22  * dapjoined
16:48:56  <isaacs>man, ab is just the worst
16:49:06  <indutny>hahah
16:49:12  * qmx|lunchchanged nick to qmx
16:59:59  * c4miloquit (Remote host closed the connection)
17:00:23  * jmar777quit (Remote host closed the connection)
17:00:26  * c4milojoined
17:02:22  * qmxchanged nick to qmx|away
17:03:02  <isaacs>it's failing for completely incomprehensible reasons.
17:03:13  <isaacs>and it was working literally just last night
17:03:16  <isaacs>wtf.
17:03:39  <isaacs>is it too cold in here maybe? too much light? this is the most tempermental piece of garbage i've ever seen
17:03:45  <isaacs>we should just bundle seige and use that for our benchmarks.
17:04:03  <isaacs>(to be fair, it's really only terrible on os x, afaict. probably apple is to blame.)
17:05:20  * c4miloquit (Ping timeout: 260 seconds)
17:08:12  <bradleymeck>isaacs: pseudo-bsd emulation of posix is not good?
17:08:17  <bradleymeck>lol
17:10:01  <indutny>isaacs: do not use default ab on osx
17:10:02  <indutny>please
17:10:06  <indutny>isaacs: it does really odd things
17:10:13  <indutny>like sending two requests at once
17:11:07  <isaacs>indutny: it should send -c requests at once
17:11:12  <indutny>nono
17:11:15  <indutny>I mean in one connection
17:11:22  <isaacs>oh, you mean, pipelining?
17:11:28  <indutny>it's not really pipelining
17:11:32  <indutny>just two requests :)
17:11:39  <indutny>and sometimes only parts of it
17:11:42  <isaacs>i see
17:11:45  <indutny>its broken in all possible ways here
17:11:47  <AvianFlu>yeah ab does weird things
17:11:48  <isaacs>well, your server should still not break.
17:11:48  <indutny>build one youself
17:11:50  <AvianFlu>I've seen this repeatedly myself
17:11:56  <isaacs>indutny: also, i don't have the default ab
17:12:00  <indutny>ah
17:12:02  <isaacs>i installed from brew, which has fixes for a lot of things.
17:12:05  <isaacs>basically, it builds from source
17:12:08  <indutny>fuck brew
17:12:11  <indutny>build it yourself
17:12:13  <indutny>you're a man
17:12:15  <isaacs>blah blah, it's the same thing
17:12:25  <isaacs>brew is more up to date than i would keep ab anyway
17:12:41  <isaacs>i don't brew stuff i actually work on or care about
17:12:41  <indutny>ok
17:12:45  <isaacs>but ab should Just Work
17:12:46  <indutny>lets suppose I believe you
17:12:51  <isaacs>instead of Just Fail, in the most inconvenient places.
17:12:57  <isaacs>anyway, i'm investigating siege.
17:13:01  <isaacs>we should just switch to this.
17:13:11  <isaacs>even include it with the source, and `make bench` will build it
17:13:13  <indutny>sometimes its better
17:13:15  <isaacs>so it's a known quantity
17:13:15  <indutny>sometimes its not
17:13:50  <indutny>benchmarking http servers is really complicated
17:13:56  <indutny>but what's more complicated is benchmarking https server
17:13:56  <isaacs>because right now, i really want to evaluate trevnorris's tickCallback changes, but i can't, because my benchmark script blows up
17:14:01  <isaacs>yeah
17:15:09  <isaacs>indutny: what do you think about bundling siege?
17:15:17  <indutny>bundling?
17:15:19  <indutny>what about license?
17:15:19  <isaacs>yeah
17:15:22  <isaacs>it's liberal
17:15:24  <indutny>is it BSD-compatible
17:15:27  <isaacs>and we're not distributing it anyway
17:15:29  <isaacs>jsut the source
17:15:43  * indexzerojoined
17:15:56  * bnoordhuisjoined
17:16:03  <indutny>how about that
17:16:04  <indutny>You must obey the GNU General Public License in all respects
17:16:04  <indutny>for all of the code used other than OpenSSL. If you modify
17:16:04  <indutny>file(s) with this exception, you may extend this exception to
17:16:05  <indutny>your version of the file(s), but you are not obligated to do so.
17:16:05  <indutny>If you do not wish to do so, delete this exception statement
17:16:10  <isaacs>oh, weird..
17:16:13  <indutny>from your version. If you delete this exception statement from
17:16:14  <indutny>all source files in the program, then also delete it here.
17:16:16  <indutny>yes
17:16:16  <indutny>that's what I see in README
17:16:23  <isaacs>the license on the website is completely different than the COPYING file in the src
17:16:47  <indutny>exactly
17:17:09  <isaacs>well, whatever. we'd be distributing the source, but not the binary.
17:17:20  <indutny>yeah
17:17:24  <indutny>it should work
17:17:31  <indutny>our software is not derived from siege
17:17:42  <indutny>therefore we shall not obey to GPL
17:17:51  <indutny>anyway
17:17:56  <indutny>better ask bnoordhuis about it
17:18:00  <indutny>he's the best no-man
17:18:16  <indutny>here
17:19:22  * CoverSlidejoined
17:19:46  <isaacs>yeah
17:19:47  <isaacs>i will
17:19:50  <isaacs>i think he might be on a plane.
17:19:55  <isaacs>i'll just do this in my branch for now.
17:20:09  <isaacs>the alternative is that we bundle ab and build it in such a way that it works on os x
17:20:13  <isaacs>but that might not be possible.
17:20:25  <isaacs>i'm kind of fed up with these random black swan failures deep in the bowels of ab/osx
17:20:39  * bnoordhuisquit (Ping timeout: 244 seconds)
17:20:41  <indutny>isaacs: that's much more troublesome
17:20:47  <indutny>apache is using their own build utils
17:20:52  <isaacs>we can also always email Joe Dogg and see if he'll have a problem with it.
17:21:10  <isaacs>i doubt it, since it's not like we're violating the spirit of GPL with our usage.
17:21:19  <indutny>yep
17:21:31  <indutny>we're not really using it
17:21:36  <indutny>we're just distributing it's source
17:21:47  <indutny>with some scripts to build it
17:22:24  <isaacs>yep
17:26:48  <isaacs>yeah, i'll just email jeffrey and ask.
17:26:56  <isaacs>if he's got a problem with it, then that's that.
17:27:06  <isaacs>we can always shell out to the system siege and tell you to go get it if it's missing.
17:27:12  * hzquit (Ping timeout: 264 seconds)
17:29:33  * TheJHjoined
17:33:00  <indutny>brb
17:37:25  * CoverSlidequit (Ping timeout: 260 seconds)
17:47:21  <isaacs>hmmm... actually, it seems like this can't do the -k style of attack
17:52:05  <isaacs>aha! nice, just got this to happen!
17:52:06  <isaacs>TypeError: Property 'onIncoming' of object #<HTTPParser> is not a function at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:119:23) at Socket.socket.ondata (http.js:1824:22) at TCP.onread (net.js:479:27)
17:58:33  * mikealquit (Quit: Leaving.)
17:59:18  * mikealjoined
18:11:39  * loladirojoined
18:18:05  * c4milojoined
18:23:58  <isaacs>hmmm... can't seem to get it to happen again
18:26:50  * CoverSlidejoined
18:28:42  * hzjoined
18:30:51  * indexzeroquit (Quit: indexzero)
18:36:20  * `3rdEdenjoined
18:36:38  <isaacs>hm. yeah, siege is weird..
18:38:14  <isaacs>it seems like it's maxing out at some random spot, rather than pushing the server as fast as it can go.
18:38:29  <isaacs>cluster and http_simple are getting the same exact q/s, which is definitely wrong
18:39:09  * `3rdEdenquit (Client Quit)
18:40:55  <isaacs>oh, not exactly the same, ig ues.
18:41:03  <isaacs>but nowhere near what they should be.
18:41:20  * TooTallNatejoined
18:41:53  * bradleymeckquit (Quit: bradleymeck)
18:41:55  * `3rdEdenjoined
18:46:06  <TooTallNate>isaacs: the npm publish hang happened to me again https://gist.github.com/TooTallNate/60f1f7851bc48af7642c
18:47:56  <isaacs>hm.
18:48:00  <isaacs>looks like it hung up on you 3 times
18:48:07  <isaacs>how big is that file?
18:48:11  <isaacs>and how's your network connection?
18:49:54  * AvianFluquit (Remote host closed the connection)
18:51:05  * AvianFlujoined
18:53:10  <TooTallNate>isaacs: well there's a few uncompressed wav files in the dir, but they're in the .gitignore so they should be ignored
18:57:05  * hzquit
18:58:09  <isaacs>righ
18:58:28  <isaacs>TooTallNate: you can check the size of the tgz explicitly in ~/.npm/blah/blah/package.tgz
18:59:24  <TooTallNate>isaacs: whoops too late I think, i did unpublish + move those files to ~ + npm publish and it worked
18:59:37  <TooTallNate>but i don't know if that's just because I'm at the office now or what...
18:59:43  <TooTallNate>too many variables :\
19:02:11  * trevnorrisjoined
19:03:10  <isaacs>TooTallNate: yes, too many variables, indeed
19:04:14  * TooTallNatequit (Ping timeout: 255 seconds)
19:05:20  <trevnorris>isaacs: so that crazy ass idea worked. just going to cleanup what bnoordhuis reviewed then start working on streams.
19:09:20  <isaacs>nice
19:09:46  * TooTallNatejoined
19:13:35  * jmar777joined
19:17:44  * TooTallNatequit (Quit: Computer has gone to sleep.)
19:18:11  * indexzerojoined
19:18:44  * TooTallNatejoined
19:18:50  <isaacs>trevnorris: so, i'm completely fed up with ab at this point.
19:19:04  <isaacs>trevnorris: i can't even compare your nextTick stuff, because ab keeps falling over.
19:19:21  <trevnorris>isaacs: seriously? that sucks.
19:20:11  <trevnorris>isaacs: so, how is it crapping out?
19:20:22  <isaacs>trevnorris: failing with exit code 37 or 24
19:20:35  <isaacs>trevnorris: googles say rebuild it, or use the -r command. i have, and i have been, and no effect.
19:20:42  <isaacs>trevnorris: worked *yesterday*
19:20:45  <isaacs>same machine.
19:20:55  <trevnorris>wtf?
19:20:59  <isaacs>ohhh... wait a second, i installed a OS X software update.
19:21:03  <isaacs>that probably destroyed something.
19:21:17  <tjfontaine>this is why I vote against brew/macports :P
19:21:31  * hzjoined
19:21:33  <isaacs>tjfontaine: i've built ab manually as well. same effect
19:21:45  <tjfontaine>interesting
19:22:03  <trevnorris>isaacs: have you seen this: https://github.com/wg/wrk
19:22:32  <trevnorris>it's so small it could easily be included in node, though haven't looked at the license.
19:22:52  <isaacs>trevnorris: apache license. fuck yah
19:23:09  <trevnorris>and for raw testing, kicks the crap out of ab.
19:23:10  <isaacs>trevnorris: i've considered bundling siege, which sorta works, but siege is GPL, so...
19:23:21  <isaacs>i mean, we wouldn't be binding to it, at all.
19:23:24  <isaacs>just distributing source code.
19:23:26  <isaacs>but still
19:23:30  <trevnorris>heh, yeah.
19:23:43  <isaacs>people are suspicious and superstitious about GPL
19:23:47  * isaacsis suspicious and superstitious about GPL
19:23:48  <trevnorris>lol
19:24:02  <isaacs>OSS for lyfe
19:24:03  <trevnorris>well, you like simplicity and few options. wrk is just that.
19:24:15  <isaacs>yes, i do like those things.
19:24:16  <trevnorris>just 3, threads, connections and requests.
19:24:22  <isaacs>nice
19:24:27  <isaacs>trevnorris: does keepalive?
19:24:32  * brsonjoined
19:25:02  <trevnorris>no idea. i'll take a look.
19:26:33  * bradleymeckjoined
19:27:11  <isaacs>trevnorris: it sorta seems like -c will use that many connections.
19:27:18  <isaacs>but i'm not sure if it'll re-use them for multiple requests.
19:27:26  <trevnorris>isaacs: has this in source "http_should_keep_alive(parser)"
19:27:37  <isaacs>yeah
19:27:38  <trevnorris>so i assume it can. just need to figure out how.
19:28:13  <isaacs>omg
19:28:18  <isaacs>`make` just creates a single binary
19:28:22  * isaacs<3 <3 <3 <3
19:30:06  <isaacs>trevnorris: i think this is it.
19:30:08  <isaacs>this is the one :)
19:30:10  <isaacs>we found it :)
19:30:34  <trevnorris>coolio.
19:31:30  <trevnorris>isaacs: ah... duh. it just checks for "connection: keep-alive". sure you already realized that, but thought it would be a flag or something.
19:31:46  <isaacs>with ab you have to set -k
19:31:59  <trevnorris>ah, that's why I thought it needed one. damn you ab!
19:31:59  <isaacs>and apparently siege just doesn't use it? or it does, but it's... weird?
19:32:01  <isaacs>i dont' know
19:32:02  <isaacs>i can't figure it out
19:32:18  <isaacs>the siege numbers don't seem high enough. they look like ab without -k
19:32:59  <trevnorris>i'll be surprised if wrk doesn't add ~30% more hits than ab. it's freakin crazy.
19:35:12  <isaacs>well, that's always nice :)
19:35:18  <isaacs>looks about the same to me, though
19:37:00  <trevnorris>well, at least it runs. ;-)
19:42:26  <isaacs>yeah, runing at all is a huge must-have
19:44:46  <isaacs>trevnorris: so, now that i can actually test it...
19:45:04  <isaacs>trevnorris: oh, wait, nvm, i was testing MakeCallback in c++, but not your nextTick stuff
19:45:36  <isaacs>but it doesn't look like this is unequivocally faster.
19:45:47  <isaacs>trevnorris: it seems like it's faster for some cases, but actually a bit slower in others.
19:45:51  <isaacs>so that's kinda odd.
19:45:58  <isaacs>(just speaking about http benchmarks here)
19:46:04  <trevnorris>isaacs: does that include the third commit?
19:46:13  <isaacs>ummm... i don't think so
19:46:18  <isaacs>you landed that today?
19:46:40  <trevnorris>yeah... sort of. was up w/ sick kid until 6:30 this morning, so pushed it sometime last night.
19:47:02  <isaacs>indutny: you around? can you weigh in on benchmark-refactor-2 and/or shipping wrk with node to avoid 'ab' troubles?
19:47:26  <isaacs>indutny: i'd like someone to take a look at the bench stuff who hasnt' been stewing in it for weeks (thus me and trevnorris are not qualified)
19:48:38  <trevnorris>isaacs: fyi test-tls-sni-server-client.js is currently failing. no idea why, but i'm getting that fixed now.
19:48:46  <trevnorris>(on my branch, not on master)
19:59:46  * `3rdEdenquit (Remote host closed the connection)
20:00:37  * avalanche123joined
20:00:48  * avalanche123quit (Client Quit)
20:02:28  * stagasjoined
20:04:53  * sblomjoined
20:05:52  <isaacs>ah
20:08:50  <trevnorris>isaacs: sup?
20:17:00  <isaacs>trevnorris: Check this out: https://gist.github.com/isaacs/4947836/raw/5255cfcd7c0e8718033c31ae6ed0769a7695c73c/gistfile1.txt
20:17:05  <isaacs>trevnorris: those numbers are using wrk
20:17:17  <isaacs>node-mc-in-js is basically master from last night
20:17:27  <isaacs>node-trevor-nexttick is your thing from last night
20:17:38  <isaacs>now i'm going to update both, and get completely different results :)
20:19:10  <trevnorris>have you updated benchmark-2 to use wrk? that'll be a sick addition.
20:19:17  <isaacs>not yet
20:19:23  <isaacs>but i've got the code working
20:19:32  <trevnorris>awesomeness
20:22:07  <isaacs>trevnorris: there's a bug in the compare.js script, though
20:22:11  <isaacs>this thing is already to complicated.
20:22:20  <isaacs>i think i'm gonna just remove some of these fancier features.
20:22:25  <isaacs>any of this crap can be done by something wrapping it.
20:22:38  <isaacs>red and green is enough
20:22:39  <trevnorris>heh, yeah. that can happen. :)
20:22:48  <isaacs>i got a bit too creative with it last night :)
20:23:03  <trevnorris>lol, funny how late night programming can bring out a different side.
20:23:13  <isaacs>i think it should do the red and green, and then just have a --raw option that dumps json
20:23:25  <isaacs>so that i can whip up a website to show more interesting graphs and breakdowns.
20:23:29  <isaacs>or people can write other programs for it
20:23:44  <isaacs>ok, wrk is on benchmark-2
20:23:49  <trevnorris>sweet!
20:24:59  <indutny>isaacs: oh
20:25:04  <indutny>does wrk work on smartos?
20:25:12  <isaacs>indutny: i'm gonna check it out now
20:25:16  <isaacs>good question :)
20:25:20  <indutny>hehe
20:25:22  <indutny>I bet it doesn't
20:25:33  <indutny>since it's readme tells that it supports only epoll and kqueue
20:25:43  <indutny>but probably it falls back to select/poll
20:25:48  <isaacs>hmmm... nope :)
20:25:58  <isaacs><sigh>
20:26:00  <isaacs>oh well :)
20:26:38  <trevnorris>well, does ab work in windows?
20:26:40  <indutny>doesn't work, right?
20:26:43  <indutny>trevnorris: nope
20:26:44  <indutny>but
20:26:47  <isaacs>doens't work
20:26:47  <indutny>we're not benchmarking windows
20:27:08  <isaacs>hm. but, unlike on OS X, ab DOES work on smartos
20:27:13  <indutny>haha
20:27:14  <trevnorris>but ab makes me hate my life. =(
20:28:34  <trevnorris>well, let's fork it and ask the community to make it work!
20:29:17  * AvianFluquit (Remote host closed the connection)
20:30:07  <isaacs>we should fork wrk and maek it work on smartos
20:30:16  * `3rdEdenjoined
20:30:19  <trevnorris>sounds good to me
20:30:29  <isaacs>it supports kqueue and epoll. how hard is it to add event ports? i mean, we did it for libuv.
20:30:47  <isaacs>or just write a http bench program on top of libug
20:30:48  <isaacs>*libuv
20:30:49  <indutny>haha
20:31:04  <isaacs>(of course, then that's self-testing, which is never good)
20:32:11  * stagasquit (Ping timeout: 256 seconds)
20:32:47  * jmar777quit (Read error: Connection reset by peer)
20:33:18  * jmar777joined
20:35:14  <isaacs>ok. so, wrk is not going to work, I guess.
20:35:25  <isaacs>at least, not for smartos.
20:35:27  <isaacs>siege DOES work on smartos
20:35:38  <isaacs>but siege is kinda odd. maybe i'm just not understanding it enough or something
20:36:32  <trevnorris>isaacs: it's not just you. always have problems with it as well.
20:36:57  <isaacs>from the docs, it looks like siege tries to replicate internet users.
20:37:05  <isaacs>so ti's really more for testing web sites than web servers.
20:37:22  <isaacs>like, it hits multiple urls, randomly, with time between, etc.
20:37:27  <trevnorris>isaacs: so there's no chance that wrk would work on smartos?
20:37:35  <isaacs>the -c is the number of "internet users", not really the number of connections, necessarily
20:37:46  <isaacs>trevnorris: not without a lot of work.
20:37:51  <trevnorris>hm....
20:38:12  <trevnorris>well. i know. use wrk on linux, siege on mac and ab on smartos.
20:38:20  <trevnorris>that's not complicated at all!
20:38:36  * V1joined
20:38:38  * `3rdEdenquit (Ping timeout: 252 seconds)
20:39:08  <isaacs>haha
20:39:21  <isaacs>i guess we cna use wrk on linux and os x, and ab on smartos
20:39:58  * bnoordhuisjoined
20:42:36  * V1changed nick to `3rdEden
20:43:18  * stagasjoined
20:43:48  <CoverSlide>what about windows?
20:48:58  * stagasquit (Ping timeout: 256 seconds)
20:49:05  * indexzeroquit (Quit: indexzero)
20:52:38  * stagasjoined
20:52:41  <trevnorris>you could always setup a windows server then hit it from a linux box. ;-)
20:55:17  <bnoordhuis>evening guys
20:55:32  <trevnorris>bnoordhuis: hey, thanks a bunch for the quick review.
20:55:57  <bnoordhuis>np :)
20:56:21  <trevnorris>that little hack has tcp-raw tests withing 1-2% of v0.8 performance.
20:58:41  <isaacs>bnoordhuis: thanks for jumping on that fd thing. that was fast.
20:59:12  <isaacs>bnoordhuis: it's like a bunch of people all at once realized that this would be a new feature, and that v0.10 was about to happen, and that this wasn't in it yet.
20:59:14  * qmx|awaychanged nick to qmx
20:59:20  <isaacs>had a minor revolt on my hands.
20:59:36  <bnoordhuis>happy to help
20:59:47  <bnoordhuis>the ocd thing was <,>sort btw :)
20:59:55  <bnoordhuis>so i don't have to think about where to put new entries
21:03:55  <isaacs>yeah, i'm fine with it :)
21:04:25  <isaacs>bnoordhuis: how do you feel about shipping tools/wrk/ and using that for http benchmarking
21:04:37  <isaacs>bnoordhuis: on !(sunos|win32), of course.
21:08:48  <bradleymeck>curl -X POST -F '[email protected]'`npm pack` http://ubuntu.x64.build-node.bradleymeck.com:3000/build | tar -tz
21:09:10  <bradleymeck>if anyone has potential wants from a build server / wants to break that npm bundler for me, feel free
21:11:19  <isaacs>bradleymeck: what's that build server do?
21:11:26  <isaacs>bradleymeck: bundles all the deps in there?
21:11:41  <isaacs>bradleymeck: or builds .node files?
21:11:47  <bradleymeck>both
21:11:52  <isaacs>k. neat.
21:12:02  <bradleymeck>testing it out vs the one i built for NJ
21:12:49  <bnoordhuis>isaacs: wrk looks nice. tried and trusted technology too (http_parser)
21:13:06  <isaacs>yep :)
21:13:12  <isaacs>bnoordhuis: doesn't run on smartos.
21:13:15  <isaacs>bnoordhuis: sadly
21:13:23  <bnoordhuis>why's that?
21:13:25  <bradleymeck>cause?
21:13:33  <isaacs>bnoordhuis: only does epoll/kqueue, i gues
21:13:47  <isaacs>bnoordhuis: you know a thing or two about such things. maybe you could make it work :)
21:14:06  <bnoordhuis>hah, well maybe. i'll look at it
21:14:29  <isaacs>wait a second...
21:14:50  <bnoordhuis>looks like redis code in there
21:14:57  <isaacs>oh, lolz, accidentally checked the binary into git
21:15:29  <trevnorris>heh, looks like another addition to .gitignore.
21:16:42  <bnoordhuis>isaacs: looks like it should use select() on sunos
21:16:48  <bnoordhuis>that won't be ultra fast, of course
21:18:09  <bnoordhuis>and presumably we can back-port ae_evport.c from redis
21:18:41  * wolfeidauquit (Remote host closed the connection)
21:18:57  <isaacs>bnoordhuis: if we bundle it we can float whatever patches we want.
21:19:03  <isaacs>it looks like it's not actively developed any more.
21:19:22  <trevnorris>isaacs: ugh, those fs benchmarks are a bitch. read-stream-throughput is varying between 260 and 165.
21:19:44  <isaacs>trevnorris: yeah.
21:19:51  <isaacs>s/benchmarks /
21:19:59  <isaacs>trevnorris: fs's are just bitchy
21:20:34  <isaacs>bnoordhuis: it's not such a huge deal, since ab is pretty stable on smartos anyway
21:24:05  * stagasquit (Ping timeout: 255 seconds)
21:27:10  * bradleymeck_joined
21:29:34  <isaacs>trevnorris: ok, comparing current master and ticker-rething (rebased onto current master)
21:29:37  <bnoordhuis>isaacs: https://github.com/bnoordhuis/wrk <- can you try the sunos-support branch?
21:29:39  <isaacs>trevnorris: on os x and smartos
21:29:49  <isaacs>trevnorris: shoudl be a few hours and i'll have some results :)
21:29:54  <isaacs>bnoordhuis: not at the moment.
21:30:01  <isaacs>bnoordhuis: using all those cpu's right now :)
21:30:56  * bradleymeckquit (Ping timeout: 255 seconds)
21:30:56  * bradleymeck_changed nick to bradleymeck
21:32:13  <isaacs>it's really interesting watching the CPU level during fs benchmarks
21:32:23  <isaacs>kinda rises up, then falls back down as the IO becomes the bottleneck
21:32:24  <trevnorris>heh, sounds good.
21:34:13  * stagasjoined
21:34:49  <isaacs>the benchmark compare script should dump the data and then have a command to pipe the data in to format it pretty
21:46:49  * hzquit (Disconnected by services)
21:46:53  * hzjoined
21:50:41  <trevnorris>ugh. ok, breath deep and let go of the last 2%.
21:52:38  * TheJHquit (Ping timeout: 252 seconds)
21:55:23  * jmar777quit (Remote host closed the connection)
21:58:12  <isaacs>trevnorris: https://gist.github.com/4948739
21:58:18  <isaacs>trevnorris: that's os x
21:58:56  <isaacs>trevnorris: so, it's a bit weird.
21:59:02  <isaacs>write-stream-throughput is mostly up
21:59:03  * bradleymeckquit (Quit: bradleymeck)
21:59:33  <isaacs>trevnorris: but the overall result on net and http benchmarks seems to be negative, vs current master
21:59:43  <trevnorris>wtf. give me a minute.
22:00:37  <isaacs>trevnorris: still waiting on smartos
22:00:57  <isaacs>trevnorris: and also, this isn't isolating your nextTick changes -- it's also the "make-callback-in-js-revert" stuff
22:01:01  <trevnorris>isaacs: what is going on? on my machine net/net-s2c.js len=16777216 type=asc dur=1 : master - 5; rethink - 5.2
22:01:22  <isaacs>maybe it's a linux/osx diff?
22:01:23  <isaacs>i dno't know
22:01:27  <trevnorris>isaacs: can you run that one by hand for me?
22:02:22  <isaacs>hrm...
22:02:46  <isaacs>$ ./node-master benchmark/net/net-s2c.js len=16777216 type=asc dur=1
22:02:46  <isaacs>net/net-s2c.js len=16777216 type=asc dur=1: 3.1767
22:02:46  <isaacs>$ ./node-ticker-rethink benchmark/net/net-s2c.js len=16777216 type=asc dur=1
22:02:46  <isaacs>net/net-s2c.js len=16777216 type=asc dur=1: 3.1851
22:02:48  <isaacs>about the same
22:02:55  <isaacs>same as one another, i mean
22:03:00  <trevnorris>yeah. and on net/net-pipe.js len=102400 type=asc dur=1 : master - 6.4 ; rethink - 6.7
22:03:26  * hzquit (Read error: Connection reset by peer)
22:03:37  <trevnorris>isaacs: yeah. and the benchmark shows a -11%
22:03:44  <isaacs>$ ./node-master benchmark/net/net-pipe.js len=102400 type=asc dur=1
22:03:44  <isaacs>net/net-pipe.js len=102400 type=asc dur=1: 4.3602
22:03:44  <isaacs>$ ./node-ticker-rethink benchmark/net/net-pipe.js len=102400 type=asc dur=1
22:03:44  <isaacs>net/net-pipe.js len=102400 type=asc dur=1: 4.3825
22:03:46  <isaacs>hm.
22:03:49  <isaacs>something's fishy.
22:03:51  <isaacs>yeah
22:03:59  <isaacs>maybe my computer was busy while they were running or something
22:05:31  <trevnorris>isaacs: and the biggest one http/cluster.js type=bytes length=102400 c=50 (-36%) : master - 2339.4 ; ticker - 2346.7
22:05:50  <trevnorris>those are medians after running a dozen times.
22:07:01  <isaacs>ugh.
22:07:08  <isaacs>it would suck to have to run the compare script multiple times.
22:07:10  <isaacs>it's so slow as it is.
22:07:20  <isaacs>maybe it should just skip buffer/array/misc by default.
22:07:30  <isaacs>you can always run those explicitly
22:07:36  <trevnorris>yeah. those are in the ns
22:07:46  <isaacs>and mostly they just depend on V8 changing.
22:07:47  <trevnorris>(for execution time per call that is)
22:07:55  <isaacs>though, your nextTick changes seem to make those things all slightly faster :)
22:07:56  <isaacs>so tha'ts nice :)
22:08:02  <isaacs>even on the fishy benchmark
22:08:56  <isaacs>trevnorris: here's smartos: https://gist.github.com/4948817
22:09:03  * rendarquit
22:09:10  <trevnorris>isaacs: would you mind running net/tcp-raw-c2s.js len=102400 type=buf dur=3 ?
22:09:18  <trevnorris>i'm kicking the living piss out of that on on my box.
22:09:37  <isaacs>this is really interesting:
22:09:38  <isaacs>net/net-c2s.js len=102400 type=utf dur=1: ./node-ticker-rethink: 0.7441 ./node-master: 0.99316 ................................... -25.08%
22:09:41  <isaacs>net/net-c2s.js len=102400 type=utf dur=3: ./node-ticker-rethink: 1.3308 ./node-master: 1.0394 ..................................... 28.04%
22:09:53  <isaacs>so, same test, run for 1s, ticker-rethink was slower, run for 3s, and it's faster
22:09:58  <isaacs>by roughly the same margin
22:10:40  <trevnorris>yeah. it would help statistically if each test ran enough times so the std error is < 5-10% of the mean.
22:11:11  <trevnorris>now. that's for single shot tests because each one will be running a dozen or more times.
22:11:13  <isaacs>yeah
22:11:51  <isaacs>i'm gonna eat some hamburgers and then go to san francisco.
22:12:07  <trevnorris>cool
22:13:38  <isaacs>clearly, we have too many array and buffer benchmarks :)
22:14:18  <isaacs>trevnorris: maybe we need like a `make bench` and `make bench-all`
22:14:28  <isaacs>where make bench just does net, fs, and http
22:14:38  <isaacs>since those are the things where we really feel it anyway
22:14:45  <trevnorris>isaacs: heh, yeah. all those came from my benchmark changes.
22:14:47  <isaacs>and bench-all runs misc, buffer, array, dataview, etc.
22:14:49  <trevnorris>true, sounds good to me.
22:15:08  <trevnorris>isaacs: oh, and don't forget to git rm benchmark/_bench_timer.js
22:15:20  <isaacs>because, honestly, if you make Buffer.writeInt16LE 1000% slower, and in the process, make http_simple 10% faster? you're my hero.
22:15:38  <isaacs>yeah, i saw that
22:15:50  <trevnorris>sounds good. just need to get a test working then i'm on it.
22:17:05  * indexzerojoined
22:18:55  <isaacs>trevnorris: hahah, totally rocked this one:
22:18:59  <isaacs>tls/throughput.js dur=1 type=asc size=2: ./node-ticker-rethink: 0.46956 ./node-master: 0 ....................................... Infinity%
22:19:09  <isaacs>INFINITY PERCENT!
22:19:19  <trevnorris>freak yeah!
22:19:19  <isaacs>wonder what broke there.
22:19:53  <trevnorris>bnoordhuis: you wouldn't happen to have any magical unicorn dust to let me know how those changes you reviewed would cause test-tls-sni-server-client.js to always return DEPTH_ZERO_SELF_SIGNED_CERT?
22:20:01  <isaacs>holy moly it is so nice to run a command and get a list of green and red percentages.
22:20:06  <isaacs>i <3 this
22:20:12  <isaacs>even if it does take 3 hours to actually finish
22:20:29  * wolfeidaujoined
22:21:14  * bnoordhuisquit (Ping timeout: 255 seconds)
22:23:46  <trevnorris>indutny: are you the one that knows stuff about tls?
22:26:33  <trevnorris>nm! totally got it. an realized i'm a moron in the process.
22:33:04  * `3rdEdenquit (Remote host closed the connection)
22:33:27  * qmxchanged nick to qmx|away
22:36:11  * indexzeroquit (Quit: indexzero)
22:40:44  <indutny>trevnorris: sort of
22:40:49  <indutny>np
22:41:28  <trevnorris>indutny: oh, i just made the stupid mistake of returning undefined in the case no more callbacks were going to run, and that one test happen to catch it.
22:52:05  <trevnorris>indutny: how about uv_listen?
22:59:44  * c4miloquit (Remote host closed the connection)
23:15:26  <trevnorris>isaacs: bnoordhuis would flog me for this, but since none of the process.binding wraps are public, couldn't we just assume that the the argument is always set.
23:15:36  <trevnorris>i mean, v8 will error out anyways if we try to run a non function as a function.
23:15:44  * AvianFlujoined
23:27:29  * bnoordhuisjoined
23:31:36  * stagasquit (Ping timeout: 276 seconds)
23:32:11  * bnoordhuisquit (Ping timeout: 252 seconds)
23:32:20  * stagasjoined
23:34:37  * piscisaureus_joined
23:49:38  * jmar777joined
23:50:57  <trevnorris>anyone know if it's possible in cc or v8 to make two allocated memory appear as one?
23:51:40  <tjfontaine>hm?
23:51:54  <indutny>tjfontaine: wut?
23:52:07  <tjfontaine>you mean trevnorris but I agree
23:52:38  <trevnorris>tjfontaine: say I char* data0 = new char[10]; char* data1 = new char[10]; (think that's correct syntax)
23:53:36  <trevnorris>and I want to make them appear as one piece of memory that if written to would automatically handle writing to the correct position.
23:54:05  <tjfontaine>so you want them to be the same 10 bytes?
23:54:28  <trevnorris>no, it'd be 20 bytes.
23:55:05  <tjfontaine>but you want to make sure they're contiguous?
23:55:47  <trevnorris>no... (man this is sounding stranger as i'm explaining it)
23:56:05  <tjfontaine>yes it really is :)
23:56:19  <tjfontaine>I'm just not on the same page as you, what do you *really* want to do
23:57:54  <trevnorris>ok, so. say i've allocated 2 bytes at A, and 2 bytes at B. but i want to combine them so if I write 1212; A == [1,2] and B == [1,2]
23:58:02  <trevnorris>does that make sense?
23:59:01  <tjfontaine>you want them to be separate chunks of memory, but always contain the same data?
23:59:54  <trevnorris>so say I write 0x1232 to A,B, then they would look like [1,2] [3,2].