00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:05:20  <bnoordhuis>okay, running the CI for the v8 upgrade once more. barring big regressions, that's the version i'll land
00:05:21  * loladirojoined
00:05:43  <bnoordhuis>unless someone speaks up now, of course :)
00:05:43  <tjfontaine>sigh, fnt is hanging on windows again
00:09:36  <tjfontaine>https://cloudup.com/cU-wzZsLYqr
00:09:57  <tjfontaine>I suppose that named pipe is created for the child process that's spawned
00:10:26  <bnoordhuis>ah
00:10:36  <bnoordhuis>sounds plausible but what do i know?
00:10:44  <tjfontaine>heh
00:11:50  * c4milojoined
00:12:21  <trevnorris>man I suck at navigating cpp source.
00:18:14  <bnoordhuis>trevnorris: what's the issue?
00:20:57  <trevnorris>bnoordhuis: just can't find the definition for Local<>::New(Isolate*, Persistent<>&);
00:24:04  <tjfontaine>templates, they make the baby jesus cry :P
00:24:14  <bnoordhuis>try Local<T>::New
00:24:26  <bnoordhuis>it's in v8.h somewhere btw
00:27:57  <trevnorris>bnoordhuis: yeah. I found it'd declaration in include/v8.h, but the function body for Local<T>::New isn't in there.
00:30:59  <mmalecki>bnoordhuis: I got a quesiton earlier on in #nodejitsu, does strongloop have an IRC channel?
00:31:41  * st_lukequit (Remote host closed the connection)
00:32:38  <bnoordhuis>mmalecki: not really. we hung out in #strongloop for a while but most people moved to skype :(
00:32:47  * c4miloquit (Remote host closed the connection)
00:32:49  <bnoordhuis>who was asking about it?
00:32:53  <mmalecki>bnoordhuis: right :). I asked him to email
00:33:05  <bnoordhuis>okay, thanks
00:33:07  <mmalecki>bnoordhuis: random dude, I didn't really catch his nick
00:34:18  <bnoordhuis>trevnorris: line 5550 of include/v8.h with v8's current master
00:34:38  <bnoordhuis>trevnorris: they declare stuff at the top and do the implementation at the bottom
00:36:47  <trevnorris>bnoordhuis: ah, thanks. I was stuck in src/api.cc
00:41:51  * loladiroquit (Quit: loladiro)
00:44:38  * st_lukejoined
00:45:06  <MI6>joyent/node: Ben Noordhuis master * 7684e0b : test: fix up weakref.cc after v8 api change (+8 more commits) - http://git.io/cgc9Gg
00:45:15  <tjfontaine>dun dun dun
00:45:22  <bnoordhuis>indeed :)
00:46:57  <tjfontaine>so now that we've broken the world, what do we think in principle about my idea for a neutral object model?
00:47:29  <bnoordhuis>i think that'll only work for very basic things
00:47:50  <bnoordhuis>as soon as you want to do something more advanced, you'll have to get at the underlying object
00:48:13  <tjfontaine>I'm not sure how many things really need the advanced work
00:48:18  * Benviequit (Read error: Operation timed out)
00:48:45  <tjfontaine>I wouldn't argue that some modules will need it
00:49:07  <bnoordhuis>well, take SetIndexedPropertiesToExternalArrayData() for example
00:49:13  <bnoordhuis>v8 has it, spidermonkey doesn't
00:49:57  <tjfontaine>sure, but couldn't we adapt a model in some way to make it work for spidermonkey?
00:50:13  <tjfontaine>in reality being abel to one day target spidermonkey is a nice thing, not a requirement
00:50:18  <bnoordhuis>i don't know. i tried that a while ago and it was a total pain
00:50:51  <tjfontaine>what I really want to solve in the short term is provide an interface that lets module authors target that we can work around the churn of v8
00:51:18  <bnoordhuis>yeah, but you can't anticipate the future
00:51:38  <tjfontaine>no, but you can see how modules are being used right now, and define an interface that we can support going forward
00:53:04  <bnoordhuis>eh, i don't know. i'm not stopping you, mind you, but i'm pretty sure you'll hit roadblocks soon enough
00:53:19  <bnoordhuis>if you want to create something that's potentially cross-engine, that is
00:53:47  <bnoordhuis>a bandaid for v8 api churn is probably not too complex, conceptually at least
00:54:04  <tjfontaine>cross engine is only a nice wish really, in the short term just the fact that writing a module that builds on v0.8 and v0.12 is painful
00:54:41  * M28quit (Read error: Connection reset by peer)
00:54:53  <MI6>nodejs-master: #288 FAILURE linux-x64 (2/608) osx-ia32 (2/608) linux-ia32 (3/608) osx-x64 (3/608) http://jenkins.nodejs.org/job/nodejs-master/288/
00:55:23  <tjfontaine>hmm that wasn't failing in your pullreq work, was it?
00:55:48  * kazuponjoined
00:56:04  <tjfontaine>sigh it was
00:56:43  <tjfontaine>master/01b113d9/out/Release/obj.target/deps/v8/tools/gyp/libv8_nosnapshot.ia32.a -Wl,--end-group -lsocket -lnsl
00:56:46  <tjfontaine>ld: fatal: unrecognized option '--'
00:56:49  <tjfontaine>ld: fatal: use the -z help option for usage information
00:57:19  <bnoordhuis>ah, smartos
00:57:31  <tjfontaine>didn't see the big "Failed" attached to the PR? :P
00:58:37  <bnoordhuis>no, truth be told. i only checked that it were the usual suspects that were failing
00:58:56  <bnoordhuis>so... --end-group is not a sunos ld switch, i take it?
00:59:00  * loladirojoined
00:59:02  <tjfontaine>correct
00:59:21  <tjfontaine>hmm
00:59:22  <tjfontaine>actually
01:00:08  <bnoordhuis>ah, lemme guess - --gc-sections
01:00:28  <bnoordhuis>easy to fix, one sec
01:00:29  <tjfontaine>right
01:02:25  <bnoordhuis>btw and apropos nothing, why does gcc use the sunos ld rather than the gnu one?
01:02:50  <tjfontaine>my understanding is that there are some extensions and quirks made that haven't been ported to the gnu ld
01:03:52  <MI6>joyent/node: Ben Noordhuis master * 0181fee : build: don't enable --gc-sections on sunos - http://git.io/aV6rCg
01:04:29  <bnoordhuis>tjfontaine: to the sunos ld in general or the illumos/smartos fork?
01:04:40  <tjfontaine>sunos ld in general
01:04:58  <bnoordhuis>ah, okay. you know what those changes are?
01:05:04  <tjfontaine>I know work is being done on it, but it's one of those pieces that everyone freaks out about switching
01:05:21  <tjfontaine>not off hand, but I think at least some of it has to do with the DOF sections
01:05:59  <bnoordhuis>okay
01:06:06  <tjfontaine>when I inquired about switching the platform on the whole to clang there was a conversation about it
01:06:17  <bnoordhuis>stern words were spoken?
01:06:50  <tjfontaine>no, just that there's a lot of work involved, that needs to be done, but no motivation by the community yet for it
01:07:28  <mmalecki>tjfontaine: if I'd be interested, how'd I get involved?
01:08:02  <tjfontaine>mmalecki: I have seen some conversations about it briefly in #illumos, that seems like a good coordinating point for it
01:08:18  <mmalecki>thanks
01:08:35  <tjfontaine>np
01:08:53  <MI6>nodejs-master-windows: #96 FAILURE http://jenkins.nodejs.org/job/nodejs-master-windows/96/
01:09:12  <tjfontaine>oh windows, how cute are you
01:09:25  <tjfontaine>node.obj : error LNK2001: unresolved external symbol "class v8::Local<class v8::Value> __cdecl UVException(int,char const *,char const *,char const *)" ([email protected]@[email protected]@[email protected]@@[email protected]@[email protected]) [g:\jenkins\workspace\nodejs-master-windows\1d92f228\node.vcxproj]
01:09:29  <tjfontaine>node.obj : error LNK2001: unresolved external symbol "class v8::Local<class v8::Value> __cdecl ErrnoException(int,char const *,char const *,char const *)" ([email protected]@[email protected]@[email protected]@@[email protected]@[email protected]) [g:\jenkins\workspace\nodejs-master-windows\1d92f228\node.vcxproj]
01:09:34  <tjfontaine>tls_wrap.obj : error LNK2001: unresolved external symbol "unsigned __int64 __cdecl Length(class v8::Handle<class v8::Object>)" ([email protected]@[email protected]@[email protected]@@[email protected]@@Z) [g:\jenkins\workspace\nodejs-master-windows\1d92f228\node.vcxproj]
01:09:37  <tjfontaine>tls_wrap.obj : error LNK2001: unresolved external symbol "char * __cdecl Data(class v8::Handle<class v8::Object>)" ([email protected]@[email protected]@[email protected]@@[email protected]@@Z) [g:\jenkins\workspace\nodejs-master-windows\1d92f228\node.vcxproj]
01:09:41  <tjfontaine>g:\jenkins\workspace\nodejs-master-windows\1d92f228\Release\node.exe : fatal error LNK1120: 4 unresolved externals [g:\jenkins\workspace\nodejs-master-windows\1d92f228\node.vcxproj]
01:13:38  <bnoordhuis>well, that's interesting
01:13:56  <tjfontaine>it is, isn't it
01:14:13  <bnoordhuis>i bet it's because i'm using forward declarations in node_internals.h
01:15:09  <bnoordhuis>which doesn't explain why msvc can't find them however
01:15:19  <bnoordhuis>maybe NODE_EXTERN is unset at that point?
01:15:23  * bnoordhuislooks
01:15:45  <bnoordhuis>nah, __declspec(dllexport)
01:15:54  <tjfontaine>ya, it should be right, it seems right to me anyway
01:18:12  <bnoordhuis>okay, i'll look at in a few hours
01:18:23  <bnoordhuis>first have to reinstall visual studio :-/
01:18:52  <tjfontaine>I vote for delaying it until work tomorrow :)
01:19:58  <bnoordhuis>yeah, i should have it fixed by then. your tomorrow morning is my late afternoon
01:20:29  * kazuponquit (Remote host closed the connection)
01:20:47  <tjfontaine>nod
01:20:56  * kazuponjoined
01:21:25  <tjfontaine>btw, lgty? https://github.com/tjfontaine/node/tree/timers-now I know we still need to do your fix for it
01:21:26  * jmar777joined
01:21:36  <tjfontaine>er
01:21:37  * dapquit (Quit: Leaving.)
01:21:37  <MI6>nodejs-master: #289 UNSTABLE smartos-x64 (15/608) linux-x64 (157/608) osx-ia32 (137/608) smartos-ia32 (7/608) linux-ia32 (204/608) osx-x64 (128/608) http://jenkins.nodejs.org/job/nodejs-master/289/
01:21:40  <tjfontaine>compare, anyway
01:22:04  * dapjoined
01:22:13  <tjfontaine>I have a feeling most of those failing tests are because FNT started up at the same time
01:22:23  <bnoordhuis>fnt?
01:22:29  <tjfontaine>full nightly test
01:22:36  <tjfontaine>the one that runs pummel etc etc
01:22:41  <bnoordhuis>btw, https://github.com/tjfontaine/node/commit/4f32916 lgtm
01:22:49  <tjfontaine>thanks
01:23:52  * defunctzombie_zzchanged nick to defunctzombie
01:25:23  * kazuponquit (Ping timeout: 240 seconds)
01:25:56  <MI6>joyent/node: Timothy J Fontaine master * fe17692 : timers: internal unref timers should use Timer.now - http://git.io/7whcew
01:27:06  * abraxasjoined
01:27:36  * dapquit (Quit: Leaving.)
01:35:35  * wavdedjoined
01:35:39  * st_lukequit (Remote host closed the connection)
01:38:00  <MI6>nodejs-master-windows: #97 FAILURE http://jenkins.nodejs.org/job/nodejs-master-windows/97/
01:38:00  * dominictarrjoined
01:47:42  <MI6>nodejs-master: #290 UNSTABLE smartos-x64 (29/608) linux-x64 (2/608) osx-ia32 (3/608) smartos-ia32 (27/608) linux-ia32 (2/608) osx-x64 (2/608) http://jenkins.nodejs.org/job/nodejs-master/290/
01:48:13  <trevnorris>bnoordhuis: so it lands. this will be fun :)
01:51:45  * kazuponjoined
01:59:12  <MI6>nodejs-master-windows: #98 FAILURE http://jenkins.nodejs.org/job/nodejs-master-windows/98/
02:02:09  * M28joined
02:03:07  * dominictarrquit (Quit: dominictarr)
02:10:46  * amartensquit (Quit: Leaving.)
02:23:11  * wavdedquit (Quit: Nighty night)
02:24:54  * pooyaquit (Quit: pooya)
02:25:40  <trevnorris>bnoordhuis: you're probably asleep, but any reason to pass anything else other than <Value> to FunctionCallbackInfo?
02:26:56  <trevnorris>I can't find a single use in v8 otherwise, but if that's the case then why make it a template?
02:27:24  * defunctzombiechanged nick to defunctzombie_zz
02:27:26  * dominictarrjoined
02:28:16  <trevnorris>tjfontaine: they make me cry too. just started to feel comfortable w/ the api. now this :-/
02:29:10  <tjfontaine>heh
02:31:48  <trevnorris>tjfontaine: even v8's own tests are full of deprecated crap. half pass the isolate, half don't. etc.
02:32:07  <tjfontaine>nod
02:46:43  <MI6>nodejs-master: #291 UNSTABLE smartos-x64 (9/608) linux-x64 (3/608) osx-ia32 (2/608) smartos-ia32 (3/608) linux-ia32 (2/608) osx-x64 (3/608) http://jenkins.nodejs.org/job/nodejs-master/291/
02:47:05  <tjfontaine>much better
02:49:19  * groundwaterquit (Quit: groundwater)
02:54:43  * qardjoined
02:56:07  * qardpart
03:04:43  * bradleymeckjoined
03:08:01  * defunctzombie_zzchanged nick to defunctzombie
03:11:02  * amartensjoined
03:13:55  <trevnorris>tjfontaine: ok. needing to pull the isolate in every function is really annoying...
03:14:31  <tjfontaine>heh, ya, I can imagine it's no fun
03:16:01  * amartensquit (Ping timeout: 276 seconds)
03:30:32  <trevnorris>tjfontaine: for the life of me I can't figure out how to get back ~20% performance for a few things.
03:30:46  * dsantiagojoined
03:31:26  <tjfontaine>which things?
03:32:12  <trevnorris>my js property set tests.
03:32:43  <tjfontaine>what's going on in particular?
03:34:01  <trevnorris>persisting objects for reuse isn't near as efficient as it used to be.
03:34:07  <tjfontaine>ah
03:34:22  <tjfontaine>probably part and parcel for their changes in general
03:34:42  <trevnorris>for example, caching the global object for function callbacks, it now has to run through Local<Object>::New() before being passed to ->Cal()
03:34:44  * kazuponquit (Remote host closed the connection)
03:34:49  <trevnorris>which is killing performance.
03:35:13  <tjfontaine>must be something we're missing then
03:35:16  * kazuponjoined
03:35:19  <trevnorris>s/Cal/Call
03:35:39  <trevnorris>i thought so, but it's exactly the way they have it setup in their tests.
03:36:17  <tjfontaine>were those tests updated?
03:36:26  <tjfontaine>you might want to ask on their mailing list
03:37:49  <trevnorris>they were updated by dcarney, and good point.
03:39:25  * kazuponquit (Ping timeout: 246 seconds)
03:40:26  * st_lukejoined
03:42:12  * bnoordhuisquit (Ping timeout: 246 seconds)
03:44:41  <trevnorris>it's definitely the need to Local<>::New() the Persistent. Ran some tests where it would pre-cache the Local beforehand and the regression disappeared.
03:45:48  <trevnorris>and that's problematic for pretty much every function call from cc to js since we pre-cache the object that is passed to Call.
03:47:13  <trevnorris>oh man. and it's even worse for MakeCallback since it needs to also Local<Function> the process.tickCallback fn.
03:48:08  * qardjoined
03:48:15  * qardquit (Client Quit)
03:49:11  * defunctzombiechanged nick to defunctzombie_zz
03:51:46  <trevnorris>tjfontaine: second pair of eyes please. line 555 of test/cctest/test-debug.cc they're declaring a Local out of HandleScope
03:51:54  <trevnorris>wtf is up w/ that?
03:55:56  <trevnorris>tjfontaine: nm. that code was written back in 2008. :P
03:56:12  <tjfontaine>heh ok
04:04:55  <tjfontaine>haha, I know why the exit delay test is failing :P
04:05:09  <tjfontaine>ben didn't merge the fix
04:06:12  <trevnorris>what? oh well.
04:06:22  <tjfontaine>he merged it, but it got lost in the conflicts
04:07:48  * groundwaterjoined
04:09:08  <trevnorris>ah
04:09:26  * timoxleyjoined
04:11:26  * amartensjoined
04:12:45  <tjfontaine>trevnorris: lgty? just re-applying it in the right place https://github.com/tjfontaine/node/compare/exit-delay
04:12:56  <tjfontaine>original patch for reference https://github.com/joyent/node/commit/16b59cbc74c8fe2f8b30f3af4c2f885b7bfb6030
04:15:25  <trevnorris>tjfontaine: lgtm. go ahead
04:15:29  <tjfontaine>thanks
04:15:43  <MI6>joyent/node: Peter Rust master * 82ff891 : http: use an unref'd timer to fix delay in exit - http://git.io/QEpqaQ
04:15:51  * amartensquit (Ping timeout: 260 seconds)
04:18:37  * abraxasquit (Remote host closed the connection)
04:23:04  * kazuponjoined
04:24:26  * defunctzombie_zzchanged nick to defunctzombie
04:25:15  <MI6>nodejs-master: #292 UNSTABLE smartos-x64 (10/608) linux-x64 (3/608) osx-ia32 (2/608) smartos-ia32 (1/608) linux-ia32 (1/608) osx-x64 (1/608) http://jenkins.nodejs.org/job/nodejs-master/292/
04:27:43  <MI6>nodejs-master-windows: #99 FAILURE http://jenkins.nodejs.org/job/nodejs-master-windows/99/
04:30:06  * bradleymeckquit (Quit: bradleymeck)
04:31:41  <trevnorris>well. the v8 debug tests just caused my system to halt. that's awesome.
04:31:59  <tjfontaine>heh
04:33:19  <tjfontaine>https://gist.github.com/tjfontaine/5946238 sigh
04:35:52  <tjfontaine>hmm that's from a test I was floating for isaacs, I guess that doesn't matter, but I should probably get indutny to look into it
04:37:36  * groundwaterquit (Quit: groundwater)
04:42:03  <trevnorris>tjfontaine: don't completely follow, but looks strange.
04:42:21  <tjfontaine>trevnorris: looks like a double free in the BIO
04:42:35  <trevnorris>that from a specific test?
04:43:03  <tjfontaine>yes
04:43:12  <tjfontaine>not one currently in the tree though
04:45:21  <trevnorris>ah ok
04:46:38  * bajtosjoined
04:47:11  <trevnorris>this is so <censored> stupid! to access the persistent you need to create another heap object, instead of just being able to access the original Local the Persistent points to.
04:47:37  <tjfontaine>we need to censor ourselves?
04:47:45  <tjfontaine>fuck. I'm screwed :P
04:47:59  <trevnorris>trying to get better. when you hear your 2 year old repeat you, sounds a lot different :P
04:48:42  <tjfontaine>ya, it sounds hilarious :P
04:48:47  * tjfontainecorrupted all 4 nephews
04:48:50  <trevnorris>hah
04:52:39  <tjfontaine>I don't think this is working the way we expect: args.GetReturnValue().Set(Exception::Error(s));
04:53:22  <tjfontaine>matter of fact, for how its used creation of an Error object really isn't necessary
04:54:27  <trevnorris>ok
05:00:01  * groundwaterjoined
05:00:04  <tjfontaine>oh heh, I'm in the wrong code path, lul
05:00:11  <tjfontaine>might be time to stop for the day
05:01:07  <trevnorris>hah. usually a sign :)
05:01:44  <trevnorris>well, I'm really hoping the v8 team has a good response why they're requiring to create a new heap object every time we want to use a persistent.
05:01:49  <trevnorris>it's making things freaka slow
05:02:13  <tjfontaine>I stand by my statement, we probably don't need to create a string and an error in this code path, since we only use the string in javascript
05:03:31  <trevnorris>cool. have a quick patch as an example?
05:03:39  <tjfontaine>yup, just a moment
05:04:32  * abraxasjoined
05:04:56  <trevnorris>also, put any more thought into how the cc tests would work?
05:06:27  <tjfontaine>https://github.com/tjfontaine/node/compare/master-fixes
05:06:34  <trevnorris>tjfontaine: i'm failing test-tls-server-verify
05:06:39  <tjfontaine>that's what this fixes
05:06:45  <trevnorris>ah, ok
05:07:04  <tjfontaine>I have been thinking about the addon stuff, but kinda got distracted by my object model stuff
05:07:37  <trevnorris>cool
05:07:59  <tjfontaine>hopefully I should be able to get an example of the addon stuff working
05:08:30  * defunctzombiechanged nick to defunctzombie_zz
05:11:42  * amartensjoined
05:12:28  <trevnorris>tjfontaine: side note, String::New() is to be deprecated.
05:12:49  <trevnorris>at least says include/v8.h
05:13:08  * jmar777quit (Remote host closed the connection)
05:13:42  <tjfontaine>trevnorris: ok, just used what was also in that function
05:13:56  <tjfontaine>s = String::New(X509_verify_cert_error_string(x509_verify_error));
05:14:06  <trevnorris>oh, and you should, since it's not officially deprectead. just giving you a heads up
05:14:13  <trevnorris>one more thing that we'll have to refactor :P
05:14:18  <tjfontaine>in favor of being specific in encoding?
05:14:37  <trevnorris>yeah, instead is String::NewFromUtf8, NewFromOneByte, NewFromTwoBytes
05:14:42  <tjfontaine>nod
05:15:10  <trevnorris>what I don't get though is that just specifying the argument type would've been enough. imo
05:15:23  <trevnorris>they already require char*, uint8_t* and uint16_t*
05:16:02  * amartensquit (Ping timeout: 240 seconds)
05:16:57  <trevnorris>tjfontaine: lgtm, but i'll defer to indutny for that one.
05:17:02  <ik>that's racist
05:18:32  <tjfontaine>trevnorris: ya, I'm fairly certain it's right, but definitely waiting on him
05:20:45  * timoxleyquit (Quit: Computer has gone to sleep.)
05:21:16  <trevnorris>hm. haven't seen isaacs drop offline before.
05:27:20  * st_lukequit (Remote host closed the connection)
05:27:34  * mikealquit (Quit: Leaving.)
05:27:57  * mikealjoined
05:29:11  <trevnorris>v8 team better have a freakin good reason for making my code so much slower.
05:29:18  <tjfontaine>heh
05:31:53  * mikealquit (Ping timeout: 240 seconds)
05:33:17  * mikealjoined
05:40:20  * pooyajoined
05:48:34  * st_lukejoined
05:49:32  * amartensjoined
05:49:34  * timoxleyjoined
06:01:00  <tjfontaine>hm well that change was wrong for different reasons, oh well, I figure out what I did wrong later
06:01:56  <trevnorris>eh, it's late.
06:07:40  <trevnorris>tjfontaine: it's ridiculous how much has to be done just to get at the object http://git.io/Gn6qsw
06:18:24  * defunctzombie_zzchanged nick to defunctzombie
06:23:01  * groundwaterquit (Quit: groundwater)
06:23:43  <indutny>tjfontaine: hey man
06:27:52  * defunctzombiechanged nick to defunctzombie_zz
06:28:40  * kazuponquit (Remote host closed the connection)
06:29:07  * kazuponjoined
06:30:00  * kazuponquit (Read error: Connection reset by peer)
06:30:17  * kazuponjoined
06:38:49  * timoxleyquit (Ping timeout: 276 seconds)
06:48:15  * kazuponquit (Remote host closed the connection)
06:48:44  * kazuponjoined
06:49:30  * amartensquit (Quit: Leaving.)
06:53:02  * kazuponquit (Read error: No route to host)
06:53:23  * kazuponjoined
07:09:34  * st_lukequit (Remote host closed the connection)
07:14:49  * groundwaterjoined
07:24:32  * csaohjoined
07:31:57  <trevnorris>indutny: sup
07:32:04  * rendarjoined
07:33:22  <indutny>hi
07:33:43  <indutny>what was that thing you were talking about yesterday?
07:34:55  <trevnorris>which? I tend to ramble :)
07:36:13  * timoxleyjoined
07:49:19  * rendarquit (Ping timeout: 246 seconds)
07:49:48  * amartensjoined
07:54:07  * amartensquit (Ping timeout: 240 seconds)
07:57:34  * pooyaquit (Quit: pooya)
08:08:59  * groundwaterquit (Quit: groundwater)
08:09:08  * loladiroquit (Quit: loladiro)
08:13:05  * timoxleyquit (Ping timeout: 256 seconds)
08:24:35  * linus_joined
08:50:12  * amartensjoined
08:51:19  <trevnorris>indutny: you mean the issues i'm having w/ v8?
08:54:35  <indutny>em...
08:54:40  <indutny>I'm not really sure
08:54:46  <indutny>looks like crypto
08:55:01  * amartensquit (Ping timeout: 256 seconds)
08:58:38  * csaohquit (Quit: csaoh)
09:08:53  <trevnorris>oh, just an issue w/ a failing test. tjfontaine will bring you up to speed later.
09:09:16  <trevnorris>indutny: small thing. void CipherBase::Final in node_crypto.cc has an unused Local<Value> outString;
09:09:29  <indutny>ah
09:09:31  <indutny>well
09:09:36  <indutny>pull request, maybe? :)
09:10:28  <trevnorris>heh, i'm not worried about it. :)
09:10:59  <trevnorris>oh, think it was left over from the 3.20 upgrade.
09:26:33  * bajtosquit (Quit: bajtos)
09:32:35  * rendarjoined
09:42:17  * csaohjoined
09:44:49  * rendarquit (Ping timeout: 246 seconds)
09:47:53  * rendarjoined
09:50:28  * amartensjoined
09:54:57  * amartensquit (Ping timeout: 246 seconds)
10:07:31  * csaohquit (Quit: csaoh)
10:32:13  * kazuponquit (Remote host closed the connection)
10:32:40  * kazuponjoined
10:34:44  * kazuponquit (Read error: No route to host)
10:35:03  * kazuponjoined
10:36:47  * kazuponquit (Remote host closed the connection)
10:37:15  * kazuponjoined
10:37:54  * csaohjoined
10:41:31  * kazuponquit (Ping timeout: 246 seconds)
10:44:55  * st_lukejoined
10:49:33  * csaohquit (Read error: Connection timed out)
10:50:51  * amartensjoined
10:55:34  * amartensquit (Ping timeout: 276 seconds)
11:01:46  * bnoordhuisjoined
11:27:44  <bnoordhuis>morning people
11:29:15  * abraxasquit (Remote host closed the connection)
11:36:21  <MI6>joyent/node: Ben Noordhuis master * 58e4eda : deps: upgrade c-ares to piscisaureus/[email protected] - http://git.io/ZvN-KA
11:45:57  <MI6>nodejs-master: #293 UNSTABLE smartos-x64 (8/608) linux-x64 (1/608) osx-ia32 (1/608) smartos-ia32 (1/608) linux-ia32 (1/608) osx-x64 (1/608) http://jenkins.nodejs.org/job/nodejs-master/293/
11:49:32  <MI6>nodejs-master-windows: #100 FAILURE http://jenkins.nodejs.org/job/nodejs-master-windows/100/
11:51:09  * amartensjoined
11:55:39  * amartensquit (Ping timeout: 268 seconds)
12:03:34  * saghulquit (Ping timeout: 240 seconds)
12:06:17  * saghuljoined
12:08:13  * timoxleyjoined
12:39:06  * dominictarrquit (Quit: dominictarr)
12:48:31  * kazuponjoined
12:51:30  * amartensjoined
12:56:28  * amartensquit (Ping timeout: 276 seconds)
13:03:53  * kazuponquit (Remote host closed the connection)
13:04:21  * kazuponjoined
13:08:50  * kazuponquit (Ping timeout: 246 seconds)
13:20:53  * bradleymeckjoined
13:32:04  * bradleymeckquit (Quit: bradleymeck)
13:45:08  * c4milojoined
13:51:47  * amartensjoined
13:56:37  * bnoordhuisquit (Ping timeout: 240 seconds)
13:56:55  * amartensquit (Ping timeout: 276 seconds)
14:02:00  * bnoordhuisjoined
14:06:19  * wavdedjoined
14:14:58  * kazuponjoined
14:19:18  * kazuponquit (Ping timeout: 240 seconds)
14:28:39  * loladirojoined
14:34:53  * loladiroquit (Ping timeout: 240 seconds)
14:41:45  * c4miloquit (Remote host closed the connection)
14:41:58  * c4milojoined
14:48:47  * loladirojoined
14:52:06  * amartensjoined
14:53:22  * mikealquit (Quit: Leaving.)
14:56:31  * pachetjoined
14:56:57  * amartensquit (Ping timeout: 268 seconds)
15:12:38  * jmar777joined
15:14:40  * Guest80162changed nick to isaacs
15:18:39  * loladiroquit (Quit: loladiro)
15:18:56  <isaacs>good morning
15:20:54  <bnoordhuis>morning isaac
15:21:02  * jmar777quit (Remote host closed the connection)
15:21:30  * pooyajoined
15:21:33  * jmar777joined
15:25:00  * mcavagejoined
15:25:51  * groundwaterjoined
15:25:59  * jmar777quit (Ping timeout: 260 seconds)
15:26:18  * mikealjoined
15:34:24  * jmar777joined
15:34:52  * defunctzombie_zzchanged nick to defunctzombie
15:35:10  * jmar777quit (Remote host closed the connection)
15:35:42  * jmar777joined
15:40:01  * raph_quit (Remote host closed the connection)
15:40:28  * jmar777quit (Ping timeout: 256 seconds)
15:51:41  * loladirojoined
15:52:27  * amartensjoined
15:53:14  * `3rdEdenchanged nick to `3E|DINNER
15:54:11  * dapjoined
15:55:24  * hzjoined
15:57:12  * amartensquit (Ping timeout: 256 seconds)
16:04:05  <tjfontaine>gday
16:06:43  * jameshowejoined
16:06:50  <jameshowe>greetings
16:07:27  <jameshowe>how many worker threads will libuv use, and can one control this?
16:07:43  * dscape__quit (Ping timeout: 264 seconds)
16:08:09  <tjfontaine>on unix you can tweak it, at least in master libuv
16:08:19  <trevnorris>bnoordhuis: so wtf. we're supposed to eat the performance regression unless we work around it doing crap like reinterpret_cast<Local*>()?
16:08:19  * Raynosquit (Ping timeout: 264 seconds)
16:08:37  <tjfontaine>jameshowe: https://github.com/joyent/libuv/blob/master/src/unix/threadpool.c#L99
16:08:55  * `3E|DINNERquit (Ping timeout: 264 seconds)
16:09:37  <tjfontaine>jameshowe: it by default is 4, its max is 128, and you can tweak that with the environment variable
16:10:33  <jameshowe>cool, thanks
16:10:39  * TooTallNatejoined
16:11:14  <jameshowe>is that since forever or...
16:11:32  <tjfontaine>no
16:13:26  * mikealquit (Quit: Leaving.)
16:14:58  * qardjoined
16:16:55  <trevnorris>anyone mind signing off for this bug fix? https://github.com/joyent/node/pull/5802
16:20:37  <tjfontaine>I know trevor is working when I look at the jenkins queue and see 3 or 4 pull requests lined up
16:20:44  <trevnorris>:)
16:21:24  <trevnorris>have a habit of rebasing whenever the branch my PR sits on is updated.
16:21:41  <tjfontaine>ya, that's a GoodThing(tm)
16:24:25  * timoxleyquit (Quit: Computer has gone to sleep.)
16:26:11  <MI6>joyent/node: isaacs v0.10 * 99a7e78 : http: Dump response when request is aborted - http://git.io/QhdFlQ
16:32:51  <jameshowe>tjfontaine: so do you know which version it landed in?
16:33:21  <trevnorris>bnoordhuis: so it get's us back the performance by doing a *reinterpret_cast<Local<T>*>(&Persistent<T>)
16:33:45  <trevnorris>bnoordhuis: and the v8 team themselves said that chrome is doing just that to get back performance for the time being.
16:34:17  * Benviejoined
16:34:18  <tjfontaine>jameshowe: blame can probably tell us
16:34:47  * Raynosjoined
16:34:52  <tjfontaine>jameshowe: https://github.com/joyent/libuv/commit/1e97b4567e1717bf17316230eff6e1a7350b8034 looks like starting with 0.10
16:38:16  * TooTallNatequit (Read error: No route to host)
16:39:19  <trevnorris>indutny: you know what "Builtin: A builtin from the snapshot" means from --prof output?
16:39:50  <tjfontaine>something the snapshot has decided to precompile and optimize for us, I would imagine
16:40:32  * jameshowequit (Quit: Leaving)
16:40:51  <tjfontaine>trevnorris: if you recompile with nosnapshot you can probably see what that is
16:41:02  <trevnorris>ah, thanks :)
16:41:29  <tjfontaine>at least a higher probability
16:42:14  <trevnorris>tjfontaine: um. compiling --without-snapshot is making my code run faster.
16:42:21  <trevnorris>there's got to be a bug there.
16:43:07  <tjfontaine>no, that's sorta expected really
16:43:13  <tjfontaine>well
16:43:19  <tjfontaine>I mean I wouldn't necessarily be surprised by it
16:43:34  <trevnorris>eh? then why does it compile w/ it?
16:44:00  <tjfontaine>because it's a startup time issue, the snapshot makes some assumptions for you
16:44:18  <tjfontaine>I guess the bug might be that the builtin isn't being re-optimized once it realizes the assumption was wrong
16:44:18  <trevnorris>oh. so you're saying the script has to be long running to see performance gains?
16:44:37  <trevnorris>well. from --prof it's running about 50% more than it used to.
16:44:43  <trevnorris>(in 3.19)
16:45:00  <trevnorris>i mean, consumes 50% more ticks
16:45:42  <tjfontaine>snapshot may be more aggressive, so if you're not letting it warm up long enough for the jit, ya nosnapshot can be faster
16:46:13  <trevnorris>hm. i'll let my perf script run longer
16:46:32  * st_lukequit (Remote host closed the connection)
16:46:37  <MI6>nodejs-v0.10-windows: #99 UNSTABLE windows-ia32 (7/594) windows-x64 (7/594) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/99/
16:47:48  * mikealjoined
16:47:51  <MI6>nodejs-v0.10: #271 UNSTABLE linux-ia32 (1/594) smartos-x64 (2/594) http://jenkins.nodejs.org/job/nodejs-v0.10/271/
16:50:50  * c4miloquit (Remote host closed the connection)
16:55:03  <trevnorris>tjfontaine: that snapshot thing is running during the entire script. not just at startup
16:55:11  <trevnorris>"312 2.8% 3.0% Builtin: A builtin from the snapshot"
16:55:24  <trevnorris>198 1.8% 1.9% Builtin: A builtin from the snapshot {1}
16:55:38  <bnoordhuis>trevnorris: builtins are e.g. %StringLength() and what have you
16:55:45  <bnoordhuis>it's the stuff that lives in deps/v8/src/*.js
16:56:04  <trevnorris>bnoordhuis: ah ok. thanks. that must be from the checks I'm doing before calling to cc.
16:56:08  <trevnorris>great...
16:56:39  <trevnorris>bnoordhuis: so, since the chrome team is doing that disgusting reinterpret_cast trick, imo we should to. it's eating our performance left and right.
16:57:20  * amartensjoined
17:02:14  * brsonjoined
17:10:11  <bnoordhuis>trevnorris: maybe. doing unchecked casts is asking for trouble though
17:10:29  <bnoordhuis>and when the v8 guys change the implementation, we have to do it all over again
17:11:03  <bnoordhuis>let's try it out for a few days first and see where the bottlenecks are
17:14:47  <trevnorris>bnoordhuis: ok, i'll go w/ that. but fwiw when I changed http://git.io/EvNdwA to use *reinterpret_cast<Local<String>*>(&p_) execution time improved by 20%.
17:15:08  * defunctzombiechanged nick to defunctzombie_zz
17:16:19  * bnoordhuisquit (Ping timeout: 246 seconds)
17:26:07  <trevnorris>lolz. you can see when chrome updated to 3.20 :P http://arewefastyet.com/
17:29:33  * TooTallNatejoined
17:33:58  * bnoordhuisjoined
17:36:26  <bnoordhuis>visual studio must be enterprise. it's an 8-point-fscking-5 GB install...
17:36:30  * defunctzombie_zzchanged nick to defunctzombie
17:36:53  <trevnorris>wtf. 5GB?
17:36:58  <tjfontaine>8.5
17:37:34  <trevnorris>um... what could that possibly include that takes up 8.5 GB
17:37:59  <tjfontaine>depending on which sdk's and docs you elect to install, it's actually pretty trim compared to what it could be
17:38:26  <bnoordhuis>yeah. i didn't even install the documentation, that was another GB or so
17:38:29  * defunctzombiechanged nick to defunctzombie_zz
17:42:57  * c4milojoined
17:43:08  * bajtosjoined
17:44:41  * dannycoatesjoined
17:45:12  * AvianFluquit (Read error: Connection reset by peer)
17:45:28  * AvianFlujoined
17:53:48  * st_lukejoined
17:54:40  * piscisaureus_joined
17:54:58  <piscisaureus_>hasOwnProperty = OObject.prototype.hasOwnProperty.call.bind(Object.prototype.hasOwnProperty);
17:55:10  <tjfontaine>o0
17:55:16  <piscisaureus_>hasOwnProperty({test: 42}, 'test'); // why u no work? :(
17:58:15  <piscisaureus_>it works in firefox...
17:58:36  <trevnorris>wtf would you be doing that?
17:58:43  <trevnorris>first rule of js, never touch Object.prototype
17:58:57  <piscisaureus_>I am not :)
17:58:58  <tjfontaine>he's not :P
17:59:21  <trevnorris>ah. so OObject isn't a typo?
17:59:30  <piscisaureus_>it is
17:59:34  <piscisaureus_>should have been Object
17:59:40  <piscisaureus_>I was making a function that lets me do hasOwnProperty(object, key)
17:59:41  <piscisaureus_>but safe
18:00:18  <trevnorris>piscisaureus_: well, hasOwnProperty is a global in chrome.
18:00:18  <trevnorris>and readonly.
18:00:41  <piscisaureus_>oh wait - it is actually
18:00:44  <piscisaureus_>in node too
18:00:53  <trevnorris>:)
18:00:57  <piscisaureus_>that was not in crockford's slides
18:01:02  <trevnorris>lol
18:02:28  * mikealquit (Quit: Leaving.)
18:02:41  <TooTallNate>trevnorris: isn't that just the global object's hasOwnProperty() inherited from Object.prototype?
18:02:59  * mikealjoined
18:03:06  <TooTallNate>> hasOwnProperty({ foo: 1 }, 'foo')
18:03:06  <TooTallNate>TypeError: Cannot convert null to object
18:03:21  <trevnorris>TooTallNate: yup
18:03:49  <trevnorris>piscisaureus_: so try putting a var in front of it
18:03:52  <piscisaureus_>that's rather pointless
18:04:01  <trevnorris>bubbling globals is another js evil :)
18:04:07  <piscisaureus_>but I could do var hasOwnProperty = global.hasOwnProperty.bind(global.hasOwnProperty)
18:04:10  <piscisaureus_>that works :)
18:04:19  <TooTallNate>piscisaureus_: this works for me Function.prototype.call.bind(Object.prototype.hasOwnProperty)
18:05:32  * `3rdEdenjoined
18:05:51  <TooTallNate>tjfontaine: did this lgty? https://github.com/TooTallNate/node/compare/fix;configure-without-ssl
18:06:29  <TooTallNate>tjfontaine: also, does this skip test list exist already (something from jenkins?) or is that just an idea?
18:06:54  <tjfontaine>TooTallNate: there's a way in the test runner itself to do a skip of a test
18:07:19  * dscape__joined
18:07:26  <tjfontaine>TooTallNate: but otherwise yes that commit lgtm, I haven't tested it myself of course :)
18:09:04  <TooTallNate>tjfontaine: with that second commit, require('crypto') will throw upon require. previously it wouldn't happen until you tried to use something from crypto
18:09:36  <TooTallNate>but a lot of the tests do a try/catch around the require() call, so i think it got broke at some point and i'm just fixing it
18:09:40  <trevnorris>anyone have any issues w/ https://github.com/joyent/node/pull/5802 ?
18:09:45  <tjfontaine>TooTallNate: right
18:10:05  <TooTallNate>trevnorris: no issues on my end
18:12:47  * wavdedquit (Quit: Nighty night)
18:12:58  * st_lukequit (Remote host closed the connection)
18:16:17  <trevnorris>TooTallNate: thanks
18:16:53  <tjfontaine>TooTallNate: I'm not sure what the "nice" thing to do there is, check to see if there was an issue file about someone complaining that it threw on require
18:16:58  * c4miloquit (Remote host closed the connection)
18:18:04  * wavdedjoined
18:19:04  <TooTallNate>tjfontaine: can't seem to find anything so far
18:19:29  <TooTallNate>tjfontaine: arguably i'd expect require('crypto') to throw when node isn't compiled with ssl
18:19:39  <TooTallNate>maybe the docs mention something...
18:20:02  <tjfontaine>yes, I agree it *should* throw imo
18:20:45  <TooTallNate>formatting doesn't look right here... http://nodejs.org/docs/latest/api/tls.html#tls_client_initiated_renegotiation_attack_mitigation
18:22:18  <tjfontaine>indeed that looks off
18:26:54  <TooTallNate>tjfontaine: i *think* this'll fix it https://github.com/TooTallNate/node/commit/ed5324687ef6cc8bebcbe418301c3f06346f20ae
18:27:37  <tjfontaine>heh, probably make doc will tell you :)
18:27:49  <TooTallNate>tjfontaine: good call :p
18:30:39  <TooTallNate>yup fixes it
18:30:52  <tjfontaine>excellent, lgtm for sure then :)
18:30:52  <MI6>joyent/node: Nathan Rajlich v0.10 * ed53246 : doc: fix bad markdown parsing in list - http://git.io/9JmS0w
18:31:07  <TooTallNate>YA I CAN HAZ COMMIT!!!
18:31:17  <TooTallNate>hahaha
18:32:21  <tjfontaine>TooTallNate: you must oblige the LOUDBOT_
18:32:46  <TooTallNate>we have some like 2 year old orange Crush i can drink at the office
18:32:52  <TooTallNate>they're expired
18:33:04  <tjfontaine>soda doesn't expire, you've been lied to :P
18:33:05  <TooTallNate>wtf flavor is yellow fanta anyways?
18:33:18  <tjfontaine>probably pee, if i had to guess from a LOUDBOT_ comment
18:33:34  <TooTallNate>tjfontaine: i've drank one of them... it had no carbonation
18:33:40  <TooTallNate>(the crush, not the peE)
18:33:55  <TooTallNate>(though presumably pee doesn't have carbonation either...)
18:34:00  <tjfontaine>hehe
18:34:12  <tjfontaine>this conversation can lead nowhere good
18:34:40  <tjfontaine>speaking of such things I'm about to press "send" to something on the mailing list post
18:35:01  <trevnorris>tjfontaine: haven't been following. what mailing list post?
18:35:18  <tjfontaine>a new one, that I was asked to cross post, you'll all be cc'd
18:36:26  <tjfontaine>I typo'd ben's address, I'm awesome
18:37:56  * AvianFlupart
18:37:59  * AvianFlujoined
18:43:52  <tjfontaine>TooTallNate: btw, how well does node-gyp do at finding a .gyp from another module?
18:44:01  * c4milojoined
18:44:12  <TooTallNate>tjfontaine: what do you mean?
18:44:22  <TooTallNate>tjfontaine: like dynamic linking?
18:44:48  <tjfontaine>TooTallNate: well, "yes" but more I care about it being able to find the .gyp in the proper place
18:45:29  <TooTallNate>tjfontaine: i mean node-gyp doesn't do anything for that by default... there's only the module_root_dir variable which you could construct a path from
18:45:53  <tjfontaine>hm, ok
18:46:12  <tjfontaine>I wonder if we should provide a gyp macro for it
18:46:34  <TooTallNate>"<(module_root_dir)/node_modules/some-module/binding.gyp"
18:46:43  <tjfontaine>right
18:46:51  <TooTallNate>tjfontaine: i've actually leveraged require.resolve() in the past
18:47:03  <TooTallNate>tjfontaine: https://github.com/TooTallNate/node-vorbis/blob/master/common.gypi#L7
18:47:37  <tjfontaine>TooTallNate: I'm just trying to think about the interface for consumers of this node-version-independent object model would include it in their own module
18:49:14  * mcavagequit (Remote host closed the connection)
18:49:23  <MI6>nodejs-v0.10-windows: #100 UNSTABLE windows-ia32 (7/594) windows-x64 (8/594) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/100/
18:49:53  <TooTallNate>tjfontaine: so what would the macro do?
18:49:59  <TooTallNate>basically be like require.resolve()?
18:50:08  <tjfontaine>TooTallNate: something akin probably
18:52:14  <trevnorris>anyone feel like reviewing https://github.com/joyent/node/pull/5747 :)
18:54:41  <tjfontaine>we have plenty of problems with our documentation, but I'm not sure I like documenting things twice, I know that's not a pattern you introduced
18:56:14  <trevnorris>tjfontaine: how would you recommend I document each *Sync that has different function parameters?
18:57:19  <tjfontaine>trevnorris: since the signatures can be so different I wonder if they shouldn't be named something else, in this model aren't we blatently flying in the face of the optimizer?
18:59:13  <trevnorris>tjfontaine: instanceof checks are super cheap, and since we assume if not Buffer then must be string, it's only unoptimized if a user passes something else. like a number.
19:00:10  <tjfontaine>it's not the check I argue with, it's the ability of the jit to do its work if we're being polymorphic
19:00:55  <trevnorris>any deoptimizations that write will experience because of a polymorphic call are going to account for less than 2% of the call, even for small writes.
19:01:06  <trevnorris>it's going to be a rounding error
19:01:20  <tjfontaine>a penny here, a penny there :P
19:01:29  <tjfontaine>I'm just not sure I like flying in the face of the jit like that is all
19:01:53  <tjfontaine>certainly people are already writing code like this on a certain level
19:02:40  <trevnorris>well. for completely non-polymorphic calls then you have to require all arguments. problem there is it would break backwards compatibility.
19:03:08  <trevnorris>and the jit will optimize for common paths, not just one. so if users are consistent in their calls then it'll optimize fine.
19:04:26  <trevnorris>i'll build an irhydra graph and show you. one sec.
19:10:59  <MI6>nodejs-v0.10: #272 UNSTABLE osx-ia32 (1/594) linux-ia32 (1/594) smartos-x64 (3/594) linux-x64 (1/594) http://jenkins.nodejs.org/job/nodejs-v0.10/272/
19:11:39  * stagasjoined
19:15:21  * stagas_joined
19:16:21  * stagasquit (Ping timeout: 248 seconds)
19:16:31  * stagas_changed nick to stagas
19:16:37  * stagasquit (Client Quit)
19:17:22  <trevnorris>tjfontaine: grab these two files (https://cloudup.com/cRKsDrP-QfG) and load them into http://web.irhydra.googlecode.com/git/hydra.html
19:17:45  <trevnorris>tjfontaine: on fs.write you'll see there are no deoptimizations occuring in fs.write
19:18:07  <trevnorris>umm. forgive my my stutter
19:19:28  <trevnorris>bnoordhuis: any opinion on https://github.com/joyent/node/pull/5802
19:27:32  * wavdedquit (Ping timeout: 246 seconds)
19:31:31  * wavdedjoined
19:39:03  <piscisaureus_>http://jsperf.com/hasownproperty-bound-vs-prototype <-- ouch
19:39:37  * c4miloquit (Remote host closed the connection)
19:43:10  <trevnorris>piscisaureus_: oh yeah. that's going to kick your ass.
19:43:23  <trevnorris>piscisaureus_: last things you want to use in js are .apply(), .call() and .bind()
19:43:32  <trevnorris>they require context switches that basically force a deopt
19:44:03  * st_lukejoined
19:44:05  <trevnorris>(ok, the _last_ things are with and eval, but eh)
19:44:46  * c4milojoined
19:47:33  * piscisaureus_quit (Ping timeout: 264 seconds)
19:50:48  * txdv_joined
19:51:38  * txdvquit (Read error: Connection reset by peer)
19:54:30  * bnoordhuisquit (Ping timeout: 246 seconds)
20:02:30  * st_lukequit (Remote host closed the connection)
20:06:26  <isaacs>http://atxconsulting.com/2013/06/06/rewrite-it-anyway/ <-- read this if you haven't already
20:08:37  <tjfontaine>I did post to the mailing list, and cc'd folk
20:08:51  <tjfontaine>though I typo'd ben's address because I'm awesome.
20:09:53  <isaacs>ircretary: tell piscisaureus_ it's the .bind() that's making it so terrible. qv http://jsperf.com/hasownproperty-bound-vs-prototype/2
20:09:54  <ircretary>isaacs: I'll be sure to tell piscisaureus_
20:10:58  * st_lukejoined
20:11:47  <isaacs>any objections to landing http-better? https://github.com/joyent/node/pull/5615
20:13:21  <trevnorris>looking
20:15:40  * inolenquit (Quit: Leaving.)
20:17:53  * inolenjoined
20:18:36  <mordy_>hrm, the UV_RUN_ONCE, etc. were introduced in 0.10?
20:19:09  <trevnorris>isaacs: quick reviews lgtm
20:19:27  <trevnorris>isaacs: oh. though is function Agent exposed to the user?
20:20:33  <mordy_>hrm; seems UV_VERSION macros were removed
20:20:41  <mordy_>how would i now check at compile time what version i'm uisng?
20:20:45  <TooTallNate>isaacs: does that change the Agent API at all?
20:21:05  <isaacs>trevnorris: yes, Agent is exposed to the user
20:21:15  <isaacs>TooTallNate: it doesn't change significantly.
20:21:20  <trevnorris>isaacs: coolio. no issues here
20:21:25  <isaacs>TooTallNate: ie, existing Agent extensions should continue to work
20:21:34  <isaacs>TooTallNate: but, *better* Agent extensions are now possible.
20:22:02  <TooTallNate>isaacs: can you give me a summary? I'm actually currently implementing a variety of Agent variations
20:22:13  * piscisaureus_joined
20:22:16  <isaacs>TooTallNate: nice :)
20:22:18  <TooTallNate>mainly do connect to HTTP proxies transparently
20:22:25  <TooTallNate>s/do/to
20:22:31  <isaacs>TooTallNate: so, there's now an option to do KeepAlive built-in
20:22:50  <isaacs>TooTallNate: also, instead of manually setting the "name", the Agent class can implement a getName(options) method
20:23:01  <isaacs>TooTallNate: which means that we can actually reuse sockets and do keepalive for HTTPS
20:23:38  <isaacs>TooTallNate: as a simple API extension, there's also Agent.get()/request() methods
20:23:54  <isaacs>TooTallNate: since that just kind of feels like a thing that an Agetn should be able to do
20:24:41  <isaacs>TooTallNate: and i moved some code around to use OOP instead of sniffing (this instanceof ClientRequest) etc.
20:25:09  <tjfontaine>the moving out of _finish is something I should have done in the file split
20:25:22  <tjfontaine>instead of my order of require hack
20:25:57  <mordy_>any plans to put support for compile-time version checks back?
20:25:58  <isaacs>tjfontaine: no worries, you were trying to keep it atomic.
20:26:04  <trevnorris>tjfontaine: ok. so this rewrite-it-anyway mail thread. is it basically about creating a node cc api that is v8 agnostic?
20:26:06  <isaacs>tjfontaine: that's a Good Thing :)
20:26:28  <isaacs>trevnorris: it's about making this the *last* time people have to rewrite their node addons
20:26:32  <isaacs>ideally
20:27:53  * hzquit
20:28:00  <trevnorris>on the js side, cool. don't see that as an issue really. but as for the native side. don't immediately see how that could be possible w/o creating a mother of an abstraction.
20:28:59  <isaacs>trevnorris, tjfontaine: Yeah, I mean, there's a LOT of stuff in the V8 api
20:29:17  <isaacs>what if someone is doing funky stuff with contexts etc? how much of the API are we going to wrap?
20:30:30  <trevnorris>only a subset can be "blessed". meaning users can still throw in some libuv into their native modules, but any api changes there aren't of concern to us.
20:30:35  <trevnorris>etc
20:31:53  <trevnorris>and I'm not sure how we'd even abstract away from v8. meaning, how would they HandleScope, return values, etc? when they have to deal directly w/ native v8 stuff.
20:32:23  <trevnorris>tjfontaine: and you say "Primitives" and "Buffers" in the same paragraph. not sure you can consider buffers as a primitive.
20:38:55  <tjfontaine>isaacs: so right, the problem is that there are things people want to do that are very specific to v8, weak handles blah blah blah, they are a very specialized group who should be willing to accept pain then
20:39:22  <tjfontaine>isaacs: otoh we have people like node serialport and various database adapters that are doing very straight forward things, that being unfairly punished by our usage of node
20:40:07  <tjfontaine>trevnorris: right, for our usage in node Buffer is indeed a primitive though, not a lot of ->Get ->Set happening through that interface
20:40:15  * dominictarrjoined
20:40:27  <tjfontaine>trevnorris: it is an integral type passed among interfaces
20:41:23  <trevnorris>the amount of api we'd need to replicate to be useful is still pretty massive.
20:41:35  <tjfontaine>not sure what you mean, it's a few api methods
20:41:59  <tjfontaine>create obj, set data, get data, set cb, free
20:42:02  <tjfontaine>make weak
20:42:29  <tjfontaine>make weak is an implicit I guess
20:42:44  <trevnorris>that's already abstracted away, at least the optional callback is
20:42:55  <tjfontaine>yes, this is an abstraction beyond that
20:43:25  <trevnorris>beyond the abstracted MakeWeak callback already in place?
20:44:11  <tjfontaine>I mean, interacting with a buffer is an abstraction beyond what we have today, which will let you reimplement the internals as you need to to tweak out every last bit of speed from it :)
20:46:04  <trevnorris>tjfontaine: my only worry is that it will quickly behemoth as users say x or y should be supported.
20:46:16  <trevnorris>we'll need a very explicit set of use cases we'd expect.
20:46:31  <tjfontaine>from the JS portion, my plan is to make it look like JSAPI, with some additions
20:46:53  <tjfontaine>which in general meets 90% of all addon use cases
20:47:19  <trevnorris>...
20:47:45  * Benvie_joined
20:48:17  <tjfontaine>I'm not sure where things are getting lost in translation for you
20:49:01  <trevnorris>i'm understanding the words. it's my anal retentive nature preemptively assuming all the edge cases that will bite us in the ass.
20:49:43  <tjfontaine>the good news is that it's easy to add to the api to cover those, the straight forward interactions for it are pretty much covered by how jsapi works today
20:50:01  <tjfontaine>it's really not that different from how the v8 api works
20:50:19  * Benviequit (Ping timeout: 276 seconds)
20:50:26  <tjfontaine>also, the jsapi exports an interface that is quite familiar to binding authors for other languges, like python
20:51:28  <trevnorris>ok. but none of this api would be used directly in core. it's just for end users, right?
20:51:40  <tjfontaine>at the moment yes, that's the idea
20:52:12  <trevnorris>cool. that makes my brain hurt a lot less :)
20:52:25  <trevnorris>isaacs: you going to land that patch? have one I want to land after that
20:52:30  <tjfontaine>the logical extension of the conversation is if we can do that for modules why couldn't we do that for core, and one day base ourselves on SM -- that is a long way away
20:52:50  <trevnorris>oy. yeah
20:53:23  <tjfontaine>but technically speaking there's no reason it couldn't be done, it would certainly require MoreWork
20:53:26  <trevnorris>i work at mozilla and all, but how the repo is all contained in the monsterous mozilla-central repo is a PITA
20:53:28  <isaacs>tjfontaine: even if we don't ever ship on other JS platforms, it's not a bad spot to own an abstraction, imo
20:53:48  <tjfontaine>isaacs: indeed, it certainly could have uses for other people
20:53:55  <isaacs>i've built spidermonkey. granted, it was a long time ago. but there's a reason why both I and Ryan and everyone else chose V8 to embed everywhere.
20:54:10  <isaacs>and i mean, I really do LIKE v8
20:54:25  <tjfontaine>for quality of VM, v8 kicks ass
20:54:27  <isaacs>but it's annoying to be bound to their API decisions, which don't always serve our needs.
20:54:40  <tjfontaine>for being a good citizen for consuming as an embeder, they're less than ideal
20:54:44  <isaacs>especially, since that binding happens in so many places.
20:54:56  <tjfontaine>right.
20:55:04  <isaacs>tjfontaine: get bnoordhuis's thoughts on this plan.
20:55:32  <tjfontaine>we had a breif conversation about it, he's mostly skeptical of the backend-neutral plan
20:55:41  <isaacs>tjfontaine: i think, once he's done with the 3.20 revolution, he'll be easily convinced that we should avoid ever having to do that again :)
20:55:45  <tjfontaine>hehe
20:55:51  * st_lukequit (Remote host closed the connection)
20:56:24  <tjfontaine>well then achieving that will require doing the core rewrite to the abstraction api, which is a good idea long term, but probably not something we'll get done before v1.0
20:57:45  <tjfontaine>maybe they can be done hand in hand, it woudl certainly help expose weak points
21:01:21  * bnoordhuisjoined
21:01:34  <tjfontaine>speak of the devil
21:02:08  <trevnorris>isaacs: as i've never written c before, this is purely academic so be kind :) here's a simple-ish api I was thinking for node.c https://gist.github.com/trevnorris/5952453
21:06:02  * bnoordhuisquit (Ping timeout: 256 seconds)
21:14:01  * mcavagejoined
21:17:14  * pachetquit (Quit: leaving)
21:30:35  * defunctzombie_zzchanged nick to defunctzombie
21:34:25  * st_lukejoined
21:40:23  * c4miloquit (Remote host closed the connection)
21:41:07  * loladiroquit (Quit: loladiro)
21:45:51  * leonvvjoined
21:46:18  <mmalecki>trevnorris: what's socket.pipe(socket)?
21:47:30  <trevnorris>mmalecki: oh, you mean in my node.c thing? was just modeling after the js api. basically a function that acts like pipe in js.
21:48:08  * dominictarrquit (Quit: dominictarr)
21:48:09  <mmalecki>that'd be better as node_socket_pipe(socket, dest)
21:48:24  <trevnorris>heh, thanks :)
21:49:26  <trevnorris>i'm more an after api tweaker, so both writing an api from scratch and in a language i'm not super familiar w/ is going to be interesting :P
21:49:50  <trevnorris>mmalecki: oh, sure you saw but the no-slaballocator patch landed. so that shouldn't be an issue anymore.
21:50:46  * rendarquit
21:52:33  * bajtosquit (Quit: bajtos)
22:01:36  * mralephjoined
22:03:06  * mraleph1quit (Ping timeout: 264 seconds)
22:06:46  * wavdedquit (Ping timeout: 268 seconds)
22:10:19  * amartensquit (Ping timeout: 246 seconds)
22:18:04  * amartensjoined
22:18:15  * qardquit (Ping timeout: 256 seconds)
22:20:11  * qardjoined
22:30:43  <trevnorris>so, the *_wrap really wasn't made for public consumption was it?
22:31:01  <tjfontaine>no, not really
22:31:09  <trevnorris>bugger.
22:31:19  <tjfontaine>certainly people using it out there
22:31:47  <trevnorris>but a lot of the fields are private, so when you override StreamWrapCallbacks you don't get access to them.
22:31:59  <tjfontaine>right
22:32:37  <trevnorris>hm. trying to make a module of the replacement http server stuff. just stuff to work around.
22:33:03  <tjfontaine>a userland module, something external to node core you mean?
22:33:20  <trevnorris>yeah
22:33:45  <trevnorris>it's going to be complicated so want to keep it as seperate from core as possible while working on it.
22:33:46  * c4milojoined
22:33:49  <tjfontaine>well you can just really bring all those pieces parts into your src tree, since the key abstraction there is HandleWrap
22:35:41  <trevnorris>true.
22:35:58  <trevnorris>been wanting to try this out for a while now. if I can't get it working i'll fall back to that.
22:36:15  <tjfontaine>bring tcp_wrap and stream_wrap in to your own namespace, make it inherit node::HandleWrap instead your own, then when you pass from js into your code, make sure it's a node::HandleWrap instance you're getting (or just assume) then you should have enough to create the other pieces, it's a hack but that's the onyl way to make sure you get the interface you want
22:36:45  <trevnorris>hm. good points. thanks.
22:37:22  * dominictarrjoined
22:37:27  <tjfontaine>tyring to use *_wraps external of node core is something I'm definitely planning on breaking, not that we won't provide some sort of interface for some of those pieces, HandleWrap in concept is a very helpful piece
22:37:57  <trevnorris>i mostly care about StreamWrap
22:38:17  <tjfontaine>most everyone does, being able for a module to define a "streams compatible handle" is what we need in the new api
22:38:23  <trevnorris>the StreamWrapCallbacks class is freakishly useful.
22:39:01  <trevnorris>cool
22:39:22  * amartens1joined
22:39:27  * amartensquit (Ping timeout: 268 seconds)
22:39:31  * julianduquejoined
22:41:51  <trevnorris>tjfontaine: i feel like node's going to go though more api changes between v0.10 to v1 than from v0.1 to v0.10
22:42:05  <trevnorris>at least internally
22:42:37  <tjfontaine>which is why we need to have an answer for module authors sooner than later :)
22:42:53  <trevnorris>heh
22:43:15  <trevnorris>well. let's get a doc going w/ our new nodejs.org google accounts and get hacking on it!
22:43:32  <tjfontaine>we probably will after the call tomorrow
22:43:35  <trevnorris>isaacs: i'm going to land the dispose fix at 4. doesn't touch any of your http changes.
22:44:14  <trevnorris>honestly I've really been itching to do some node.c thing like isaacs has mentioned in the past.
22:45:52  <trevnorris>tjfontaine: what's the build stuff you've moved to recently in libuv?
22:46:04  <tjfontaine>trevnorris: autotools
22:46:24  <tjfontaine>the worst of all build systems for unicies, except for all the others
22:46:31  <trevnorris>heh
22:46:33  <trevnorris>awesome.
22:46:50  <trevnorris>well, good thing this is purely academic then :)
22:46:59  <trevnorris>is that what the configure.ac is for?
22:47:00  <tjfontaine>just use Makefile if it's a small project
22:47:09  <tjfontaine>so, right there are a few pieces here
22:47:19  <tjfontaine>there's autoconf and automake
22:47:32  <tjfontaine>each with varying levels of verbosity
22:48:18  <tjfontaine>configure.ac is an autoconf thing, it generally creates the configure script, in our case it ties into automake, which goes around and turns Makefile.am's into Makefile.in's
22:48:33  <tjfontaine>then once someone runs ./configure it turns those Makefile.in's into Makefile's
22:49:05  <trevnorris>wtf. and this is why I hate abstraction.
22:49:09  <tjfontaine>configure.ac is a set of "checks" to determine and define the environment you're planning on building
22:49:16  <tjfontaine>this is so much easier than it used to be :P
22:49:34  <trevnorris>lol
22:49:35  <tjfontaine>generally what you see in there is a bunch of m4
22:49:58  <trevnorris>so what's the advantage of using automake whatever to, say, gyp?
22:50:04  <trevnorris>i assume they do similar things
22:50:45  <tjfontaine>we're getting a lot of requests for features for the libuv makefile's we were shipping, as more and more people adopt it
22:51:09  <tjfontaine>for people who don't use gyp, consuming libuv as a dependency is easiest through a known interface like autotools
22:51:17  <trevnorris>ah, ok
22:51:58  * amartens1quit (Read error: No route to host)
22:52:12  * amartensjoined
22:52:24  <tjfontaine>and actually libuv is just starting to be big enough and have buildtime features that it was time for it to move to a more complex environment than our homegrown makefiles
22:53:59  <tjfontaine>indutny: btw this is what I'd like you to review https://github.com/tjfontaine/node/commit/e1f5ced9f3ebbcaa7c4f249888a0a5a4c7111791
22:54:24  <tjfontaine>even though I think the bigger answer there is to *not* construct an Error on the cc side, but whatever
22:54:39  <tjfontaine>my patch from last night didn't cover all the bases :)
22:56:35  * julianduquequit (Quit: leaving)
22:57:45  * brsonquit (Ping timeout: 263 seconds)
22:59:57  * loladirojoined
23:01:33  <trevnorris>tjfontaine: heh, well if there was ever a time we needed a addon test suit it would be w/ all these changes. :)
23:02:10  <tjfontaine>trevnorris: but of course
23:03:07  <trevnorris>indutny: know you're probably asleep, but awesome job w/ the StreamWrapCallbacks class.
23:04:19  * brsonjoined
23:04:50  <indutny>tjfontaine: LGTM, regression test?
23:04:59  <indutny>trevnorris: thanks
23:05:47  <tjfontaine>indutny: technically already there, because test-tls-client-verify was failing :)
23:07:57  <MI6>joyent/node: Trevor Norris master * ead8e26 : smalloc: call callback if set on AllocDispose (+1 more commits) - http://git.io/73n9ag
23:07:59  <indutny>фр
23:08:00  <indutny>щл
23:08:00  <indutny>Ж)
23:08:02  <indutny>ah
23:08:02  <indutny>ok
23:08:03  <indutny>:)
23:08:22  <tjfontaine>have you been drinking? :)
23:19:39  * c4miloquit (Remote host closed the connection)
23:22:30  * leonvvquit (Remote host closed the connection)
23:28:00  <trevnorris>tjfontaine: just for you :) https://github.com/joyent/node/pull/5817
23:29:09  <tjfontaine>github and comcast at my house are fighting again
23:29:21  <tjfontaine>hah
23:31:27  <tjfontaine>commented :)
23:31:51  <trevnorris>hehe. :)
23:32:29  <tjfontaine>if the most conversation that happens on the API thread is over mikeal's comment I'll know that node has made it as a community
23:33:27  * trevnorrisgoes off to start a flame war!
23:35:15  <MI6>nodejs-master: #294 UNSTABLE smartos-x64 (9/608) linux-x64 (1/608) osx-ia32 (2/608) smartos-ia32 (2/608) linux-ia32 (1/608) osx-x64 (1/608) http://jenkins.nodejs.org/job/nodejs-master/294/
23:35:53  <trevnorris>tjfontaine: if that's the decision it seems more like we'll need to morph v8 to match JSAPI. not opposed or anything, but just making a line.
23:36:30  <tjfontaine>if which is what decision
23:36:56  <trevnorris>that we use JSAPI for our abstracted API
23:37:22  <tjfontaine>it's not really a stretch to make most of the common stuff for v8 work in terms of JSAPI, obviously it would be bad to use the naming as our abi would be different
23:37:34  <tjfontaine>but the comment I was referring to was the "fuck em" comment :P
23:37:44  <trevnorris>ah. hah.
23:38:39  <tjfontaine>there are actually parts of the v8 api that are converging on the JSAPI already
23:38:50  <MI6>nodejs-master-windows: #101 FAILURE http://jenkins.nodejs.org/job/nodejs-master-windows/101/
23:39:02  <tjfontaine>for instance how return values are handled
23:39:14  <TooTallNate>damn, there's no way for http.Agent to differentiate between http and https :(
23:39:19  <TooTallNate>that would have been cool
23:39:45  <tjfontaine>it can't check if socket.ssl or socket.pair, whatever it is?
23:40:00  * defunctzombiechanged nick to defunctzombie_zz
23:40:03  <TooTallNate>tjfontaine: http.Agent is the one who creates the socket, so that info isn't present yet
23:40:27  <tjfontaine>oh you wanted to make http.Agent itself work with https sockets?
23:41:01  * timoxleyjoined
23:41:20  <trevnorris>tjfontaine: know wtf happened to that windows build?
23:41:24  <trevnorris>i'm looking at jenkins now
23:41:24  <TooTallNate>tjfontaine: ya
23:41:51  <tjfontaine>trevnorris: that's the UVException thing, missing symbols that ben is going to fix maybe :)
23:41:58  <trevnorris>heh, ok
23:41:59  <tjfontaine>TooTallNate: ya, that seems like a bad idea
23:42:09  <tjfontaine>TooTallNate: why would you want it to do that?
23:42:36  <TooTallNate>tjfontaine: i'm creating an Agent that connects to an HTTP proxy, you have to do different things depending on if it's HTTP or HTTPS
23:42:48  <TooTallNate>but i'll just create 2 different classes
23:42:51  <tjfontaine>oh handling CONNECT
23:42:53  <TooTallNate>it'll be cleaner that way
23:42:54  <TooTallNate>tjfontaine: ya
23:42:59  <tjfontaine>fun.
23:43:05  <TooTallNate>... not :p
23:43:15  <tjfontaine>indeed, slathered with sarcasm :)
23:43:21  <TooTallNate>i kno i know :D
23:43:28  <tjfontaine>hehe
23:43:46  * piscisaureus_quit (Ping timeout: 240 seconds)
23:43:59  <TooTallNate>tjfontaine: WIP so far... (doesn't really work yet) https://gist.github.com/TooTallNate/5952254
23:44:56  * groundwaterquit (Quit: groundwater)
23:44:59  * loladiroquit (Quit: loladiro)
23:45:07  <tjfontaine>does this only need to work as far back as v0.8? and are you planning on using ref/unref?
23:45:08  * bradleymeckjoined
23:46:11  <tjfontaine>TooTallNate: I'm liking the usage interface for it
23:46:33  <TooTallNate>tjfontaine: ya i need to support v0.8 still
23:46:42  <TooTallNate>no, i wasn't planning on needing ref/unref at all
23:46:55  <trevnorris>TooTallNate: as a heavy module author how does this one look to you? https://github.com/joyent/node/pull/5817
23:48:27  <TooTallNate>trevnorris: i mean... ideally i wouldn't have to think about .dispose()
23:48:41  <TooTallNate>nor would i really want to... but I'm not so performance-critical as node-core is
23:48:51  <trevnorris>TooTallNate: well, you still don't have too. guess I didn't make that clear.
23:49:00  <trevnorris>it's like an optional free()
23:49:21  <TooTallNate>trevnorris: personally i think it should be an internal core API, and we use it where we can to make things faster, but only internally
23:49:57  <TooTallNate>trevnorris: ya i get that it's optional, it's just that even with it there, i probably wouldn't need to use it
23:50:11  <TooTallNate>so it's minimally useful, but also potentially dangerous
23:50:19  <TooTallNate>externally at least, IMO
23:51:19  <trevnorris>wtf?! somehow a previous commit was squashed into this branch that should already be in master.
23:51:29  * piscisaureus_joined
23:51:29  <trevnorris>damnit
23:52:21  * AvianFluquit (Remote host closed the connection)
23:52:47  * kazuponjoined
23:55:43  <TooTallNate>trevnorris: additionally, it would be nice if Agent#createConnection() as async :\
23:55:59  <trevnorris>tjfontaine: ^
23:56:04  <TooTallNate>oh ya
23:56:05  <tjfontaine>hehe
23:56:07  <TooTallNate>sorry trev
23:56:10  <TooTallNate>always happens :p
23:56:37  <trevnorris>can I get a quick lgtm https://github.com/trevnorris/node/compare/finish-no-slab
23:57:00  <TooTallNate>trevnorris: lgtm
23:57:03  <trevnorris>thanks
23:57:43  <MI6>joyent/node: Trevor Norris master * 22668db : benchmark: update callbacks only receive data - http://git.io/gbCEOw