00:01:42  <ryah>mjr_: any luck with 'close' ?
00:01:56  <mjr_>Haven't put it in yet. Too much other stuff on fire.
00:02:22  <mjr_>Seeing this problem makes me realize that pushing back pressure to the mobile clients is way more important.
00:02:40  <mjr_>I don't mind restarting the process every day or so, just not every 15 mins. :)
00:05:27  <mjr_>https://skitch.com/mranney/gp795/voxer-metrics
00:06:18  <mjr_>The blue line is the average RSS of all router processes across the cluster, the purple line is the 95th percentile.
00:07:03  <mjr_>units are KB as reported by ps, so 1.7M is 1.7GB.
00:09:12  <ryah>are all the node routers restarted at once when the line drops?
00:09:27  <ryah>right before "add more capcity" ?
00:11:55  <mjr_>yeah
00:12:14  <mjr_>oh, actually that arrow is wrong for add capacity
00:12:23  <mjr_>That growth was some other bug
00:12:30  <mjr_>Or it was Danny doing heap profiling
00:12:47  <mjr_>I guess it keeps the heap snapshots in memory, so your RSS more than doubles.
00:13:09  <mjr_>Add more capacity goes just to the left a bit
00:13:45  <mjr_>https://skitch.com/mranney/gp6bc/voxer-metrics
00:14:40  <mjr_>So we made the server fast that was slow, so we don't get behind anymore.
00:14:47  <isaacs>bnoordhuis, ryah: https://github.com/isaacs/node/commit/0636964e7d5a823bfe322b7f726f5d37a08f60a9
00:16:22  <ryah>isaacs: did you see indutny's pull request?
00:16:40  <isaacs>ryah: the zlib thing?
00:16:42  <isaacs>dictionaries?
00:16:48  <ryah>isaacs: for pause/resume with stdin
00:16:54  <isaacs>oh, no, i didn't
00:17:02  <isaacs>hahah
00:17:03  <ryah>#2276
00:17:05  <isaacs>that's funny :)
00:17:39  <isaacs>looks like we were doing this at exactly the same time.
00:19:46  * piscisaureus__to bed
00:21:03  <ryah>isaacs: let me just run a test - but i think it's okay
00:21:13  <CIA-111>node: isaacs v0.6 * rdb27381 / (5 files in 4 dirs):
00:21:13  <CIA-111>node: s/NPM/npm/
00:21:13  <CIA-111>node: http://npmjs.org/doc/faq.html#If-npm-is-an-acronym-why-is-it-never-capitalized - http://git.io/bpyrXA
00:21:29  <isaacs>ryah: it looks like mine and indutny's stdin fixes are almost identical, actually
00:21:47  <isaacs>i just added a test and also added a thing for pipes
00:22:06  <isaacs>oh, no, wait, i took the pipe thing out
00:25:39  * mralephquit (Quit: Leaving.)
00:26:46  <CIA-111>node: Ryan Dahl v0.6 * r6f86b9c / test/simple/test-setproctitle.js : Disable test-setproctitle on darwin - http://git.io/TSeA5Q
00:28:15  <isaacs>ah, ok, got it working for pipes, too.
00:28:54  <isaacs>er, except for the debugger client, apparently...
00:32:29  <ryah>isaacs: ok lgt
00:32:30  <ryah>m
00:32:56  <isaacs>hold on, i'm failing some tests.
00:33:07  <isaacs>lemme pull out the pipe_wrap stuff. it's not working anyway
00:43:40  <isaacs>nvm, the pipe_wrap ref/unref stuff doesn't seem to make any difference to anything, afaict
00:43:47  <isaacs>i'm not even sure how to exercise that code path.
00:45:39  <isaacs>ryah: should i rip out the pipe_wrap bits?
00:47:58  <CIA-111>node: isaacs v0.6 * rcf20b6b / (7 files in 3 dirs): (log message trimmed)
00:47:58  <CIA-111>node: Fix #2257 pause/resume semantics for stdin
00:47:58  <CIA-111>node: This makes it so that the stdin TTY-wrap stream gets ref'ed on
00:47:58  <CIA-111>node: .resume() and unref'ed on .pause()
00:47:58  <CIA-111>node: The semantics of the names "pause" and "resume" are a bit weird, but the
00:47:58  <CIA-111>node: important thing is that this corrects an API change from 0.4 -> 0.6
00:47:59  <CIA-111>node: which made it impossible to read from stdin multiple times, without
00:54:35  <CIA-111>node: Maciej Małecki v0.6 * r9023b0b / .travis.yml :
00:54:35  <CIA-111>node: test: add `.travis.yml` for testing on Travis CI
00:54:35  <CIA-111>node: As discussed with @isaacs, build reports will be sent to #libuv IRC
00:54:35  <CIA-111>node: channel. E-mail notifications are turned off so that Travis doesn't
00:54:35  <CIA-111>node: bother committers about failures in forks. - http://git.io/POnMcA
00:54:36  <CIA-111>node: Maciej Małecki v0.6 * r89e894b / README.md : doc: add Travis CI build status image - http://git.io/Jrho5g
00:56:53  <isaacs>watch the excitement at home: http://travis-ci.org/#!/joyent/node/builds/377315
00:58:26  <isaacs>whoops. it tried to build master instead of v0.6
00:59:53  * sh1mmerquit (Quit: sh1mmer)
01:07:12  <CIA-111>node: Ryan Dahl master * r21d081f / (427 files in 26 dirs): Upgrade V8 to 3.7.12 - http://git.io/GDDSPw
01:07:17  * Raynosjoined
01:07:32  <isaacs>ryah: that was in 0.6, ormaster?
01:10:06  <ryah>master
01:13:37  <isaacs>yeah, i see.
01:13:46  <isaacs>ryah: mind if i cherry-pick the .travis.yml into master?
01:13:54  <isaacs>ryah: or can we merge v0.6 into it pretty soon?
01:14:04  <isaacs>this is kind of silly: http://travis-ci.org/#!/joyent/node/builds/377347
01:14:25  <isaacs>i guess it runs `rake test` or something if you don't have any yml file there.
01:15:07  <mmalecki>yes
01:15:26  <mmalecki>it's a good idea to detect package.json tho
01:17:52  <isaacs>mmalecki: it should detect a +x ./configure script, and run it. and then detect a Makefile, and run `make test1`
01:18:10  <ryah>i guess we should add a rakefile
01:18:16  <ryah>(no)
01:18:16  <isaacs>ryah: noooooo!
01:18:23  <isaacs>maybe a cakefile
01:18:57  <mmalecki>isaacs: right. then it could proceed to language-specific tasks. makes sense
01:19:25  <isaacs>mmalecki: every program on unix should have ./configure && make && make install
01:19:31  <isaacs>mmalecki: and the good ones have make test
01:20:25  <mmalecki>isaacs: do I lose internet points if my program doesn't have ./configure?
01:21:03  <isaacs>mmalecki: i have put a blank #!/bin/sh script there, just to satisfy various build systems :)
01:21:22  <Raynos>do you really need a make file if your program isn't C?
01:21:56  * piscisaureus__quit (Quit: ~ Trillian Astra - www.trillian.im ~)
01:22:28  <isaacs>Raynos: make isn't just for C
01:22:36  <isaacs>make is for anything that gets built or generated
01:22:44  <isaacs>npm uses make to build its docs, fetch submodules, you name it
01:22:57  <Raynos>I know it's not. I use one for my code. Just saying there are other tools for non-C platforms
01:23:54  <ryah>Raynos: node is written in c
01:25:02  <Raynos>I know. I tried to say "should you prefer make over alternative build systems provided by other languages"
01:37:08  * dapquit (Quit: Leaving.)
01:39:48  <isaacs>ryah: any objection to this dictionary thing? it looks like indutny fixed all the things that bnoordhuis complained about, seems fine to me.
02:06:46  <isaacs>man, i need to just have two separate checkouts of node, one for master and another for v0.6. continually rebuilding is so painful;
02:10:10  * brsonquit (Quit: leaving)
02:11:17  <ryah>isaacs: i use two directories
02:11:32  <ryah>~/projects/node and ~/projects/node-v0.6
02:11:49  <ryah>especially now that V8 is different
02:11:56  <isaacs>yeah, it's terrible
02:13:06  <isaacs>tests seem to run faster on master, though
02:14:15  <isaacs>k, landing zlib dicts. tests pass.
02:14:36  <isaacs>or at least, no new tests fail.
02:15:34  <CIA-111>node: Fedor Indutny master * re609195 / (4 files in 4 dirs): [zlib] added dictionary support - http://git.io/oOK6jg
02:15:52  * sh1mmerjoined
02:16:08  <ryah>isaacs: very good
02:16:37  <isaacs>ryah: hey, it seems we do need to do the ref/unref on pipes, too. got a failing test that it fixes.
02:17:18  <ryah>isaacs: ok
02:17:21  <ryah>which test?
02:17:32  <isaacs>https://github.com/isaacs/node/commit/d0f5bd0f7ab604b5f47d722a7be15e547a5cbe0f
02:18:37  <isaacs>ryah: basically just run the other pause/resume test, but in a child proc
02:18:41  <isaacs>it sits there waiting forever.
02:20:54  <isaacs>gotta run.
02:21:04  * isaacsquit (Quit: isaacs)
02:23:43  * AvianFluquit (Quit: Leaving)
02:35:01  * pieternquit (Quit: pietern)
02:48:54  * Marakquit (Ping timeout: 265 seconds)
03:13:14  * ericktquit (Ping timeout: 244 seconds)
03:20:57  * ericktjoined
03:30:00  * Raynospart
03:31:51  * mikealjoined
03:38:55  <mikeal>mjr_: hrm....
03:39:20  <mikeal>off the top of my head, if you aborted a request before it got a socket assigned i could see it actually making the request anyway
03:39:23  <mikeal>let me look at the code
03:40:00  <mikeal>ahhh, weird
03:40:29  <mikeal>it shouldn't leak tho
03:40:43  <mikeal>https://github.com/joyent/node/blob/master/lib/http.js#L1077
03:49:00  <mjr_>Hey mikeal
03:49:28  <mjr_>What about the case that bnoordhuis was asking about, where the incoming request emits close, because they sat there for 2 mins?
03:49:36  <mjr_>And I don't have a close listener
03:51:39  <mikeal>the agent only listens for close()
03:51:42  <mikeal>er "close"
03:52:08  <mikeal>on the socket
03:52:32  <mjr_>On my incoming request though, i don't listen for close, only aborted. This could leave the outgoing request hanging around for a while
03:53:08  <mjr_>When it finally completes, I presumably write to the response, which is no longer connected to anything.
03:55:35  <mikeal>wait, are you talking about the server now?
03:58:24  <mikeal>fucking destroy/close/destroySoon/abort nonsense
04:01:48  <mjr_>So I have a proxy server, more or less
04:02:04  * ericktquit (Quit: erickt)
04:02:04  <mjr_>On an incoming http request, I make several outgoing http requests
04:02:31  <mjr_>Only when I hear back form all outgoing requests do I respond to the client.
04:03:54  <mikeal>so, if the ServerRequest instance gets aborted, you also abort the ClientRequest instances?
04:26:07  <mjr_>I forget which is which
04:26:23  <mjr_>ServerRequest is the thing you get when you are a server and there's an incoming client?
04:27:00  <mjr_>If so, then yes, we listen for "aborted" on that request and we'll call abort() on all of the outgoing requests at that point.
04:27:06  * mikealquit (Quit: Leaving.)
04:28:36  <indutny>heya
04:29:40  <indutny>ryah: are we going to pull my zlib dictionary into 0.6.x ?
04:30:07  <indutny>ryah: it isn't breaking any existing APIs, just filling some void space in zlib implementation
04:30:15  <indutny>ryah: (I add examples into docs)
04:35:02  * ericktjoined
06:37:51  * ericktquit (Quit: erickt)
07:57:27  * mikealjoined
08:06:12  * sh1mmerquit (Quit: sh1mmer)
08:08:27  * sh1mmerjoined
08:10:12  * sh1mmerquit (Client Quit)
08:10:53  <ryah>indutny: no in master
08:21:45  * mikealquit (Quit: Leaving.)
08:23:05  * mikealjoined
08:24:50  * mikealquit (Client Quit)
08:29:03  <indutny>ryah: oh, not good
08:29:07  <indutny>why not 0.6.x?
08:34:34  * mralephjoined
09:04:20  * kuebkjoined
09:21:53  * indexzeroquit (Quit: indexzero)
09:28:59  * mralephquit (Ping timeout: 252 seconds)
09:51:54  * mralephjoined
09:55:22  * mjr_quit (Quit: mjr_)
10:08:15  * indexzerojoined
10:10:06  * indexzeroquit (Client Quit)
10:12:25  * mikealjoined
10:14:09  * mikealquit (Client Quit)
10:26:38  * mralephquit (Quit: Leaving.)
10:41:08  * piscisaureus_joined
13:38:34  * creationixquit (Quit: ZNC - http://znc.sourceforge.net)
13:40:34  * creationixjoined
15:03:36  * ljacksonquit (Quit: Leaving)
15:03:58  * DrPizza_quit (Remote host closed the connection)
15:05:20  * DrPizzajoined
15:33:12  * bnoordhuisjoined
15:37:04  <piscisaureus_>ryah: am am too busy with other stuff today to work on the domains list
15:37:17  <piscisaureus_>s/am/have been/
15:40:21  * ericktjoined
15:57:32  * isaacsjoined
15:58:32  * ericktquit (Quit: erickt)
16:00:09  * DrPizzaquit (Quit: alice.)
16:00:58  * indexzerojoined
16:02:16  * DrPizzajoined
16:08:43  * indexzeroquit (Quit: indexzero)
16:21:14  * ericktjoined
16:22:53  * kuebkquit (Quit: Leaving.)
16:24:00  <bnoordhuis>piscisaureus_: http://groups.google.com/group/nodejs/browse_thread/thread/a9cfe45c2cb7afcd <- run node as a windows service
16:24:11  <bnoordhuis>is that something we should support sometime in the future?
16:24:41  * pieternjoined
16:25:31  * ericktquit (Ping timeout: 252 seconds)
16:28:09  * ericktjoined
16:28:12  <indutny>bnoordhuis: I think no, we ain't supporting running node as daemon in linu
16:28:16  <indutny>s/linu/linux
16:28:43  <bnoordhuis>indutny: yes, but that's because you can easily do that from inside a module
16:29:02  <bnoordhuis>i'm not clear on if it works the same way on windows
16:29:41  <indutny>bnoordhuis: ah, seems clear now
16:30:19  <indutny>bnoordhuis: but that should be implemented on application level anyway
16:30:23  <indutny>otherwise it's useless
16:30:25  <bnoordhuis>indutny: also, unix, not linux - not all the world is linux >:(
16:30:31  <bnoordhuis>(only the parts that matter!)
16:30:35  <indutny>hehe, I'm on osx
16:31:04  <indutny>bnoordhuis: so something like --daemonize flag
16:31:33  <bnoordhuis>indutny: oh, i wasn't that far yet - just curious if it's something that belongs in node core
16:32:00  <mmalecki>indutny++
16:32:17  <indutny>bnoordhuis: yes, it should be in core
16:32:19  <mmalecki>bnoordhuis: we shouldn't support it. people can easily write a wrapper.
16:32:30  <indutny>mmalecki: do you think so?
16:32:42  <indutny>mmalecki: windows services are kinda different
16:32:53  <mmalecki>indutny: (or someone can, but I think that you can simply give it a command)
16:32:55  <indutny>mmalecki: you'll need to have some callbacks in your app
16:33:35  <mmalecki>indutny: let me look up the api
16:33:36  <indutny>mmalecki: http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase(v=vs.80).aspx#Y22
16:34:33  <indutny>mmalecki: ah, it seems that System::ServiceProcess::ServiceBase::Run can be run in module
16:34:59  <indutny>bnoordhuis: mmalecki is right, looks like it's possible to implement that on application level: like forever for unixes
16:35:11  <indutny>or just make forever win-compatible
16:36:34  <mmalecki>forever will be compatible :)
16:36:38  <piscisaureus_>indutny: you're a smart kid but that link ... *sigh*
16:36:58  <mmalecki>oh, wait, that link points to .net api
16:37:04  <mmalecki>we need win32 api
16:37:22  * brsonjoined
16:37:25  <mmalecki>(I think)
16:37:26  <piscisaureus_>mmalecki: also, this basically adds an entry point for a service to the app
16:38:23  <piscisaureus_>mmalecki: http://msdn.microsoft.com/en-us/library/ms687416%28v=VS.85%29.aspx
16:38:46  * ericktquit (Ping timeout: 268 seconds)
16:38:48  <piscisaureus_>also, http://msdn.microsoft.com/en-us/library/ms685477%28v=VS.85%29.aspx
16:38:53  <piscisaureus_>it's not very difficult to do
16:39:13  <piscisaureus_>we just need to add an extra entry point to node_main.cc and handle control signals
16:39:35  <mmalecki>please don't
16:39:39  <piscisaureus_>which won't be that hard after we land runner-mei's signals patch (or something similar)
16:40:03  <piscisaureus_>mmalecki: what and why not?
16:40:32  <mmalecki>please don't put these entry points in the core. it's really userland thing to do.
16:40:42  <piscisaureus_>an application entry point?
16:40:53  <piscisaureus_>you can't add an entry point in user land :-/
16:41:12  * bnoordhuisthought so, that's why he asked
16:41:14  <piscisaureus_>or do you want the user to patch the .exe to add an extra symbol
16:41:39  <piscisaureus_>mmalecki: an entry point is something similar to the main function (ServiceMain in this case)
16:42:37  <mmalecki>piscisaureus_: ok, but you can write a simple supervisor in user land, can't you?
16:43:06  <mmalecki>I mean, it's really a windows-ism.
16:43:32  <piscisaureus_>mmalecki: it doesn't matter, because it doesn't add anything to the node api
16:43:38  <piscisaureus_>well maybe a command-line flag or 2
16:44:20  <indutny>piscisaureus_: so we'll need to add unix support too :)
16:44:32  <piscisaureus_>no, why?
16:45:27  <piscisaureus_>unix services work differently
16:45:36  <piscisaureus_>they're just normal programs
16:45:37  <indutny>piscisaureus_: yes, but if we'll add --daemonize flag
16:46:01  <indutny>piscisaureus_: so it'l just detach on unix
16:46:15  <mmalecki>fork and detach, I think
16:46:19  <piscisaureus_>indutny: that's very un-similar to how services work on windows
16:46:21  <indutny>mmalecki: ;)
16:46:23  <bnoordhuis>indutny: it's something you can do from a module so no
16:47:05  <mmalecki>uhm, really? we're going to have --daemonize for windows and no --daemonize for unix?
16:47:21  <piscisaureus_>a service is run line this: execution begins in ServiceMain() and not in main
16:47:33  <mmalecki>bnoordhuis: also, it's very hard. that's why I'm rewriting forever, looks like daemonizing *is* hard.
16:47:50  <piscisaureus_>so if you would add node to the list of services in windows, it'll not be able to start it
16:47:51  <bnoordhuis>mmalecki: why? (as in: why is it hard?)
16:48:15  <piscisaureus_>so if we add an extra symbol to node.exe, it'll just work \o/ hurray
16:48:40  <mmalecki>bnoordhuis: actual problem here was that fds got "lost" somewhere
16:48:56  <bnoordhuis>mmalecki: expand please?
16:49:14  <bnoordhuis>do you mean O_CLOEXEC / FD_CLOEXEC?
16:49:45  <mmalecki>bnoordhuis: in forever we open a unix socket to make daemon accessible somehow. in 0.4 it worked but in 0.6 this socket was created but nothing listened on it.
16:50:51  <bnoordhuis>mmalecki: after the fork?
16:51:03  <mmalecki>bnoordhuis: yeah
16:51:10  <mmalecki>bnoordhuis: I'll show you the code
16:51:39  <bnoordhuis>no need, i know what the issue is
16:51:55  <bnoordhuis>provided you use the fork() syscall, not child_process.fork()
16:52:07  <bnoordhuis>(we really should have given that function another name)
16:52:09  <mmalecki>yes, that's what daemon.node uses
16:52:24  <mmalecki>fork() syscall, I mean
16:52:50  * indexzerojoined
16:52:52  * indexzeroquit (Client Quit)
16:52:56  <bnoordhuis>mmalecki: do you exec / execve afterwards?
16:53:43  <mmalecki>bnoordhuis: that's what we do https://github.com/indexzero/daemon.node/blob/master/src/daemon.cc
16:54:46  <bnoordhuis>mmalecki: right, the issue is that libev and libeio are not really fork-safe
16:55:10  <mmalecki>that's understandable
16:55:41  <mmalecki>weird thing is that it worked in 0.4 but doesn't in 0.6
16:56:07  <bnoordhuis>not that weird, lots of changes between 0.4 and 0.6
16:56:31  <mmalecki>o rly?
16:57:07  <mmalecki>man, I ported this stuff. I know.
16:57:15  <bnoordhuis>not really - we just copied lots of code back and forth so it looked like we were busy
16:57:41  <mmalecki>looks like what I do every day!
16:58:07  <indutny>:)
16:58:33  <mmalecki>haha, I'll start saying things like that at standup calls
16:59:04  * brsonquit (Ping timeout: 248 seconds)
16:59:38  <mmalecki>bnoordhuis: but granted, we probably shouldn't use fork syscall at all.
17:00:34  <bnoordhuis>mmalecki: you cannot *not* use it if you want to daemonize
17:00:48  <bnoordhuis>but it's not a safe thing to do once the event loop has started
17:00:59  <mmalecki>bnoordhuis: I can :)
17:01:10  <mmalecki>bnoordhuis: actually, more of a workaround, but still, it works
17:01:50  <mmalecki>I present you forever with no fork() syscall! https://github.com/nodejitsu/forever/pull/163
17:05:23  <bnoordhuis>mmalecki: good!
17:06:41  <mmalecki>bnoordhuis: and this is going to get rewritten anyway (that's what I told my boss. in fact, I'll just copy code around and get paid for that)
17:07:04  <bnoordhuis>isn't it great to be a programmer?
17:07:22  <mmalecki>indeed. http://www.owned.lv/2707/I-did-nothing-today-and-still-got-paid/
17:15:19  <indutny>ryah: yt?
17:15:45  * sh1mmerjoined
17:16:30  * piscisaureus__joined
17:16:58  * piscisaureus_quit (Read error: Connection reset by peer)
17:19:54  * ericktjoined
17:22:46  * sh1mmerquit (Quit: sh1mmer)
17:49:19  <ryah>indutny: yep
17:49:22  <ryah>just walked in
17:49:25  <ryah>indutny: what's up
17:52:35  <indutny>ryah: can we discuss zlib thing?
17:52:39  <indutny>ryah: good morning!
17:53:17  <ryah>indutny: okay
17:53:25  <ryah>indutny: adds an option, which is an api change
17:53:35  <ryah>you'll need to wait for v0.8
17:53:46  <indutny>ryah: heh, discussing finished :)
17:53:52  <indutny>s/discussing/discussion
17:53:58  <indutny>haha
17:54:18  <ryah>i know it sucks, but we need to treat our stability promises seriously
17:54:25  <indutny>ryah: okay
17:54:29  <ryah>we *will* get v0.8 out in january
17:54:43  <ryah>so it's not going to be forever until your code sees daylight
17:54:47  <indutny>ryah: I've a birthday in january
17:55:02  <indutny>ryah: heh, I just waited for 0.6.x since summer :)
17:55:04  <ryah>me too - it will be our combined present
17:55:12  <indutny>ryah: nice!
17:55:48  <ryah>indutny: you can help by not allowing us to slip the release
17:55:54  <ryah>(which i love to do)
17:56:31  <ryah>bnoordhuis: howzit?
17:56:48  <ryah>bnoordhuis: i want to do some hacking today
18:01:29  <ryah>bnoordhuis: i want to land a patch in master that moves all static vars into a single file
18:01:42  <ryah>bnoordhuis: i think we can do that safely outside of the isolates
18:01:43  <isaacs>ryah: 2 quick questions: a) ok to land https://github.com/isaacs/node/commit/d0f5bd0f7ab604b5f47d722a7be15e547a5cbe0f ? b) when are we merging 0.6 into master?
18:01:50  * ljacksonjoined
18:02:38  <isaacs>ryah: i'd backed that out of the original one because i had flipped the "unref" and "ref" calls, and was not seeing why the test was failing, because i'm dumb.
18:03:26  <ryah>isaacs: this is going to cause an extra unref call for TCP streams when they pause
18:03:29  <ryah>isaacs: or?
18:03:38  <ryah>isaacs: er extra boundary crossing
18:03:42  <isaacs>ryah: tcpwrap doesn't have _handle.unref() and _handle.ref
18:03:55  <ryah>oh okay
18:03:58  <isaacs>but we should bench it, to be sure
18:04:07  <ryah>well - i guess it's okay then...
18:04:17  <isaacs>but yeah, that's why i just added it in pipewrap and ttywrap, not tcpwrap
18:04:30  <ryah>isaacs: can you make a comment in prototype.pause about the fact that this is an undesired bounary crossing
18:04:39  <isaacs>ok
18:04:53  <ryah>also a coment in test/simple/test-stdin-child-proc.js about what this is testing
18:05:08  <ryah>i'll merge v0.6 now
18:06:19  <ryah>isaacs:
18:06:21  <ryah><<<<<<< HEAD
18:06:22  <ryah> if (wrap->unref) {
18:06:22  <ryah> uv_ref(NODE_LOOP());
18:06:22  <ryah> wrap->unref = false;
18:06:24  <ryah> }
18:06:26  <ryah>=======
18:06:29  <ryah> HandleWrap::Ref(args);
18:06:31  <ryah>>>>>>>> origin/v0.6
18:06:34  <ryah>^-- this is in handle_wrap.cc
18:06:36  <ryah>what should i choose?
18:06:54  <isaacs>1 sec
18:07:24  <isaacs>choose HandleWrap::Ref(args);
18:07:36  <isaacs>either is fine, it's just dry-er
18:07:57  <isaacs>i guess it saves an unwrap call to do it inline
18:08:11  <isaacs>dunno how relevant that is
18:12:55  <ryah>who changed it to HandleWrap::Ref - you?
18:14:13  * brsonjoined
18:14:45  <isaacs>ryah: yes
18:15:32  <isaacs>but i'm not attached to it at all.
18:16:24  <ryah>k
18:16:31  <isaacs>https://github.com/isaacs/node/commit/580e67015c464e8d2746fed9d1f2dcd26138aaef
18:16:37  <ryah>just understanding how to merge :)
18:17:54  <ryah>isaacs: thanks lgtm
18:18:00  <isaacs>ryah: i think i put that in there when i was trying to figure out wth that code was actually doing.
18:18:20  <isaacs>there's a bit of "set this to true to not undo the thing we maybe haven't undone"
18:18:52  <ryah>this is all for stdin, right?
18:19:01  * indexzerojoined
18:19:18  <ryah>isaacs: we might be able to come up with a better solution to this...
18:19:23  <isaacs>for sure
18:19:36  <ryah>isaacs: maybe we can set a special flag in HandleWrap for stdin handles
18:19:43  <ryah>and do the ref/unref there
18:19:49  <ryah>all in c
18:20:10  <isaacs>that'd probably be good
18:20:11  <ryah>the HandleWrap::unref was only created for stdout- i think
18:20:24  <isaacs>well, it was already being done for stdin
18:20:26  <isaacs>just, wrongly
18:20:52  <ryah>i'd rather avoid binding ref/unref in js
18:21:09  <ryah>the handles wraps should just act correctly
18:21:12  <isaacs>agreed
18:21:43  * sh1mmerjoined
18:21:56  <isaacs>stdio is hard.
18:22:03  <ryah>so what about deref-ing right before we call uv_read_stop()
18:22:26  <ryah>in src/stream_wrap.cc
18:22:31  <isaacs>ryah: the issue is that it needs to be tied to pause/resume for stdin. or, to something with the same semantics as what we have now
18:22:46  <isaacs>like, "I'm done reading for now, and if nothing else needs to read again, go ahead and close"
18:22:52  <isaacs>without forcibly closing stdin
18:27:31  <ryah>isaacs: so currently streams don't deref on uv_read_stop() (AKA pause)
18:27:40  <ryah>but you can probably deref there and it won't break any tests
18:27:50  <ryah>i just never did it because it wasn't breaking anythign
18:28:08  <isaacs>ryah: sure.
18:28:14  <isaacs>we've got some tests that are broken wihtout doing it right, now
18:28:42  <isaacs>so i can't see any harm in trying other things. you'd know better than i do what makes sense at that level.
18:30:19  <piscisaureus__>ryah: isaacs: in that case you should ref() on write
18:35:44  <isaacs>ryah: so, short term, land the pipe thing?
18:35:55  <isaacs>oh, you already said lgtm, missed that, sorry
18:38:22  <CIA-111>node: isaacs v0.6 * r580e670 / (lib/net.js test/simple/test-stdin-child-proc.js): Apply #2257 fix for Pipe streams as well as TTYs - http://git.io/fq9WlA
18:38:30  <isaacs>let's see if travis does its thing...
18:39:54  <mmalecki>isaacs: yes http://travis-ci.org/#!/joyent/node/builds/379846
18:42:25  <isaacs>ooh, compiling v8
18:42:38  <piscisaureus__>awesome
18:43:19  <isaacs>it's going to fail, of course, because we still have a few failing tests, don't we?
18:43:21  <piscisaureus__>I wonder why it says: Duration 1 hr 4 min 48 sec
18:43:29  <mmalecki>piscisaureus__: bug
18:43:41  <piscisaureus__>who's paying for that thing anyway?
18:43:54  <piscisaureus__>(or is that a very unreasonable question?)
18:43:55  <mmalecki>piscisaureus__: known issue, I might get to it this weekend
18:44:27  <mmalecki>piscisaureus__: there's list of sponsors on the right side
18:44:35  * kuebk^joined
18:44:39  <piscisaureus__>heh
18:44:43  * piscisaureus__turns off adblock
18:44:53  <mmalecki>compiled :)
18:46:13  * travis-cijoined
18:46:13  <travis-ci>[travis-ci] joyent/node#5 (v0.6 - 580e670 : isaacs): The build passed.
18:46:13  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/89e894b...580e670
18:46:13  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/379845
18:46:13  * travis-cipart
18:46:20  <mmalecki>all tests passed, it's green!
18:46:22  <isaacs>huzzah!!
18:46:50  <isaacs>maybe it's just on my mac that the debugger client tests time out and fail
18:47:05  <piscisaureus__>happens on my mac too
18:47:07  <piscisaureus__>and on windows
18:47:11  <piscisaureus__>seems to hang
18:47:27  <mmalecki>debugger tests pass for me, I think
18:47:35  <mmalecki>(on Mac)
18:48:05  <piscisaureus__>mmalecki: how is security organized on travis?
18:48:05  * AvianFlujoined
18:48:23  <piscisaureus__>I mean, what if I put some evil commit in the tree?
18:48:38  <mmalecki>piscisaureus__: it's pretty secure. tests are being run on a vm which is being purged later.
18:48:50  <mmalecki>every time you run tests, you run them in a clean environment
18:49:04  <piscisaureus__>mmalecki: so you could also run different os'es there?
18:49:10  <mmalecki>afaik, we limit only smtp traffic
18:49:12  <piscisaureus__>(solaris anyone?)
18:49:20  <mmalecki>piscisaureus__: yes, you *could*
18:49:48  <mmalecki>piscisaureus__: I mean, sure, it's just a vm
18:50:01  <piscisaureus__>imho this is a much better approach than buildbot
18:50:05  <mmalecki>hah. worth trying.
18:50:16  <mmalecki>:)
18:55:15  <bnoordhuis>ryah: sure, land it
18:55:33  <bnoordhuis>might make v0.6 -> master merges more difficult though
18:55:52  <bnoordhuis>call in 5, guys?
18:58:35  <piscisaureus__>I'm ready
18:58:46  <piscisaureus__>I didn't do anything today btw
18:59:17  <piscisaureus__>very bsy with university crap, which is a bit unexpected
19:03:07  <bnoordhuis>we landed the travis ci stuff? if so, good
19:03:31  <igorzi>call?
19:03:39  <piscisaureus__>ryah: ^
19:08:16  <piscisaureus__>isaacs: yt?
19:13:25  <ryah>yo
19:13:30  <ryah>are you guys on skype already?
19:13:32  <bnoordhuis>yes
19:13:36  <piscisaureus__>yeah waiting for you
19:13:37  <ryah>can you add me
19:13:54  <piscisaureus__>oh no we didn't really start yet
19:14:02  <ryah>oh okay i will start the call
19:15:37  <piscisaureus__>igorzi: ?
19:15:41  <ryah>igorzi: are you on skype?
19:15:54  <igorzi>i should be.. you don't see me?
19:15:59  <ryah>no
19:16:19  <ryah>igorzi: try restarting
19:16:26  <piscisaureus__>igorzi: I also don't see you
19:31:31  <ryah>piscisaureus__:
19:31:31  <ryah>13:22 < TheJH> ryah, thoughts on one node domain per incoming data event for performance analysis? https://github.com/joyent/node/pull/2269
19:37:49  * ericktquit (Ping timeout: 240 seconds)
19:38:36  <isaacs>piscisaureus__: oh, whoops, forgot about that
19:38:43  <isaacs>call finished already?
19:39:13  <piscisaureus__>isaacs: yup, too late :-/
19:39:22  <isaacs>oh, ok
19:55:34  <ryah>igorzi: do you know of an open source project that does custom MSI designs? I can just look at that
19:55:50  <ryah>piscisaureus__: --^
19:57:30  <pquerna>ttp://svn.apache.org/repos/asf/httpd/httpd/win32-msi/trunk/
19:57:32  <pquerna>http://svn.apache.org/repos/asf/httpd/httpd/win32-msi/trunk/
19:57:39  <pquerna>may or may not be helpful, not looked at it for a long time
19:58:10  <ryah>nah this is not custom enough
19:59:34  <ryah>we need to move the text http://tinyclouds.org/splash-brown.png
20:01:15  <piscisaureus__>looks hot
20:01:25  <piscisaureus__>but moving the text hmm
20:01:33  <piscisaureus__>installshield LE :-(
20:02:07  <ryah>what's installshield?
20:02:21  <piscisaureus__>another system for building installers
20:02:25  <ryah>oh
20:02:29  <piscisaureus__>but it's probably not open source
20:02:39  <piscisaureus__>are you sure that wix won't let you?
20:03:03  <ryah>no, i think it can
20:03:10  <ryah>i just can't find the correct incantation
20:03:16  <piscisaureus__>hehe
20:03:27  <piscisaureus__>let me play some age of empires to find out
20:04:38  <igorzi>ryah: wix is open source
20:05:04  <piscisaureus__>ryah: what about drop the text, just show an image?
20:05:28  <piscisaureus__>ryah: the incantations are here: http://wix.sourceforge.net/manual-wix3/WixUI_customizations.htm
20:05:56  <igorzi>ryah: oh.. never mind.. you need some oss project that you can look at for how to do custom msi dialogs?
20:06:23  <ryah>yeah i think i found some good info < http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/How-to-override-TextStyle-td715319.html
20:06:26  <piscisaureus__>aah...
20:06:39  <piscisaureus__>sorry ryah, I though you were looking for a wix replacement
20:06:45  <ryah>piscisaureus__: i'd rather not drop the text if possible
20:06:51  <ryah>i guess there are blind people and stuff
20:14:47  * mralephjoined
20:14:56  * isaacsquit (Quit: isaacs)
20:20:10  <piscisaureus__>ryah: http://geekswithblogs.net/JanS/archive/2008/12/09/making-a-custom-setup-dialog-using-wix-3.0.aspx
20:24:46  <ryah>piscisaureus__: thanks
20:27:37  <ryah>gucci gucci prada prada
20:29:29  <piscisaureus__>badger badger badger badger
20:32:03  <ryah>sometimes im overwhelms by how awesome music is
20:33:18  <bnoordhuis>process.stdin.destroy(); fork('script.js'); // <- bad things happen...
20:34:23  <ryah>let's just no-op process.stdin.destroy()
20:34:28  <ryah>i thought we did anyway
20:34:37  <piscisaureus__>yeah we do
20:34:42  <ryah>why would you want to close stdin?
20:34:42  <piscisaureus__>igor landed a patch for it
20:35:00  <piscisaureus__>because you want silence?
20:35:29  <piscisaureus__>ryah: you going to a coffee shop is pretty much the same as closing stdin
20:37:37  <igorzi>currently we only no-op stdout/stderr.destroy, not stdin
20:38:13  <ryah>closing stdout/stderr is more reasonable than closing stdin, imo
20:38:33  <ryah>graceful vs forceful hangup
20:41:01  <bnoordhuis>another issue is that script.js doesn't quit (never comes out of the event loop)
20:41:30  <bnoordhuis>even if it's empty - probably a ref/unref issue
20:44:26  * ljacksonquit (Read error: Operation timed out)
20:48:41  <CIA-111>node: isaacs master * r580e670 / (lib/net.js test/simple/test-stdin-child-proc.js): Apply #2257 fix for Pipe streams as well as TTYs - http://git.io/fq9WlA
20:48:42  <CIA-111>node: Ryan Dahl master * r2003593 / (27 files in 9 dirs):
20:48:43  <CIA-111>node: Merge remote branch 'origin/v0.6'
20:48:43  <CIA-111>node: Conflicts:
20:48:43  <CIA-111>node: deps/v8/src/debug.cc
20:48:43  <CIA-111>node: deps/v8/src/version.cc
20:48:44  <CIA-111>node: src/node_version.h - http://git.io/FIlUfA
20:59:59  * travis-cijoined
20:59:59  <travis-ci>[travis-ci] joyent/node#6 (master - 2003593 : Ryan Dahl): The build is still failing.
20:59:59  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/e609195...2003593
20:59:59  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/380219
20:59:59  * travis-cipart
21:02:12  * indexzeroquit (Quit: indexzero)
21:03:54  * ericktjoined
21:04:59  * felixgejoined
21:05:55  <bnoordhuis>$ python tools/test.py --mode=debug,release simple/test-child-process-fork3
21:05:55  <bnoordhuis>[00:01|% 100|+ 2|- 0]: Done
21:05:55  <bnoordhuis>$ ./node_g test/simple/test-child-process-fork3.js
21:05:55  <bnoordhuis>(libev) epoll_wait: Bad file descriptor
21:06:01  * bnoordhuishangs head and cries
21:07:02  <CIA-111>node: Ben Noordhuis v0.6 * r57d2857 / deps/uv/src/unix/stream.c : uv: upgrade to 0db3274 - http://git.io/sNNjUA
21:07:05  <CIA-111>node: Ben Noordhuis v0.6 * rfd29448 / (36 files in 3 dirs): test: add missing copyright headers - http://git.io/uTrzyw
21:07:06  <CIA-111>node: Ben Noordhuis v0.6 * r70bc2e3 / (2 files in 2 dirs): test: new test, verify that we don't close and reuse fd 0 - http://git.io/uRBGRQ
21:07:08  <CIA-111>node: Ben Noordhuis v0.6 * r23bb598 / src/node.js :
21:07:08  <CIA-111>node: Remove unused variable.
21:07:08  <CIA-111>node: The file descriptor arg to child_process._forkChild() is not used any more.
21:07:08  <CIA-111>node: Remove it, avoids future confusion. - http://git.io/H_XYfg
21:11:58  <ryah>so one problem with putting all the static vars into a single file is we'll get a bunch of warnings
21:12:04  <ryah>as we include them in each source file
21:12:07  <ryah>for not using all of them
21:12:23  <ryah>../src/node_vars.h:70: warning: ‘node::need_gc’ defined but not used
21:12:44  <bnoordhuis>ryah: annotate them with __attribute__((unused))
21:13:39  <ryah>man
21:13:48  <ryah>all these extensions
21:13:57  <bnoordhuis>awesome, isn't it?
21:14:21  <ryah>what does that do?
21:14:28  <bnoordhuis>make the compiler shut up
21:14:35  <ryah>hm
21:14:47  <ryah>is there a way i can do that for a section of code?
21:15:04  <bnoordhuis>no, it's a per variable / per function annotation
21:15:21  * travis-cijoined
21:15:21  <travis-ci>[travis-ci] joyent/node#7 (v0.6 - fd29448 : Ben Noordhuis): The build was broken.
21:15:21  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/580e670...fd29448
21:15:21  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/380289
21:15:21  * travis-cipart
21:16:37  <ryah>i could have a node_vars.h for each source file
21:16:44  <ryah>only containing those that are sued there...
21:16:52  <ryah>then another which inclues all those..
21:16:56  <bnoordhuis>sued :)
21:17:32  <bnoordhuis>can't you use #ifdef sections? have each file e.g. #define NODE_VARS_SECTION cares_wrap
21:17:58  <bnoordhuis>mmalecki: your travis-ci works like ass in ff 3.6
21:18:25  <bnoordhuis>but it's free so i won't complain too much
21:19:00  <ryah>bnoordhuis: hm that's an idea
21:21:19  <CIA-111>libuv: Ben Noordhuis v0.6 * rb89c31b / src/unix/pipe.c : unix: fix warning: return 0 in function returning void - http://git.io/BqSpnQ
21:22:11  <ryah>maybe i can just stick all global variables into a struct
21:22:33  <ryah>a single static struct
21:22:42  <ryah>then we can use the same struct inside the isolate class
21:23:06  <ryah>i think that will aleviate the warnings
21:23:56  <bnoordhuis>ryah: how are you going to deal with name clashes?
21:25:18  * isaacsjoined
21:26:41  <mmalecki>bnoordhuis: care to explain?
21:26:44  <ryah>bnoordhuis: what do you mean?
21:26:48  <ryah>bnoordhuis: between files?
21:27:29  <mmalecki>bnoordhuis: WAIT. 3.6?
21:27:33  <ryah>can i do this in C++ struct x { int blah = 25; };
21:28:14  <bnoordhuis>ryah: file a and b both having a variable called, say, errno_symbol
21:28:21  <bnoordhuis>no, you can't do that
21:28:41  <ryah>bnoordhuis: oh - well im going to manually fix those
21:28:49  <bnoordhuis>mmalecki: i like my browsers retro
21:28:57  <bnoordhuis>also, it's what ships with ubuntu 10.04
21:29:00  <mmalecki>bnoordhuis: ah, actually, if it's a node build, you might be running into a weird SC issue
21:29:27  <mmalecki>when build is really, really long, it starts using way too much cpu to display this thing.
21:29:36  <ryah>% grep "^static" src/*.cc | grep "="
21:29:37  <ryah>src/node.cc:static int uncaught_exception_counter = 0;
21:29:37  <ryah>src/node.cc:static Isolate* node_isolate = NULL;
21:29:37  <ryah>src/node.cc:static volatile bool debugger_running = false;
21:29:37  <ryah>src/node_buffer.cc:static const char *base64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
21:29:39  <ryah>src/node_buffer.cc:static const int unbase64_table[] =
21:29:42  <ryah>src/node_crypto.cc:static const char PUBLIC_KEY_PFX[] = "-----BEGIN PUBLIC KEY-----";
21:29:43  <mmalecki>ff3.6 probably doesn't help at all.
21:29:45  <ryah>src/node_crypto.cc:static const int PUBLIC_KEY_PFX_LEN = sizeof(PUBLIC_KEY_PFX) - 1;
21:29:48  <ryah>src/node_crypto.cc:static const char PUBRSA_KEY_PFX[] = "-----BEGIN RSA PUBLIC KEY-----";
21:29:52  <ryah>src/node_crypto.cc:static const int PUBRSA_KEY_PFX_LEN = sizeof(PUBRSA_KEY_PFX) - 1;
21:29:53  <bnoordhuis>mmalecki: no, it's slow by default :)
21:29:55  <ryah>src/node_crypto.cc:static const int X509_NAME_FLAGS = ASN1_STRFLGS_ESC_CTRL
21:29:58  <ryah>src/platform_win32.cc:static char *process_title = NULL;
21:30:00  <ryah>^- these will be a small problem
21:30:21  <mmalecki>bnoordhuis: right. I don't really care about ff3.6, so, we accept pull requests :)
21:30:55  <bnoordhuis>ryah: the platform_* files are going away, right?
21:31:13  <mmalecki>bnoordhuis: oh, actually, ff has some profiling tool, doesn't it?
21:31:26  <bnoordhuis>mmalecki: you mean firebug?
21:31:28  <mmalecki>if it does, I'd love to see the output.
21:31:37  <mmalecki>yeah, maybe, whatever it's called
21:32:06  <mmalecki>this thing becomes an actual problem with rails build. my fans kick in really hard when browsing those
21:32:18  <bnoordhuis>mmalecki: i see this: too much recursion
21:32:18  <bnoordhuis>[Break on this error] function hashChange(a){var b=window.lo...f.each(["radio","checkbox"],function(
21:32:48  <bnoordhuis>so i clicked on the error and i got another 'too much recursion' error
21:33:01  <bnoordhuis>(that last bit was a recursion joke btw)
21:33:25  <mmalecki>lol
21:33:54  <mmalecki>yeah, hashChange is the problem here, I think it eats like 70% of cpu time when displaying logs
21:34:37  <bnoordhuis>okay, i'll just use chromium
21:34:43  <mmalecki>:)
21:34:55  <mmalecki>or upgrade ff, I heard performance got better
21:35:16  <mmalecki>btw, the most complex thing in this log displaying component is my ansi color codes parser
21:35:35  <bnoordhuis>you wrote an ansi parser in javascript?
21:35:39  <mmalecki>ryah: also, thank you for http-parser. I learned a lot by reading it :)
21:35:41  <mmalecki>bnoordhuis: yes
21:35:46  <bnoordhuis>atwood's law at work!
21:35:58  <mmalecki>bnoordhuis: https://github.com/mmalecki/ansiparse
21:48:49  * mralephquit (Ping timeout: 240 seconds)
22:02:00  <ryah>mmalecki: :)
22:05:43  * mralephjoined
22:07:11  <piscisaureus__>ansi parsing *sigh*
22:09:24  <ryah>holy shit
22:09:24  <ryah>http://www.youtube.com/watch?v=0yrHu5o-yXo
22:18:20  <isaacs>ryah: that's awesome
22:23:21  <isaacs>piscisaureus__, igorzi: got any ideas about this one?
22:23:22  <isaacs>https://github.com/isaacs/npm/issues/1843
22:23:37  <isaacs>seems like windows isn't picking up the cmd files that get dropped in the path for global installs. seems to work for me, though
22:29:54  <piscisaureus__>isaacs: he just has to close its terminal window and restart cmd
22:30:11  <isaacs>piscisaureus__: you mean, after installing node?
22:30:19  <piscisaureus__>isaacs: yeah
22:30:25  <isaacs>k, i'll tell him that
22:30:34  <piscisaureus__>isaacs: if that doesn't work I'll look again
22:36:01  <ryah>checkout this picture of me making out with myself http://www.flickr.com/photos/coldredlemur/71409249/in/photostream
22:37:13  <ryah>(yep procrastinating isolates)
22:37:21  * bnoordhuisdoes not want to click that link
22:38:23  <piscisaureus__>dude
22:38:49  <piscisaureus__>bnoordhuis: have you seen the picture where he makes out with you?
22:39:04  * bnoordhuisregrets clicking that link
22:39:45  <piscisaureus__>http://www.flickr.com/photos/coldredlemur/71035042/ <-- this one is way cooler
22:39:58  <piscisaureus__>ryah finally broke up.
22:49:28  <ryah>i used to want to be a photoshop artist
23:40:54  * felixgequit (Quit: felixge)
23:51:38  * kuebk^quit