17:33:04  <tjfontaine>done
17:33:20  * bajtosquit (Quit: bajtos)
17:34:39  <trevnorris>thanks
17:34:52  <trevnorris>tjfontaine: anything interesting in the meeting?
17:36:22  <tjfontaine>we didn't have one :)
17:36:25  <tjfontaine>not really anyway
17:36:46  * piscisaureus_quit (Ping timeout: 256 seconds)
17:37:23  <trevnorris>heh ok
17:37:41  <tjfontaine>just watched bert drink beer :)
17:37:48  <trevnorris>haha
17:38:31  * c4miloquit (Remote host closed the connection)
17:46:59  * c4milojoined
17:53:43  * loladirojoined
17:53:53  * stagasquit (Ping timeout: 245 seconds)
17:58:25  * hzquit
18:03:02  <tjfontaine>it's slightly amusing that NODE_MODULE_VERSION is in node.h and not node_version.h
18:03:17  * pachetquit (Ping timeout: 248 seconds)
18:04:04  * brsonquit (Ping timeout: 276 seconds)
18:06:06  <trevnorris>anyone opposed to this? https://github.com/trevnorris/node/compare/panic-and-buffer-logic
18:07:44  <tjfontaine>interesting, I wonder what the jit does when it knows you're ignoring the rval of native methods
18:08:30  * qmxquit (Ping timeout: 264 seconds)
18:09:17  <trevnorris>tjfontaine: have a specific case?
18:09:44  * qmxjoined
18:10:45  <tjfontaine>well it's more academic, I'm fine with this change, in pure js the jit can do interesting things when it knows you're ignoring the return value, but doesn't have the same latitude for native
18:11:37  <trevnorris>ok. i'm not returning from native anywhere.
18:12:21  * brsonjoined
18:12:31  <tjfontaine>ya, it was just something that crossed my mind while reviewing :)
18:13:03  * qmxquit (Changing host)
18:13:03  * qmxjoined
18:13:20  * qmxquit (Remote host closed the connection)
18:13:25  <trevnorris>oh, cool. interesting thought. might create an IRHydra graph of two methods doing the same, but one returning from js and the other from native.
18:13:34  <trevnorris>that would be interesting output to examine. never thought about it before.
18:14:27  * qmxjoined
18:24:22  * mikolalysenkoquit (Ping timeout: 256 seconds)
18:27:39  * hueniversequit (Quit: Leaving.)
18:33:42  * jmar777quit (Remote host closed the connection)
18:34:15  * jmar777joined
18:34:50  <trevnorris>isaacs: thoughts on https://github.com/trevnorris/node/compare/panic-and-buffer-logic
18:34:59  <indutny>hoya
18:35:26  <indutny>isaacs: wanna land those guys https://github.com/joyent/node/pull/5883 and https://github.com/joyent/node/pull/5882 ?
18:36:00  <tjfontaine>line 2: 49708 Segmentation fault: 11 (core dumped) node "`dirname "$0"`/../../node_modules/node-gyp/bin/node-gyp.js" "[email protected]"
18:36:08  <tjfontaine>:/
18:36:56  <indutny>erm
18:36:58  <indutny>no good
18:36:59  <indutny>:)
18:37:11  <tjfontaine>https://gist.github.com/tjfontaine/6064949
18:37:19  <tjfontaine>it's v0.8 HEAD
18:37:39  <tjfontaine>it's done, why does it have to die on cleaning up :)
18:38:29  * jmar777quit (Ping timeout: 248 seconds)
18:38:30  <trevnorris>what I want to know is wtf do they need <Value> after the long-ass FunctionCallbackInfo? that's the only thing you can pass.
18:39:45  * mikolalysenkojoined
18:40:02  * kazuponjoined
18:40:09  <trevnorris>indutny: i'm not sure how expensive doing IsObject checks are, but you're doing 4 of them in SetTicketKeys
18:40:32  <indutny>not expensive at all
18:40:43  <indutny>its done only once
18:40:43  <trevnorris>coolio
18:40:55  <trevnorris>how do you mean?
18:41:02  <indutny>ticket keys
18:41:06  <indutny>is like a ssl cert
18:41:11  <trevnorris>ah, ok.
18:41:12  <indutny>set only at server initialization
18:41:34  * loladiroquit (Quit: loladiro)
18:42:56  * AvianFlujoined
18:44:33  * kazuponquit (Ping timeout: 264 seconds)
18:44:39  * loladirojoined
18:44:43  * loladiroquit (Client Quit)
18:55:25  * stagasjoined
19:01:06  * loladirojoined
19:01:34  * pachetjoined
19:01:35  * pachetquit (Changing host)
19:01:35  * pachetjoined
19:01:49  * bajtosjoined
19:06:10  * jmar777joined
19:13:06  * bajtosquit (Quit: bajtos)
19:21:34  * mikealquit (Read error: Connection reset by peer)
19:21:41  * mikealjoined
19:28:01  * skebcioquit (Remote host closed the connection)
19:28:39  * mikealquit (Read error: Connection reset by peer)
19:28:43  * mikeal1joined
19:30:03  * mikeal1quit (Read error: Connection reset by peer)
19:31:15  * mikeal1joined
19:31:48  * skebciojoined
19:35:13  * mikeal1quit (Read error: Connection reset by peer)
19:35:21  * defunctzombie_zzchanged nick to defunctzombie
19:35:31  * hzjoined
19:37:13  * loladiroquit (Ping timeout: 245 seconds)
19:37:40  * brsonquit (Ping timeout: 276 seconds)
19:40:57  * loladirojoined
19:45:25  * mikealjoined
19:50:39  * kazuponjoined
19:53:29  * qardquit (Quit: Leaving.)
19:56:30  * kazuponquit (Ping timeout: 264 seconds)
20:00:56  <trevnorris>indutny: you know, it'd help if v8 would predictably deopt :P
20:01:07  <trevnorris>I can't seem to get it to deopt right when the variable overflows smi range.
20:02:23  <trevnorris>or, at least it's telling me a value is smi that I didn't think was: "2147409811 ; r11 (smi)"
20:02:35  <trevnorris>I thought the max size of smi was 2^30 - 1
20:10:14  * AvianFlu_joined
20:10:47  * AvianFluquit (Remote host closed the connection)
20:10:47  * AvianFlu_quit (Remote host closed the connection)
20:12:41  * AvianFlujoined
20:17:32  * qardjoined
20:23:46  * AvianFluquit (Remote host closed the connection)
20:30:57  * jmar777quit (Remote host closed the connection)
20:31:31  * jmar777joined
20:34:53  <trevnorris>isaacs: ping
20:35:49  * jmar777quit (Ping timeout: 248 seconds)
20:37:01  <mraleph>trevnorris: smi on x64 are full 32bit
20:37:41  * jmar777joined
20:38:46  * jmar777quit (Remote host closed the connection)
20:38:48  <trevnorris>mraleph: ah, thank you. that's what it meant by: "For long smis it has the following format: [32 bit signed int] ..."
20:38:59  <trevnorris>I didn't get what the comment meant by "long smi"
20:39:20  * jmar777joined
20:43:49  * jmar777quit (Ping timeout: 248 seconds)
20:48:53  * mikealquit (Quit: Leaving.)
20:50:36  * mikealjoined
21:01:27  * mikealquit (Quit: Leaving.)
21:22:09  <Domenic_>isaacs: so streams3 will fix the thing where i have to tell knox users to .resume() client responses even if they don't care about them?
21:22:48  <isaacs>Domenic_: no
21:23:08  <isaacs>Domenic_: but it WILL change the fact that you can't pause() to go back to where you were before hitting resume()
21:24:09  <Domenic_>isaacs: argh, ok. i guess it's our fault for trying to bridge the EE + stream APIs into a callback one that just hands you the response, but I have to re-learn why it fails every time someone reports that "bug" :(
21:24:31  <isaacs>Domenic_: well, either you lose data, or you don't.
21:24:41  <isaacs>Domenic_: we changed the default to "don't"
21:25:14  <isaacs>Domenic_: but, with streams3, you could conceivably resume() right before handing it to them
21:25:16  <Domenic_>isaacs: maybe we're not talking about the same issue. i'm talking about the "if you call .on('response', ...), you *must* call resume(), otherwise bad things happen" paragraph in the docs.
21:25:22  <isaacs>Domenic_: and if they complain about that, then they can call pause()
21:25:28  <isaacs>Domenic_: yeah
21:25:36  <isaacs>Domenic_: if you get the response, you're responsible for consumign it
21:26:17  <Domenic_>isaacs: that doesn't seem like it should be true, in an ideal world at least. but yeah.
21:26:46  <isaacs>Domenic_: in an ideal world, we would have dodged the EventEmitter bullet in the first place.
21:26:55  <Domenic_>isaacs: interesting, tell me more.
21:27:07  <isaacs>Domenic_: well... EventEmitters kind of suck
21:27:17  * AvianFlujoined
21:27:34  <isaacs>Domenic_: it'd be better to do server.accept(function(sock) { ... }) rather than server.on('connection', function(socket) { .. })
21:28:00  <isaacs>Domenic_: and then stream.read(function(chunkOrNullForEOForSomething) { ... })
21:28:13  <isaacs>Domenic_: functional-style rather than on-style
21:28:49  <isaacs>Domenic_: then you dont' have that weird impedance mismatch with Promises, either
21:28:55  * mikolalysenkoquit (Ping timeout: 246 seconds)
21:29:12  <Domenic_>isaacs: what does that buy, seems like less-uniform syntax for saying the same thing
21:29:44  <isaacs>Domenic_: what it buys is much sipmler logic around when to emit different events, especially eof which i'm struggling with atm
21:29:55  <isaacs>but, backwards compatibility.
21:30:01  <isaacs>i'm going to make a new platform any second now.
21:30:05  <Domenic_>heh
21:30:08  <isaacs>because fuck this backwrds compatibility bullshit
21:30:11  <isaacs>srsly.
21:30:23  <Domenic_>how does it lead to simpler logic?
21:31:21  <trevnorris>isaacs: you cool with https://github.com/trevnorris/node/compare/panic-and-buffer-logic
21:31:49  * mikealjoined
21:32:43  * mikolalysenkojoined
21:33:35  <isaacs>trevnorris: a lot of that seems unnecessary
21:34:05  <isaacs>Domenic_: because right now, we have buffering, and a 'readable' event to alert when there's a thing to do, and an 'end' event when you've read it all
21:34:22  <isaacs>Domenic_: and when a stream never has any data, we can't emit the 'end' event when you'd lose it, but also can't NOT emit it if you expect it.
21:34:33  <isaacs>Domenic_: we'd be able to skip all that noise
21:34:54  <isaacs>Domenic_: read(fn) would just be the only API
21:35:17  <isaacs>no readable event, no end event
21:35:20  <isaacs>no "events"
21:35:48  <isaacs>of course, you know... "Evented I/O for V8"
21:35:58  <Domenic_>isaacs: ah OK, makes sense for streams. not sure how it applies to every EE situation, but I guess I can see where it might generalize.
21:36:01  <Domenic_>lol
21:36:06  <trevnorris>isaacs: the parent assignation should have never gone in. had some tunnel vision in the bug fix and missed the final check in the if.
21:36:06  <trevnorris>isaacs: the RangeError check is unnecessary and the return offset thing had already lead to a bug, so wanted to play it safe.
21:36:08  <isaacs>trevnorris: i mean, not "unnecessary" exactly, but like it doesnt' actually do anythign
21:36:22  <isaacs>trevnorris: like, new TypeError vs just TypeError
21:36:48  <trevnorris>yeah. that and the undefined checks are just for consistency. i'd drop those no problem.
21:37:11  <isaacs>trevnorris: nah, i mean, lgtm i guess
21:37:38  <isaacs>trevnorris: https://github.com/trevnorris/node/compare/panic-and-buffer-logic#L0R586 seems like the only thing that makes a difference, really
21:37:43  <isaacs>trevnorris: except the parent assignment
21:38:23  <trevnorris>isaacs: yeah. I'll drop the others and squash the commits.
21:40:29  <isaacs>trevnorris: nah, they're fine
21:40:34  <isaacs>trevnorris: consistency is good ones :)
21:41:28  * mikealquit (Ping timeout: 268 seconds)
21:41:34  <trevnorris>isaacs: heh, cool. also you like function style events more than on style? that type of impl would be infinitely easier in node.c.
21:41:46  <trevnorris>creating an on type event listener in c has been painful.
21:42:15  * rendarquit
21:42:53  <MI6>joyent/node: Trevor Norris master * 8ce02cf : buffer: misc logic simplification (+1 more commits) - http://git.io/vbaSPw
21:43:27  * mikealjoined
21:43:49  <trevnorris>isaacs: using that and attaching the instance to the event instead of using call/apply the event system would be sooo freaky fast. :)
21:48:58  <isaacs>trevnorris: yeah
21:49:02  <isaacs>trevnorris: it's a more consistent model
21:49:27  <isaacs>trevnorris: and then it's more clear that you just *can't* have passive data listeners without them being passthrough-streams
21:49:30  <isaacs>but, whatever.
21:49:33  <isaacs>that's easy to do.
21:50:08  <isaacs>listener = { read: function(cb) { src.read(function(chunk) { updateStatusBarOrWhatever(chunk); cb(chunk); }); } }
21:50:32  <trevnorris>but that's only for streams, i'll assume. I can't imagine every event would be function based.
21:52:35  * hzquit (Read error: No route to host)
21:53:21  <isaacs>trevnorris: why not?
21:53:33  <isaacs>trevnorris: what else do you really need events for, other than I/O?
21:53:36  * hzjoined
21:53:43  <trevnorris>isaacs: things like process.on('SIGINT'
21:54:06  <isaacs>process.SIGINT(function() { got a sigint })
21:54:42  <isaacs>this is all academic and wonderland wishful stuff, of course.
21:54:44  <tjfontaine>the EE model is nice when you don't know the event names in advance
21:55:13  <trevnorris>well, it's a hack, but on an object can still be done: eventer[callName](arguments);
21:55:17  <trevnorris>but it's way ugly.
21:58:14  <isaacs>trevnorris, tjfontaine: it'd encourage creating well-defined APIs
21:58:39  <isaacs>instead of the situation we have now, where you really can't introspect the possible events that might emitted, UNLESS you know about them in advance
21:59:01  * sblomjoined
21:59:04  <trevnorris>well, let's also put this into Node v2.0 :)
21:59:21  <tjfontaine>aye, it favors the explicit, just sometimes it's fun to be evil :P
21:59:35  <isaacs>actually, I think signal handling is probably one of the only valid use-cases for an EventEmitter pattern, but even there, we don't use the builtin EE code for it
21:59:46  * c4miloquit (Remote host closed the connection)
22:00:12  * c4milojoined
22:01:17  <trevnorris>hm. there might be a cool compromise.
22:01:42  * bnoordhuisjoined
22:02:10  <trevnorris>how about defining a superset of all possible events, then passing in specifics in the callback.
22:02:48  <trevnorris>like: stream.request(callback) and stream.error(status, callback) or process.signal(signal, callback)
22:03:06  <trevnorris>but I guess that could get costly calling the callback for every one instead of on a specific case.
22:04:37  * c4miloquit (Ping timeout: 246 seconds)
22:04:52  * pachetquit (Quit: leaving)
22:25:45  * hzquit (Disconnected by services)
22:25:50  * hzjoined
22:26:37  * hzquit (Client Quit)
22:28:20  <trevnorris>bnoordhuis: tomorrow mind giving this a quick review https://github.com/joyent/node/pull/5747
22:32:31  * sblomquit (Ping timeout: 276 seconds)
22:44:07  * icarotjoined
22:48:36  * c4milojoined
23:09:38  * stagasquit (Read error: Connection reset by peer)
23:22:21  * loladiroquit (Ping timeout: 264 seconds)
23:26:45  <trevnorris>bnoordhuis: thanks :)
23:27:56  * paddybyersquit (Ping timeout: 246 seconds)
23:32:13  <bnoordhuis>np
23:40:47  <tjfontaine>so here's an interesting question
23:41:48  <tjfontaine>bnoordhuis: presuming a Local<External> is used in node, but External::New isn't, the linker will remove the symbol for External::New
23:42:48  <tjfontaine>that's more of a question, I think that's what I'm seeing happening here
23:46:29  * mcavagequit (Remote host closed the connection)
23:49:09  <trevnorris>bnoordhuis: coolio. added commit w/changes and commented on your notes: https://github.com/joyent/node/pull/5747
23:49:14  <trevnorris>tjfontaine: where you seeing that?
23:50:24  <tjfontaine>linux
23:50:28  <tjfontaine>g++ 4.4
23:50:57  <trevnorris>tjfontaine: oh wtf. that's a bug. give me 5 i'll throw up a patch.
23:51:33  <tjfontaine>trevnorris: is it a change from the v8 upgrade?
23:52:38  <trevnorris>tjfontaine: no, I totally missed setting the external to the object passed to Alloc() in ead8e26b
23:53:41  <trevnorris>tjfontaine: is there a way to run the addon unit tests? this should really be covered since it's not actually used in core.
23:53:46  <tjfontaine>trevnorris: well I'm not entirely sure this is related, it's a more generic ld/v8 question
23:54:20  <tjfontaine>trevnorris: there still isnt' a way yet to run the existing addons, I will cook up an example tonight
23:54:25  <trevnorris>tjfontaine: fwiw External::New should be used, so like it or not you found a bug :)
23:54:28  <trevnorris>tjfontaine: thanks.
23:54:44  * groundwaterquit (Quit: groundwater)
23:55:25  <tjfontaine>trevnorris: ya, but I'm worried that I'm binding to things in my addon-layer that won't work when node is compiled with gcc-ld and win-link.exe
23:55:39  <tjfontaine>trevnorris: the same way people complain about missing openssl symbols
23:57:47  <trevnorris>tjfontaine: here's the fix: https://github.com/trevnorris/node/compare/smalloc-fix-cb-extern
23:58:05  <trevnorris>not sure how that got left out, but man I feel like an ass for it.
23:58:52  * mikealquit (Quit: Leaving.)
23:59:06  <tjfontaine>trevnorris: any reason why that shouldn't be a hidden property?
23:59:12  * AvianFlu_joined
23:59:35  * AvianFluquit (Remote host closed the connection)
23:59:36  * AvianFlu_quit (Remote host closed the connection)
23:59:57  <trevnorris>tjfontaine: i'm not sure what you're talking about. it is. ;)