00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:18:55  <piscisaureus_>sblom: are you getting there?
00:21:13  * indexzeroquit (Quit: indexzero)
00:21:24  * brsonquit (Ping timeout: 240 seconds)
00:22:20  * brsonjoined
00:26:33  * paddybyersquit (Ping timeout: 265 seconds)
00:27:03  * karupaneruraquit (Excess Flood)
00:30:13  * karupanerurajoined
00:41:07  <piscisaureus_>hey, congrats DrPizza :-p
00:41:15  <DrPizza>haha
00:41:21  <DrPizza>another year older ;_;
00:42:12  <piscisaureus_>32, man ...
00:43:07  <mmalecki>that's like...
00:43:11  <mmalecki>2^5
00:43:12  <mmalecki>wow
00:57:41  <DrPizza>heh
00:57:43  <DrPizza>yeah
01:07:43  * brsonquit (Quit: leaving)
01:09:59  * bradleymeck_joined
01:11:31  * bradleymeckquit (Ping timeout: 248 seconds)
01:11:32  * bradleymeck_changed nick to bradleymeck
01:11:56  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
01:12:03  * sblomquit (Ping timeout: 248 seconds)
01:15:59  * lohkeypart
01:22:05  <MI6>joyent/node: Nirk Niggler master * 0459a23 : REPL: fix floating point number parsing In JS, the expression ".1" is a - http://git.io/jLbVQQ
01:32:17  * pooyaquit (Quit: pooya)
01:49:23  * indexzerojoined
02:02:29  * dapquit (Quit: Leaving.)
02:10:33  * chrisdickinsonquit (Excess Flood)
02:16:10  * chrisdickinsonjoined
02:25:51  * pooyajoined
02:43:16  * stagas_joined
02:44:38  * stagasquit (*.net *.split)
02:44:39  * Chip_Zeroquit (*.net *.split)
02:44:42  * stagas_changed nick to stagas
02:52:59  * indexzeroquit (Quit: indexzero)
02:59:47  * stagasquit (Ping timeout: 252 seconds)
03:01:00  * philips_quit (Excess Flood)
03:14:25  * toothrchanged nick to toothrot
03:21:50  * philips_joined
03:26:29  * joshthecoderquit (Quit: Leaving...)
03:29:34  * pooyaquit (Quit: pooya)
03:31:10  * mikeal1joined
03:31:12  * mikealquit (Read error: Connection reset by peer)
03:44:45  * indexzerojoined
03:57:09  * indexzeroquit (Quit: indexzero)
04:08:36  <mmalecki>ircretary: ask bnoordhuis how would you feel about adding os information to libuv (release and such, basically all the stuff in node_os.cc)
04:08:36  <ircretary>mmalecki: I'll tell bnoordhuis you asked.
04:11:48  * piscisaureus_joined
04:11:55  * piscisaureus_quit (Client Quit)
04:15:27  * c4milojoined
04:20:08  * c4miloquit (Ping timeout: 256 seconds)
04:31:22  * joshthecoderjoined
04:31:56  * indexzerojoined
04:40:59  * Chip_Zerojoined
05:15:17  * bradleymeckquit (Quit: bradleymeck)
05:23:57  * indexzeroquit (Quit: indexzero)
05:25:01  * loladirojoined
05:29:54  * bradleymeckjoined
05:35:35  * loladiroquit (Ping timeout: 260 seconds)
05:37:13  * TooTallNatequit (Quit: Computer has gone to sleep.)
05:38:22  * wolfeidauquit (Remote host closed the connection)
05:39:38  * loladirojoined
05:45:25  * TooTallNatejoined
05:51:56  * loladiroquit (Ping timeout: 256 seconds)
05:55:39  * wolfeidaujoined
06:03:10  * TooTallNatequit (Quit: Computer has gone to sleep.)
06:22:13  * mmaleckichanged nick to mmalecki[zzz]
06:43:41  * felixgejoined
06:43:42  * felixgequit (Changing host)
06:43:42  * felixgejoined
06:54:40  <felixge>does anybody remember how the v8 hash key collision was fixed?
07:04:36  * AvianFluquit (Remote host closed the connection)
07:15:04  * pooyajoined
07:31:46  * bradleymeck_joined
07:32:15  * mikeal1quit (Quit: Leaving.)
07:32:19  * bradleymeckquit (Ping timeout: 248 seconds)
07:32:20  * bradleymeck_changed nick to bradleymeck
07:43:54  * rendarjoined
07:54:21  * pooyaquit (Quit: pooya)
07:56:39  * bradleymeck_joined
07:57:54  * bradleymeckquit (Ping timeout: 260 seconds)
07:57:55  * bradleymeck_changed nick to bradleymeck
07:59:49  * loladirojoined
08:02:28  * mikealjoined
08:13:03  * mikealquit (Ping timeout: 276 seconds)
08:16:45  * `3rdEdenjoined
08:34:15  * mikealjoined
09:00:59  * loladiroquit (Ping timeout: 252 seconds)
09:01:11  * roxlujoined
09:01:13  <roxlu>hi
09:09:31  * pooyajoined
09:21:16  * pooyaquit (Quit: pooya)
09:22:36  * hzjoined
09:42:59  * benoitcquit (Read error: Operation timed out)
09:51:10  * joshthecoderquit (Quit: Linkinus - http://linkinus.com)
10:33:16  * qmx|awaychanged nick to qmx
10:39:52  * benoitcjoined
10:42:10  * benoitcquit (Excess Flood)
10:49:52  * benoitcjoined
10:52:25  * bradleymeckquit (Quit: bradleymeck)
11:01:43  <indutny>felixge: I do
11:01:51  <indutny>felixge: by randomization of hash seed
11:01:59  <felixge>indutny: figured it out by now
11:02:04  <indutny>ah, cool
11:02:06  <felixge>the people in #go-nuts where asking :)
11:02:26  <indutny>:)
11:17:49  * stagasjoined
11:50:37  <rendar>hmm, when libuv uses libssl, basically libssl works only for encrypt the byte stream, but doesn't create the socket file descriptors that are instead created and managed by libuv, right?
11:55:07  * paddybyersjoined
11:56:07  <indutny>rendar: yes
11:56:50  * `3rdEdenchanged nick to `3E|ENOAVAILBLE
11:58:31  * loladirojoined
11:58:56  <rendar>indutny: i see
12:11:37  <brucem>too bad that just randomizing the hash seed isn't sufficient.
12:11:50  <brucem>or isn't necessarily sufficient.
12:12:53  <brucem>Some frequently used hashes are vulnerable without knowing the salt (like murmur & cityhash64)
12:15:00  * loladiroquit (Quit: loladiro)
12:16:39  <indutny>brucem: what do you mean?
12:16:53  <indutny>brucem: v8 isn't using murmur and cityhash64
12:17:17  <indutny>and why do you think that seeding won't help for this hashes?
12:18:30  <brucem>indutny: please see where I said "like …" I don't know which hash v8 uses, just saying that randomizing seeds is already known to be insufficient in some cases.
12:18:41  <indutny>brucem: in what cases?
12:18:48  <brucem>examples of useful reading: http://www.serpentine.com/blog/2012/12/13/a-major-new-release-of-the-haskell-hashable-library/http://crypto.junod.info/2012/12/13/hash-dos-and-btrfs/http://events.ccc.de/congress/2012/Fahrplan/events/5152.en.html
12:19:21  <brucem>The first link contains this paragraph with a link to some slides: """Recently, even modern hash algorithms such as the MurmurHash family and CityHash have succumbed to surprising attacks via differential cryptanalysis, in which large numbers of collisions can be generated efficiently without knowledge of the salt."""
12:20:54  <brucem>there's a good bit of fun stuff happening in this area. :)
12:23:01  <indutny>nice
12:26:56  <brucem>I'm hoping that the language that I (help) maintain gets around to updating our hashing sometime this year. :)
12:31:20  * sgallaghjoined
12:40:16  * mmalecki[zzz]changed nick to mmalecki
12:40:22  <indutny>brucem: what language do you maintain?
12:41:06  <mmalecki>dang, where's Ben when you need him
12:41:30  <indutny>he's always there, with us
12:44:06  <mmalecki>I'll make sure to pray for him
12:46:03  * loladirojoined
12:48:44  * loladiroquit (Read error: Connection reset by peer)
12:49:34  * loladirojoined
13:04:24  * stephankquit (Quit: *Poof!*)
13:08:52  * TheJHjoined
13:11:45  * roxluquit (Ping timeout: 276 seconds)
13:13:53  * TheJHquit (Ping timeout: 240 seconds)
13:14:37  * stephankjoined
13:17:44  * c4milojoined
13:18:26  * loladiroquit (Ping timeout: 265 seconds)
13:21:20  <brucem>indutny: Dylan .. http://opendylan.org/ and http://dylanfoundry.org/
13:22:59  <indutny>brucem: nice
13:23:02  <indutny>I've one too
13:23:09  <indutny>but it's not as good as yours
13:23:29  <indutny>though, I've learned a lot when built it
13:24:00  <brucem>indutny: well, Dylan has a 20+ year history behind it, including time at Apple, CMU and Harlequin (now gone). I work with the codebase that used to be developed at Harlequin … used to have a full team behind it.
13:24:44  <indutny>ah
13:25:03  <indutny>so you're a maintainer, not a creator of it
13:25:10  <indutny>anyway, it's a good thing to do
13:47:28  * TheJHjoined
14:06:14  * Raltjoined
14:42:57  * indexzerojoined
14:43:33  * indexzeroquit (Client Quit)
15:15:13  <indutny>isaacs: em... man
15:15:17  <indutny>isaacs: please ping me
15:19:18  * `3E|ENOAVAILBLEquit (Remote host closed the connection)
15:30:14  * stephankquit (Ping timeout: 240 seconds)
15:30:39  * stephankjoined
15:36:41  * bnoordhuisjoined
15:38:50  * hzquit
15:43:06  * AvianFlujoined
15:45:18  <indutny>bnoordhuis: hoya
15:45:25  <bnoordhuis>indutny: heya
15:45:35  <indutny>lets update v8 again https://gist.github.com/1993068.git
15:45:37  <indutny>oops
15:45:39  <indutny>https://github.com/joyent/node/pull/4517
15:45:41  <indutny>this ^
15:47:11  <indutny>bnoordhuis: I'm really scared of streams2
15:47:22  <indutny>trying to port node-spdy to them...
15:47:30  <mmalecki>bnoordhuis: OMG BEN
15:47:39  <mmalecki>bnoordhuis: ever got my message?
15:47:53  <indutny>and there're a lot of pitfalls
15:47:55  <bnoordhuis>indutny: why is the HandleScope necessary?
15:48:05  <indutny>bnoordhuis: see commit's message
15:48:10  <bnoordhuis>mmalecki: about os release info?
15:48:13  <indutny>bnoordhuis: v8 complains about it in debug mode
15:48:22  <bnoordhuis>indutny: yes, i've read it and the v8 issue
15:48:29  <bnoordhuis>but i'd like to understand _why_ it's necessary
15:48:56  <mmalecki>bnoordhuis: yeah, that one. can we do that? I can do a PR
15:49:15  <bnoordhuis>mmalecki: what's your definition of 'release info'? you mean what uname -a prints?
15:49:18  <indutny>bnoordhuis: I suppose because of ~ObjectWrap()
15:49:26  <indutny>bnoordhuis: it's using handle apis
15:49:34  <indutny>bnoordhuis: and is called from WeakCallback()
15:50:18  <bnoordhuis>indutny: isn't it the responsibility of the ObjectWrap destructor in that case?
15:50:31  <bnoordhuis>i mean, to create a HandleScope if necessary
15:50:33  <indutny>wel...
15:50:36  <indutny>s/wel/well
15:50:41  <indutny>bnoordhuis: I think you're right
15:50:42  <mmalecki>bnoordhuis: I mean, pretty much everything from node_os.cc (os module). that includes release, OS type, hostname, ...
15:50:53  <indutny>ah wait
15:51:01  <indutny>bnoordhuis: things are more complex
15:51:10  <indutny>bnoordhuis: there're some assertions about handle properties there
15:51:17  <indutny>bnoordhuis: so I guess it's needed in destructor too
15:51:30  <bnoordhuis>yes, but those assertions also exist in release builds
15:52:40  <indutny>bnoordhuis: see, here comes complicated stuff
15:54:47  <bnoordhuis>indutny: i'm listening
15:54:51  <bnoordhuis>(reading)
15:54:54  <indutny>bnoordhuis: sorry, continuing
15:55:01  <bnoordhuis>mmalecki: re os, why?
15:55:09  <indutny>bnoordhuis: so, most of this functions are being called from user-land
15:55:25  <indutny>bnoordhuis: and users are providing HandleScopes for us
15:55:37  <indutny>bnoordhuis: but WeakCallback is called from v8 itself
15:55:42  <indutny>and don't have scope
15:55:51  <indutny>so we're either adding HandleScope to every function
15:56:01  <indutny>or leaving just one scope in WeakCallback itself
15:56:18  <bnoordhuis>yes, i get that
15:56:24  <bnoordhuis>and i'm not opposed to the commit itself
15:56:33  <bnoordhuis>but it means the actual bug is elsewhere, doesn't it?
15:56:46  <mmalecki>bnoordhuis: to remove platform-dependent code from node and add more OS information to libuv
15:56:46  <indutny>hm...
15:56:52  <indutny>lets build it and see :)
15:57:24  <bnoordhuis>indutny: btw, you need to reapply this: https://github.com/joyent/node/commit/ce1b33a
15:57:39  <indutny>bnoordhuis: oh
15:57:41  <indutny>right
15:58:05  <indutny>bnoordhuis: also, lets discuss dtrace testing a little bit later. ok?
15:58:30  <bnoordhuis>um, okay. i should probably mention i don't really care about dtrace
15:59:03  <mmalecki>bnoordhuis: soooo :) ?
15:59:31  <mmalecki>indutny: testing node's dtrace provider is incredibly easy
15:59:40  <bnoordhuis>mmalecki: well... is 'meh' an acceptable response?
15:59:45  <indutny>mmalecki: I need to automate it
15:59:52  <mmalecki>indutny: yeah, I mean that
15:59:59  <indutny>mmalecki: can you do it?
16:00:06  <mmalecki>bnoordhuis: only if you accept a pulll request with meh ;)
16:00:09  <mmalecki>indutny: sure
16:00:20  * indutnymmalecki: see this https://github.com/joyent/node/pull/4507#issuecomment-11858648
16:00:27  <mmalecki>indutny: sunday works for you? I should have it done by then
16:00:28  <bnoordhuis>mmalecki: yeah, i'm not against it, i'm just, well, meh
16:00:37  <indutny>mmalecki: dap mentions all corner cases that should be tested
16:00:47  <indutny>bnoordhuis: I agree with you
16:00:48  <mmalecki>bnoordhuis: cool. me and AvianFlu have actual usecase for this thing
16:01:09  <indutny>bnoordhuis: we need to decode this stacks everywhere
16:01:20  <bnoordhuis>indutny: about what? or was that a general 'i agree with you'?
16:01:20  * qmxchanged nick to qmx|lunch
16:01:25  <indutny>bnoordhuis: what do you think about runtime function?
16:01:28  <mmalecki>bnoordhuis: (as usual, mad science))
16:01:51  <indutny>bnoordhuis: that'll take current stack frames and decode them into the string form
16:02:13  <indutny>1. Easier to debug
16:02:18  <bnoordhuis>indutny: you're talking about the dtrace provider now?
16:02:21  <indutny>2. No copyin()s and all that kernel shit
16:02:27  <indutny>3. no D
16:02:30  <indutny>bnoordhuis: yes
16:02:46  <indutny>bnoordhuis: I think dtrace is too specific
16:02:57  <indutny>I know many other people want to use flamegraphs
16:03:04  <indutny>and there're no real limitation for that
16:03:14  <indutny>only artificial ones made by joyent
16:03:19  <bnoordhuis>you're thinking of a libexecinfo specifically for node?
16:03:31  <indutny>yes
16:03:46  <indutny>I think we can make a third-party module that will do the job
16:04:31  <bnoordhuis>how would you discern v8 stack frames from c/c++ ones?
16:04:44  <indutny>well, that should be easy
16:04:53  <indutny>v8 should separate them using markers
16:04:59  <mmalecki>bnoordhuis: there's a shell script for that. could see how it works
16:05:01  <indutny>otherwise GC won't work at all
16:05:11  <bnoordhuis>indutny: should or does?
16:05:20  <indutny>bnoordhuis: haha :)
16:05:26  <indutny>bnoordhuis: let me see
16:05:32  <bnoordhuis>i ask because i could never get it to work with a gdb plugin
16:07:03  <indutny>you mean gdbjit?
16:07:05  <mmalecki>bnoordhuis: what's the naming convention? uv_hostname or uv_get_hostname? I've seen both.
16:07:23  <bnoordhuis>mmalecki: usually whatever's shortest
16:07:49  <mmalecki>I think that the one with less letters will be shorter
16:08:22  <bnoordhuis>mmalecki: that's such a conventional way of thinking
16:08:35  <mmalecki>bnoordhuis: yeah, I was going to mention, it's a trick statement :)
16:09:01  <indutny>bnoordhuis: yes, it's separating
16:09:05  <indutny>bnoordhuis: there're two markers
16:09:12  <indutny>bnoordhuis: ENTRY and IT_FRAME
16:09:16  <indutny>bnoordhuis: ENTRY = C++->JS
16:09:22  <indutny>bnoordhuis: IT_FRAME = JS->C++
16:09:45  <bnoordhuis>indutny: so how you recognize them when scanning the stack?
16:10:02  <indutny>bnoordhuis: look at v8ustack.d code, seriosly
16:10:21  <bnoordhuis>yeah... i'm not seeing it in master
16:10:25  <indutny>V8DBG_TYPE_CODE__CODE_TYPE
16:10:32  <indutny>(just pasting)
16:11:01  <indutny>bnoordhuis: every v8's frame has a structure
16:11:23  <bnoordhuis>ah, you mean our dtrace provider
16:11:30  <bnoordhuis>i was looking at v8/v8
16:11:47  <indutny>yeah
16:12:03  <indutny>the problem is that we need to recognize C++ frames first anyway
16:12:11  <indutny>because C++ frame might be on the top of the stack
16:12:27  <indutny>you're right again :)
16:12:40  <bnoordhuis>it also depends on the v8 version, i reckon
16:12:50  <bnoordhuis>though i don't know if any of that has changed in recent times
16:13:05  <indutny>bnoordhuis: I suppose they haven't changed much
16:13:06  * bradleymeckjoined
16:13:12  <indutny>bnoordhuis: since ustack helper is working and it's pretty old
16:13:19  * bradleymeckquit (Client Quit)
16:13:25  <bnoordhuis>yeah, i guess so
16:17:32  <indutny>I need to think abot it
16:17:35  <indutny>s/abot/about/
16:18:32  <indutny>bnoordhuis: meanwhile, updated https://github.com/joyent/node/pull/4517
16:18:35  <indutny>with your commit
16:20:56  <bnoordhuis>okay, good
16:21:01  <indutny>landing
16:21:30  <indutny>done
16:21:31  <MI6>joyent/node: Ben Noordhuis master * 93591a2 : v8: remove optimization switches Remove compiler switches from $(TOPLEVE (+2 more commits) - http://git.io/jJ2mBQ
16:21:32  <indutny>git poo joyent master
16:21:37  <indutny>love new alias ^
16:22:56  <indutny>ok, finally master works as a default setup for me
16:25:14  <bnoordhuis>it didn't before?
16:25:25  <indutny>yep
16:25:27  <indutny>v8 assertion
16:25:32  <bnoordhuis>oh, like that
16:25:34  <indutny>when installing stuff via npm
16:25:36  <bnoordhuis>i thought you meant git trouble
16:25:46  <indutny>ah, git poo
16:25:51  <indutny>no, it works as usual
16:29:10  * TheJHquit (Read error: Operation timed out)
16:30:11  <bnoordhuis>https://registry.npmjs.org/iconv <- This Connection is Untrusted
16:30:20  * c4miloquit (Remote host closed the connection)
16:30:24  <bnoordhuis>curl and the default ubuntu cert store don't like it either
16:30:25  <mmalecki>bnoordhuis: this is expected
16:30:35  <mmalecki>bnoordhuis: I'm getting the same exact thing
16:30:45  <bnoordhuis>mmalecki: is it? i thought isaacs was using proper certs nowadays
16:30:46  * c4milojoined
16:30:53  <mmalecki>npm ships with registry's certificate and validates it
16:31:23  <bnoordhuis>ah, how quaint
16:31:58  * c4milo_joined
16:32:01  * indexzerojoined
16:32:19  * c4miloquit (Read error: Connection reset by peer)
16:33:11  <indutny>bnoordhuis: indeed it is
16:33:18  <indutny>:)
16:33:34  <indutny>bnoordhuis: apparently isaacs trusts himself more than third-parties
16:33:38  <indutny>the question is
16:33:45  <indutny>how much do _we_ trust him
16:33:58  <bnoordhuis>i don't know. he's got shifty eyes, he does
16:34:01  <indutny>"paranoia day"
16:34:42  <tjfontaine>so long as it's not turktrust
16:34:52  <bnoordhuis>it's a bit of a PITA though; you cannot easily write a tool that scrapes npm without disabling validation
16:35:14  <indutny>bnoordhuis: lets DoS it
16:35:24  <indutny>bnoordhuis: I know it should be pretty easy
16:35:35  <bnoordhuis>indutny: it's hosted by couchone isn't it?
16:35:41  <mmalecki>iriscouch
16:35:43  <indutny>yeah
16:35:48  <indutny>though, name was changed
16:35:54  <indutny>for conspiracy purposes
16:35:55  <bnoordhuis>ah. so confusing
16:36:23  <indutny>you know what's confusing? couchbase
16:37:42  <bnoordhuis>all those couch things are
16:39:51  <mmalecki>bnoordhuis: what's the convention when returning strings in libuv? my current signature is uv_err_t func(char** str), str should be allocated by the caller, correct?
16:39:58  <mmalecki>haven't seen any other example with string.
16:40:18  <bnoordhuis>mmalecki: fun(char* buf, size_t len)
16:40:36  <bnoordhuis>mmalecki: c.f. uv_exepath
16:41:20  <mmalecki>ah. thanks. wtf is with my grep skills >.<
16:41:45  * qmx|lunchchanged nick to qmx
16:45:05  * indexzeroquit (Quit: indexzero)
16:45:26  <bnoordhuis>mmalecki: i hear visual studio has great search functionality
16:46:40  <mmalecki>bnoordhuis: I heard that too, but then the guy started talking about how great Vista was
16:47:02  <mmalecki>and I kind of left the hospital, asking the staff to restrain him to his bed
16:47:22  <bnoordhuis>ah well, vista was a step forward in some ways
16:47:32  <bnoordhuis>i tried it for a week and it was okay
16:47:39  <bnoordhuis>but well, it's not unix
16:49:37  <bnoordhuis>mmalecki: re #4510, i noticed that too
16:49:52  <bnoordhuis>i.e. that removing the resume() fixes it but breaks other things
16:51:09  <indutny>bnoordhuis: ...reminding you about select() fixes
16:51:25  <mmalecki>yeah, but I think it's the way to go. I mean, we can't switch that stream into old mode. on the other hand, my proposal to emit `close` after resource is closed isn't perfect either
16:51:46  <bnoordhuis>indutny: oh right. i'll go and review it
16:51:55  <indutny>mmalecki: you know the problem?
16:52:02  <indutny>I can't port my stuff to streams2 right now
16:52:11  <indutny>need to rename or instance variables
16:52:15  <indutny>I can't use this.buffer anymore
16:52:17  <mmalecki>indutny: yeah, I spent some time looking at it
16:52:28  <indutny>and it's odd
16:52:38  <indutny>first of all, this.buffer is not really documented
16:52:51  <mmalecki>yeah, I believe it's internal-ish
16:52:58  <indutny>indeed it is
16:53:18  <bnoordhuis>it should be this._buffer then, shouldn't it?
16:53:40  <mmalecki>yeah, it should imo
16:54:18  <mmalecki>bnoordhuis: we could cause close artificially on the stream, but it has its problems too. I think we could add an event which happens when resource is actually closed
16:54:22  <mmalecki>what do you think?
16:54:44  <bnoordhuis>mmalecki: i don't know. i'm afraid i don't nearly understand streams2 well enough at this point :/
16:55:22  * piscisaureus_joined
16:55:23  <mmalecki>I think only Isaac understands them at this point
16:55:28  <indutny>bnoordhuis: yes
16:55:41  <mmalecki>bnoordhuis: well, the problem is that `close` is only emitted when no more data is readable
16:55:56  <mmalecki>so, in streams1 you'd get close right away when resource is closed
16:56:06  <mmalecki>but in streams2 it waits until you read all the data
16:56:24  <mmalecki>this breaks close counting in child_process
16:56:38  <mmalecki>so some child processes never get `close` event on them
16:56:50  <bnoordhuis>ah really? that seems like a pretty serious bug
16:56:56  <indutny>oooh
16:56:59  <mmalecki>that test doesn't work because it crashes and node outputs stuff to stderr
16:57:03  <indutny>shit came real
16:57:06  <indutny>maciej you're right
16:57:24  <mmalecki>so streams2 wants you to read, but in that test we never do
16:57:39  <indutny>can someone explain to me
16:57:50  <indutny>why is this new api so cool
16:57:53  <mmalecki>thus, stderr never emits `close` and child_proces never emits it either
16:58:01  <indutny>and we should rewrite all our old stuff on top of it?
16:58:10  <indutny>isaacs: you sleepy man :)
16:58:15  <indutny>isaacs: answer me
16:58:15  <tjfontaine>he's on vacation
16:58:26  <mmalecki>I mean, I did like streams1
16:58:38  <indutny>tjfontaine: oooh, vacation :)
16:58:39  * dapjoined
16:58:52  <indutny>tjfontaine: do you know when he's going to return?
16:59:04  <indutny>mmalecki: me too
16:59:11  <indutny>mmalecki: there're some problems with them
16:59:16  <tjfontaine>indutny: I forget when he said
16:59:19  <indutny>but good thing is that it works
16:59:27  <indutny>and you always understand what's happening
17:02:02  <bnoordhuis>indutny: http://blog.nodejs.org/2012/12/20/streams2/
17:02:58  <bnoordhuis>in general, i agree that the streams api could do with some housecleaning
17:03:23  <indutny>bnoordhuis: I agree with this too
17:03:31  <indutny>bnoordhuis: but streams2 are far from housecleaning
17:03:41  <indutny>bnoordhuis: I think they should go to the separate module
17:03:54  <bnoordhuis>well, maybe
17:03:56  <indutny>bnoordhuis: and evolve separately, outside the core
17:04:01  <indutny>then merge back
17:04:05  <bnoordhuis>the thing that worries me most are the performance issues
17:04:12  <indutny>yes, me too
17:04:22  <indutny>also, I'm worried about compatibility
17:04:29  <indutny>which is really tricky
17:04:43  <indutny>since streams2 are falling back to streams1 in a very interesting way
17:04:50  <bnoordhuis>yes, that too
17:04:54  <indutny>I mean, it's just emulating APIs
17:04:56  <mmalecki>yeah
17:04:59  <indutny>not doing the same thing
17:05:16  <mmalecki>they are far from explicit IMO
17:05:21  <indutny>that seems to be very dangerous to me
17:05:34  <indutny>needless to say, I really like idea behind it
17:06:32  * indexzerojoined
17:06:59  * mikealquit (Quit: Leaving.)
17:10:01  <indutny>bnoordhuis: good, I'll land it
17:10:53  <MI6>joyent/libuv: Fedor Indutny master * ba83510 : stream: fix infinite select() polling on osx Interruption FD buffer shou - http://git.io/_-yQHg
17:12:46  * travis-cijoined
17:12:46  <travis-ci>[travis-ci] joyent/libuv#996 (master - ba83510 : Fedor Indutny): The build passed.
17:12:46  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/775f2c1f539c...ba83510fc0f7
17:12:46  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/3955176
17:12:46  * travis-cipart
17:15:38  <indutny>bnoordhuis: piscisaureus_: guys, remind me, how much time do we have before 0.10
17:15:40  * hzjoined
17:17:18  <bnoordhuis>indutny: early february, i think?
17:17:32  <indutny>right, thanks
17:17:53  <indutny>and what things are left?
17:17:55  <mmalecki>OMG I'LL GET NODE FOR MY BIRTHDAY
17:17:56  * bentkusjoined
17:18:02  <indutny>except stability
17:18:11  <bentkus>does uv_fs_sendfile currently work?
17:18:16  <bnoordhuis>bentkus: yes
17:18:54  <bentkus>so i can take a file fd and a socket fd and it will do the magic?
17:19:16  <bnoordhuis>bentkus: yes. you can even pass in two file fds and it'll still work
17:19:33  <bnoordhuis>it's more like splice() than sendfile() in that regard
17:20:55  <bentkus>what are the constraints of these fds?
17:21:00  <bentkus>one has to be a file, the other a socket?
17:23:11  <bentkus>since when are the offsets int64_t in uv_fs_*
17:23:41  <indutny>since define
17:23:58  <indutny> '_LARGEFILE_SOURCE',
17:23:58  <indutny> '_FILE_OFFSET_BITS=64',
17:24:35  <bnoordhuis>bentkus: re constraints, only that they're valid fds
17:24:47  <bnoordhuis>libuv will fall back to a read/write emulation loop if sendfile() fails
17:25:04  <bentkus>so sockets won't work on sendfile?
17:25:18  <bentkus>uv_sock_t being 8bytes long on 64bit and uv_file being 4bytes long
17:25:32  <bnoordhuis>bentkus: you're talking about windows?
17:25:42  <bentkus>JA
17:25:49  <bnoordhuis>ah. ask piscisaureus_
17:25:52  <bentkus>indutny: it was your comrad igor
17:26:03  <bnoordhuis>but i guess the answer is 'no'
17:26:16  <indutny>bentkus: uh?
17:26:35  <bentkus>Igor Zinkovsky introduced the int64_t for offsets in uv_fs_*
17:27:23  <indutny>ah
17:27:35  <indutny>Igor is a good guy
17:27:38  <indutny>and comrad
17:27:47  <bentkus>tavarish
17:28:36  <indutny>64bit offset is usefu
17:28:42  <indutny>and required for some applications
17:28:58  <bentkus>do 64bit offsets work on linux?
17:30:16  <indutny>yes
17:30:50  <indutny>bentkus: you can read and write to the file that has size >2GB, right? :)
17:30:57  <indutny>even on 32bit machine
17:31:19  <bentkus>sounds ... logical
17:32:32  * mikealjoined
17:32:36  <indutny>indeed
17:34:47  <bentkus>int is a first class citizen in C#
17:34:53  <bentkus>damn you int
17:37:49  <indutny>fuck int
17:37:55  <indutny>use int64_t
17:38:00  <indutny>everywhere :D
17:38:17  <indutny>actually, I wonder what int type has the same size as void*?
17:38:19  <indutny>bnoordhuis: ^
17:40:22  <indutny>aaah
17:40:25  <indutny>stupid question
17:40:28  <indutny>intptr_t
17:40:37  <indutny>bentkus: use intptr_t everywhere
17:41:08  * pooyajoined
17:42:04  <bentkus>uv_fs_ has int64 in the offsets
17:42:31  <bentkus>we need justice
17:43:21  <mmalecki>I'll get Batman
17:43:44  * joshthecoderjoined
17:44:59  * __batman__joined
17:45:12  <__batman__>justice?
17:45:14  <__batman__>heh
17:45:17  <__batman__>tell me about that
17:45:23  <mmalecki>lol
17:45:25  * __batman__part
17:46:49  * sgallaghquit (Remote host closed the connection)
17:47:42  * indexzeroquit (Quit: indexzero)
17:54:23  * Ralt_joined
18:04:20  * indutnybnoordhuis: you still there?
18:04:28  <bnoordhuis>indutny: yes
18:07:55  <indutny>bnoordhuis: have you tried building node --with-shared-openssl ?
18:08:38  <indutny>tl;dr - it doesn't work
18:26:14  <bnoordhuis>indutny: no, i haven't. not in recent times
18:26:14  <MI6>joyent/node: Shigeki Ohtsu master * 2b6c561 : fs: remove unused default option in WriteStream No bufferSize option is (+1 more commits) - http://git.io/FbXPyg
18:26:19  <bnoordhuis>but you know we take patches :)
18:26:56  * bnoordhuisis off to dinner
18:27:01  <piscisaureus_>bnoordhuis: ho
18:27:16  <bnoordhuis>that's what santa said
18:27:20  <bnoordhuis>three times, actually
18:27:23  <piscisaureus_>bnoordhuis: why do softirq artefacts not show up when loopback is used?
18:27:36  <bnoordhuis>piscisaureus_: because loopback is a virtual device
18:27:41  <piscisaureus_>ok
18:28:12  <bnoordhuis>okay, dinner
18:28:16  <piscisaureus_>yuo
18:28:18  <piscisaureus_>eet lekker
18:28:23  <bnoordhuis>en smakelijk
18:28:53  <piscisaureus_>bnoordhuis: dat maakt mij niet uit maar je tafelgenoten wss wel
18:31:03  <mmalecki>bnoordhuis: https://github.com/joyent/libuv/pull/675
18:33:31  <mmalecki>bnoordhuis: I suppose I could do windows later today, but that requires dragging my windows box from living room to my room
18:39:12  * TooTallNatejoined
18:41:53  * sblomjoined
18:45:54  * benoitcquit (Read error: No route to host)
18:52:18  * lohkey_joined
18:52:20  * lohkey_quit (Client Quit)
18:54:59  <sblom>piscisaureus_: I'm digging in to tcp queueing on libuv for windows in earnest now.
18:55:55  <sblom>piscisaureus_: First question: seems like the queue belongs in uv_stream_t.
18:56:11  * indexzerojoined
18:56:24  <sblom>erm, uv_tcp_t
18:57:25  <sblom>probably UV_TCP_PRIVATE_FIELDS. Anything I need to do because this is windows-specific? Conditional complation? Just a comment?
18:59:57  <bentkus>is there a good reason why someone wouldn't do a close after one receives a -1 in the read event of a stream?
19:07:50  * Ralt_quit (Remote host closed the connection)
19:08:58  * brsonjoined
19:18:26  * TheJHjoined
19:19:33  <piscisaureus_>sblom: hi
19:20:02  <indutny>ohai
19:20:16  <piscisaureus_>sblom: for now you can add it to UV_TCP_PRIVATE_FIELDS but eventually it'll be needed for pipes too so UV_STREAM_PRIVATE_FIELDS would also be okay
19:20:49  <piscisaureus_>sblom: so uv-win.h and src/win/* is only used on windows so you don't need #ifdefs there
19:21:15  <indutny>eh
19:21:23  <piscisaureus_>sblom: if you add stuff to uv.h or src/* that is platform specific (which you should really really try to avoid) then you do need #ifdefs
19:21:24  <indutny>can anyone at joyent give me big fat ubuntu server? :)
19:21:42  <indutny>I really need it for testing
19:21:58  <piscisaureus_>indutny: I hear that anyone at joyent could do that.
19:22:00  <indutny>and fat smartos box is really hard to deal with
19:22:16  <piscisaureus_>indutny: use ubuntudrone?
19:22:21  <piscisaureus_>(it's not really fat tho)
19:22:34  <indutny>piscisaureus_: how much CPUs?
19:22:49  <piscisaureus_>4
19:22:57  <indutny>that's not fat at all
19:23:00  <indutny>:)
19:23:43  <indutny>piscisaureus_: http://www.youtube.com/watch?v=t2mU6USTBRE
19:24:05  <piscisaureus_>indutny: http://www.youtube.com/watch?feature=player_embedded&v=3RBSkq-_St8#!
19:25:46  <mmalecki>indutny: it's funny because they are fat
19:25:55  <indutny>who they?
19:26:29  <mmalecki>those fat guys in the video
19:27:19  <indutny>ah
19:27:20  <indutny>well
19:27:45  * indexzeroquit (Quit: indexzero)
19:27:57  <indutny>http://www.youtube.com/watch?v=lOfZLb33uCg
19:28:10  <indutny>al is a cool guy
19:28:14  <indutny>and not fat at all
19:28:30  <mmalecki>yeah, I know :)
19:41:54  <bentkus>what is fat
19:57:38  * indexzerojoined
20:10:29  * bradleymeckjoined
20:18:55  * mjr_joined
20:55:58  * joshthecoderquit (Quit: Leaving...)
21:04:14  <piscisaureus_>bentkus: http://www.facebook.com/photo.php?fbid=440865772647620&set=a.154959581238242.39829.152196238181243&type=1
21:14:33  <bentkus>Seems about right
21:14:51  <bentkus>their arguments are stupid too
21:29:43  * joshthecoderjoined
21:29:50  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
21:31:01  * piscisaureus_joined
21:31:42  <piscisaureus_>sblom: isaacs: bnoordhuis: do we agree that uv-win needs to be able to spawn .bat files transparently? If so I am going to work on it now.
21:32:38  <bentkus>batman would approve
21:37:53  <TooTallNate>piscisaureus_: agree'd
21:38:29  <piscisaureus_>Thanks nate, sorry I forgot about you :-)
21:38:36  <TooTallNate>:p
21:38:40  <TooTallNate>my vote doesn't count
21:39:08  <piscisaureus_>It does, you are a core guy plus you deal with this shit in node-gyp
21:40:21  <TooTallNate>stuff like this should definitely be handled for us https://github.com/isaacs/npm-www/commit/98de54b2530e8571fc76a840101d7c897d6e6ba8
21:40:38  <sblom>piscisaureus_: That seems right to me.
21:41:22  <sblom>piscisaureus_: My internal struggles is mostly "Is it just .bat? .bat and .cmd? Others as well? "
21:42:14  <sblom>I can make some kind of general argument that we should figure out where ftype and assoc get their list, but that seems misguided and probably some kind of security problem waiting to happen.
21:42:17  <TooTallNate>sblom: probably everything in PATHEXT, ya?
21:42:39  <piscisaureus_>sblom: so yes my *current* plan is to use PATHEXT but there are some complications
21:42:42  * bradleymeckquit (Quit: bradleymeck)
21:42:55  <bnoordhuis>piscisaureus_: agreed, i think
21:43:00  <bnoordhuis>i mean, shell scripts work on unix
21:43:21  <mmalecki>bnoordhuis: https://github.com/joyent/libuv/pull/675 :)
21:44:48  <piscisaureus_>so one of the problems here is that CreateProcess will only spawn .exe;.com files natively
21:45:08  <piscisaureus_>(and .scr; .scf, maybe .pif)
21:45:28  <piscisaureus_>shell32 knows how to deal with .cmd;.bat
21:45:34  <mmalecki>hipster windows, executes files I never heard about
21:45:37  <piscisaureus_>other stuff goes through the file association handlers
21:46:26  <bnoordhuis>mmalecki: i'll look at it tomorrow
21:46:31  <piscisaureus_>So for other extensions that are executable (.wsh for example) we'd need to use AssocQueryString
21:46:57  <piscisaureus_>pretty complicated all in all :-(
21:47:16  <mmalecki>bnoordhuis: okay. I should have windows done on Sunday
21:47:20  <piscisaureus_>oh there is also hard-coded logic for .lnk files but lest just ignore that for the time being
21:48:21  <piscisaureus_>hmm scf is not executable either. let's also ignore that
21:48:26  <piscisaureus_>it's just hardcoded into shell32
21:48:49  <bnoordhuis>piscisaureus_: don't forget about .scr :)
21:48:57  <piscisaureus_>hahaha
21:49:01  <piscisaureus_>.scr is just .exe
21:49:03  <piscisaureus_>but renamed
21:49:20  <bnoordhuis>doesn't it have some special flags in the PE header?
21:49:26  <bnoordhuis>ah well, unimportant
21:50:24  <bnoordhuis>(but still interesting enough to google; apparently the answer is 'no')
21:51:03  <piscisaureus_>funny
21:51:24  <piscisaureus_>if I rename a .exe file to .doc then cmd.exe will still run it as an exe
21:51:31  <piscisaureus_>explorer will open it in word
21:51:52  <piscisaureus_>however if i rename it to .bat then either will try to run it as a shell script
21:51:58  <piscisaureus_>:-( what a mess
21:52:33  * mmaleckichanged nick to mmalecki[zzz]
21:56:17  <piscisaureus_>So apparently cmd always tries CreateProcess first and if that fails it will start to think
21:56:39  <piscisaureus_>except if it is a .bat;.cmd file then it will just run as a shell script
22:07:12  <MI6>joyent/node: Johannes Ewald v0.8 * 872cb0d : doc: improve example of process.hrtime() The example clarifies now that - http://git.io/F2FlPg
22:08:26  * felixgequit (Quit: felixge)
22:09:19  <sblom>piscisaureus_: You're scaring me.
22:09:25  <sblom>:)
22:09:53  <piscisaureus_>sblom: how/why?
22:10:19  <sblom>piscisaureus_: Oh, I just mean how complex this ancient part of Windows is.
22:10:31  <piscisaureus_>sblom: haha, yes that's totally true
22:10:48  * sblomconsiders ngx-queue.h to be a work of C poetry.
22:14:33  <piscisaureus_>long live nginx :)
22:14:40  <piscisaureus_>ryah was also fond of it
22:15:23  <piscisaureus_>I myself would have used <queue.h> from the same origin as tree.h, but it had the wrong license
22:22:55  * Ralt_joined
22:26:09  * rendarquit
22:35:39  <sblom>piscisaureus_: I have to assume the uv_buf_t's that get passed to uv_tcp_write are transient, right? I.e. I'll have to keep my own copies.
22:35:50  <piscisaureus_>sblom: yes.
22:36:03  <sblom>that what it looked like.
22:36:26  <piscisaureus_>sblom: actually I am not sure that this was a good idea in hindsight, but let's not change the api in this way now
22:36:59  <piscisaureus_>sblom: so what unix does it has space for 4 uv_buf_t structures in uv_write_t, and if the user passes more then it mallocs
22:37:00  <sblom>fair enough
22:37:21  <sblom>piscisaureus_: sounds good--I'll steal that approach.
22:37:22  <piscisaureus_>sblom: I am not sure 4 is the right tradeoff - might as well be one as far as I'm concerned
22:37:26  <sblom>Yeah.
22:37:31  <piscisaureus_>whatever you think is right :-)
22:37:40  <sblom>I was just going to guess aloud "I bet the commonest case is 1"
22:37:51  <piscisaureus_>yup
22:38:30  <sblom>piscisaureus_: does node even support passing more than one? Or is that just for other libuv customers?
22:39:15  <piscisaureus_>sblom: I don't think node ever does more than one atm... (for uv_pipe_t writes with > 1 don't even work on windows...)
22:39:27  <sblom>heh--okay
22:39:28  <kohai>heh has -1 beer
22:39:50  <piscisaureus_>sblom: so we added this because at some point in history writev optimization plans were a big think in node
22:40:24  <piscisaureus_>sblom: but it turned out the tradeoff was much more complicated :-)
22:43:09  <sblom>I see
22:47:32  <mjr_>Also, the writev version was always slower.
22:49:08  <piscisaureus_>mjr_: yes, becaue the tradeoff is quite complex :-)
22:50:35  <piscisaureus_>mjr_: I bet that libuv could do transparent writev optimization sometimes and it would actually help :-)
22:50:58  <piscisaureus_>but it doesn't make much sense to optimize libuv much more at this time, we have to make the node bindings faster first (esp. http)
22:54:14  * Ralt_quit (Remote host closed the connection)
23:03:26  * loladirojoined
23:06:54  * paddybyers_joined
23:07:08  * paddybyersquit (Remote host closed the connection)
23:07:08  * paddybyers_changed nick to paddybyers
23:13:55  * qmxchanged nick to qmx|away
23:14:39  * bradleymeckjoined
23:17:08  <MI6>joyent/node: Ben Noordhuis master * 5664dd2 : src: use static_cast where appropriate Use static_cast instead of reinte - http://git.io/SvxK-g
23:21:09  * piscisaureus_quit (Ping timeout: 265 seconds)
23:22:54  <bnoordhuis>ircretary: tell piscisaureus_ writev() is often slower than a few write() calls :/
23:22:55  <ircretary>bnoordhuis: I'll be sure to tell piscisaureus_
23:23:11  <bnoordhuis>mjr_: ^ maybe also of interest to you
23:23:29  <bnoordhuis>i've been tinkering with that but it's hit or miss
23:23:30  <mjr_>Do yo uknow why?
23:23:42  * paddybyersquit (Ping timeout: 276 seconds)
23:23:43  <mjr_>Seems like it should be way faster, fewer trips across the user/kernel boundary, etc.
23:23:54  <bnoordhuis>yes. the kernel's code path for the write() syscall is more optimized
23:24:07  <bnoordhuis>also, writev() always has to copy the iovecs
23:24:26  <bnoordhuis>which is not ultra expensive but apparently expensive enough to not always be worth it
23:24:41  <mjr_>interesting
23:28:27  * piscisaureus_joined
23:28:37  <piscisaureus_>ircretary: nites
23:28:38  <ircretary>piscisaureus_: I'm not sure what to do with that command. Ask for help in PM.
23:28:42  <piscisaureus_>ircretary: notes
23:30:41  <piscisaureus_>bnoordhuis: where I assume that mean "linux" when you speak of "the kernel" :-)
23:31:08  <bnoordhuis>piscisaureus_: yes :) though i noticed a similar thing with freebsd
23:31:14  <bnoordhuis>i didn't check freebsd's code though
23:31:20  <piscisaureus_>hipster
23:31:30  <bnoordhuis>is freebsd hip these days?
23:31:42  <piscisaureus_>not hip, hipster
23:31:50  <bentkus>any progress on ipv6only?
23:32:13  <piscisaureus_>no
23:32:20  <bnoordhuis>bentkus: not really. i'm open for discussion though
23:32:26  <piscisaureus_>we went backwards
23:32:30  <piscisaureus_>it's further away than ever
23:32:51  <bnoordhuis>but we can at least discuss it :)
23:32:54  <bentkus>What would the discussion be about
23:33:44  <bnoordhuis>what and how to implement
23:33:48  <piscisaureus_>bnoordhuis: I will come to gouda next week and we can decide
23:33:54  <bnoordhuis>gezellig!
23:34:05  <piscisaureus_>bnoordhuis: because for me this is linked to the future of streams
23:34:26  <bentkus>gouda is linked to streams?
23:34:37  <bnoordhuis>gouda is the spider in the web
23:34:47  <bnoordhuis>piscisaureus_: you're not going to bring up vpointers again, are you?
23:34:58  <piscisaureus_>gouda is to libuv what beetsterzwaag is to balkenende 4
23:35:08  <piscisaureus_>bnoordhuis: no - that was ryan's plan
23:35:15  <bnoordhuis>ryan?
23:35:21  <bnoordhuis>oh, that guy we had to let go
23:35:30  <piscisaureus_>bnoordhuis: we discussed this some days ago. stop drinking :-)
23:35:54  <bnoordhuis>ah, but the alcohol kills the germs. and i can do with some germocide
23:39:59  <bnoordhuis>piscisaureus_, others: has anyone tried to write a serious lib/http.js replacement yet?
23:40:19  <bnoordhuis>i mean, it's common knowledge by now that using tcp_wrap and http_parser bindings directly is a lot faster
23:40:32  <piscisaureus_>bnoordhuis: no. But creationix did some experimentation the other day which showed exactly that --^
23:40:54  <bnoordhuis>yeah. maybe something to look into sometime
23:41:10  <tjfontaine>I thought that was the goal of .12?
23:41:21  <piscisaureus_>haha
23:41:31  <piscisaureus_>bnoordhuis: I think prio 1 is to make stream2 faster
23:41:40  <piscisaureus_>but nobody understands that except our great leader
23:41:45  <bnoordhuis>indeed :/
23:42:07  <bentkus>How am I supposed to use sendfile if I create a socket with uv_tcp_init
23:42:17  <piscisaureus_>you are not
23:42:19  <piscisaureus_>supposed to used
23:42:21  <piscisaureus_>*use it
23:43:01  <piscisaureus_>bentkus: it's the appendix of libuv
23:43:27  <bentkus>hm
23:43:38  <bentkus>Makes my life easier
23:44:11  <bentkus>poke me if that appendix gets fixed
23:56:05  <bentkus>a