00:00:01  * paddybyersquit (Quit: paddybyers)
00:06:24  * piscisaureus_quit (Read error: Connection reset by peer)
00:06:42  * piscisaureus_joined
00:21:02  * isaacs_joined
00:23:49  * isaacsquit (Ping timeout: 240 seconds)
00:28:03  <isaacs_>hm, our readdir binding returns suboptimal error results.
00:29:39  * isaacs_changed nick to isaacs
00:43:39  <igorzi>piscisaureus_: hey yt?
00:45:11  <ryah_> Creating library ../../../..\build\Release\mksnapshot.lib and object ../..
00:45:11  <ryah_> /../..\build\Release\mksnapshot.exp
00:45:11  <ryah_> Generating code
00:45:11  <ryah_> Finished generating code
00:45:11  <ryah_> mksnapshot.vcxproj -> C:\Users\ryan\node\deps\v8\tools\gyp\../../../..\build\
00:45:14  <ryah_> Release\mksnapshot.exe
00:45:16  <ryah_> '..' is not recognized as an internal or external command,
00:45:19  <ryah_> operable program or batch file.
00:45:21  <ryah_> run_mksnapshot
00:45:24  <ryah_>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(151,5):
00:45:26  <ryah_> error MSB6006: "cmd.exe" exited with code 1. [C:\Users\ryan\node\deps\v8\tools
00:45:29  <ryah_>\gyp\v8_snapshot.vcxproj]
00:45:31  <ryah_>^-- anyone remember this bug?
00:45:34  <ryah_>getting this again on master
00:46:16  <ryah_>was it 45822da46a6dd69c8c88ded92fbc4c7f8d76fcde that fixes it?
00:47:09  <piscisaureus_>igorzi: yeah - sorry, reviewing your patch
00:48:09  * isaacsquit (Ping timeout: 240 seconds)
00:48:52  <igorzi>ryah_: yep, that should fix it
00:49:06  <igorzi>piscisaureus_: ok, thanks
00:51:35  <piscisaureus_>igorzi: I think process title should be usable without inializing a loop
00:51:42  <piscisaureus_>igorzi: just list uv_hrtime
00:53:22  <igorzi>piscisaureus_: ahh ok, i'll get that working like uv_hrtime
00:54:28  <ryah_>we still dont have bindings to uv_hrtime
00:54:30  <ryah_>:(
00:56:39  <CIA-115>node: Igor Zinkovsky master * rab18d72 / deps/v8/build/common.gypi : fix windows build - http://git.io/h_bCFQ
01:00:54  <piscisaureus_>As a general remark, I don't like that we allocate memory for loops as we let the user do it everywhere else. But leave it for now.
01:00:54  <piscisaureus_>Igorzi: why did you make uv__thread_start return UINT. I think it should be HANDLE right?
01:00:54  <piscisaureus_>Igorzi: otherwise LGTM
01:03:04  <igorzi>piscisaureus_: that's the callback that's passed to _beginthreadex
01:03:40  <igorzi>piscisaureus_: i was fixing a compiler warning (since the callback is defined as unsigned int ( *start_address )( void * ))
01:03:41  <piscisaureus_>ah I see
01:04:00  <piscisaureus_>igorzi: do we cast the result?
01:04:01  * `3rdEdenquit (Quit: ZZZZZZZ gnite)
01:04:17  <piscisaureus_>or - what is the user supposed to supply that works cross platform?
01:05:32  <igorzi>piscisaureus_: the user-supplied callback returns void
01:06:04  <igorzi>piscisaureus_: https://github.com/igorzi/libuv/blob/master/include/uv.h#L1353
01:06:54  <piscisaureus_>ah ok
01:06:59  <piscisaureus_>looks good
01:07:19  <piscisaureus_>I was looking for the implementation of uv_thread_create in src/win/
01:08:01  <igorzi>ok, thanks piscisaureus_
01:08:23  <piscisaureus_>igorzi++
01:08:24  <kohai>igorzi has 2 beers
01:09:36  * travis-cijoined
01:09:36  <travis-ci>[travis-ci] joyent/node#253 (master - ab18d72 : Igor Zinkovsky): The build is still failing.
01:09:36  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/ca2a047...ab18d72
01:09:36  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/533638
01:09:36  * travis-cipart
01:09:56  <piscisaureus_>bnoordhuis: shouldn't uv_thread_create return uv_err_t
01:12:34  <ryah_>so i'd really love to see the uv_tcp_t, uv_tty_t, uv_pipe_t be combined at some point
01:12:43  <piscisaureus_>yeah +1
01:13:33  <piscisaureus_>I still want to do error refactoring
01:14:12  <piscisaureus_>Also still want: file streams :-)
01:14:28  <piscisaureus_>also still want: get rid of cares :-)
01:15:39  <igorzi>*fully* get rid of crt :)
01:16:06  <CIA-115>libuv: Igor Zinkovsky master * r52511b9 / (7 files in 4 dirs): windows: implement uv_loop_new+uv_loop_delete - http://git.io/MN62iw
01:16:19  <ryah_>getting rid of c-ares would be nice
01:16:33  <ryah_>it could certainly be structured such that c-ares was a dependency of node but not libuv
01:17:14  <ryah_>in fact we could even push c-ares out into npm
01:17:23  <ryah_>since it's not being used by default anymore
01:17:55  * travis-cijoined
01:17:56  <travis-ci>[travis-ci] joyent/libuv#35 (master - 52511b9 : Igor Zinkovsky): The build is still failing.
01:17:56  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/f5bd21f...52511b9
01:17:56  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/533752
01:17:56  * travis-cipart
01:19:55  <ryah_>igorzi: will you land in node?
01:20:10  <igorzi>ryah_: yep
01:20:58  <piscisaureus_>ryah_: we basically need an extension of https://github.com/joyent/libuv/issues/288
01:21:23  <piscisaureus_>ryah_: we can do it for windows too - just won't be super fast or super scalable
01:21:41  <ryah_>piscisaureus_: yeah...
01:22:08  <piscisaureus_>it's basically there already although the code itself is messy
01:22:45  <piscisaureus_>ryah_ oh well we'll figure it out
01:24:27  <piscisaureus_>I should ask jasonh and scottgu I suppose >:-)
01:27:41  <CIA-115>node: Igor Zinkovsky master * r2c10257 / (7 files in 4 dirs): upgrade libuv to 52511b9ddc - http://git.io/eRoVKg
01:28:03  <piscisaureus_>igorzi: does this mean that isolates now work in windows
01:28:16  <piscisaureus_>if it was that "easy" I am a happy man
01:29:50  <igorzi>piscisaureus_: test-isolates0.js and test-isolates-ping-pong.js work
01:30:20  <ryah_>igorzi++
01:30:21  <kohai>igorzi has 3 beers
01:30:37  <ryah_>im testing it now
01:30:50  <igorzi>ryah_: is test-isolates1.js supposed to work?
01:31:12  <ryah_>igorzi: yes
01:31:25  <ryah_>test-isolates2 does not yet work
01:33:11  <igorzi>i'm going to figure out why test-isolates1.js is not working
01:40:18  * travis-cijoined
01:40:19  <travis-ci>[travis-ci] joyent/node#254 (master - 2c10257 : Igor Zinkovsky): The build is still failing.
01:40:19  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/ab18d72...2c10257
01:40:19  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/533791
01:40:19  * travis-cipart
01:42:18  * pquernaquit (Changing host)
01:42:18  * pquernajoined
01:53:09  <igorzi>ryah_: on unix, what keeps the forked isolate from exiting? (who reffing it?)
01:53:52  <igorzi>ryah_: on windows, with regular (process) fork, the forked process creates a channel over stdin, which is what keeps the ref from hitting 0
01:54:28  <igorzi>ryah_: with isolates, we don't create the channel over stdin - so unless the forked isolate does something interesting it just exits right away
01:54:50  <igorzi>ryah_: so, i'm curious how this is done on unix
01:58:28  * isaacsjoined
02:00:37  <ryah_>igorzi: one sec
02:01:00  <piscisaureus_>igorzi: there is also no stdout in isolates?
02:02:02  <ryah_>bnoordhuis did this part so im a bit lost as to why this is true.
02:02:15  <piscisaureus_>could easily be a refcount bug
02:02:49  <piscisaureus_>but for this https://github.com/joyent/node/blob/master/test/fixtures/child-process-spawn-node.js#L3 to work
02:02:57  <piscisaureus_>there must be a data channel around somewhere
02:03:09  <ryah_>i think it's the uv_async_t associated with each Channel
02:03:28  <piscisaureus_>the uv_async_t should ref too - unless it is explicitly unref'ed
02:03:31  <piscisaureus_>which it should
02:07:26  <ryah_>igorzi: https://github.com/joyent/node/blob/03cb903e7e3a35350ba09af052eac7844ae070e9/src/node_isolate.cc#L457-458
02:07:29  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
02:12:13  <igorzi>ryah_: i think this keeps the parent loop alive.. the problem i'm seeing is that the child event-loop exits
02:14:23  <piscisaureus_>igorzi: does the child do anything at all?
02:14:34  <piscisaureus_>igorzi: I mean, does console.log work?
02:16:00  <ryah_>igorzi: what hapens if you remove this uv_unref
02:16:01  <ryah_>https://github.com/joyent/node/blob/03cb903e7e3a35350ba09af052eac7844ae070e9/src/node_isolate.cc#L136
02:16:13  <ryah_>igorzi: it might be that ben mistakenly thought channels shouldn't ref the loop
02:16:15  <ryah_>and added that
02:16:34  <ryah_>but that the system is refing somewhere else
02:16:35  <igorzi>piscisaureus_: yes, console.log works (it goes through tty codepath)
02:19:30  * piscisaureus_quit (Read error: Connection reset by peer)
02:20:10  * piscisaureus_joined
02:21:37  <piscisaureus_>okay, I am going to bed
02:21:52  <piscisaureus_>igorzi: if you find anything, type it here, I will read the logs back tomorrow
02:23:27  <igorzi>piscisaureus_: k, sounds good
02:23:31  <ryah_>mjr_: no more crashes?
02:25:43  <ryah_>igorzi: did modifying that uv_unref help?
02:26:02  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
02:26:52  <igorzi>ryah_: about to try it.. i don't think it will because i don't hit that codepath in the child isolate
02:27:41  * piscisaureus_joined
02:29:23  * piscisaureus_quit (Client Quit)
02:29:27  <ryah_>oh
02:36:59  * brsonquit (Ping timeout: 260 seconds)
02:40:02  * isaacsquit (Remote host closed the connection)
02:41:11  <CIA-115>node: Ryan Dahl master * r317ba9f / Makefile : Fix 'make dist' - http://git.io/QsJlNQ
02:51:11  <igorzi>ryah_: sorry, removing that uv_unref does fix it.. somehow i was expecting that child channel init code to execute on the actual thread where the child loop will run
02:51:39  <igorzi>ryah_: should i land it?
02:53:29  <ryah_>igorzi: let me test on my end
02:53:58  * travis-cijoined
02:53:58  <travis-ci>[travis-ci] joyent/node#255 (master - 317ba9f : Ryan Dahl): The build is still failing.
02:53:58  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/2c10257...317ba9f
02:53:58  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/534025
02:53:58  * travis-cipart
02:58:15  <ryah_>hm
02:58:23  <ryah_>unfrotuantely this is keeping my event loop alive...
02:58:31  <ryah_>(unsurprisingly)
02:59:04  <ryah_>igorzi: im going to cut v0.7.0 without this change - we'll figure it out when bnoordhuis is back
03:00:41  <CIA-115>node: Ryan Dahl master * r716f5bc / Makefile : Add make dist-upload - http://git.io/JcmV8w
03:05:38  <ryah_>http://nodejs.org/dist/v0.7.0/node-v0.7.0-RC1.tar.gz
03:13:22  * travis-cijoined
03:13:22  <travis-ci>[travis-ci] joyent/node#256 (master - 716f5bc : Ryan Dahl): The build is still failing.
03:13:22  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/317ba9f...716f5bc
03:13:22  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/534083
03:13:22  * travis-cipart
03:32:48  <mjr_>ryah_: no cores recently
03:33:11  <mjr_>ryah_: just lots of consternation about this UCS-2 thing though.
03:38:22  * Raynosquit (Remote host closed the connection)
03:38:23  * mrb_bkquit (Read error: Connection reset by peer)
03:52:59  * mrb_bkjoined
03:53:15  * Raynosjoined
04:07:23  <CIA-115>node: Ryan Dahl master * r9cc55dc / (ChangeLog doc/template.html src/node_version.h): Bump version to v0.7.0 - http://git.io/2_sbTQ
04:07:23  <CIA-115>node: Ryan Dahl master * r72cbb74 / src/node_version.h : Now working on v0.7.1-pre - http://git.io/MH2qew
04:09:11  <ryah_>mjr_: hw serious is this UCS-2 thing?
04:12:10  * isaacsjoined
04:15:34  <mjr_>ryah_: well, our users around the world are increasingly using characters that cannot be understood by V8
04:15:48  <mjr_>Android and iOS now support unicode 6, which V8 does not handle.
04:16:04  <mjr_>Surely Chrome has this same problem. I wonder what the V8 position on this issue is.
04:20:16  * travis-cijoined
04:20:16  <travis-ci>[travis-ci] joyent/node#257 (master - 72cbb74 : Ryan Dahl): The build is still failing.
04:20:16  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/716f5bc...72cbb74
04:20:16  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/534290
04:20:16  * travis-cipart
05:23:46  <indutny_sleeping>ryah_: heya
05:23:51  * indutny_sleepingchanged nick to indutny
05:24:10  * isaacsquit (Remote host closed the connection)
05:33:59  <indutny>ok, I read log and everything is almost clear for me now
05:36:46  <indutny>ryah_: yt?
05:37:00  <indutny>ryah_: if we want to support node-waf - I need to fix installer.js to install it
05:37:23  <indutny>ryah_: I don't mind using WAF for 0.7.x
05:37:42  <indutny>ryah_: but we should provide *any* working way for building native addons with 0.7.0
05:41:00  * mralephjoined
05:42:41  <ryah_>indutny: yeah- install it
05:42:57  <ryah_>indutny: thanks
05:43:21  <indutny>ryah_: ok, I'll show you commit in a minute, are you going to be online?
05:43:39  <ryah_>yes
05:44:34  <indutny>ryah_: should node-waf be installed by default?
05:44:39  <indutny>ryah_: or only --with-waf flag ?
05:50:12  <indutny>ryah_: https://github.com/indutny/node/commit/c618efe6b79ed60dba150bd6ca7f1b16ae9712eb
05:50:31  <indutny>there're empty line in patch ^, I remove it
05:53:57  <ryah_>it should be installed by default
05:53:59  <indutny>and it isn't removing lib/node ... fixed here: https://github.com/indutny/node/commit/f5a68846f405bd923be530437bd5c488c9d3009e
05:54:14  <indutny>ryah_: ok, it does in that patch ^
05:54:43  <ryah_>what's with that c-ares change?
05:55:48  <indutny>ryah_: c-ares wus put into incorrect folder
05:55:54  <indutny>ryah_: and includes was failing
05:56:07  <ryah_>ok
05:56:31  <CIA-115>node: Fedor Indutny master * r6e76a7c / (configure tools/installer.js):
05:56:31  <CIA-115>node: installer: install node-waf
05:56:31  <CIA-115>node: * added --without-waf flag for configure script - http://git.io/PIoYoA
05:56:51  <indutny>In file included from /Users/indutny/.node/dev/include/node/node.h:61, from ../src/generic.cc:2:
05:56:54  <ryah_>oh yeah, i guess you can land it yourself now :)
05:56:54  <indutny>/Users/indutny/.node/dev/include/node/uv.h:57:18: error: ares.h: No such file or directory
05:56:57  <indutny>In file included from /Users/indutny/.node/dev/include/node/node.h:61, from ../src/generic.cc:2:
05:57:00  <indutny>/Users/indutny/.node/dev/include/node/uv.h:929: error: ‘ares_channel’ has not been declared
05:57:03  <indutny>/Users/indutny/.node/dev/include/node/uv.h:932: error: ‘ares_channel’ has not been declared
05:57:06  <indutny>/Users/indutny/.node/dev/include/node/uv.h:1399: error: ‘ares_channel’ does not name a type
05:57:10  <indutny>like that ^
05:57:12  <indutny>just add lgtm comment next time ;)
05:57:15  <indutny>hahaha
05:57:17  <indutny>yeah
05:57:26  <indutny>thank you :)
05:58:38  <indutny>sad that will be out only in 0.7.1
06:00:08  <ryah_>0.7.0 is just meant for us
06:00:13  <ryah_>basically
06:00:38  <ryah_>there must be some shitty releases :)
06:01:16  <indutny>ryah_: haha :)
06:01:18  <indutny>as usual
06:01:29  <indutny>we should count them and draw a bar chart later
06:01:33  <indutny>like 6 for 0.6.x
06:01:42  <indutny>7-8 for 0.4.x
06:04:26  <indutny>ryah_: v8 patch should land 3.6 in a couple of days
06:04:40  <indutny>ryah_: Erik has started reviewing it tomorrow
06:04:56  <indutny>just FYI
06:08:58  * travis-cijoined
06:08:58  <travis-ci>[travis-ci] joyent/node#258 (master - 6e76a7c : Fedor Indutny): The build is still failing.
06:08:58  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/72cbb74...6e76a7c
06:08:58  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/534482
06:08:58  * travis-cipart
06:14:50  <indutny>ryah_: ok, there're still some flaws in build system
06:15:02  <indutny>ryah_: host_arch may be different in waf and gyp
06:21:22  * mralephquit (Quit: Leaving.)
06:28:56  * paddybyersjoined
06:36:20  <ryah_>indutny: oh - yeah.. hm
06:36:27  <ryah_>indutny: we should fix that somehow..
06:38:56  * isaacsjoined
06:41:33  <indutny>ryah_: it's easy to fix in wscript
06:42:13  <indutny>ryah_: https://github.com/indutny/node-spdy/blob/master/wscript#L15
06:42:22  <indutny>ryah_: are we always compiling i386 node for osx?
06:43:12  <ryah_>yes
06:43:32  <indutny>ryah_: k
06:44:16  <indutny>ryah_: I think that was already discussed some time ago, but how would .node files be named in case of multi-platform bundling?
06:44:26  <indutny>ryah_: .i386.node /
06:44:33  <indutny>ryah_: .x86_64.node /
06:44:43  <indutny>ryah_: .win.node :D
06:49:53  <ryah_>*shrug*
06:50:09  <ryah_>that would probably be technically correct
06:50:14  <ryah_>but seems really annoying
06:52:18  <indutny>ryah_: I mean that node should choose correct extension at startup time
06:52:35  <indutny>otherwise someone will implement module that'll do same :)
06:52:53  <indutny>and it'll be in dependencies of many others
07:14:30  * paddybyersquit (Quit: paddybyers)
07:14:49  <ryah_>indutny: yeah, i guess if we did that people could just start uploading them to npm
07:15:36  <isaacs>ryah_: or we could just let npm upload platform-specific versions of packages.
07:15:55  <ryah_>isaacs: oh yeah, that's better probably
07:16:02  <ryah_>just include the .node in the tarball
07:16:05  <isaacs>yeah
07:16:18  <isaacs>that's better at install-time, since .node files can get kinda big, and then you only have one, rather than 4 or whatever.
07:16:33  <isaacs>and we can fall back to "compile on install" if the platform isn't pre-built
07:16:48  <ryah_>how big is the npm db currently?
07:16:49  <isaacs>then we can walk through and compile them in a build farm or something, as a separate later enhancement.
07:17:17  <isaacs>8568045680
07:17:20  <isaacs>8gb
07:17:35  <isaacs>6339 pkgs
07:18:09  <ryah_>can couch handle that * 4?
07:19:42  <isaacs>i believe so.
07:20:09  <isaacs>but we will probably have to look into putting the tarballs elsewhere and relying on just keeping the sha's and urls in the db.
07:20:12  <pquerna>isn't the 'easy' way to just move the tars and bins into somehting like s3/cloudfiles
07:20:17  <pquerna>righto, that
07:20:28  <isaacs>pquerna: yes. with the scare-quotes around "easy"
07:20:48  <pquerna>:)
07:20:52  <isaacs>the hardest part is uploading. the client is already agnostic, and just gets the tarball location from the doc.
07:21:26  <isaacs>but, we could always keep the same exact api, and "just" have something that plucks the attachments off and puts them elsewhere offline.
07:21:39  <isaacs>"offline" <-- i mean, on a cron somewhere.
07:21:52  <indutny>isaacs: so my proposal
07:22:14  <indutny>isaacs: spport %.node, %.arch.node, %.platform-arch.node
07:22:26  <indutny>isaacs: and when uploading to npm - rename them to just .node
07:22:36  <indutny>and do upload for each platform
07:22:37  <isaacs>ryah_: if we move the tarballs to a separate location, then that'd let us grow to hundreds of thousands of packages without any issues from couch, i believe.
07:22:57  <isaacs>indutny: why support *.node,arch.node,platform-arch.node, then?
07:23:02  <isaacs>indutny: what does that buy you?
07:23:08  <indutny>isaacs: git clone repo :)
07:23:12  <indutny>isaacs: npm test and it works
07:23:16  <isaacs>meh
07:23:20  <isaacs>if you git clone, you have to build it anyhow
07:23:29  <indutny>isaacs: anyway development is easier this way
07:23:35  <isaacs>and you're going to build it for your arch, because that's how it works.
07:23:37  <ryah_>it would be nice to have all the various binaries in the tree
07:23:43  <indutny>ryah_: ++
07:23:43  <kohai>ryah_ has 1 beer
07:23:47  <isaacs>would that really be nice?
07:24:20  <ryah_>better than doing a switch on process.platform before require
07:24:31  <ryah_>*shrug*
07:24:38  <ryah_>i guess it's not necessray though
07:24:43  <isaacs>ryah_: sure, but you only have to do that today if you're distributing pre-built binaries for all different platforms.
07:24:48  <isaacs>*building* them is still a pain.
07:24:54  <ryah_>you can always build binding/win-x86/binding.node
07:25:25  <isaacs>and pretty much all compiled addons wrap the binding in a js layer anyway
07:25:37  <isaacs>since that makes it a lot easier to provide a friendlier api
07:25:46  <indutny>isaacs: not every
07:25:54  <isaacs>indutny: no, but most of them that matter.
07:25:59  <indutny>:)
07:26:00  <isaacs>the more popular ones do
07:26:05  <isaacs>there's only a few hundred, after all.
07:26:19  <indutny>so must popular is just 10-20 of them
07:26:20  <indutny>:D
07:26:24  <isaacs>right
07:26:54  <isaacs>the only reason it matters is that, for the things that need a compiled addon, you really can't get around it very easily.
07:27:33  <indutny>isaacs: ryah_ pquerna https://github.com/indutny/node/compare/master...feature-platform-node
07:27:58  <ryah_>im staying out of this one. i leave it to isaacs and pquerna
07:27:59  <indutny>something like that
07:28:03  <indutny>k
07:28:28  <indutny>the only pain , is that wscript will need to know current arch somehow
07:28:34  <isaacs>yeah.
07:28:37  <isaacs>let's not do this.
07:28:37  <indutny>to copy .platform.node to lib/ folder
07:28:55  <CIA-115>node: Ryan Dahl master * r21dd53f / Makefile : Makefile: Don't force user to run ./configure first - http://git.io/tdl6fQ
07:28:57  <isaacs>i'm already reworking the build-on-publish in npm to do prebuilt binaries per-platform.
07:29:14  <isaacs>and users can use folders, or write their own makefiles and js wrappers today
07:29:14  <indutny>isaacs: how will that be distributed
07:29:24  <isaacs>indutny: npm publish/npm install
07:29:25  <indutny>isaacs: npm will use process.arch to request lib?
07:29:30  <isaacs>yes.
07:29:38  <indutny>isaacs: what about platform specific versions?
07:29:39  <isaacs>well, it'll check for a prebuilt version.
07:29:49  <indutny>isaacs: yes, I understand
07:29:50  <isaacs>if it's prebuilt for that platform, it'll get that one
07:30:04  <indutny>but some libs are platform agnostic
07:30:05  <indutny>:)
07:30:10  <indutny>you need some package.json flags
07:30:15  <isaacs>what libs are platform agnostic?
07:30:20  <isaacs>that require compilation?
07:30:40  <indutny>I mean addon can work on any unix like ia32 system
07:30:40  <ryah_>i sure wish .gyp files were just .json files
07:30:53  <indutny>and some can work only on ia32 osx
07:30:59  <ryah_>we should patch GYP so that we can just have .json files
07:31:00  <isaacs>indutny: the author can publish from each OS, or the user will compile on install.
07:31:02  <isaacs>like today
07:31:05  <ryah_>it would look nicer
07:31:10  <isaacs>ryah_ ++
07:31:11  <kohai>ryah_ has 2 beers
07:31:14  <indutny>ryah_: agreed
07:31:23  <indutny>ryah_: comments in json... meh!
07:31:32  <ryah_>indutny: well - almost json
07:31:36  <ryah_>we should allow comments
07:31:41  <ryah_>but they should be JS-style comments
07:31:46  <isaacs>noooo!!
07:31:48  <isaacs>no comments.
07:31:54  <indutny>so it still won't be readable by JSON.parse :D
07:31:55  <indutny>great
07:32:02  <ryah_>but comments are nice
07:32:04  <isaacs>just JSON.parse it, and throw if it fails.
07:32:04  <indutny>what's better then?
07:32:10  <isaacs> { "//" : "this is a comment." }
07:32:17  <isaacs>just use extra keys if you really want it.
07:32:22  <indutny>yeah
07:32:26  <ryah_>:///
07:32:38  <isaacs>the problem with allowing comments in json is that people do idiotic shit with them.
07:32:39  <ryah_>why not have comments?
07:33:02  <ryah_>well - we need comments in the build scripts
07:33:05  <indutny>ryah_: # Do not edit. Generated by the configure script.
07:33:05  <ryah_>they are complex
07:33:13  <isaacs>/JSONOPTIONS=singlequote,map=function (n) { return n + 100 }
07:33:13  <indutny>is that really beautiful?
07:33:14  <indutny>:)
07:33:46  <ryah_>maybe we can just keep .gyp
07:33:48  <ryah_>:P
07:34:05  <indutny>JSON.parse('{"//":1,"//":2}')
07:34:05  <isaacs>or worse: /*IF_NOT_IE*/ "this field is not for ie" : "foooo", /*ENDIF*/
07:34:26  <indutny>it'll work fine if we'll just use "//" for comments
07:34:34  <ryah_>no...
07:34:36  <isaacs>yeah, the "//" field is the way that you put comments in js
07:34:37  <isaacs>json
07:34:43  <ryah_>sorry - i suggested it
07:34:53  <ryah_>that's worse than having .gyp files
07:34:55  <isaacs>the nice thing about "//" is that it's not ifdefable.
07:34:55  <indutny>ok
07:34:56  <indutny>:)
07:35:12  <ryah_>isaacs: ifdefable?
07:35:17  <isaacs>ifdef-able.
07:35:22  <isaacs>#ifdef
07:35:28  <indutny>isaacs: ?
07:35:43  <ryah_>isaacs: is there some preprocessor i don't know of?
07:35:53  <isaacs>ryah_: yes, there have been a few json preprocessors.
07:36:04  <isaacs>before the spec was amended to disallow comments.
07:36:39  <isaacs>not to mention the courier madness.
07:37:00  <isaacs>(a npm package that lets you write a package.coffee, because coffee-scripters are so fascinated by their language that they can't bear to write json)
07:37:02  <indutny>isaacs: speaking of npm, can I help you?
07:37:18  <isaacs>indutny: sure :)
07:37:23  <indutny>isaacs: I think it's very essential feature to have
07:37:30  <isaacs>which feature?
07:37:30  <indutny>isaacs: next q: how ?
07:37:31  <indutny>:)
07:37:38  <isaacs>the publish-bin stuff?
07:37:42  <indutny>isaacs: yes
07:37:47  <isaacs>on sec...
07:37:51  <indutny>isaacs: arch specific libs
07:38:22  <isaacs>indutny: so, here's the state of things today:
07:38:57  <isaacs>1. it might not work. it's been feature-flagged out for a while now
07:39:08  <isaacs>2. npm help config, search for "bindist" and "publish-bin"
07:39:14  <isaacs>that describes how it's supposed to work.
07:39:23  <isaacs>3. grep in the code for those two things, and you'll see where they're used.
07:39:43  * paddybyersjoined
07:39:51  <indutny>ok
07:40:19  <isaacs>indutny: right now, it contains too much info.
07:40:52  <indutny>isaacs: yeah
07:40:57  <isaacs>really, just 0.6-darwin-x64 is plenty
07:41:02  <indutny>isaacs: only arrch or arch+platform is needed
07:41:08  <indutny>isaacs: we do already have engine property
07:41:10  <isaacs><nodever>-<platform>-<arch>
07:41:19  <indutny>isaacs: ah, got it
07:41:30  <isaacs>that should be fine.
07:41:32  <indutny>isaacs: may be better use engine?
07:41:39  * travis-cijoined
07:41:39  <travis-ci>[travis-ci] joyent/node#259 (master - 21dd53f : Ryan Dahl): The build is still failing.
07:41:39  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/6e76a7c...21dd53f
07:41:39  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/534687
07:41:39  * travis-cipart
07:41:47  <isaacs>no, because whatever it's published with is what it'll work with.
07:41:55  <indutny>isaacs: > 0.6.3, < 0.6.7
07:42:00  <isaacs>no need there.
07:42:07  <indutny>isaacs: oh, ok
07:42:08  <isaacs>i mean, that's kind of a separate thing
07:42:19  <isaacs>the only thing that matters for the compilation itself is ABI
07:42:54  <isaacs>and, if we're gonna continue with the even/odd thing, maybe either skip it for unstable versions, or include all three parts.
07:43:00  <isaacs>0.7.2-linux-ia32
07:43:02  <isaacs>etc.
07:43:13  <isaacs>vs just 0.6-linux-ia32 for a stable version
07:43:24  <indutny>yeah
07:43:35  <indutny>may be support both variants
07:43:45  <indutny>that's upon user anyway
07:43:48  <indutny>s/user/developer
07:43:54  <isaacs>so, update bindist default value, then `npm config set publish-bin true` on your system, then see what breaks.
07:44:01  <indutny>:)
07:44:01  <indutny>ok
07:45:04  <isaacs>i have a staging server you can publish to if you dont' want to use the public registry and don't have a private one on localhost. otherwise, feel free to build a little test package and publish/unpublish it as much as you want.
07:45:18  <isaacs>i do that as a normal part of the npm tests anyway.
07:45:43  <indutny>k
07:45:50  <indutny>I'll just change name in package.json
07:46:15  <isaacs>perfect.
07:46:53  <isaacs>indutny: it should run the preinstall/install/postinstall scripts at the publish phase, then upload the pre-built copy to the registry in the dist hash
07:47:04  <isaacs>npm view <pkgname> dist <-- that will show you what's in the dist hash
08:25:57  * mrb_bkquit (Remote host closed the connection)
08:29:56  <ryah_>pquerna: hey - what was that site with like 12 principles for deployment?
08:30:42  <pquerna>12factor
08:30:52  <pquerna>ryah_: http://12factor.net/
08:31:05  <pquerna>still in our irc channel topic :x
08:31:10  <ryah_>do you know who did that?
08:31:20  <pquerna>yes, heroku guys
08:31:26  <ryah_>ah
08:31:35  <ryah_>it's super nice
08:32:04  <pquerna>you know whats wrong with the current PaaS craze
08:32:21  <pquerna>i just want a paas that makes those 12 things easier
08:32:21  <ryah_>yeah
08:32:24  <pquerna>not much else
08:32:40  <ryah_>yeah - that's your vector, i see that
08:32:56  <ryah_>i, of course, disagree
08:33:11  <ryah_>the problem with the PaaS craze is that the system were not built for a PaaS in mind
08:33:28  <ryah_>neither Xen, Linux, nor the programming platforms
08:33:48  <pquerna>no, but we will burn the old sytems behind us. it has happened in the past, it will happen again, its just not an overnight thing.
08:34:02  <ryah_>it's a 6 month thing
08:34:05  <pquerna>heh
08:35:17  <ryah_>everyone chuckles - but i'll see you guys in october squeezing shit out in excitement
08:35:46  <ryah_>desktop -> iOS is not incremental
08:36:01  <ryah_>it's "this fucking sucks - redo"
08:37:35  <ryah_>well - i guess you have quartz or whatever - which helps
08:39:24  * sh1mmerquit (Quit: sh1mmer)
08:39:33  <pquerna>I'm not sure what you meant by incremental in that context, the user experience is not, but the developer experience isn't that far off from building desktop apps on osx
08:40:20  <ryah_>i guess i mean UX
08:40:40  <pquerna>12factor is about the developer experience mostly, UX has its own weird path its going down these days
08:40:51  <pquerna>thats the cool html5/socketio live update blah blah
08:42:03  * AndreasMadsenjoined
08:43:56  <ryah_>well - UX for the programmer
08:43:58  <ryah_>:P
08:45:08  <pquerna>UX for the programmer is what made node. the an execelent study of minimalist + pragmatic + benchmarks from ab.
08:45:12  <ryah_>no, youre right developer experience - it's just that 12factor doesn't define all of it
08:45:21  <ryah_>there is more to be done
08:45:24  <ryah_>inside that framework
08:55:01  <AndreasMadsen>ryah_: Oh are you awake - please remember to review the cluster patch -> https://github.com/joyent/node/pull/2470
08:55:18  * mrb_bkjoined
09:01:45  <ryah_>def main(port) { port.write("hello world"); port.close(); }
09:02:32  <ryah_>^-- factor 13 - all apps must implement a function which receives a port
09:02:48  <ryah_>a port is a tcp connection
09:39:12  * isaacsquit (Remote host closed the connection)
10:10:04  * cryptixjoined
10:15:12  * dshaw_quit (Quit: Leaving.)
10:49:45  * dshaw_joined
10:54:11  * AndreasMadsenquit (Quit: Page closed)
10:54:19  * dshaw_quit (Client Quit)
11:36:31  * russell_hquit (Ping timeout: 248 seconds)
11:41:05  * russell_hjoined
12:27:41  * piscisaureus_joined
12:36:39  * cryptixquit (Ping timeout: 260 seconds)
12:46:09  * piscisaureus_quit (Ping timeout: 252 seconds)
12:50:54  * piscisaureus_joined
12:51:17  * piscisaureus_quit (Client Quit)
12:55:17  * piscisaureus_joined
13:04:08  <piscisaureus_>indutny: yt?
13:05:27  <indutny>piscisaureus_: yep
13:05:47  <piscisaureus_>indutny: I think I want to backport stuff to 0.6 in steps
13:06:15  <indutny>cool
13:06:18  <piscisaureus_>indutny: I'd like to not truncate http headers but send a status code \
13:06:36  <piscisaureus_>indutny: then we will just publish a branch/patch and go public about it
13:06:44  <piscisaureus_>so it can cook for a week or so and see if there are any issues
13:06:51  <piscisaureus_>after that we will merge it into 0.6
13:07:13  <indutny>piscisaureus_: k
13:07:21  <indutny>piscisaureus_: and merge querystring patch as it is?
13:07:35  <piscisaureus_>indutny: I have a few nits
13:07:42  <piscisaureus_>indutny: but mostly yeah
13:08:09  <indutny>piscisaureus_: what nits?
13:08:34  <piscisaureus_>indutny: the nits are that if you specify { maxHeaders: '232' } it is silently ignored
13:08:43  <indutny>piscisaureus_: nope
13:08:47  <piscisaureus_>indutny: node should just throw if you specify anything non-numeric
13:08:50  <indutny>piscisaureus_: ah
13:08:58  <indutny>I understand now
13:09:02  <indutny>ok
13:09:15  <piscisaureus_>indutny: this is what we do everywhere
13:10:18  <piscisaureus_>indutny: like this: https://github.com/joyent/node/blob/master/lib/net.js#L452
13:10:44  <indutny>heh
13:10:49  <indutny>quite not informative
13:10:50  <indutny>but yeah
13:10:54  <indutny>agreed
13:12:00  <piscisaureus_>indutny: that's better <- https://github.com/joyent/node/blob/master/lib/net.js#L460
13:14:15  <piscisaureus_>indutny: I have one more question, what happens if, instead of sending a lot of http headers, someone just sends you a very big one?
13:15:46  <indutny>piscisaureus_: that's it :)
13:16:23  <indutny>collect collect collect...BAM!
13:16:59  <indutny>that's not hash dos
13:17:08  <indutny>so lets first pull headers and querystring
13:17:17  <indutny>and then patch node_http_parser
13:17:55  <piscisaureus_>indutny: I think http parser might have some limits
13:18:29  <indutny>piscisaureus_: you can check it
13:18:33  <indutny>piscisaureus_: but as I see - no
13:18:44  <indutny>it's just finite state machine
13:23:18  <piscisaureus_>indutny: there must be a limit somewhere
13:23:24  <piscisaureus_>indutny: I can't bring down the server
13:23:35  <indutny>piscisaureus_: hm...
13:24:58  <piscisaureus_>indutny: https://github.com/joyent/http-parser/blob/master/http_parser.c#L629
13:25:15  <indutny>ohhh
13:25:19  <indutny>how I missed that?
13:25:24  <indutny>sorry
13:25:38  <piscisaureus_>the limit is 80kb
13:28:02  <piscisaureus_>btw 80kb * 100 headers is still 8mb per connections
13:28:27  <indutny>heh
13:28:37  <piscisaureus_>could be too much still
13:28:47  <piscisaureus_>maybe we should just limit the size of the entire header block as well
13:28:51  <piscisaureus_>but lets talk about that later
13:33:36  <piscisaureus_>indutny: oh well there is an implicit limit of 1000 parsers
13:34:30  <piscisaureus_>so the worst-case memory usage = 100*1000*8192 == 8GB :-(
13:35:27  <piscisaureus_>the last 8192 should hve been 81920
13:35:55  <indutny>heh
13:36:19  <indutny>great
13:38:34  <piscisaureus_>indutny: actually, I think the # of http headers may also be limited already :-/
13:39:15  <indutny>hm
13:39:18  <indutny>really?
13:39:25  <indutny>oh my
13:40:01  <indutny>but where?
13:40:33  <piscisaureus_>indutny: yeah I am trying to figure it out
13:40:43  <piscisaureus_>I am on 0.6.8-pre
13:40:56  <piscisaureus_>but the connection gets rejected after sending ~ 2000 headers
13:42:25  <indutny>piscisaureus_: strange, because test is passing on 0.7.0
13:42:31  <indutny>and it's using 2002 headers
13:42:47  <piscisaureus_>indutny: well slightly over 2000 headers actually
13:42:52  <piscisaureus_>indutny: make it 5000
13:52:14  <piscisaureus_>indutny: it must happen in http_parser itself because I get a parse error after n headers
13:52:36  <indutny>piscisaureus_: hm...
13:57:34  <indutny>piscisaureus_: don't know what you're talking about
13:57:41  <indutny>but I successfully parsed 5000 headers
13:57:58  <indutny>even more I'm sending 413 now :)
13:59:07  <piscisaureus_>indutny: hmm something funny here
13:59:57  <indutny>:)
14:01:09  <piscisaureus_>indutny: can you share yoour header
14:01:18  <piscisaureus_>fucking keyboard
14:01:29  <piscisaureus_>indutny: can you share your header sending code?
14:01:29  <indutny>oh yeeah
14:01:31  <indutny>of course
14:01:44  <indutny>it's just a test-http-max-headers-count
14:01:53  <indutny>with s/2000/5000
14:02:11  <piscisaureus_>indutny: I am trying this: https://gist.github.com/b73ec186f1021dbe9e25
14:02:21  <piscisaureus_>indutny: it works
14:02:31  <piscisaureus_>indutny: or - whatever - the http server hangs waiting for more data
14:02:46  <indutny>probably you're sending too much data in header value?
14:02:52  <indutny>can you try just "a"
14:03:05  <piscisaureus_>indutny: yes, then I can send more
14:03:27  <indutny>piscisaureus_: ok, what about process RSS?
14:03:41  <indutny>or how is it called?
14:03:48  <indutny>memory stats, in other words
14:03:48  <indutny>:D
14:04:11  <piscisaureus_>indutny: low
14:04:17  <piscisaureus_>indutny: doesn't exceed 20 megs
14:04:26  <piscisaureus_>indutny: also, node is not dying
14:04:26  <indutny>and it just hangs
14:04:45  <piscisaureus_>indutny: no, this:
14:05:20  <piscisaureus_>D:\node4>node -e "require('http').createServer(console.log).listen(1234)"
14:05:21  <piscisaureus_>NET: bind to 0.0.0.0
14:05:21  <piscisaureus_>NET: onconnection
14:05:21  <piscisaureus_>HTTP: SERVER new http connection
14:05:21  <piscisaureus_>HTTP: parse error
14:05:21  <piscisaureus_>NET: destroy
14:05:21  <piscisaureus_>NET: close
14:05:22  <piscisaureus_>HTTP: server socket close
14:07:56  <indutny>piscisaureus_: osx isn't destroying oscket
14:07:59  <indutny>s/oscket/socket
14:08:12  <indutny>but when I ctrl+c client script - it does
14:08:54  <indutny>ooh
14:08:59  <indutny>sorry, forgot to increase 400
14:09:08  <piscisaureus_>heh. retry
14:09:33  <indutny>yeah, I see it!
14:09:34  <indutny>:)
14:10:02  <piscisaureus_>indutny: ok so now we figure out where that limit comes from
14:10:46  <piscisaureus_>indutny: you will notice that if you make the Cookie header smaller then the number of headers you can send increases
14:11:01  <piscisaureus_>indutny: so somewhere there's a size cap
14:18:37  <indutny>it comes from header overflow
14:18:38  <indutny>the error
14:19:04  <indutny>looks like it's total headers limit
14:19:29  <indutny>piscisaureus_: yeah
14:19:42  <indutny>cool, so no more thank 80kb headers at all :)
14:21:32  <indutny>so no need to limit url length
14:21:38  <indutny>or limit header name or header value size
14:21:40  <indutny>piscisaureus_: yt?
14:22:15  <indutny>I'm going to do some stuff at home, going to be back in a hour or so
14:22:21  <indutny>I'll push what I've done so far
14:23:39  <indutny>piscisaureus_: https://github.com/indutny/node/commit/22647601dcc687e04e156cd0094bfe49df41c8a2
14:24:16  * indutnychanged nick to indutny_away
14:28:28  * bnoordhuisjoined
15:08:36  <piscisaureus_>bnoordhuis: that limit in http parser - does that apply to *all* headers together or is it a per header limit?
15:10:24  <bnoordhuis>piscisaureus_: you mean the limit that fedor pointed or what i proposed?
15:10:31  <bnoordhuis>*pointed out
15:10:44  <piscisaureus_>bnoordhuis: I mean this: https://github.com/joyent/node/blob/v0.6/deps/http_parser/http_parser.c#L424
15:10:51  <piscisaureus_>what you pointed out
15:11:12  <bnoordhuis>no, that was fedor :)
15:11:32  <bnoordhuis>but that's the total limit
15:11:57  <bnoordhuis>HTTP_MAX_HEADER_SIZE is 80K in case you're wondering
15:23:23  <CIA-115>node: Ben Noordhuis v0.6 * r549443a / (2 files in 2 dirs):
15:23:23  <CIA-115>node: typed arrays: set class name
15:23:23  <CIA-115>node: Make obj.toString and Object.prototype.toString work correctly for typed arrays. - http://git.io/IGka2A
15:29:29  <piscisaureus_>bnoordhuis: what about we apply a similar size limit the the HTTP request line
15:29:57  <piscisaureus_>e.g. GET /foo/bar?xyz=..... HTTP/1.1 can't exceed 5k
15:30:18  <piscisaureus_>bnoordhuis: many browsers have a querystring limit of about 1200 characters
15:30:25  <bnoordhuis>workable, it's what apache does
15:30:38  <piscisaureus_>bnoordhuis: then there would be no need to do crappy shit in querystring.parse
15:30:51  <bnoordhuis>exactly
15:30:59  <piscisaureus_>indutny_away: ^ -?
15:32:06  * travis-cijoined
15:32:07  <travis-ci>[travis-ci] joyent/node#260 (v0.6 - 549443a : Ben Noordhuis): The build was fixed.
15:32:07  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/2541009...549443a
15:32:07  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/536087
15:32:07  * travis-cipart
15:32:17  <piscisaureus_>bnoordhuis: http://stackoverflow.com/questions/3721034/how-long-an-url-can-internet-explorer-9-take
15:32:18  <indutny_away>piscisaureus_: :)
15:32:20  * indutny_awaychanged nick to indutny
15:33:06  <indutny>that's what she said!
15:33:27  <piscisaureus_>indutny: what do you think?
15:33:53  <indutny>piscisaureus_: does it matter?
15:34:05  <piscisaureus_>indutny: well it means we don't have to patch querystring.parse
15:34:05  <indutny>piscisaureus_: url still can't be longer than 80k
15:34:12  <indutny>piscisaureus_: no, it doesn't
15:34:13  <piscisaureus_>indutny: why not?
15:34:21  <indutny>piscisaureus_: it's used to parse POST data too
15:34:28  <piscisaureus_>oh
15:34:29  <piscisaureus_>sure
15:34:55  <indutny>so, adding complexity just for another complexity sounds like a bad idea for me
15:35:02  <indutny>though I'm open to any other argumnets
15:35:08  <indutny>s/argumnets/arguments
15:36:09  <piscisaureus_>I think the 80kb line applies to the request line too even
15:40:10  <indutny>piscisaureus_: have you seen my commit?
15:40:18  <indutny>piscisaureus_: it's working, only test needs to be fixed
15:40:47  <piscisaureus_>indutny: yes
15:40:59  <piscisaureus_>indutny: I am beginning to doubt we need maxHeaders at all :-/
15:41:04  <piscisaureus_>there is a limit already
15:41:25  <piscisaureus_>I mean nobody can seriously hurt a server if its going to disconnect you after 80kb
15:41:41  <piscisaureus_>bnoordhuis: ^- do you agree btw
15:41:42  <indutny>piscisaureus_: 80k = (6 (header name) + 1 (:) + 1 (value) ) * 10k
15:42:02  <indutny>piscisaureus_: 10k headers is kinda enough for hash collision
15:42:07  <piscisaureus_>indutny: no the 80kb limit applies to the total size of the headers + request line
15:42:08  <bnoordhuis>piscisaureus_: 80kb is way too big
15:42:24  <bnoordhuis>8k is more reasonable
15:42:25  <piscisaureus_>bnoordhuis: huh why?
15:42:35  <piscisaureus_>bnoordhuis: well people make pretty big cookies sometimes
15:42:41  <bnoordhuis>not that big
15:42:44  <indutny>bnoordhuis: and correct error handling!
15:43:16  <bnoordhuis>piscisaureus_: i can squeeze a lot of headers into 80k
15:43:25  <piscisaureus_>bnoordhuis: yeah but who cares
15:43:34  <indutny>piscisaureus_: hackers care :)
15:43:36  <piscisaureus_>bnoordhuis: I mean, the hash collision problem got fixed
15:43:59  <bnoordhuis>so what are we arguing about?
15:44:22  <piscisaureus_>bnoordhuis: the only thing that's left is how much memory can we allow the hacker to fill up and how slow can a hashtable become when there's 10k keys in there
15:44:27  <piscisaureus_>^-- not so slow
15:44:48  <indutny>yeah
15:44:57  <indutny>prob, we can lower 80k limit
15:45:01  <indutny>and patch only querystring
15:45:06  <piscisaureus_>yes, exactly
15:45:26  <bnoordhuis>why does querystring need patching if hash collisions are no longer an issue?
15:45:41  <indutny>bnoordhuis: it can blow up memory
15:45:55  <indutny>bnoordhuis: if attacker will send a lot of POST data to innocent app
15:46:20  <piscisaureus_>actually it is also not really an issue
15:46:22  <bnoordhuis>if that happens, the user has already buffered all the post data right?
15:46:28  <piscisaureus_>the problem is that people buffer up all that crap
15:46:30  <piscisaureus_>yes
15:46:41  <bnoordhuis>so it's a matter of educating people
15:46:44  <piscisaureus_>we would need a streaming querystring parser first
15:47:27  <piscisaureus_>which we are not going to do
15:47:33  <piscisaureus_>or remove querystring from core :-)
15:48:04  <bnoordhuis>so to recap: there's not really an issue here?
15:48:22  <piscisaureus_>ehm. yes kinda
15:48:42  * bnoordhuislistens
15:48:45  <piscisaureus_>well there is an issue left, namely that people buffer up post data
15:48:49  <piscisaureus_>but that we cannot fix
15:49:47  <piscisaureus_>yes so
15:49:59  <piscisaureus_>indutny: did your numberhash fixes already make it into v8 / node ?
15:50:08  <indutny>piscisaureus_: nope
15:50:22  <indutny>piscisaureus_: ErikCorry implemented it for bleeding_edge, me - backported
15:50:30  <indutny>piscisaureus_: but my changes are still in review AFAIK
15:50:41  <bnoordhuis>what are the chances of it being merged?
15:50:44  <indutny>piscisaureus_: oooh
15:51:02  <piscisaureus_>indutny: wut?
15:51:06  <indutny>ope
15:51:12  <indutny>similar commit message
15:51:15  <indutny>:(
15:51:30  <piscisaureus_>indutny: what was the review url again?
15:51:36  <indutny>bnoordhuis: it should be definitely merged, but better ask ErikCorry about that
15:51:49  <indutny>http://codereview.chromium.org/9190001/
15:52:08  <bnoordhuis>indutny: if the v8 guys intend to merge it, we can land it locally
15:52:16  <bnoordhuis>as long as we don't have to carry it forward indefinitely
15:52:54  <indutny>bnoordhuis: just asked erikcorry by jabber
15:53:08  <piscisaureus_>bnoordhuis: that won't be needed, worst case scenario we have to carry it through 0.6
15:53:25  <bnoordhuis>piscisaureus_: right, good point
15:53:35  <bnoordhuis>well, just land it then and call it a day
15:53:49  <indutny>bnoordhuis: I runned patch with debug,release modes on osx and linux
15:53:54  <indutny>bnoordhuis: it seems to be working fine
15:54:10  <piscisaureus_>bnoordhuis: I just want to make sure that all v8 tests pass and it causes no node regressions
15:54:10  <bnoordhuis>indutny: do the v8 and node test suites pass?
15:54:19  <piscisaureus_>indutny: did you try the v8 tests?
15:54:29  <indutny>piscisaureus_: that's what I meant
15:54:42  <bnoordhuis>that's good enough for me
15:54:47  <piscisaureus_>yeah me too
15:54:59  <bnoordhuis>indutny: land it
15:55:02  <piscisaureus_>ok yeah so land it and call it a day
15:55:09  * bnoordhuisgets the beers
15:55:09  <indutny>one sec
15:55:10  <indutny>:D
15:59:13  <indutny>running make -j4 on patched node
15:59:20  <indutny>and then tools/test.py
16:11:28  <piscisaureus_>indutny: my stringhash patch already made it into node right?
16:16:38  * pieternjoined
16:19:20  <indutny>piscisaureus_: probably
16:19:31  <indutny>ok, tests are passing
16:19:47  <CIA-115>node: koichik v0.6 * r534df2f / (lib/tls.js test/simple/test-tls-client-abort2.js):
16:19:47  <CIA-115>node: tls: fix double 'error' events on HTTPS Requests
16:19:47  <CIA-115>node: Fixes #2549. - http://git.io/yMJcjw
16:23:48  <CIA-115>node: Fedor Indutny v0.6 * r1695332 / (36 files in 6 dirs): (log message trimmed)
16:23:49  <CIA-115>node: Land number collision fix for v8 3.6 by Erik Corry
16:23:49  <CIA-115>node: - If V8 snapshots are enabled then the hash is only randomized at build time.
16:23:49  <CIA-115>node: ---
16:23:49  <CIA-115>node: backport @10366, @10367 and @10402 to 3.6
16:23:49  <CIA-115>node: Add seed to hash of numeric keyed properties.
16:23:49  <CIA-115>node: Minor cleanups of numeric seeded hashing patch.
16:24:04  <indutny>piscisaureus_: bnoordhuis ^
16:27:23  * travis-cijoined
16:27:23  <travis-ci>[travis-ci] joyent/node#261 (v0.6 - 534df2f : koichik): The build passed.
16:27:23  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/549443a...534df2f
16:27:23  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/536256
16:27:23  * travis-cipart
16:30:23  <indutny>travis: build me!
16:30:35  <mmalecki>indutny: it takes some time
16:30:53  <mmalecki>indutny: we had to bump up the limit, v8 compilation takes long time
16:30:59  <mmalecki>it'd be cool to make it faster
16:31:40  <bnoordhuis>mmalecki: what limit?
16:31:52  <bnoordhuis>compilation time?
16:32:04  * travis-cijoined
16:32:04  <travis-ci>[travis-ci] joyent/node#262 (v0.6 - 1695332 : Fedor Indutny): The build passed.
16:32:04  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/534df2f...1695332
16:32:04  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/536277
16:32:04  * travis-cipart
16:32:25  <mmalecki>bnoordhuis: time limit, https://github.com/joyent/node/blob/master/.travis.yml#L3
16:32:29  <mmalecki>bnoordhuis: yeah
16:41:35  <bnoordhuis>fun fact, on my laptop compiling v8 takes more time than compiling a kernel
16:47:57  * mjr_quit (Ping timeout: 276 seconds)
16:48:34  <CIA-115>libuv: Ben Noordhuis v0.6 * rbf8ccfc / (src/unix/tty.c test/test-tty.c):
16:48:35  <CIA-115>libuv: unix: fix segfault in uv_guess_handle()
16:48:35  <CIA-115>libuv: Fixes #293. - http://git.io/2Xwleg
16:49:18  <mmalecki>bnoordhuis: yeah. not sure if it's possible to speed it up
16:49:53  <bnoordhuis>mmalecki: optimize g++
16:50:00  <indutny>mmalecki: use 8 core xeon
16:50:08  <indutny>;D
16:50:12  <mmalecki>sounds legit, brb
16:50:14  * travis-cijoined
16:50:14  <travis-ci>[travis-ci] joyent/libuv#36 (v0.6 - bf8ccfc : Ben Noordhuis): The build is still failing.
16:50:14  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/0e6e4ab...bf8ccfc
16:50:14  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/536409
16:50:14  * travis-cipart
16:50:17  <indutny>brb
16:50:21  <bnoordhuis>heh
16:50:22  * indutnychanged nick to indutny_away
16:50:57  <mmalecki>bnoordhuis: optimized it
16:51:02  <mmalecki>there's one command to do it
16:51:10  <mmalecki>sudo rm /usr/bin/g++
16:51:29  <bnoordhuis>mmalecki: alias g++=true
16:51:36  <mmalecki>or that
16:55:10  <mmalecki>we'll have node 0.7 on travis today btw :)
16:55:22  * mmaleckigrabs popcorn to see how stuff breaks
17:00:31  <bnoordhuis>my 1 year old daughter has great taste
17:00:36  <bnoordhuis>she likes vim better than emacs
17:00:56  <bnoordhuis>mostly because the colors are prettier
17:00:59  <bnoordhuis>but that's a detail
17:01:13  <mmalecki>bnoordhuis: ask `3rdEden, he's been teaching vim to his kid for some time
17:01:17  * dshaw_joined
17:02:12  <mmalecki>maybe you guys should put together a 'vim for 1 yo' book
17:04:11  <piscisaureus_>vim for toddlers
17:04:12  <mmalecki>bnoordhuis: which color scheme, btw?
17:04:20  <mmalecki>piscisaureus_: ++
17:04:21  <kohai>piscisaureus_ has 2 beers
17:04:24  <CoverSlide>elflord ftw!
17:04:56  <piscisaureus_>https://dpegb9ebondhq.cloudfront.net/product_photos/187098/VIM_25_original.gif
17:10:40  <bnoordhuis>mmalecki: i think torte?
17:10:44  * mikealjoined
17:11:57  <bnoordhuis>piscisaureus_: curious... how do you know that other vim?
17:12:29  <mmalecki>bnoordhuis: meh. you need solarized.
17:13:04  <bnoordhuis>oh hah, it's "default"
17:13:09  <bnoordhuis>i'm so 1337
17:13:44  <mmalecki>bnoordhuis: you *want* solarized
17:14:35  <bnoordhuis>why?
17:14:44  <bnoordhuis>solarized is the blueish theme right?
17:15:00  <mmalecki>bnoordhuis: sec, I'll get you a screenshot
17:15:00  * felixgejoined
17:15:12  <CoverSlide>default is peachpuff isn't it?
17:15:59  <bnoordhuis>mmalecki: think google found it for me
17:16:03  <bnoordhuis>but... dinner time!
17:16:35  <mmalecki>bnoordhuis: ok
17:22:36  * mikealquit (Quit: Leaving.)
17:28:40  * mikealjoined
17:31:44  * dapjoined
17:34:42  <piscisaureus_>bnoordhuis: can I land https://github.com/AndreasMadsen/node-1/commit/5f37b355ad36edc375096d90bf9bafbd5ea2d601.patch in v0.6
17:34:50  <piscisaureus_>not an api change right?
17:36:00  * txdvjoined
17:36:12  <piscisaureus_>I suppose I can
17:40:04  <CIA-115>node: Andreas Madsen v0.6 * rca6eded / lib/child_process.js :
17:40:04  <CIA-115>node: child_process: add errno property to exceptions
17:40:04  <CIA-115>node: In case of a write failure when using fork() an error would be thrown. The
17:40:04  <CIA-115>node: thrown exception was missing the `errno` property. - http://git.io/JqmMEQ
17:43:32  * indutny_awaychanged nick to indutny
17:43:35  <indutny>back
17:44:17  <mmalecki>anyone from joyent's ops here?
17:44:33  <mmalecki>wondering if you guys still need https://github.com/nodejitsu/node-http-proxy/blob/master/lib/node-http-proxy/http-proxy.js#L290-292
17:44:56  <mmalecki>I know isaacs mentioned it behaving weird in production without this piece of code
17:45:32  <indutny>mmalecki: looks strange and buggy
17:45:53  <mmalecki>indutny: that's kinda why I'm asking
17:47:22  <indutny>mmalecki: that should be probably fixed with uv thing
17:47:32  <indutny>but better if bnoordhuis or piscisaureus_ will answer your question
17:48:21  * travis-cijoined
17:48:22  <travis-ci>[travis-ci] joyent/node#263 (v0.6 - ca6eded : Andreas Madsen): The build passed.
17:48:22  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/1695332...ca6eded
17:48:22  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/536621
17:48:22  * travis-cipart
17:48:27  <piscisaureus_>I think it's even better to ask isaacs
17:48:43  * AndreasMadsenjoined
17:49:09  <indutny>coin rolls
17:50:09  <mmalecki>lol
17:56:06  <indutny>btw, are we going to release 0.6.x today?
17:57:33  <piscisaureus_>indutny: isaacs might
17:58:21  <indutny>piscisaureus_: k, btw, can I share Buffers between isolates
17:58:25  <indutny>or send them?
17:58:34  <piscisaureus_>bnoordhuis: ^
17:58:41  <piscisaureus_>indutny: bnoordhuis: is the isolates guy
17:58:53  <indutny>piscisaureus_: oh, sorry
17:58:55  <piscisaureus_>indutny: I don't think you can right now, I am not sure what we are plannng for it
17:58:57  <indutny>bnoordhuis: looks like not
17:59:26  <AndreasMadsen>piscisaureus_: issue fixed -> https://github.com/joyent/node/pull/2424
17:59:33  <piscisaureus_>indutny: I think that there are w3c proposals for sharing bytearrays between web workers so we might allow something like that as well
17:59:53  * felixgequit (Quit: felixge)
17:59:59  <indutny>piscisaureus_: cool :)
18:00:10  <piscisaureus_>AndreasMadsen: I still see "get optinal options and args arguments"
18:00:28  <piscisaureus_>AndreasMadsen: that's 1 spelling error + you get bonus points for using a capital and a dot.
18:01:08  <piscisaureus_>(in comments)
18:02:30  <AndreasMadsen>Oh, thought it was just a spelling, fixed
18:02:41  <AndreasMadsen>s/spelling/spacing/
18:04:40  <AndreasMadsen>piscisaureus_: GitHub has now processed by commit :)
18:05:54  <AndreasMadsen>s/by/my
18:08:41  <CIA-115>node: Andreas Madsen master * r7088487 / (doc/api/child_processes.markdown lib/child_process.js):
18:08:41  <CIA-115>node: Allow calling fork() without args or options
18:08:41  <CIA-115>node: Closes GH-2424 - http://git.io/aGuNVw
18:09:04  * dshaw_quit (Quit: Leaving.)
18:09:36  * mikealquit (Quit: Leaving.)
18:10:10  <AndreasMadsen>^-- Oh nice, I will need to make some more pull request so I can get at 8 again :)
18:10:27  <piscisaureus_>AndreasMadsen: oh no that will only demotivate us
18:10:35  <piscisaureus_>AndreasMadsen: you have to wait until the number drops
18:12:30  <AndreasMadsen>piscisaureus_: hehe - I just like the number eight is very soft with not edges. No zero do not count.
18:13:25  <AndreasMadsen>piscisaureus_: If you are too motivated you could review #2314
18:13:38  <piscisaureus_>AndreasMadsen: I am doing it actually
18:13:47  <AndreasMadsen>Oh, wow
18:14:18  <AndreasMadsen>piscisaureus_: ++
18:14:19  <kohai>piscisaureus_ has 3 beers
18:17:05  * luxigojoined
18:17:52  * travis-cijoined
18:17:53  <travis-ci>[travis-ci] joyent/node#264 (master - 7088487 : Andreas Madsen): The build is still failing.
18:17:53  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/21dd53f...7088487
18:17:53  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/536760
18:17:53  * travis-cipart
18:18:33  * pksunkarajoined
18:19:23  <piscisaureus_>AndreasMadsen: does jslint tell you to used [ foo ] and not [foo]
18:19:24  * bradleymeckjoined
18:19:35  <piscisaureus_>but also [ /test/ ] and not [/test/]
18:19:35  <piscisaureus_>?
18:19:50  <piscisaureus_>and also to prefer ' over " ?
18:20:01  * TooTallNatejoined
18:22:19  <indutny>yeah
18:22:28  <indutny>js style is something that many pull requests are missing
18:22:36  <mmalecki>we have 0.7 on travis!
18:22:38  <AndreasMadsen>piscisaureus_: It is to long ago
18:22:40  <mmalecki>indutny: maybe a wiki page?
18:22:53  <mmalecki>like, detailed one, not just referring to google
18:23:36  <AndreasMadsen>piscisaureus_: just tested it -> Extra space after "["
18:23:40  <AndreasMadsen>xtra space before "]"
18:24:22  <AndreasMadsen>piscisaureus_: Yes ' should be used, never "
18:25:05  * sh1mmerjoined
18:25:49  <indutny>AndreasMadsen: jslint sucks :)
18:25:53  <AndreasMadsen>piscisaureus_: [/test/] is an exception to --^
18:25:56  <indutny>but it's useful sometimes
18:26:10  * sh1mmerquit (Remote host closed the connection)
18:26:32  <AndreasMadsen>indutny: I like it to have it in my code editor, catch many good things
18:26:32  <indutny>and node is using it as a simple tool to keep style same everywhere
18:26:53  * sh1mmerjoined
18:27:08  <AndreasMadsen>indutny: Yes, but when there is so many errors I need to do `make jslint | grep cluster`
18:27:20  <AndreasMadsen>Should not be required
18:30:43  * AndreasMadsenquit (Remote host closed the connection)
18:33:01  * mjr_joined
18:37:47  * `3rdEdenjoined
18:42:25  * luxigoquit (Remote host closed the connection)
18:46:18  <CIA-115>node: Andreas Madsen v0.6 * r4865063 / (38 files in 4 dirs): Tests: fix jslint issues - http://git.io/5KVUTA
18:54:24  * travis-cijoined
18:54:24  <travis-ci>[travis-ci] joyent/node#265 (v0.6 - 4865063 : Andreas Madsen): The build was broken.
18:54:24  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/ca6eded...4865063
18:54:24  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/537029
18:54:24  * travis-cipart
18:59:13  <ryah_>hello
18:59:36  * dshaw_joined
19:00:04  <piscisaureus_>hello
19:00:17  * pksunkarapart
19:00:31  <indutny>hi
19:03:56  * AndreasMadsenjoined
19:06:39  * ryah_assigns people some random bugs
19:06:45  <indutny>:)
19:06:48  <AndreasMadsen>piscisaureus_: thanks for the landing you are amazing.
19:06:58  <piscisaureus_>AndreasMadsen: I didn't land everything
19:07:08  <piscisaureus_>AndreasMadsen: there's some merge conflicts, some stuff I am not sure about
19:07:20  <piscisaureus_>AndreasMadsen: I will tell you when I'm done
19:07:38  <indutny>piscisaureus_: oooh
19:07:43  <indutny>do not tell me about conflicts!
19:07:49  <indutny>1.5 hours of merging that v8 patch into 3.6
19:08:03  <indutny>soooo many conflicts
19:08:09  <indutny>and they are so non-obvious...
19:08:28  * isaacsjoined
19:08:37  * indutnychanged nick to indutny_away
19:08:52  <isaacs>indutny_away: you work at yandex?
19:09:08  <indutny_away>isaacs: surprise! :)
19:09:20  <ryah_>russian spy
19:09:24  <indutny_away>hahahaha
19:09:24  <ryah_>;)
19:10:11  <indutny_away>bbiab
19:10:30  <ryah_>bnoordhuis: you there?
19:14:49  <piscisaureus_>ryah_: bnoordhuis: igorzi: call?
19:14:56  <piscisaureus_>or is it cancelled?
19:16:39  <ryah_>not sure
19:17:24  <CIA-115>node: Bert Belder v0.6 * r892056b / (8 files in 2 dirs): tests: fix more lint issues - http://git.io/CHffhQ
19:17:50  <piscisaureus_>AndreasMadsen: I landed all fixed I want to land
19:18:13  <piscisaureus_>AndreasMadsen: there's a few things I didn't like or there were conflicted
19:18:13  <AndreasMadsen>piscisaureus_: Okay, anything I should do?
19:18:19  <piscisaureus_>AndreasMadsen: yes, close the pull request
19:18:38  <piscisaureus_>AndreasMadsen: and add another one if there is stuff left you think that needs to be fixed
19:18:46  <AndreasMadsen>piscisaureus_: Okay - I will close and properly make a new one later
19:18:59  <AndreasMadsen>Oh, you are so fast
19:21:05  <AndreasMadsen>piscisaureus_: Should I base the next on v0.6 or v0.7
19:21:47  <piscisaureus_>AndreasMadsen: on latest v0.6 branch
19:22:35  <AndreasMadsen>ryah_: are you aware that process.on('exit') in parent do not fire when using isolates
19:22:53  <ryah_>yeah
19:23:08  <ryah_>we also have this very funky linked list for exit callbacks
19:23:13  <ryah_>i'll add an issue for it
19:23:21  <AndreasMadsen>Good
19:23:26  <ryah_>AndreasMadsen: do you have a test for it that we can use?
19:23:44  <AndreasMadsen>min
19:24:44  <AndreasMadsen>This is how I detected it: https://github.com/AndreasMadsen/node-1/blob/1b36582c56888c42f9a445219f54194852e50cc0/test/simple/test-child-process-fork-kill.js
19:25:00  <AndreasMadsen>But is a part of https://github.com/joyent/node/pull/2544
19:25:48  * travis-cijoined
19:25:48  <travis-ci>[travis-ci] joyent/node#266 (v0.6 - 892056b : Bert Belder): The build is still failing.
19:25:48  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/4865063...892056b
19:25:48  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/537255
19:25:48  * travis-cipart
19:32:06  <piscisaureus_>hmm
19:32:26  <piscisaureus_>is test-child-process-fork2 known for intermittent failure?
19:32:29  <mmalecki>yes
19:32:38  <mmalecki>it's racey
19:32:41  <piscisaureus_>ok, that's sort of good news
19:34:50  <CIA-115>node: Ryan Dahl v0.6 * r54ad2f6 / doc/community/index.html : Link to Marak's module rap in community page - http://git.io/9PN2sw
19:36:09  <indutny_away>^^^ nodejitsu ftw ^^^
19:36:35  <indutny_away>ttyl, everyone
19:36:38  <indutny_away>going to sleep
19:37:52  <mmalecki>ryah_: ++, lol
19:37:52  <kohai>ryah_ has 3 beers
19:40:23  <AndreasMadsen>ryah: here you go https://github.com/joyent/node/pull/2564
19:40:43  <AndreasMadsen>ryah_: ^
19:40:56  <ryah_>great thanks
19:42:43  <AndreasMadsen>ryah_: In return you could review that cluster patch -> https://github.com/joyent/node/pull/2470
19:42:56  * travis-cijoined
19:42:56  <travis-ci>[travis-ci] joyent/node#267 (v0.6 - 54ad2f6 : Ryan Dahl): The build was fixed.
19:42:56  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/892056b...54ad2f6
19:42:56  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/537289
19:42:56  * travis-cipart
19:43:49  <CIA-115>node: Andreas Madsen master * r4a38795 / test/simple/test-isolates-parent-exit.js :
19:43:49  <CIA-115>node: Add failing test case: parent on('exit')
19:43:49  <CIA-115>node: Fixes #2564 - http://git.io/MtY6Rg
19:49:19  * mralephjoined
20:09:45  * travis-cijoined
20:09:46  <travis-ci>[travis-ci] joyent/node#268 (master - 4a38795 : Andreas Madsen): The build is still failing.
20:09:46  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/7088487...4a38795
20:09:46  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/537348
20:09:46  * travis-cipart
20:34:37  * mikealjoined
20:45:01  * dshaw_quit (Quit: Leaving.)
21:13:32  <AndreasMadsen>ryah_: Please add a way to close the IPC channel when using isolate, else we can't gracefull kill cluster workers.
21:15:09  <bnoordhuis>ryah_: i am now
21:18:26  * mralephquit (Quit: Leaving.)
21:18:53  <bradleymeck>any chance we can get a way to let fork worker processes gracefully die too? (right now i have uv_unref() twice via C++)
21:20:06  <AndreasMadsen>bradleymeck: this is the same, cluster use fork :)
21:20:20  <bradleymeck>but you were talking isolates
21:20:32  <bradleymeck>i just want the child_process ipc to have a graceful exit
21:20:34  <AndreasMadsen>bradleymeck: https://github.com/joyent/node/pull/2426
21:21:11  <bradleymeck>mmm that sounds a bit different than my idea
21:21:42  <AndreasMadsen>bradleymeck: care to explain ?
21:22:23  <bradleymeck>we have a worker that does some stuff which is logged by the parent (including some events which can update our DB) and we don't know how many retries etc will happen in it so we let it do it's thing, when there are no callbacks/io left we let it die
21:22:33  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
21:22:39  <bradleymeck>we still want them able to communicate, just not forced open by the ipc channel
21:23:29  <bradleymeck>a good example is gf3's sandbox which we are testing out something like google apps script with
21:24:09  <AndreasMadsen>bradleymeck: oh like the persistent options is when watching a file
21:24:43  <bradleymeck>watching a file, or running something you don't know when it will be done
21:24:55  <bradleymeck>but ya similar
21:26:29  <AndreasMadsen>bradleymeck: yes I agree that would be nice and very difficult to implement in userland.
21:26:58  <bradleymeck>you can do it pretty easy, but its just kind of wierd to uv_unref twice at start
21:27:18  <bradleymeck>instead of the parent just stating that it should allow for graceful death
21:35:15  * AndreasMadsenquit (Remote host closed the connection)
21:38:33  <isaacs>bnoordhuis: hey
21:38:35  <isaacs>bnoordhuis: https://github.com/joyent/libuv/pull/217
21:38:57  <isaacs>bnoordhuis: off the top of your head, any idea what's preventing pulling some of that into libuv? looks like the patch needs a rebase.
21:39:18  <isaacs>ryah_, igorzi: feel free to weigh in as well ^
21:39:38  <isaacs>(re udb set multicast loop and set multicast ttl)
21:40:10  * piscisaureus_joined
21:40:34  * dshaw_joined
21:41:06  * pieternquit (Ping timeout: 276 seconds)
21:41:54  <bnoordhuis>isaacs: i think i lgtm'd that patch on irc a while ago, just never landed it
21:47:18  <isaacs>ok, cool
21:47:23  <isaacs>if we could get it in 0.7, that'd be awesome.
21:47:38  <isaacs>github says it won't apply cleanly, but github is kind of an idiot sometimes.
21:48:24  <isaacs>it looks like the goal was to get it into 0.6, but it didn't quite make the cut. oh well.
21:49:39  <piscisaureus_>isaacs: yeah everybody just kinda forgot about it
21:49:53  <piscisaureus_>bnoordhuis: will you be in the office this week?
21:50:20  <bnoordhuis>piscisaureus_: yes, probably thursday
21:50:43  <bnoordhuis>piscisaureus_: why? miss me?
21:51:01  <piscisaureus_>bnoordhuis: yeah *snif*
21:51:35  <piscisaureus_>bnoordhuis: I want to sit down to get the handle list stuff done for as much as it is needed for isolates
21:51:54  <piscisaureus_>bnoordhuis: I am postponing domains work for a while, can't find an api that feels right
21:52:12  <isaacs>piscisaureus_: did you see substack's toss thing?
21:52:16  <piscisaureus_>bnoordhuis: and I want to cut back on the issues backlog
21:52:18  <isaacs>piscisaureus_: i'm curious about your thoughts on it.
21:52:21  <piscisaureus_>isaacs: no
21:52:35  <isaacs>https://github.com/substack/node-toss
21:52:55  <isaacs>it's just pure js, no lowlevel stuff, but it's a pretty nice api for doing timeouts and cancelling.
21:53:19  <isaacs>could maybe provide some inspiration.
21:53:47  <piscisaureus_>isaacs: he's taking a path that I don't want to take
21:53:51  <piscisaureus_>(wrapping all callbacks)
21:53:56  <isaacs>for sure
21:54:05  <piscisaureus_>but it's close to what I have in mind
21:54:21  <isaacs>it'd be interesting to maybe make it a goal to let him write toss with less ceremony.
21:54:57  <piscisaureus_>isaacs: well that's one of the issues I am struggling with too... we can't really tell if a function is a callback
21:55:03  <isaacs>i'm not sure how you'd be able to get around some of the cb-wrapping to do what he's after, though.
21:55:13  <isaacs>unless we go back to c++ eventemitters which... ugh. no thakns.
21:55:52  <piscisaureus_>isaacs: well... that's not really needed
21:55:58  <isaacs>right
21:56:06  <piscisaureus_>isaacs: but EventEmitter *is* sort of a special case
21:56:09  <isaacs>you really only need to capture the functions that go into the event loop.
21:56:20  <piscisaureus_>isaacs: yeah well, and emitted events
21:56:28  <piscisaureus_>so we have to patch EventEmitter
21:56:34  <isaacs>ew ew ew
21:56:40  <isaacs>that's kind of gross.
21:56:45  <piscisaureus_>isaacs: yes
21:56:58  <piscisaureus_>isaacs: suddenly EventEmitter2 does something horribly wrong
21:57:13  <isaacs>EE should be pure JS
21:57:16  <piscisaureus_>because it does not understand domains magic
21:57:24  <isaacs>what if we said that domains only cover things that go into the C++ layer?
21:57:30  <isaacs>forget emitted evetns.
21:57:32  <isaacs>only callbacks.
21:57:40  <piscisaureus_>isaacs: well there you have one
21:58:06  <piscisaureus_>isaacs: multiple setTimeout calls can share an uv_timer
21:58:09  <isaacs>right
21:58:40  <piscisaureus_>isaacs: so suddenly we can't properly propagate the domain through a setTimeout call
21:59:12  <piscisaureus_>isaacs: there are similar issues in userland modules
21:59:36  <isaacs>i see.
21:59:37  <piscisaureus_>isaacs: for example my database driver lazily makes a connection to the database on the first query
21:59:48  <isaacs>because the timer would be in the domain.
21:59:55  <piscisaureus_>yes
22:00:09  <isaacs>here's a thought... what if a domain object had a setTimeout and setInterval method?
22:00:20  <isaacs>and the "global" ones would all use the same domain?
22:00:25  <isaacs>nevermind, that's dumb.
22:01:06  * felixgejoined
22:01:06  * felixgequit (Changing host)
22:01:06  * felixgejoined
22:01:21  <isaacs>domain(function (d) { files.forEach(function (f) { fs.readFile(f, function (er, data) { if (er) return d.cancel(); setTimeout(...) }) }) })
22:01:32  <isaacs>if that setTimeout is a different domain than the fs.readFile, then it's surprising
22:01:41  <piscisaureus_>isaacs: yes
22:01:56  <isaacs>but you always call setTimeout from the global object
22:02:08  <isaacs>so you need to always have some sense of the "currentDomain" on the global
22:02:12  <piscisaureus_>isaacs: yup
22:02:18  <isaacs>(or, at least, somewhere accessible by setTimeout)
22:02:28  <isaacs>and i guess it could just do currentDomain.setTimeout() instead...
22:03:10  <piscisaureus_>isaacs: this problem is not really a problem, we could use the global.setTimeout just as easily
22:03:32  <piscisaureus_>isaacs: but consider this: ... (coming up)
22:03:41  * isaacsmakes some popcorn...
22:05:18  <bnoordhuis>piscisaureus_: okay, i'll drop by thursday. make sure there's beer in the fridge
22:05:25  <bnoordhuis>and not heineken or amstel >:(
22:07:16  <CIA-115>node: Ben Noordhuis master * re493b29 / (.gitignore Makefile configure): build: respect --debug configure switch - http://git.io/YKC1rQ
22:07:16  <piscisaureus_>isaacs: https://gist.github.com/1629308
22:08:13  <isaacs>piscisaureus_: so.... here's the thing:
22:08:23  <isaacs>every time you "escape" the stack, you're doing so by one of two ways:
22:08:27  <isaacs>1. a timeout
22:08:39  <isaacs>2. doing IO
22:08:43  <piscisaureus_>3. nextTick
22:08:49  <piscisaureus_>yes
22:08:53  <isaacs>ok, 3 ways ;)
22:08:54  <TooTallNate>4. thread loop
22:09:01  <isaacs>let's forget threads for now
22:09:28  <piscisaureus_>isaacs: true
22:09:48  <piscisaureus_>isaacs: so ideally you would set the domain every time you enter JS from the event loop
22:09:51  <isaacs>my point is, we don't have to wrap EE, because events are either pure JS (and blocking, so never escape the domain) or go through an IO call, in which case, they're either a new child domain, or inherit the parent, but we can trap it there.
22:09:59  <isaacs>exactly
22:10:11  <isaacs>each tick of the event loop has exactly one domain associated with it
22:10:32  <piscisaureus_>isaacs: the thing is, if you really try to use this model you hit a lot of snags
22:10:43  <isaacs>like?
22:10:47  <piscisaureus_>isaacs: sometimes you need to bridge from one domain to another
22:11:15  <piscisaureus_>isaacs: 2 domains sharing a timer is the simple case
22:11:33  <isaacs>can we just say that domains don't share timers?
22:11:46  <piscisaureus_>isaacs: 2 domains sharing a database connection is more difficult because the library author needs to do it
22:11:51  <isaacs>or have the timer store the cb and domain, as well as the cb?
22:11:58  <igorzi>bnoordhuis: have you seen https://github.com/joyent/node/issues/2562
22:12:22  <bnoordhuis>igorzi: i have now
22:12:30  <isaacs>piscisaureus_: the stuff where it touches userland modules is trickier, i agree.
22:12:41  <piscisaureus_>isaacs: sometimes you want to emit events from one domain into another
22:12:56  <igorzi>bnoordhuis: on unix, what keeps the child event-loop alive?
22:13:22  <isaacs>piscisaureus_: what if we said that domains can only talk to one another via async message passing?
22:13:34  <isaacs>or something similarly restrictive.
22:13:36  <piscisaureus_>isaacs: that's what ryah suggested too
22:13:43  <bnoordhuis>igorzi: hrm, you ask difficult questions
22:13:46  <isaacs>oh, but you wanna pass an actual object, not a serialized thing.
22:13:54  <piscisaureus_>isaacs: of course
22:13:57  <isaacs>but still, it could be a bit like a nextTick into that other domain
22:14:04  <piscisaureus_>isaacs: that's not really the difficult part
22:14:27  <isaacs>var connection = getConnection(); otherDomain.enter(function () { connection.doSomething() })
22:14:32  <isaacs>that gets hairy.
22:15:05  <isaacs>if connection.doSomething() does so IO, does it happen in connection's domain, or in otherDomain?
22:15:51  <igorzi>bnoordhuis: is it possible that process.env.NODE_CHANNEL_FD is somehow set in the child isolate? causing this code-path? https://github.com/joyent/node/blob/master/src/node.js#L433
22:16:05  <piscisaureus_>isaacs: if you want to think with me on this issue you're very welcome :-)
22:16:39  <isaacs>piscisaureus_: am i getting to the tough spot, as you see it?
22:16:59  <isaacs>i'm happy to get us both simmering on this
22:17:07  <isaacs>just wanna make sure i'm there with you, and not doing something unhelpful :)
22:17:13  <piscisaureus_>isaacs: haha
22:17:36  <piscisaureus_>isaacs: well I have had some conversations with ryah about this but I never really got really comfortable with any of the proposals
22:17:52  <piscisaureus_>isaacs: so if you can help me that'd be great
22:17:56  <isaacs>i think pquerna had some thoughts on this, at least, he seemed skeptical of domains' feasibility.
22:17:57  <bnoordhuis>igorzi: i don't think so, the isolates code in lib/child_process.js ignores the environment
22:18:19  <igorzi>bnoordhuis: ok good
22:19:11  <piscisaureus_>isaacs: at some point I had this proposal: https://gist.github.com/d50183eb434370cafe6a
22:19:33  * brsonjoined
22:19:45  <piscisaureus_>isaacs: but I was never really happy with the second part (that's about streams)
22:20:47  * travis-cijoined
22:20:48  <travis-ci>[travis-ci] joyent/node#269 (master - e493b29 : Ben Noordhuis): The build is still failing.
22:20:48  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/4a38795...e493b29
22:20:48  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/538030
22:20:48  * travis-cipart
22:23:47  <piscisaureus_>isaacs: the bottom line is basically this at some point you want to delegate some work to be done in a domain, but somehow "results" need to flow out
22:24:00  <isaacs>piscisaureus_: yes.
22:24:24  <piscisaureus_>isaacs: if the result is a simple value its easy, but if it is a stream of events or messages it gets more hairy
22:24:33  <isaacs>piscisaureus_: also, you want to be able to have the db connection crash, and take with it all the domains tied to that work, without killing other things
22:24:41  <piscisaureus_>isaacs: yes
22:24:42  <isaacs>even if those other things have references to connections to the db.
22:25:51  <piscisaureus_>isaacs: this is probably all very well possible
22:25:54  <isaacs>what you really want is to have the db, template/fs stuff, and http request (let's say) to all be siblings.
22:26:00  <piscisaureus_>but I don't want to create a fuckton of api surface
22:26:16  <isaacs>but if a request requires a web service request to some backend server, it should be under teh same domain as the initial request.
22:26:33  <isaacs>and a failure (or any thrown error) should be catchable, and result in a 500 response
22:26:41  <piscisaureus_>isaacs: yes
22:26:47  <piscisaureus_>exactly
22:26:54  <isaacs>yeah, you definitely do not want a lot of api surface, i agree.
22:26:59  <isaacs>in my mind, they nest like subshells.
22:27:21  <isaacs>and if you kill the parent, it kills all the children.
22:28:00  <isaacs>and if you have a reference to something in a sibling, you can do stuff with it, but then we have almost like a shared-memory issue
22:28:18  <isaacs>not quite as bad, but still kind of sticky
22:28:52  <piscisaureus_>isaacs: the only thing we can do about that is disallow it
22:29:15  <piscisaureus_>isaacs, otherwise you get something like
22:29:17  <isaacs>that kind of sucks then, right?
22:29:36  <isaacs>unless we have to say that the shared db connection is a parent domain of the http request domains
22:30:04  <piscisaureus_>.// stream is in domain1
22:30:05  <piscisaureus_>.// execution scope is in domain2
22:30:05  <piscisaureus_>.stream.write('foo', function() {
22:30:05  <piscisaureus_>. // runs in domain1 or domain2?
22:30:05  <piscisaureus_>.});
22:30:25  <piscisaureus_>isaacs: :-)
22:30:27  <piscisaureus_>isaacs: exactly
22:30:49  <piscisaureus_>isaacs: but now callbacks that arise from shared connection run in the wrong domain
22:31:09  <isaacs>well... i'd like to say that the function would be run in whatever domain was active at the time that it got called.
22:31:19  <isaacs>but then if you have 10 requests in progress, you could be all kinds of awful.
22:31:33  <CIA-115>node: Dan Williams v0.6 * r091ab85 / doc/api/appendix_1.markdown : docs: replace expresso with mocha in appendix 1 - http://git.io/159kfw
22:31:40  <CIA-115>node: Dan Williams master * r29ce743 / doc/api/cluster.markdown : docs: fix syntax error on cluster api docs - http://git.io/k6juOg
22:31:42  <piscisaureus_>isaacs: heh the function itself can run in the active domain, but what about the callback
22:31:43  <piscisaureus_>?
22:31:43  <isaacs>the alternative is that functions run in the domain where they're created, but now we have to hijack the Function thing in v8
22:32:07  <piscisaureus_>isaacs: yes we are not going to do that period
22:32:10  <piscisaureus_>(hacking v8)
22:32:13  <isaacs>piscisaureus_: right, so you get towards EE objects having to be associated with a single domain.
22:32:22  <isaacs>or, wrapping cb's
22:32:30  <piscisaureus_>yes
22:32:59  <isaacs>i think we could say that EE's are tied to the domain where they're created.
22:33:05  <piscisaureus_>isaacs: iow, either you can only interact with an EE in the domain that created it
22:33:10  <isaacs>and then provide a cb-wrapping approach as a way to get out of that
22:33:15  <piscisaureus_>yeah
22:33:16  <piscisaureus_>so
22:33:19  <isaacs>ie, you could like bind a function to a domain by wrapping it
22:33:22  <piscisaureus_>domain.bind(function() { });
22:33:25  <piscisaureus_>yeah
22:33:55  <isaacs>i think at least then you could be explicit about it, and the default could be reasonable.
22:34:05  <piscisaureus_>isaacs: ok now we have 2 issues left:
22:34:29  <piscisaureus_>(1) we have to insert checks to prevent people from interacting with an EE from another domain. expensive
22:34:45  <isaacs>1 isn't just expensive. it's also annoying.
22:35:05  <piscisaureus_>(2) People rely on callbacks for control flow
22:35:58  <piscisaureus_>ee.on('close', domain.bind(function(result) {
22:35:58  <piscisaureus_> connection.resume();
22:35:58  <piscisaureus_>}));
22:36:13  <piscisaureus_>If ee's domain dies, the callback will never happen
22:36:31  <piscisaureus_>suddenly we've lost all the graceful cleanup that a domain promised
22:36:45  <isaacs>ee.domain.on("end", function () { ... })
22:37:01  <isaacs>what about something like that?
22:37:07  <piscisaureus_>isaacs: sure
22:37:24  <isaacs>ee.on("close", ee.domain.end.bind(ee.domain))
22:38:02  <isaacs>then the domain could be ended by the EE emitting "close", or by an error, or by timing out, etc.
22:38:21  <isaacs>when it ends, all the EE's associated with it are neutralized, so they never emit anything again
22:38:25  <piscisaureus_>ee.on('5times', domain.bind(function(buf) {
22:38:25  <piscisaureus_> if (++count == 5) connection.resume();
22:38:25  <piscisaureus_>});
22:38:59  <piscisaureus_>isaacs: the best thing I could think of is close to erlang
22:39:25  <piscisaureus_>isaacs: 2 domains can interact but if they do they jeopardize themselves
22:39:35  <piscisaureus_>if the "other domains" dies, you will too
22:39:37  * travis-cijoined
22:39:37  <travis-ci>[travis-ci] joyent/node#270 (v0.6 - 091ab85 : Dan Williams): The build passed.
22:39:37  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/54ad2f6...091ab85
22:39:37  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/538158
22:39:37  * travis-cipart
22:40:09  <piscisaureus_>unless you have an explicit "death" handler for the other domain
22:40:40  <isaacs>how would you detect if domainA "interacted" with domainB?
22:41:15  <piscisaureus_>isaacs: domain.bindTo(ee.domain, function() {
22:41:23  <piscisaureus_>terrible but works
22:41:49  <piscisaureus_>iow the bind function only works if you specify 2 domains
22:41:49  <isaacs>i see. so, in that case, it says "ee.domain !== the current domain, so this is a link"
22:42:02  <piscisaureus_>yes
22:42:02  <isaacs>am i grokking that properly?
22:42:11  <piscisaureus_>it is terrible though
22:42:14  <isaacs>yeah
22:42:16  <isaacs>that's a lot of api
22:42:27  <piscisaureus_>it looks gross
22:42:51  <isaacs>yeah
22:43:26  * igorzi_joined
22:44:29  <piscisaureus_>brb
22:44:32  * travis-cijoined
22:44:32  <travis-ci>[travis-ci] joyent/node#271 (master - 29ce743 : Dan Williams): The build is still failing.
22:44:32  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/e493b29...29ce743
22:44:32  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/538161
22:44:32  * travis-cipart
22:45:13  * igorziquit (Ping timeout: 258 seconds)
22:45:59  * pieternjoined
23:02:22  * bradleymeckquit (Ping timeout: 252 seconds)
23:03:20  <igorzi_>ryah bnoordhuis piscisaureus_: https://gist.github.com/1629476
23:03:42  <igorzi_>ryah bnoordhuis piscisaureus_: libuv api changes to support sharing sockets between isolates
23:03:58  * felixgequit (Quit: felixge)
23:09:56  * perezd_joined
23:10:12  * perezdquit (Ping timeout: 252 seconds)
23:10:13  * perezd_changed nick to perezd
23:12:49  * dapquit (Quit: Leaving.)
23:13:12  * dapjoined
23:16:37  <piscisaureus_>looks fine
23:17:14  <piscisaureus_>I considerd whether uv_tcp_dup(source, target, toop) would be better but it would require synchronization between loops
23:17:15  <bnoordhuis>https://github.com/bnoordhuis/node/commit/f363709 <- is this a good idea?
23:17:17  <piscisaureus_>so this is prolly better
23:18:14  <bnoordhuis>igorzi_ piscisaureus_: shouldn't we have a more general approach? something like uv_handle_detach(handle) / uv_handle_attach(loop, handle)?
23:18:55  <piscisaureus_>bnoordhuis: that would work only for handle *transfer* right, not for sharing?
23:18:58  <bnoordhuis>that is, if you want to send over a handle, not clone it
23:19:05  <bnoordhuis>yeah, precisely
23:21:00  <igorzi_>bnoordhuis: so, we're planning to let isolates pass more handles between each other compared to processes?
23:21:21  <bnoordhuis>igorzi_: more handles?
23:21:33  <igorzi_>besides TCP servers
23:21:39  <bnoordhuis>oh right
23:21:48  <igorzi_>that should be "more handle types"
23:21:48  <bnoordhuis>yeah, udp handles for example
23:22:17  <bnoordhuis>but that's something that should be fixed for child process too
23:22:31  <bnoordhuis>*processes
23:24:03  <igorzi_>bnoordhuis: so, you're saying you want a more general api for transferring all types of handles (not just TCP), right?
23:24:25  <bnoordhuis>igorzi_: yes
23:24:53  <igorzi_>bnoordhuis: also, as piscisaureus_ said - detach/attach is for transferring, but with tcp servers it's sharing (the detached tcp handle should still work)
23:24:53  <bnoordhuis>otoh, i could live with a tcp-only solution for now
23:25:37  * mrb_bkquit (Read error: Connection reset by peer)
23:25:38  * Raynosquit (Write error: Broken pipe)
23:28:52  <bnoordhuis>igorzi_: yeah, i suppose uv_handle_dup() is a better name
23:30:54  * Raynosjoined
23:32:25  * mikealquit (Quit: Leaving.)
23:42:58  <bnoordhuis>who here feels most responsible for the cluster module?
23:46:40  <CIA-115>node: Ben Noordhuis v0.6 * rd44ce97 / (2 files in 2 dirs):
23:46:40  <CIA-115>node: cluster: don't always kill the master on uncaughtException
23:46:40  <CIA-115>node: uncaughtException handlers installed by the user override the default one that
23:46:40  <CIA-115>node: the cluster module installs, the one that kills off the master process.
23:46:40  <CIA-115>node: Fixes #2556. - http://git.io/VRYfsQ
23:47:39  * paddybyersquit (Quit: paddybyers)
23:52:36  <igorzi_>bnoordhuis: so any idea on https://github.com/joyent/node/issues/2562? if we knew how the child isolate stays alive - then we could decide on what's the best way to fix this
23:53:32  <bnoordhuis>igorzi_: i suspect it's a reference counting bug in uv-unix
23:54:07  <piscisaureus_>or on windows :-)
23:54:27  <piscisaureus_>oh wait windows is bug-free
23:54:31  * travis-cijoined
23:54:32  <travis-ci>[travis-ci] joyent/node#272 (v0.6 - d44ce97 : Ben Noordhuis): The build passed.
23:54:32  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/091ab85...d44ce97
23:54:32  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/538590
23:54:32  * travis-cipart
23:55:28  <igorzi_>bnoordhuis: right :)
23:55:44  * Raynosquit (Read error: Connection reset by peer)
23:57:26  <piscisaureus_>will there be a nodeconf just after jsconf just like last year?
23:57:38  <isaacs>piscisaureus_: i'm not sure when nodeconf will be. i know mikeal is working on it.
23:57:56  <piscisaureus_>if it's gonna be just after jsconf it would be nice to know :-)
23:58:02  <piscisaureus_>tomorrow is jsconf ticket sale
23:58:05  <igorzi_>bnoordhuis: i debugged this on windows yesterday, the child isolate creates 2 handles: uv_tty_t (for stdout), which is artificially unref'ed; and uv_async_t, which is also unref'ed
23:58:06  <isaacs>yes
23:58:11  <isaacs>piscisaureus_: you should come to jsconf anyway :)
23:59:19  <bnoordhuis>igorzi_: can you apply this patch, then run test-isolates1? piscisaureus_: is
23:59:23  <bnoordhuis>ehh...
23:59:26  <bnoordhuis>https://gist.github.com/34c459f6fdd0ea3ce2f6