00:02:31  <isaacs>oh, shit, res.emit('end') is happening more than once.
00:02:42  <isaacs>very reliably, too
00:03:17  * mmaleckiquit (Ping timeout: 240 seconds)
00:05:25  * mmaleckijoined
00:05:59  <AvianFlu>'I AM THE WALRUS' !? you're right, that is a weird test
00:07:25  * ericktquit (Quit: erickt)
00:07:51  * ericktjoined
00:07:53  * ericktquit (Client Quit)
00:11:42  * ericktjoined
00:17:31  <piscisaureus_>refcount refactor status: timer, p/c/i, process still left
00:19:01  <isaacs>piscisaureus_: what's p/c/i?
00:19:09  <piscisaureus_>prepare/check/idle
00:19:16  <piscisaureus_>but those are moreorless the same
00:19:20  <piscisaureus_>generated by macros
00:19:36  <isaacs>k
00:20:46  <isaacs>AvianFlu: i think i figured it out. apparently the socket close event and parser message complete event happen in different orders on linux and mac
00:20:51  <piscisaureus_>In the meantime I refactor out a lot of cruft btw
00:21:24  <isaacs>AvianFlu: if the socket event happens first, we end up emitting 'end' twice.
00:22:37  <CIA-155>node: isaacs reviewme * r2128ad4 / lib/http.js : Guard against emitting 'end' twice on http responses - http://git.io/80f3ww
00:22:43  <isaacs>piscisaureus_: review?^
00:22:56  <isaacs>ohnoes! console!
00:22:57  <isaacs>one sec
00:23:26  <piscisaureus_>isaacs: what does it have to do with console/
00:23:31  <CIA-155>node: isaacs reviewme * r14a5b45 / lib/http.js : Guard against emitting 'end' twice on http responses - http://git.io/5pJZ0A
00:23:34  <isaacs>ok, this one
00:23:41  <isaacs>piscisaureus_: i left a console.error in there.
00:23:54  <piscisaureus_>ah:_)
00:24:04  <piscisaureus_>stupid mac keyboard
00:24:04  <isaacs>er, even worse, console.trace
00:24:24  <piscisaureus_>isaacs: I cannot possibly disagree
00:24:32  <piscisaureus_>isaacs: but is that like really needed?
00:24:47  <isaacs>piscisaureus_: it is, on linux, in the test-http-response-no-headers
00:24:48  <piscisaureus_>isaacs: or is that just to hide some other error in there?
00:25:02  <isaacs>piscisaureus_: dude, 90% of that file is just hiding errors in the other 10%
00:25:13  <isaacs>piscisaureus_: why do you think i'm so hot to rewrite it?
00:25:20  <piscisaureus_>ok
00:25:21  <piscisaureus_>lgtm
00:25:24  <isaacs>thanks :)
00:25:37  <isaacs>srsly, though, yes, this is clearly a case where we're doing something sloppily.
00:25:53  <isaacs>but the "correct" fix is too costly at the moment.
00:26:03  <piscisaureus_>so you know what the correct fix would be
00:26:09  * mjr_quit (Quit: mjr_)
00:26:16  <piscisaureus_>or did you mean "thrash the whole thing and start over" ?
00:26:24  <isaacs>piscisaureus_: i mean thrash.
00:26:41  <isaacs>piscisaureus_: but specifically, the parser/socket/request/response connections need to be all cleaned up at once.
00:26:46  <piscisaureus_>do you have a sort of high level design in mind that will make it much cleaner btw?
00:26:54  <isaacs>piscisaureus_: i do.
00:27:01  <piscisaureus_>that helps :-)
00:27:05  <isaacs>piscisaureus_: it's not going to happen in time for v0.8, of course.
00:27:11  <piscisaureus_>sure, I know
00:27:33  <isaacs>piscisaureus_: but we need to design it with keepalives, socket pooling, and proxying in mind.
00:27:38  <piscisaureus_>but I am sort of confident that once you know how it should be done and your fingers are itching
00:27:59  <piscisaureus_>... you generally understand the problem space and it is actually possible to create something nice
00:28:02  <isaacs>i have a drawing of it on my whiteboard at home.
00:28:35  <piscisaureus_>nice
00:28:53  <isaacs>it's probably mostly fictional, but that's how whiteboard drawings are. they're just a place to start.
00:29:20  <CIA-155>node: isaacs v0.6 * r14a5b45 / lib/http.js : Guard against emitting 'end' twice on http responses - http://git.io/5pJZ0A
00:30:34  <CIA-155>node: isaacs v0.6 * r8068f9b / Makefile : Escape leading # signs in 'make email.md' - http://git.io/jMRLpw
00:30:51  <CIA-155>node: isaacs v0.6.18-release * r4bc1d39 / (ChangeLog src/node_version.h): 2012.05.15 Version 0.6.18 (stable) - http://git.io/iX_qCA
00:34:18  <isaacs>piscisaureus_: first i wanna see just how bad it'd actually be to have the http parser in js. we could throw away the FreeList stuff and benefit from V8's magic more.
00:34:22  * orlandovftwquit (Ping timeout: 272 seconds)
00:36:21  <piscisaureus_>isaacs: sure, go ahead
00:36:32  <piscisaureus_>isaacs: we can also refactor the c parser to have a nicer interface
00:36:42  <piscisaureus_>e.g. one that doesn't use callbacks :-)
00:39:58  <isaacs>sure
00:40:23  <isaacs>though... i do kinda like that interface.
00:40:28  <isaacs>it's sort of like sax-js
00:40:48  <isaacs>but getting rid of that FreeList abomination would prevent tons of memory leaks we've had.
00:41:09  <isaacs>and, at least in theory, make our object trees less complicated, and easier to GC
00:41:17  <isaacs>since we wouldn't be mixing old and new generations so much
00:42:05  <TooTallNate>isaacs: once you upgrade to node-gyp 0.4.2 there's a --nodedir option
00:42:17  <TooTallNate>isaacs: which we should use for the gc tests in node
00:43:51  * mmaleckiquit (Quit: leaving)
00:43:55  <AvianFlu>isaacs, the test passes now with those changes
00:44:04  <isaacs>sweet!
00:44:10  <isaacs>still building on my puny linux vm
00:54:20  * ericktquit (Ping timeout: 248 seconds)
00:55:41  <isaacs>passes here, too
00:55:57  * pieternquit (Quit: pietern)
01:02:31  <piscisaureus_>Hmm. there's a not so nice race condition in uv_process_close
01:02:36  <piscisaureus_>which is not trivial to fix
01:07:48  * isaacsquit (Remote host closed the connection)
01:11:04  * loladirojoined
01:18:44  * perezdquit (Quit: perezd)
01:20:53  * dapquit (Quit: Leaving.)
01:32:37  * brsonquit (Quit: leaving)
01:46:05  <piscisaureus_>[% 100|+ 101|- 39]: Done.
01:59:00  * elijah-mbpquit (Remote host closed the connection)
02:08:49  <piscisaureus_>[% 100|+ 112|- 28]: Done.
02:08:54  <piscisaureus_>hmm, not quite there yet
02:10:39  * abraxasjoined
02:31:55  * elijah-mbpjoined
02:32:49  * c4miloquit (Remote host closed the connection)
02:36:58  * loladiroquit (Quit: loladiro)
02:45:44  * ericktjoined
02:49:19  <piscisaureus_>yay
02:49:21  <piscisaureus_>[% 100|+ 134|- 6]
03:02:16  <CIA-155>libuv: Bert Belder refcount * r8ff8c5a / (29 files in 4 dirs): Refcount refactor almost done (+13 more commits...) - http://git.io/Q3Sjkw
03:02:52  * travis-cijoined
03:02:53  <travis-ci>[travis-ci] joyent/libuv#273 (refcount - 8ff8c5a : Bert Belder): The build failed.
03:02:53  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/b4dcd4a^...8ff8c5a
03:02:53  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1332830
03:02:53  * travis-cipart
03:07:42  <piscisaureus_>ircretary: tell bnoordhuis https://github.com/joyent/libuv/commits/refcount <-- almost done, but 4 difficult failures left
03:07:42  <ircretary>piscisaureus_: I'll be sure to tell bnoordhuis
03:08:39  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
03:14:17  * perezdjoined
03:29:38  * iraquit (Quit: Computer has gone to sleep.)
03:41:45  * ericktquit (Quit: erickt)
03:51:28  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
04:05:18  * ericktjoined
04:25:47  * AvianFluquit (Ping timeout: 240 seconds)
04:38:28  * AvianFlujoined
05:07:37  * ericktquit (Quit: erickt)
05:19:47  * einarosquit (Ping timeout: 240 seconds)
05:20:17  * einarosjoined
05:35:47  * paddybyersjoined
05:49:43  * abraxas_joined
05:51:08  * abraxasquit (Ping timeout: 252 seconds)
06:31:34  * pfox__quit (Ping timeout: 260 seconds)
06:32:18  * pfox__joined
06:33:48  * abraxasjoined
06:35:07  * abraxas_quit (Read error: No route to host)
06:47:24  * paddybyers_joined
06:50:34  * paddybyersquit (Ping timeout: 272 seconds)
06:50:34  * paddybyers_changed nick to paddybyers
06:59:20  * abraxasquit (Remote host closed the connection)
06:59:52  * abraxasjoined
07:28:48  * rendarjoined
07:50:08  * felixgejoined
08:04:08  * felixgequit (Ping timeout: 245 seconds)
08:28:10  * mmaleckijoined
08:45:45  * felixgejoined
08:45:46  * felixgequit (Changing host)
08:45:46  * felixgejoined
09:27:46  * mmaleckiquit (Ping timeout: 245 seconds)
09:29:20  * mmaleckijoined
09:46:00  * mmaleckiquit (Ping timeout: 272 seconds)
09:54:32  * mmaleckijoined
10:24:45  * mmalecki_joined
10:28:26  * mmaleckiquit (Ping timeout: 272 seconds)
10:30:14  * mmalecki_quit (Quit: Reconnecting)
10:30:32  * mmaleckijoined
10:30:50  * janjongboomjoined
10:30:59  <janjongboom>morning
10:31:18  <janjongboom>is there a way to get the global node_modules folder from node? so: '/usr/local/lib/node_modules/' on default OSX systems
10:31:57  <mmalecki>janjongboom: this is not a good place for such questions, try #node.js
10:32:35  <mmalecki>`process.execPath` might help tho
10:37:58  * piscisaureus_joined
10:41:22  <mmalecki>!gh joyent/[email protected]
10:41:30  <mmalecki>kohai, where you at?
10:41:48  <mmalecki>anyway, 78dc13fbf97e2e3003e6f3baacdd5ff60e8de3f7 looks weird to me, it actually changes the listeners array
10:52:20  <mmalecki>on the other hand, it's actually reasonable.
11:06:05  <piscisaureus_>janjongboom: require('module').globalPaths
11:06:39  * janjongboomquit (Quit: janjongboom)
11:08:31  * felixge_joined
11:08:31  * felixgequit (Read error: Connection reset by peer)
11:08:31  * felixge_changed nick to felixge
11:08:31  * felixgequit (Changing host)
11:08:31  * felixgejoined
11:08:51  * abraxasquit (Remote host closed the connection)
11:09:37  * abraxasjoined
11:10:38  * mmalecki_joined
11:13:42  * mmaleckiquit (Ping timeout: 244 seconds)
11:14:03  * abraxasquit (Ping timeout: 252 seconds)
11:21:18  * bnoordhuisjoined
11:23:15  * mmalecki_quit (Quit: Reconnecting)
11:23:31  * mmaleckijoined
11:36:46  * felixgequit (Ping timeout: 256 seconds)
11:38:28  * piscisaureus_quit (Ping timeout: 256 seconds)
11:41:16  * irajoined
11:41:17  * iraquit (Changing host)
11:41:17  * irajoined
11:43:46  * iraquit (Client Quit)
11:43:53  * irajoined
11:44:05  * iraquit (Changing host)
11:44:05  * irajoined
11:54:47  * felixgejoined
11:54:47  * felixgequit (Changing host)
11:54:47  * felixgejoined
12:06:48  * mmaleckiquit (Ping timeout: 249 seconds)
12:08:31  * mmaleckijoined
12:16:58  * c4milojoined
12:19:06  * piscisaureus_joined
12:20:45  * avsejquit (Excess Flood)
12:20:50  * avsejjoined
12:21:13  <piscisaureus_>bnoordhuis: hey can you merge the latest v0.6 into accept-backoff
12:21:22  <piscisaureus_>bnoordhuis: then I will help zef get the thing working
12:22:22  <creationix>piscisaureus_, alright, I maxed out my mock db finally at ~128K/sec
12:22:39  <creationix>piscisaureus_, I introduced pipelining into the lua client
12:22:48  <piscisaureus_>right
12:22:58  <creationix>and skipped JSON parsing
12:22:58  <piscisaureus_>so I suppose that's enough?
12:23:06  <creationix>my yajl parser is really slow for some reason
12:23:31  <creationix>well, I'm trying to make a benchmark tool for measuring things like node.native
12:23:40  <creationix>I want to add threading to the server
12:23:51  <creationix>the mock server should never be the bottleneck in this benchmark
12:24:06  <creationix>should I just use pthreads and create a loop each?
12:24:11  <creationix>this is raw C + libuv
12:25:39  <piscisaureus_>creationix: ah so you want to start multiple threads to do connections?
12:25:39  <creationix>or should I use the write2 trick and spawn n child processes?
12:25:52  <piscisaureus_>creationix: I would just go for one loop
12:25:53  <creationix>no, my tcp server is CPU bound, I want to use more cores
12:25:54  <piscisaureus_>per thread
12:26:14  <piscisaureus_>makes it easier to aggregate r/s etc
12:26:48  <creationix>ok, so I've never done much threading in C. Should I read up on pthread create or something?
12:26:58  <piscisaureus_>using libuv/master
12:27:03  <piscisaureus_>there's uv_thread_create etc
12:27:06  <piscisaureus_>and mutexes
12:27:08  <piscisaureus_>:-)
12:27:14  <creationix>nice
12:27:16  <piscisaureus_>but reading up on pthreads is recommended too
12:27:28  <piscisaureus_>threads are not that hard
12:27:31  <creationix>I did it 12 years ago when I learned C++ in school
12:27:35  <creationix>never used it since
12:27:41  <piscisaureus_>making your program work well with threads is hard :-)
12:27:46  <creationix>that I know
12:27:52  <creationix>but this should be simple enough
12:28:06  <creationix>I'd much rather fight "callback hell" than manage threading issues
12:28:15  <deoxxa>i just want to say that libuv has made my life infinitely easier in the last week or so
12:28:19  * deoxxahugs everyone
12:28:34  <creationix>piscisaureus_, indeed, libuv almost tempts me to write web servers in C
12:28:42  <creationix>except string manip sucks in C
12:28:47  <piscisaureus_>:-p
12:28:48  <creationix>and web dev has lots of that
12:28:49  <piscisaureus_>yep
12:28:58  <piscisaureus_>I think doing the cluster thing with raw libuv is also not that easy
12:29:11  <creationix>ok, I'll pull latest libuv and read uv.h
12:29:12  <creationix>thanks :)
12:29:27  <piscisaureus_>creationix: btw, we're almost done with the refcount refactor
12:29:43  <deoxxa>piscisaureus_: what does that affect?
12:29:54  <creationix>awesome, I need to tidy up my luv* projects for nodeconf
12:30:03  <piscisaureus_>ghe
12:30:09  <deoxxa>i.e. should i be holding off on a release of the software i'm writing with libuv until it's done?
12:30:40  <creationix>deoxxa, it makes managing the lifespan of uv_handle_t instances easier
12:30:48  <creationix>and makes the logic for holding the event loop open saner
12:31:00  <creationix>deoxxa, what kind of software?
12:31:11  <deoxxa>some internal software where i work
12:31:22  <deoxxa>the kind of thing where once i release a build, i have to wait 2 weeks for it to be tested
12:31:36  <creationix>deoxxa, C/C++ or bound to some scripting language?
12:31:43  <deoxxa>plain old c
12:31:52  * loladirojoined
12:31:56  <deoxxa>it runs on these little arm devices
12:32:08  <creationix>I think it's less impactful in that case, piscisaureus_ would know more
12:32:20  <creationix>I'm developing three different scripting language bindings to libuv in parallel
12:32:32  <deoxxa>ah ok, cool
12:32:33  <creationix>syncing lifetime of the structs with vm objects is hard currently
12:32:47  <deoxxa>yeah i'm manually creating/destroying things
12:32:57  <creationix>libuv on arm devices, that sounds like lots of fun!
12:33:07  <deoxxa>yeah it's pretty cool actually :3
12:33:20  <creationix>also, if you're into C++, node.native is pretty cool
12:33:24  <deoxxa>i have noticed a very small (constant) memory leak of a few hundred bytes that seems to happen somewhere inside pthread
12:33:36  <creationix>what does valgrind tell you?
12:33:40  <piscisaureus_>deoxxa: the loop will exit when the only other option is to hang forever, instead of hanging forever :-)
12:33:59  <deoxxa>exactly that, that there's a few hundred bytes lost somewhere inside pthread
12:34:00  <piscisaureus_>deoxxa: also uv_ref and uv_unref will now operate on a handle and be idempotent
12:34:08  <deoxxa>i haven't dug too far into it
12:34:14  <deoxxa>piscisaureus_: ah ok, cool
12:34:21  <creationix>I find libuv pretty stable, but I usually only stress test tcp servers
12:34:29  <creationix>stable memory-wise
12:34:46  <deoxxa>yeah there's no horrible memory leaks or anything that i've found so far
12:35:08  <deoxxa>i'll gather all my findings into some kind of bug report if they're still valid when i'm done
12:35:12  <deoxxa>(i'm probably just doing it wrong)
12:35:56  <creationix>deoxxa, by "constant" you mean it doesn't grow over time?
12:36:00  <deoxxa>correct
12:36:06  <creationix>in that case, I have seen that occasionally, but usually don't care
12:36:12  <deoxxa>yeah, exactly
12:36:12  <creationix>the vm itself adds a few megs usually
12:36:20  <deoxxa>heh
12:36:20  <deoxxa>no vm for me :P
12:36:31  <deoxxa>and i'm stuck with about 500kb worth of ram to play with :(
12:36:43  <creationix>wow, that is lean
12:36:49  <deoxxa>yep
12:36:51  <creationix>my pure C tcp server runs around 700Kb
12:36:57  <deoxxa>these boxes have 4MB of memory total
12:37:16  <deoxxa>wait, no, that's not right
12:37:27  <deoxxa>something small, can't remember the number off the top of my head
12:37:29  <deoxxa>but it's tricky
12:40:35  <creationix>piscisaureus_, is there an example of using uv_thread_create anywhere?
12:40:49  <creationix>I've use uv_work before, but this looks much lower level
12:41:02  <piscisaureus_>creationix: nah it's not
12:41:12  <piscisaureus_>creationix: but there's no example I think
12:41:24  <piscisaureus_>creationix: it is easy to use tho:
12:41:59  <creationix>so I want N threads accepting inbound connections?
12:42:10  <creationix>or one thread accepting, then pass client to the worker pool?
12:42:35  <piscisaureus_>creationix: hmm, I think option (b) is more difficult to implement
12:42:43  <creationix>that's fine, I like A better
12:43:10  * mattstevensjoined
12:43:32  <creationix>so I just call uv_listen N times then?
12:43:59  <piscisaureus_>creationix: you can create a thread with
12:43:59  <piscisaureus_>uv_thread_t tid;
12:43:59  <piscisaureus_>uv_thread_create(&tid, callback, some_void_pointer_that_gets_passed_to_the_calback)
12:43:59  <piscisaureus_>void callback(void* arg) {
12:43:59  <piscisaureus_> // This runs in the thread;
12:44:00  <piscisaureus_> ...
12:44:00  <piscisaureus_> // To exit the thread, just return;
12:44:01  <piscisaureus_>}
12:44:23  <piscisaureus_>creationix: to wait for a thread to exit you use
12:44:23  <piscisaureus_>uv_thread_join(tid)
12:44:34  <piscisaureus_>(from another thread)
12:44:46  <creationix>ok, so I'll need to create the uv_loop_t inside that function
12:44:54  <piscisaureus_>yeah
12:44:59  <piscisaureus_>that would be advisable
12:45:10  <creationix>but the uv_tcp_bind would be in the main thread before this?
12:45:26  <creationix>so I guess I'd pass in the uv_tcp_t* of the server as my void* data?
12:45:30  <piscisaureus_>oh hmm you need to share the socket, right
12:45:39  <piscisaureus_>that's hairy
12:45:42  <piscisaureus_>wait
12:45:55  <piscisaureus_>you were writing a client, right?
12:45:58  <creationix>no, server
12:46:02  <piscisaureus_>hmm
12:46:05  <piscisaureus_>argh
12:46:14  <creationix>people implementing/using this benchmark will write the client
12:46:22  <bnoordhuis>piscisaureus_: https://github.com/bnoordhuis/node/compare/v0.6...accept-backoff
12:46:32  <creationix>I just don't want the server to ever be a bottleneck
12:47:29  <piscisaureus_>creationix: that's more hairy, the only way we can do it right now is by using write2
12:47:36  <piscisaureus_>which is kinda unfortunate for a threaded program
12:47:45  <piscisaureus_>creationix: I have to run, so we'll talk later
12:47:48  <mmalecki>was `process.installPrefix` removed?
12:48:04  <piscisaureus_>bnoordhuis: I dropped it here -> https://github.com/ajaxorg/node/commits/balance
12:48:22  <piscisaureus_>bnoordhuis: c9 just needs a binary now for the proxy
12:49:27  <creationix>piscisaureus_, no problem, thanks
12:55:08  <piscisaureus_>bnoordhuis: both your murmur3 PRs mostly lgtm.
12:55:29  <piscisaureus_>bnoordhuis: #5 -> path can be NULL at some point when it isn't supposed to
12:56:06  <piscisaureus_>bnoordhuis: #3 -> minor "typo", %s should be replaces by %ls at one point
12:57:12  <piscisaureus_>really gotta run now, bbl
12:57:15  <bnoordhuis>i'm not sure about #3, need to do a little more research
12:57:18  <bnoordhuis>heh, okay
13:03:57  * mmaleckiquit (Quit: leaving)
13:05:11  * felixgequit (Ping timeout: 244 seconds)
13:12:18  * felixgejoined
13:12:19  * felixgequit (Changing host)
13:12:19  * felixgejoined
13:35:35  * piscisaureus_quit (Ping timeout: 252 seconds)
14:23:49  * Ariajoined
15:01:42  * piscisaureus_joined
15:03:23  <bnoordhuis>any objections against merging https://github.com/bnoordhuis/node/compare/joyent:master...issue3180 ?
15:06:50  * isaacsjoined
15:12:27  <piscisaureus_>bnoordhuis: no, but...
15:12:50  <piscisaureus_>bnoordhuis: the handle that shows up for timers and setIntervals is not that useful
15:12:54  <creationix>Anyone want to submit a node implementation of my benchmark challenge? https://github.com/creationix/bench-suite
15:13:01  <creationix>or a pure C libuv version?
15:13:09  <piscisaureus_>bnoordhuis: but I guess we should follow the release early, release often schedule
15:14:08  <bnoordhuis>piscisaureus_: yes. :) there's no real solution for timers, i'm afraid
15:14:17  <bnoordhuis>well, not without adding a lot of overhead and complexity
15:14:35  <piscisaureus_>bnoordhuis: maybe we should just drop that linked list bs
15:14:44  <piscisaureus_>bnoordhuis: I doubt it makes any difference
15:14:47  <piscisaureus_>but if it does we could do it in c
15:14:50  <piscisaureus_>er, c++
15:14:54  <deoxxa>creationix: looks interesting
15:14:56  <bnoordhuis>you mean the timer linked list?
15:14:59  <piscisaureus_>yeah
15:15:27  <bnoordhuis>right. we'll have to benchmark it but i agree, i kind of doubt it makes a noticeable difference
15:15:28  <creationix>It showed that luvit is way faster than node at network stuff, but sucks at json parsing
15:15:49  <piscisaureus_>bnoordhuis: if we could stick the setTimeout callback right on the handle object people could actually see which function is getting called
15:15:55  <creationix>deoxxa, which was good for me to see, I thought yajl was super fast
15:16:16  <deoxxa>very interesting
15:16:31  <deoxxa>i've always used picojson myself, i'm not sure how fast it is
15:16:37  <bnoordhuis>piscisaureus_: quite so
15:16:39  <creationix>piscisaureus_, just stick it on directly for the first listener, then upgrade to something fancier if they add another?
15:16:52  <piscisaureus_>that also works
15:17:06  <piscisaureus_>doing the linked list in c or in libuv even would also work :-)
15:17:39  <creationix>deoxxa, well, I wanted streaming parsing, there is less choice there
15:17:58  <creationix>but most people use non-streaming in practice, so I should probably include a fast path for that
15:18:10  <bnoordhuis>7524 unread notifications....
15:18:45  <bnoordhuis>piscisaureus_: https://gist.github.com/d730c35e35b309beb1bb <- minor tweak that might be useful, returns the handle's socket etc. if there is one
15:19:04  <bnoordhuis>useful yes/no? i believe some people raised concerns about that
15:19:15  <bnoordhuis>indutny: that was you, wasn't it?
15:19:19  <piscisaureus_>bnoordhuis: ok
15:19:45  <piscisaureus_>bnoordhuis: typically when I have problems with timers then they are not connected to any socket
15:19:54  <piscisaureus_>but I guess it's useful for debugging node itself
15:20:28  <bnoordhuis>piscisaureus_: oh, it's not that. without that patch you get a list of handle objects, with said patch a list of socket / tty / etc. objects
15:20:38  <bnoordhuis>the exception being timers, of course :)
15:20:43  <piscisaureus_>aah
15:20:46  <piscisaureus_>ok, that's useful :_)
15:21:27  <indutny>bnoordhuis: lgtm
15:21:32  <bnoordhuis>cool
15:21:39  <bnoordhuis>isaacs: want to chime in? 30 seconds left till merge
15:22:09  <deoxxa>does uv_fs_read call cb more than once? i.e. is it like uv_read_start?
15:22:36  <piscisaureus_>creationix: https://github.com/v8/v8/blob/master/src/json-parser.h <-- I guess you could just port that to lua :-)
15:23:00  <creationix>would it be faster though?
15:23:09  <creationix>lua's C interface is pretty low overhead
15:23:16  <piscisaureus_>well, I suppose
15:23:22  <piscisaureus_>in c would also work
15:23:31  <piscisaureus_>we should port it to node
15:23:40  <piscisaureus_>change it to take buffers and work in streaming mode
15:23:55  <creationix>I wrote a streaming JSON parser in JS that's half the speed of V8's JSON.parse
15:24:03  <indutny>piscisaureus_: stream=speed fail
15:24:08  <piscisaureus_>does it take buffers?
15:24:11  <piscisaureus_>indutny: why?
15:24:15  <creationix>piscisaureus_, yep
15:24:21  <creationix>indutny, piscisaureus_ all the callbacks
15:24:22  <indutny>piscisaureus_: because you'll need to hop to js and from js
15:24:37  <creationix>indutny, well, not if it's written in js
15:24:45  <creationix>but still, it's a lot of js function calls from js too
15:24:56  <indutny>creationix: indeed, but piscisaureus_ proposed to port
15:24:56  <piscisaureus_>indutny: sure but now we have to convert the buffers to strings, and then flatten the string
15:25:09  <piscisaureus_>indutny: that is also a speed fail right?
15:25:15  * paddybyersquit (Quit: paddybyers)
15:25:19  <creationix>true
15:25:25  <indutny>piscisaureus_: yeah, it is. I suggest implementing it without streams
15:25:38  <indutny>piscisaureus_: though if streams won't affect performance of JSON.parse(Buffer)
15:25:52  <indutny>piscisaureus_: I'm totally ok with it
15:25:57  <piscisaureus_>indutny: well it could just be stream-agnostic....
15:26:18  <piscisaureus_>indutny: if you pass in a buffer that holds an entire json string then there would be no overhead
15:26:21  <creationix>indutny, I'm not saying a full node stream
15:26:25  <piscisaureus_>and otherwise the parser is just interruptible
15:26:26  <creationix>indutny, but a sax interface
15:26:38  <piscisaureus_>it could just be like crypto
15:26:43  <indutny>piscisaureus_: may be made it async?
15:27:05  <creationix>it's not that expensive is it? The async thread syncing isn't free either
15:27:06  <piscisaureus_>indutny: oh, that would also be nice for many people I suppose. But that would mean that we would have to create objects off the main thread
15:27:15  <piscisaureus_>indutny: I don't think that's going to play well with v8's heap
15:27:21  <indutny>piscisaureus_: ah... yes
15:27:51  <creationix>here is my js version https://gist.github.com/1821419
15:28:25  <indutny>creationix: not really yours :P
15:28:29  <indutny>ah
15:28:31  <indutny>yours
15:28:45  <creationix>oops, wrong link
15:28:57  <creationix>but he didn't modify it, so same code
15:29:12  <indutny>yep, I see
15:29:13  <creationix>direct link: https://gist.github.com/1821394
15:29:37  <creationix>though nuno has a nice fast one that's a lot larger
15:31:37  <bnoordhuis>indutny: how's the stdio work coming along?
15:31:55  <indutny>bnoordhuis: sorry, but I'm blocked by my day time job
15:32:00  <indutny>bnoordhuis: haven't worked on it yet
15:32:05  <indutny>bnoordhuis: hope I'll be able to touch it today
15:32:19  <bnoordhuis>okay, coool
15:32:21  <bnoordhuis>-o
15:43:00  * mmaleckijoined
15:43:00  * Ariaquit (Remote host closed the connection)
15:44:58  <isaacs>bnoordhuis: what is this you're merging?
15:49:15  <isaacs>anything anyone wants to get into v0.6.18?
15:49:25  * loladiroquit (Quit: loladiro)
15:51:46  * elijah-mbpquit (Remote host closed the connection)
15:52:46  <mmalecki>fork({ silent: true }) would make my day ;)
15:53:34  * loladirojoined
15:53:54  <isaacs>mmalecki: that's only on master, i thought
15:53:58  * perezdquit (Quit: perezd)
15:54:01  * brsonjoined
15:54:14  <mmalecki>isaacs: yeah, exactly ;)
15:54:26  <isaacs>mmalecki: we don't add api on stable branches. be patient, padawan.
15:54:45  * indutnysir_vader
15:54:51  <mmalecki>isaacs: well, I HAVE AN OPINION.
15:54:57  * indutnychanged nick to sir_vader
15:55:00  <sir_vader>oops
15:55:02  <mmalecki>lol
15:56:00  * sir_vaderchanged nick to indutny
15:56:48  * mikealquit (Quit: Leaving.)
15:57:47  <isaacs>indutny: vader was a Lord.
15:57:51  <isaacs>indutny: not a mere sir!
15:57:57  * isaacschanged nick to LordVader
15:58:06  * LordVaderchanged nick to isaacs
16:00:40  * mikealjoined
16:05:15  * paddybyersjoined
16:08:08  * ljacksonquit (*.net *.split)
16:10:59  * ericktjoined
16:13:32  * ljacksonjoined
16:14:47  * orlandovftwjoined
16:17:25  * rendarquit
16:19:14  * rendarjoined
16:24:54  <creationix>heh, we watched Episode 3 just last night
16:25:02  <creationix>my wife had never seen any star wars
16:26:12  * dapjoined
16:26:22  * mikealquit (Quit: Leaving.)
16:26:42  * elijah-mbpjoined
16:29:00  * dapquit (Remote host closed the connection)
16:32:43  * dapjoined
16:33:38  * pieternjoined
16:34:17  * mmaleckichanged nick to mmalecki[brb]
16:34:19  * Ariajoined
16:34:37  * c4milochanged nick to c4milo|lunch
16:35:38  * c4milo|lunchquit (Remote host closed the connection)
16:39:34  * mikealjoined
16:41:53  * mikealquit (Client Quit)
16:42:51  * mattstevensquit (Quit: mattstevens)
16:43:09  * mikealjoined
16:48:22  * felixgequit (Quit: felixge)
16:51:15  <piscisaureus_>\o/ [% 100|+ 140|- 0]: Done.
16:52:43  <CIA-155>libuv: Bert Belder refcount * r7f80678 / (29 files in 4 dirs): Refcount refactor almost done - http://git.io/ksuDvw
16:53:00  <piscisaureus_>bnoordhuis: hey, you have a minute
16:53:02  <piscisaureus_>?
16:53:34  <indutny>creationix: my wife too
16:53:58  <creationix>piscisaureus_, :D
16:55:26  * perezdjoined
16:55:46  * perezd_joined
16:58:38  <isaacs>piscisaureus_ ++
16:58:50  <piscisaureus_>now we probably have to fix unix again
16:58:54  <piscisaureus_>:-p
16:58:58  <piscisaureus_>lemme check
16:59:16  <piscisaureus_>and there's some conceptual issues that I want to discuss with bnoordhuis
16:59:17  <isaacs>alright, i'mma push 0.6.18
16:59:22  <piscisaureus_>cool
17:00:01  * perezdquit (Ping timeout: 255 seconds)
17:00:02  * perezd_changed nick to perezd
17:01:13  * travis-cijoined
17:01:13  <travis-ci>[travis-ci] joyent/libuv#274 (refcount - 7f80678 : Bert Belder): The build is still failing.
17:01:13  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/8ff8c5a...7f80678
17:01:13  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1337722
17:01:13  * travis-cipart
17:05:13  * orlandovftwquit (Ping timeout: 265 seconds)
17:05:13  * piscisaureus_quit (Read error: Connection reset by peer)
17:05:49  * loladiroquit (Quit: loladiro)
17:05:52  * piscisaureus_joined
17:05:53  * erickt_joined
17:06:38  * erickt__joined
17:07:16  * ericktquit (Ping timeout: 252 seconds)
17:07:16  * erickt__changed nick to erickt
17:08:50  * mikealquit (Ping timeout: 256 seconds)
17:09:42  * mikealjoined
17:10:36  * erickt_quit (Ping timeout: 272 seconds)
17:11:53  * ericktquit (Read error: Connection reset by peer)
17:23:04  <CIA-155>node: isaacs v0.6 * r4bc1d39 / (ChangeLog src/node_version.h): 2012.05.15 Version 0.6.18 (stable) - http://git.io/iX_qCA
17:23:05  <CIA-155>node: isaacs v0.6 * r2498d15 / (ChangeLog src/node_version.h): Merge branch 'v0.6.18-release' into v0.6 - http://git.io/Ac-Gkw
17:23:05  <CIA-155>node: isaacs v0.6 * rf19f980 / src/node_version.h : Now working on 0.6.19 - http://git.io/1Tx-Vg
17:27:55  * TooTallNatejoined
17:41:43  * brsonquit (Ping timeout: 244 seconds)
17:47:21  * ericktjoined
17:49:24  * erickt_joined
17:52:25  * felixgejoined
17:52:26  * felixgequit (Changing host)
17:52:26  * felixgejoined
17:52:30  * orlandovftwjoined
17:52:37  * ericktquit (Ping timeout: 252 seconds)
17:52:37  * erickt_changed nick to erickt
17:58:40  * brsonjoined
18:04:06  * c4milo|lunchjoined
18:08:10  <igorzi>indutny: hey, what's UV_DUPLEX_PIPE for?
18:09:04  <igorzi>piscisaureus_: ^ do you know?
18:09:25  <piscisaureus_>igorzi: umm to indicate whether a pipe should be duplex :-)
18:09:36  <piscisaureus_>igorzi: but just ignore for now, always create duplex pipes
18:09:54  <igorzi>piscisaureus_: it's not used anywhere (that's why i'm asking)
18:10:16  <piscisaureus_>igorzi: I think that on unix pipes are always duplex now (that used to be not the case)
18:10:24  <igorzi>piscisaureus_: for stdin/stdout/stderr, we currently don't create duplex pipes (unless stdin is for ipc)
18:10:46  <piscisaureus_>igorzi: true, so that's what it *could* be for
18:10:52  <bnoordhuis>piscisaureus_: here
18:11:12  <igorzi>piscisaureus_: but we already indicate ipc through uv_pipe_init
18:11:26  <igorzi>piscisaureus_: so, we should probably ignore this on windows (at least for now) ?
18:11:56  <piscisaureus_>igorzi: The new child process thing will allow people to explicitly create duplex pipes for stdio, so we should support it.
18:12:43  <piscisaureus_>igorzi: the downside of write-only pipes is that there is no indication that the other end closed the pipe.
18:12:54  <igorzi>piscisaureus_: ok, so before creating a pipe see if UV_DUPLEX_PIPE is set.. if yes create a duplex pipe, if not do what we do today
18:13:02  <piscisaureus_>igorzi: yep
18:13:08  <igorzi>piscisaureus_: ok, cool
18:13:40  <piscisaureus_>bnoordhuis: so can you skype for a bit with me?
18:14:01  * mmalecki[brb]quit (Ping timeout: 245 seconds)
18:14:23  <bnoordhuis>piscisaureus_: sure
18:16:52  * mmalecki[brb]joined
18:30:35  * ericktquit (Read error: Operation timed out)
18:32:06  <piscisaureus_>bnoordhuis: btw - http://stackoverflow.com/questions/10603860/very-simple-node-js-client-throws-error-enobufs-after-many-http-requests/10604622#10604622 <-- interesting one too. Does that happen on unix as well?
18:32:13  <piscisaureus_>oh skype
18:32:18  * ericktjoined
18:39:23  * mikealquit (Quit: Leaving.)
18:45:58  * mikealjoined
18:46:28  * loladirojoined
18:49:22  * c4milo|lunchchanged nick to c4mil
18:49:25  * c4milchanged nick to c4milo
19:02:03  * mmalecki[brb]changed nick to mmalecki
19:02:05  * mmaleckiquit (Quit: Reconnecting)
19:02:21  * mmaleckijoined
19:04:01  <CIA-155>node: Ben Noordhuis master * re813e34 / src/node.cc : node: make _getActiveHandles() return user objects (+8 more commits...) - http://git.io/BWtCGQ
19:09:43  * ericktquit (Remote host closed the connection)
19:09:56  * ericktjoined
19:13:37  <mmalecki>isaacs: is https://gist.github.com/da5e26e88317aab2a842 what voxer guys are getting?
19:13:57  <tjfontaine>that stack seems quite familiar
19:14:41  <isaacs>mmalecki: yes
19:14:52  <isaacs>mmalecki: fixed on 0.6.18
19:15:01  <mmalecki>isaacs: so, yeah, this is our balancer :). upgrading now.
19:16:43  <isaacs>k
19:16:50  <isaacs>bnoordhuis: nice^
19:16:56  <bnoordhuis>thanks :)
19:17:30  <isaacs>man, this merge is killing me
19:17:38  <isaacs>literally murdering my sanity in the face.
19:17:57  * isaacswill throw a party when we can refactor http.js properly
19:18:27  <Aria>Ouch!
19:19:06  <mmalecki>isaacs: why not now?
19:19:24  <isaacs>mmalecki: because right now we have to finish 0.8, and a proper refactor will take a month or two
19:19:29  <isaacs>this is 0.9 stuff.
19:19:44  <mmalecki>I see
19:19:56  <mmalecki>but I wasn't asking about that.
19:19:56  <isaacs>can't do everything all the time. we have to space these things out somewhat, to keep it from becoming mayhem.
19:20:02  <mmalecki>why not throw a party right now?
19:20:16  <isaacs>oh, well, the answer to THAT is because i'm busy doing this f*@#(ing merge.
19:20:41  <isaacs>even fixing bugs in lib/http.js is super hazardous and awful.
19:20:45  <mmalecki>merge-party!
19:22:04  <piscisaureus_>isaacs: question: is it normal that keepalive connections are discarded after the last http request ends?
19:22:05  * loladiroquit (Quit: loladiro)
19:22:45  <isaacs>piscisaureus_: yes, it's normal, but not ideal.
19:22:51  <piscisaureus_>ah, that explains
19:23:07  <piscisaureus_>It is the cause of https://github.com/joyent/node/issues/3269
19:23:13  <isaacs>piscisaureus_: the request module has a 'forever' mode that uses a different agent implementation to keep alives open forever.
19:24:10  * loladirojoined
19:24:12  <isaacs>piscisaureus_: a better model will be for the agent to manage connections and keep them alive for a set number of ms.
19:24:26  <piscisaureus_>yeah ok
19:24:42  <piscisaureus_>isaacs: so the cause is known, now I lost interest :-0
19:25:19  <isaacs>haha
19:25:42  <isaacs>however, if you just make one req, and it finishes, then it'd be surprising if your script doesn't exit.
19:25:56  <piscisaureus_>I can only do like 10K http requests per second tho
19:25:59  <isaacs>so, the agent should be able to see, if its sockets are the only things keeping the event loop open, then it should die.
19:25:59  <piscisaureus_>on windows
19:26:07  <piscisaureus_>isn't that a little on the low end?
19:26:11  <isaacs>piscisaureus_: try using the forever.js from request.
19:26:20  <isaacs>piscisaureus_: that agent will never throw away connections.
19:26:25  * orlandovftwquit (Quit: leaving)
19:26:29  <isaacs>it keeps them alive forever.
19:26:34  <indutny>bnoordhuis: what malloc_create_zone line in v8 profile of node may mean?
19:27:12  <indutny>bnoordhuis: it eats 97% of time for a https server
19:27:24  <indutny>bnoordhuis: ain't we using stubs?
19:27:46  <tjfontaine>isaacs: then comes the refcount refactor and we can unref and life becomes much easier
19:28:29  <isaacs>tjfontaine: oh, so basically, we can say "don't keep the prog running on my account"?
19:28:30  <isaacs>nice.
19:28:37  <tjfontaine>yup
19:28:38  <isaacs>yeah, i remember bnoordhuis talking about that.
19:28:43  <isaacs>that's really what you want for keepalives.
19:28:52  <tjfontaine>ya, it's needed for the dns resolvers as well
19:29:15  <isaacs>some max number of sockets per server (browsers do 8, i believe?) and a reasonable timeout, like a minute, and let the program die if they're the only thing open
19:29:38  <mmalecki>isaacs: hey, I've got some new stack traces for you
19:29:50  <bnoordhuis>indutny: it means that something is doing an awful lot of mallocing
19:29:56  <bnoordhuis>indutny: os x, i take it?
19:30:30  * mikealquit (Quit: Leaving.)
19:31:03  <piscisaureus_>we don't have bindings for ref/unref tho
19:31:12  <tjfontaine>soon(tm)
19:31:39  <indutny>bnoordhuis: yes
19:31:43  <bnoordhuis>we can reasonably add them now without having to worry about people blowing off their feet
19:31:45  <indutny>bnoordhuis: no native addons
19:32:01  <indutny>bnoordhuis: may be `new Buffer(...)`
19:32:02  <indutny>bnoordhuis: ?
19:32:17  <bnoordhuis>indutny: maybe. openssl allocs a lot too
19:32:20  <bnoordhuis>profile it and you'll know
19:32:22  <indutny>bnoordhuis: ahhhh, openssl
19:32:27  <indutny>bnoordhuis: I'll run gprof
19:32:29  <indutny>bnoordhuis: thanks
19:32:30  <isaacs>mmalecki: ok.
19:32:36  <isaacs>mmalecki: don't tease me man, just gimme the gist.
19:33:25  <mmalecki>isaacs: sec, fighting with vim
19:33:35  <mmalecki>isaacs: there you go https://gist.github.com/da5e26e88317aab2a842
19:34:13  <AvianFlu>mmalecki, all three on 0.6.18? really?
19:34:26  <mmalecki>AvianFlu: 0.6.17
19:34:37  <AvianFlu>oh.
19:34:40  <mmalecki>AvianFlu: I didn't upgrade all of them yet, will do in a sec
19:34:43  <AvianFlu>I was scared-er.
19:34:44  * loladiroquit (Quit: loladiro)
19:34:51  <mmalecki>AvianFlu: I'd be running and screaming if it was 0.6.18
19:36:47  * mikealjoined
19:37:29  <isaacs>mmalecki: dude, 0.6.17 is super old.
19:37:33  <AvianFlu>hahahaha
19:37:34  <isaacs>mmalecki: why are you still running that?
19:39:11  <mmalecki>isaacs: because 0.6.18 didn't compile on LBs yet :p
19:39:33  <piscisaureus_>bnoordhuis: btw something else. My GCC doesn't like the inline keyword in c code either
19:39:43  <piscisaureus_>bnoordhuis: did that actually work for you?
19:40:08  <piscisaureus_>gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
19:40:58  <bnoordhuis>piscisaureus_: what's it complaining about?
19:41:10  <bnoordhuis>are you compiling with -ansi or -std=c89?
19:41:17  <piscisaureus_>bnoordhuis:
19:41:17  <piscisaureus_>src/uv-common.h:111:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘static’
19:41:23  <piscisaureus_>bnoordhuis: I am compiling with "make" :-)
19:41:35  <piscisaureus_>that is probably with -std=c89
19:42:19  <tjfontaine>make is the best compiler evar
19:42:29  <bnoordhuis>piscisaureus_: gcc 4.7 is not complaining
19:42:48  <piscisaureus_>bnoordhuis: CSTDFLAG=--std=c89 -pedantic -Wall -Wextra -Wno-unused-parameter
19:43:01  <bnoordhuis>yes. i ran `make CC=$HOME/opt/gcc/bin/gcc`
19:44:22  <piscisaureus_>bnoordhuis: if I use __attribute__((always_inline)) it works
19:45:24  <piscisaureus_>gyp is also party
19:45:39  <bnoordhuis>piscisaureus_: you might as well remove the inline keywords, those functions are static anyway
19:45:45  <piscisaureus_>core: src/unix/core.c src/unix/linux/core.c
19:45:45  <piscisaureus_>Some build systems, e.g. MSVC08, cannot handle that.
19:45:45  <piscisaureus_><<stacktrace>>
19:45:45  <piscisaureus_>KeyError: 'Duplicate basenames in sources section, see list above'
19:45:57  <piscisaureus_>bnoordhuis: yeah, I will add __attribute__((unused)) then
19:46:03  <piscisaureus_>otherwise gcc starts berating me
19:47:48  * felixge_joined
19:47:49  * felixge_quit (Changing host)
19:47:49  * felixge_joined
19:50:31  <isaacs>man, i'm just going to have to re-do that http.js cleanup in master that i did in v0.6. there's no way to figure this out.
19:50:52  <isaacs>every connect/upgrade test is failing otherwise.
19:51:02  <CIA-155>libuv: Bert Belder refcount * r966dd24 / (4 files): Replace uv__req_unref by uv__req_unregister - http://git.io/0ITpTQ
19:51:02  <CIA-155>libuv: Bert Belder refcount * rc616958 / config-unix.mk : Unix: make `make` work - http://git.io/AK3jaw
19:51:02  <CIA-155>libuv: Bert Belder refcount * r97948e6 / src/uv-common.h : Unix: avoid unused function warnings - http://git.io/SZA-OQ
19:51:03  <CIA-155>libuv: Bert Belder refcount * r14fd32b / src/unix/poll.c : Unix: refactor uv_poll refcount handling - http://git.io/i_UXvw
19:51:03  <CIA-155>libuv: Bert Belder refcount * r28a422b / src/uv-common.h : uv-common.h: mark static functions unused, don't use `inline` - http://git.io/3VmsDQ
19:51:31  * felixgequit (Ping timeout: 245 seconds)
19:51:31  * felixge_changed nick to felixge
19:51:37  <mmalecki>ok, all our balancers are on 0.6.18 now, we'll ping you if we see any crashes
19:52:11  <bnoordhuis>isaacs: did you enable the backdoor in this release?
19:52:37  <isaacs>bnoordhuis: dude, i snuck the backdoor into node 0.2
19:52:49  <mmalecki>lib/_this_really_isnt_a_backdoor.js?
19:53:02  <piscisaureus_>too bad they found the size_ backdoor
19:53:08  <piscisaureus_>only 5 left or so
19:58:00  * loladirojoined
19:58:49  <isaacs>piscisaureus_: you mean 12
19:58:57  <isaacs>piscisaureus_: i mean.. there were 5 i told you about
19:59:01  <isaacs>you haven't found the others?
19:59:45  <mmalecki>hey, hold up, indutny added some for us too
19:59:57  <indutny>mmalecki: sup?
20:00:13  <mmalecki>indutny: these core exploits you added, how many were there?
20:00:34  <indutny>ah, some
20:04:59  <indutny>mmalecki: you mean that exploit that allow to take control of all servers running node.jsy
20:05:21  <mmalecki>indutny: yeah, exactly the one
20:05:30  <mmalecki>indutny: but I recall there were like 4 or 5 others
20:06:16  <indutny>mmalecki: yep, I added that backdoor to debugger
20:07:17  <mmalecki>indutny: oh, the one where you can remotely initiate a debug session and steal all the data?
20:08:23  <indutny>mmalecki: someone should stop this
20:08:59  <indutny>kick mmalecki
20:09:11  <mmalecki>lol
20:11:19  <piscisaureus_>stealing data?
20:11:34  <piscisaureus_>lame
20:11:53  <indutny>piscisaureus_: I hope noone is reading channel logs
20:11:59  <isaacs>hahah
20:12:02  * isaacstopic: j/k
20:12:19  <piscisaureus_>the better backdoor allows you to spread high frequency sounds that turn all the cats into aggressive infectuous undead
20:12:35  <indutny>**undead cats**
20:12:36  <isaacs>piscisaureus_: oh YOU'RE the one that landed that?
20:12:44  <isaacs>piscisaureus_: it took me WEEKS to calm my cats down.
20:12:48  <isaacs>they still only eat brains.
20:13:02  <isaacs>bastard
20:13:18  <piscisaureus_>yeah sorry I didn't mean to affect your cats
20:13:23  <piscisaureus_>rather pquerna's
20:13:39  * mikealquit (Quit: Leaving.)
20:13:48  <CIA-155>node: Ben Noordhuis master * r9ae6d8f / (lib/http.js test/simple/test-http-client-pipe-end.js): http: fix client request.end() EPIPE race - http://git.io/gORI6Q
20:14:01  <indutny>piscisaureus_: I thought it activates only if you hit /index.php page on node's server
20:14:42  <piscisaureus_>yeah let's rename that to index.cfm
20:15:36  <indutny>and change port to 1935
20:25:00  <bnoordhuis>piscisaureus_: https://github.com/joyent/node/issues/3269#issuecomment-5726312
20:25:39  <piscisaureus_>bnoordhuis: is STATUS_TOO_MANY_ADDRESSES mapped to WSAEADDRNOTAVAIL ?
20:25:47  <piscisaureus_>er, ENOBUFS
20:25:49  <piscisaureus_>?
20:25:49  <bnoordhuis>yes
20:25:55  <piscisaureus_>hmm
20:26:12  <piscisaureus_>it's not that simple
20:28:55  * mikealjoined
20:32:43  <bnoordhuis>tjfontaine: https://github.com/joyent/node/pull/3132 <- are you still interested in getting that landed?
20:41:26  <indutny>time to sleep
20:41:33  <indutny>good night everyone
20:41:46  <indutny>have a nice day SF
20:41:56  <indutny>will implement stdio thing tomorrow
20:41:57  <bnoordhuis>indutny: what about gouda?
20:41:59  <indutny>love you guys
20:42:04  <bnoordhuis>good :)
20:42:14  <bnoordhuis>sleep tight, fedor
20:42:49  <CIA-155>libuv: Bert Belder refcount * r08c5580 / src/win/handle.c : Windows: use UV__ACTIVE to determine return value of uv_is_active - http://git.io/mzbPwg
20:47:50  <CIA-155>libuv: Bert Belder refcount * r312ca35 / (src/uv-common.h src/win/internal.h): Windows: make uv-common.h independent from internal.h - http://git.io/XLnpHA
20:50:51  * perezdquit (Quit: perezd)
20:51:02  <CIA-155>libuv: Bert Belder refcount * r0b7868b / src/win/handle.c : Windows: use UV__ACTIVE to determine return value of uv_is_active - http://git.io/9m7JRw
20:51:03  <CIA-155>libuv: Bert Belder refcount * rdd4878c / (src/uv-common.h src/win/internal.h): Windows: make uv-common.h independent from internal.h - http://git.io/N36dng
20:51:37  * perezdjoined
20:52:40  <CIA-155>node: Sadique Ali master * rc9676c9 / configure : build: improve c compiler detection - http://git.io/awDlSQ
20:58:15  <CIA-155>libuv: Bert Belder refcount * r23f6b99 / src/uv-common.c : uv-common.c: remove terrible hack - http://git.io/JcAYtw
20:58:16  <CIA-155>libuv: Bert Belder refcount * rb07c783 / include/uv-private/uv-win.h : uv-win.h: style - http://git.io/h9kudw
20:58:16  <CIA-155>libuv: Bert Belder refcount * raeaa465 / uv.gyp : uv.gyp: add ngx-queue.h and tree.h to shared sources list - http://git.io/TIXO9A
20:58:35  <piscisaureus_>bnoordhuis: https://github.com/joyent/libuv/compare/master...refcount
20:58:41  <piscisaureus_>bnoordhuis: when you feel like it :-)
20:58:49  <piscisaureus_>(review)
21:00:08  <piscisaureus_>It's unfortunate that libuv no longer compiles with gyp trunk
21:02:48  <CIA-155>libuv: Ben Noordhuis refcount * rad02404 / test/runner.c : test: prevent accidental division by zero - http://git.io/XtzCwQ
21:02:48  <CIA-155>libuv: Bert Belder refcount * r6257bba / test/runner.c : Merge branch 'master' into refcount - http://git.io/2E8BhA
21:03:55  * travis-cijoined
21:03:55  <travis-ci>[travis-ci] joyent/libuv#275 (refcount - 28a422b : Bert Belder): The build is still failing.
21:03:55  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/7f80678...28a422b
21:03:55  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1339197
21:03:55  * travis-cipart
21:05:19  <bnoordhuis>piscisaureus_: why not?
21:05:53  <piscisaureus_>bnoordhuis: https://gist.github.com/2705131
21:06:27  <bnoordhuis>grr, gyp
21:06:27  <piscisaureus_>http://travis-ci.org/#!/joyent/libuv/builds/1339197
21:06:32  <piscisaureus_>^-- not looking good
21:12:00  <bnoordhuis>syncing with master is going to be a pita
21:12:15  <piscisaureus_>bnoordhuis: syncing with what?
21:12:25  <piscisaureus_>bnoordhuis: I merged master in twice
21:12:31  <piscisaureus_>so it shouldn't be that hard
21:13:10  <bnoordhuis>piscisaureus_: try `git rebase origin/master`
21:13:19  <piscisaureus_>bnoordhuis: oh, let's not rebase
21:13:38  <piscisaureus_>bnoordhuis: I will flatten my commits and your commits can be flattened too
21:13:44  <piscisaureus_>but let's keep the intermediate merge
21:13:49  <bnoordhuis>okay
21:15:35  <bnoordhuis>[% 100|+ 135|- 1]: Done. <- \o/
21:16:08  <isaacs>are you guys merging stuff into master?
21:16:16  <isaacs>er, still landing stuff on node/master i mean
21:16:22  <piscisaureus_>isaacs: libuv
21:16:33  * travis-cijoined
21:16:33  <travis-ci>[travis-ci] joyent/libuv#276 (refcount - 08c5580 : Bert Belder): The build is still failing.
21:16:33  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/28a422b...08c5580
21:16:33  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1339737
21:16:33  * travis-cipart
21:16:39  <isaacs>kk
21:16:44  <isaacs>i'm about to land merge-v0.6
21:17:15  <isaacs>lots of http.js shifting around
21:17:17  <isaacs>been kind of rough
21:17:24  * travis-cijoined
21:17:24  <travis-ci>[travis-ci] joyent/libuv#277 (refcount - 312ca35 : Bert Belder): The build is still failing.
21:17:24  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/08c5580...312ca35
21:17:24  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1339785
21:17:24  * travis-cipart
21:19:12  * travis-cijoined
21:19:12  <travis-ci>[travis-ci] joyent/libuv#278 (refcount - dd4878c : Bert Belder): The build is still failing.
21:19:12  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/312ca35...dd4878c
21:19:12  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1339802
21:19:12  * travis-cipart
21:20:17  * travis-cijoined
21:20:17  <travis-ci>[travis-ci] joyent/libuv#279 (refcount - aeaa465 : Bert Belder): The build is still failing.
21:20:17  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/dd4878c...aeaa465
21:20:17  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1339844
21:20:17  * travis-cipart
21:20:55  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/compare/refcount#L15R24 <- why do you need to include uv-common.h here? internal.h already pulls it in
21:21:21  <piscisaureus_>bnoordhuis: does it?
21:21:43  <bnoordhuis>it does
21:21:48  <piscisaureus_>bnoordhuis: oh that was because I had to do some hackery
21:21:52  <piscisaureus_>but I reverted that later
21:21:54  <piscisaureus_>I can remove those
21:21:58  <bnoordhuis>okay, i'll remove it
21:22:26  <piscisaureus_>bnoordhuis: I can do sed-fu too :-p
21:23:06  <bnoordhuis>you know how it is
21:23:14  <bnoordhuis>if you want it done right, you've got to do it yourself
21:23:31  <CIA-155>node: isaacs master * r643f00d / (28 files in 6 dirs): Merge branch 'master' into v0.6-merge (+34 more commits...) - http://git.io/k4_xOA
21:23:31  <bnoordhuis>a twss moment, that
21:23:54  * isaacswhew
21:24:36  * travis-cijoined
21:24:36  <travis-ci>[travis-ci] joyent/libuv#280 (refcount - 6257bba : Bert Belder): The build is still failing.
21:24:36  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/aeaa465...6257bba
21:24:36  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1339893
21:24:36  * travis-cipart
21:26:05  <isaacs>this is lib/http.js: http://i.imgur.com/wGUTG.gif
21:27:35  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/compare/refcount#L24R45 <- nasty!
21:27:43  <bnoordhuis>we should fix that eventually
21:27:54  <piscisaureus_>bnoordhuis: I agree, but I didn't know how :-(
21:28:19  <piscisaureus_>bnoordhuis: not without doing something super invasive anyway
21:28:24  <piscisaureus_>i'd rather fix this after the merge
21:28:30  <bnoordhuis>hah, silly kitty is silly
21:28:38  <bnoordhuis>yeah, it doesn't have to be done right now
21:28:47  <bnoordhuis>but it should go sometime soon :)
21:31:26  <bnoordhuis>piscisaureus_: we can scrap the UV_LEAN_AND_MEAN stuff afaic
21:32:15  <piscisaureus_>bnoordhuis: hmm, internal.h doesn't pull in uv-common.h
21:32:21  * brsonquit (Ping timeout: 245 seconds)
21:32:30  <bnoordhuis>does too!
21:32:51  <bnoordhuis>that's src/unix/internal.h btw
21:33:26  <CIA-155>libuv: Bert Belder refcount * r7cf5154 / (25 files): Windows: pull in uv-common.h from internal.h - http://git.io/9Z7-cA
21:33:30  <piscisaureus_>^-- bnoordhuis: there ya go
21:34:35  * rendarquit
21:34:48  <piscisaureus_>bnoordhuis: https://github.com/joyent/libuv/blob/refcount/src/win/internal.h#L44 <-- ziet er ook niet uit :-(
21:35:01  <CIA-155>libuv: Ben Noordhuis refcount * r6e65c79 / src/unix/poll.c : unix: remove unnecessary #include - http://git.io/cJS_Eg
21:37:22  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/compare/refcount#L33R61 <- maybe add a comment here explaining why it works like that
21:37:58  <piscisaureus_>bnoordhuis: that link doesn't work form e
21:38:19  <piscisaureus_>'s/m / m/'
21:38:19  <bnoordhuis>piscisaureus_: return (handle->flags & UV__ACTIVE) && !(handle->flags & UV_HANDLE_CLOSING);
21:38:45  <bnoordhuis>that's from uv_is_active in src/win/handle.c
21:38:54  <piscisaureus_>ik
21:39:03  <bnoordhuis>jij
21:41:30  <piscisaureus_>bnoordhuis: hmm, I realize that there is a conceptual flaw in this code
21:42:00  <piscisaureus_>bnoordhuis: a closing handle that has a pending user req should be considered active but this will make it inactive. */
21:42:02  <piscisaureus_>*sigh*
21:43:12  * travis-cijoined
21:43:12  <travis-ci>[travis-ci] joyent/libuv#281 (refcount - 7cf5154 : Bert Belder): The build is still failing.
21:43:12  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/6257bba...7cf5154
21:43:12  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1340180
21:43:12  * travis-cipart
21:43:58  * travis-cijoined
21:43:58  <travis-ci>[travis-ci] joyent/libuv#282 (refcount - 6e65c79 : Ben Noordhuis): The build is still failing.
21:43:58  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/7cf5154...6e65c79
21:43:58  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1340190
21:43:58  * travis-cipart
21:44:13  * brsonjoined
21:44:15  <piscisaureus_>apparently we have no tests that stress this
21:44:32  <piscisaureus_>which makes sense because the rule of the thumb is "don't touch closing handles"
21:45:19  <bnoordhuis>easy to add one for this particular case, though
21:45:31  <piscisaureus_>I know
21:45:35  <piscisaureus_>but this one is not easy to fix
21:45:41  <piscisaureus_>I would have to shed code sharing
21:45:55  <piscisaureus_>or make uv-common understand UV__CLOSING
21:46:46  <CIA-155>libuv: Bert Belder master * r9cf047e / src/win/internal.h : Windows: remove stray semicolons from internal.h (+26 more commits...) - http://git.io/7mLrbg
21:46:55  <piscisaureus_>shit
21:46:59  <piscisaureus_>pushed to the wrong branch
21:47:19  <bnoordhuis>i feel a force-push coming up :)
21:47:37  * creationixdisables cron auto-pull script
21:47:50  <piscisaureus_>done
21:48:32  <CIA-155>libuv: Bert Belder refcount * r60b5c73 / src/win/internal.h : Windows: remove stray semicolons from internal.h - http://git.io/3JCtyg
21:48:47  * travis-cijoined
21:48:47  <travis-ci>[travis-ci] joyent/libuv#283 (master - 9cf047e : Bert Belder): The build is still failing.
21:48:47  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/ad02404...9cf047e
21:48:47  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1340321
21:48:47  * travis-cipart
21:50:31  <CIA-155>libuv: Bert Belder refcount * rb74fcbb / src/win/pipe.c : Windows: add missing semicolon - http://git.io/4IR_2A
21:50:36  * travis-cijoined
21:50:36  <travis-ci>[travis-ci] joyent/libuv#284 (refcount - 60b5c73 : Bert Belder): The build is still failing.
21:50:36  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/6e65c79...60b5c73
21:50:36  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1340327
21:50:36  * travis-cipart
21:52:35  * travis-cijoined
21:52:35  <travis-ci>[travis-ci] joyent/libuv#285 (refcount - b74fcbb : Bert Belder): The build is still failing.
21:52:35  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/60b5c73...b74fcbb
21:52:35  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1340353
21:52:35  * travis-cipart
21:53:45  <bnoordhuis>piscisaureus_: lgtm
21:53:57  <bnoordhuis>let's merge it and may $DEITY have mercy on our souls
21:54:08  <piscisaureus_>bnoordhuis: ok
21:54:10  <piscisaureus_>bnoordhuis: nice :-)
21:54:15  <AvianFlu>ahahahahha $DEITY
21:54:30  <piscisaureus_>bnoordhuis: so there is still this issue where uv__is_active isn't correct
21:54:48  <piscisaureus_>bnoordhuis: unfortunately I am going to quit now
21:55:05  <piscisaureus_>since I have to get up at 5:30am
21:55:08  <bnoordhuis>squash your commits before you go and i'll merge and update node tomorrow
21:55:12  <piscisaureus_>which is normally about the time I go to bedf
21:55:13  <bnoordhuis>oh, that's quite early :)
21:55:18  <bnoordhuis>indeed
21:55:27  <piscisaureus_>bnoordhuis: which means that I am going to leave y'all right now :-)
21:55:36  <bnoordhuis>sleep tight, bertje
21:55:39  <piscisaureus_>thanks
21:55:44  <bnoordhuis>have fun in bangkok^krakau
21:56:00  * felixgequit (Quit: felixge)
21:56:00  <piscisaureus_>I didn't like bangkok
21:56:07  <piscisaureus_>too dirty, too bosy
21:56:09  <piscisaureus_>*busy
21:56:12  <piscisaureus_>the rest of thailand was nice tho
21:56:28  <bnoordhuis>too many girls that beat you at arm wrestling
21:56:29  <piscisaureus_>anyway
21:56:45  <bnoordhuis>well, girls
21:56:50  <bnoordhuis>have fun, bertje :)
21:56:56  <piscisaureus_>laturrrr
21:57:45  <isaacs>g'nite
21:58:56  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
21:59:46  * isaacsquit (Remote host closed the connection)
22:06:52  * ira_joined
22:07:08  * iraquit (Disconnected by services)
22:07:08  * ira_changed nick to ira
22:09:15  * perezdquit (Quit: perezd)
22:12:25  <tjfontaine>haha "girls"
22:13:07  <tjfontaine>bnoordhuis: I am, but I won't be back until saturday to finish that, even though it's trivial
22:13:43  <bnoordhuis>tjfontaine: okay, no rush
22:16:12  <CIA-155>node: Kevin Bowman master * rdfcdd5b / (doc/api/fs.markdown lib/fs.js test/simple/test-fs-open.js): fs: add sync open flags 'rs' and 'rs+' - http://git.io/6i7Fhg
22:53:42  * mikealquit (Quit: Leaving.)
22:58:54  * mikealjoined
22:59:19  * perezdjoined
22:59:22  * mikealquit (Read error: Connection reset by peer)
22:59:26  * mikealjoined
23:08:14  <TooTallNate>bnoordhuis: yt?
23:08:25  <TooTallNate>is there a way to make g++ on solaris use a different `ld`?
23:13:32  <TooTallNate>dap: ^
23:15:19  <dap>TooTallNate: I'll check with someone who would know better, but I believe that attempting to use any linker other than the one that comes with the system generally ends in tears.
23:15:52  <TooTallNate>dap: well i'm basically running into this: https://www.google.com/search?ix=seb&sourceid=chrome&ie=UTF-8&q=ld%3A+fatal%3A+relocations+remain+against+allocatable+but+non-writable+sections
23:17:05  <TooTallNate>dap: p.s. i'm reading your "Where does your Node program spend its time?" article now
23:17:10  <dap>cool
23:17:14  <TooTallNate>dying to test it out :p
23:17:14  <dap>I'm looking into that problem
23:17:17  <dap>cool :)
23:22:18  <bnoordhuis>TooTallNate: what symbols is it complaining about?
23:22:39  <TooTallNate>bnoordhuis: ffi_closure_SYSV_inner 0xd2 /home/node/node-ffi/deps/libffi/.libs/libffi.a(sysv.o)
23:22:49  <TooTallNate>one of the one's i'm in the static libffi i'm trying to link to
23:23:05  <bnoordhuis>are you trying to build a binary or a shared object?
23:23:15  <TooTallNate>a node module, so a shared object
23:23:25  <bnoordhuis>make sure you compile everything with -fPIC
23:24:47  <TooTallNate>bnoordhuis: that's only needed for compiling right? not when linking?
23:24:59  <bnoordhuis>yes
23:26:11  <dap>And you're using -shared?
23:27:27  <dap>err, -G
23:27:36  * loladiroquit (Quit: loladiro)
23:27:43  <dap>I think the gcc option is -shared, and our ld option is -G
23:28:17  <TooTallNate>dap: acutally... it doesn't look like i am...
23:29:22  * isaacsjoined
23:31:38  <TooTallNate>dap: interesting. if i try to compile libffi with `LDFLAGS="-shared" ./configure` then configure fails
23:32:13  <dap>how does it fail?
23:32:28  <TooTallNate>dap: relevant part of the config.log: https://gist.github.com/6da31fe5d619e7917375
23:32:40  <TooTallNate>essentially the same error I'm seeing :D
23:35:58  <dap>TooTallNate: can you print out the gcc invocations that configure is running?
23:36:04  <dap>so we can see exactly what it's trying to do?
23:38:32  <TooTallNate>dap: well this seems a little interesting: https://gist.github.com/9331471de95b907f1824
23:39:04  <dap>what gcc is this?
23:39:10  <dap>and what system is this?
23:39:14  <TooTallNate>gcc version 3.4.6
23:39:21  <TooTallNate>it's one of the joyent smartmachines
23:39:24  <TooTallNate>tootallnate.no.de
23:39:46  <dap>which gcc?
23:39:49  <dap>that is, `which gcc` ?
23:39:58  <TooTallNate> /home/node/local/bin/gcc
23:40:07  <dap>did you build that yourself, or was that there already?
23:40:13  <TooTallNate>already there
23:40:30  * TooTallNatehas never been able to successfully buld gcc on my own :(
23:41:48  <dap>I'm asking around internally if someone's seen this. (FWIW, most of our customers are using a pkgsrc gcc, and a much newer one at that.)
23:42:00  <bnoordhuis>TooTallNate: you can't compile an executable with -shared, you silly :)
23:42:13  <TooTallNate>hahaha, wow, pwned
23:43:08  <dap>oh, yeah. duh :)
23:43:25  <bnoordhuis>TooTallNate: doesn't the configure script have some kind of --with-shared option?
23:43:52  <TooTallNate>bnoordhuis: it does, but i'm trying to build a static version
23:44:04  <TooTallNate>and statically compile that into my node native module
23:44:27  <TooTallNate>dap: is there a way to upgrade gcc on this smart machine?
23:44:54  <dap>TooTallNate: you can try installing it from pkgsrc, which would be something like "pkgin install gcc". You may need to be the "admin" user.
23:45:11  <TooTallNate>"nothing to do."
23:45:18  <dap>ls /opt/local/bin/gcc
23:45:45  <TooTallNate>oh wow
23:45:49  <TooTallNate>that's a much newer version
23:45:56  <dap>that's good, right? :)
23:45:59  <dap>what version?
23:46:04  <TooTallNate>4.5.2
23:48:05  <TooTallNate>dap: wow, ok that did the trick :)
23:48:13  <TooTallNate>thanks a million!
23:49:02  <dap>using the newer gcc, your thing works fine?
23:49:30  <TooTallNate>dap: indeed, 100% passing tests :)
23:49:50  <TooTallNate>now to remove that old gcc from my $PATH
23:50:02  <dap>Excellent