00:04:34  * jxsonjoined
00:12:48  * jxsonquit (Ping timeout: 240 seconds)
00:19:15  * jxsonjoined
00:26:20  * mikealquit (Quit: Leaving.)
00:27:08  * mikealjoined
00:35:28  * tmcwjoined
00:36:32  <mbalho>justicefries: there are a couple of those yes, do an npm search for 'level geo' and they should come up
00:37:35  * eugenewarequit (Remote host closed the connection)
00:39:55  * tmcwquit (Ping timeout: 248 seconds)
00:40:49  * kenansulaymanquit (Quit: ≈ and thus my mac took a subtle yet profound nap ≈)
00:40:49  <justicefries>mbalho: ah, should've mentioned, found two on the levelup wiki as well
00:49:35  <mbalho>level-geo, level-geospatial, level-nearby-stream, level-places, terraformer-geostore
00:49:39  <mbalho>justicefries: o/
00:49:47  <justicefries>nice even more.
00:49:49  <justicefries>thanks.
00:58:19  * jxsonquit (Remote host closed the connection)
01:17:45  * mikealquit (Quit: Leaving.)
01:32:31  * ryanjquit (Ping timeout: 245 seconds)
01:52:54  * ralphtheninjaquit (Ping timeout: 264 seconds)
01:54:28  * eugenewarejoined
01:55:54  * eugenewarequit (Remote host closed the connection)
01:58:48  * eugenewarejoined
02:09:27  * eugenewa_joined
02:11:20  * eugenewarequit (Read error: Connection reset by peer)
02:11:55  * eugenewarejoined
02:14:31  * eugenewa_quit (Ping timeout: 246 seconds)
02:14:40  * joshwnjjoined
02:42:25  * eugenewarequit (Remote host closed the connection)
03:12:49  * eugenewarejoined
03:13:31  * dguttmanquit (Quit: dguttman)
03:17:02  * eugenewarequit (Ping timeout: 240 seconds)
03:20:44  * ryanjjoined
03:23:41  * mikealjoined
03:23:51  * julianduquequit (Quit: leaving)
03:24:23  * dguttmanjoined
03:27:55  * chapelquit (Ping timeout: 245 seconds)
03:28:48  * joshwnjquit (Ping timeout: 240 seconds)
03:42:31  * ryanjquit (Ping timeout: 245 seconds)
03:43:44  * ryanjjoined
03:48:39  * ryanjquit (Ping timeout: 252 seconds)
03:53:26  * fallsemojoined
03:54:06  * eugenewarejoined
03:56:41  * dguttmanquit (Quit: dguttman)
04:06:34  * fallsemoquit (Quit: Leaving.)
04:24:27  * fallsemojoined
04:30:31  * fallsemoquit (Quit: Leaving.)
04:50:31  * timoxleyjoined
06:13:08  * ryanjjoined
06:20:38  * eugenewarequit (Remote host closed the connection)
06:55:39  * thlorenzjoined
06:56:21  * thlorenzquit (Remote host closed the connection)
06:56:53  * thlorenzjoined
07:01:05  * thlorenzquit (Ping timeout: 240 seconds)
08:18:15  * thlorenzjoined
08:25:48  * rudquit (Ping timeout: 240 seconds)
08:26:18  * thlorenzquit (Remote host closed the connection)
08:27:54  * rudjoined
08:39:03  * jcrugzzquit (Ping timeout: 252 seconds)
08:46:53  * thlorenzjoined
08:49:51  * thlorenzquit (Remote host closed the connection)
09:13:16  * thlorenzjoined
09:33:57  * thlorenzquit (Remote host closed the connection)
09:38:32  * kenansulaymanjoined
09:43:43  * thlorenzjoined
09:54:39  * thlorenzquit (Remote host closed the connection)
09:55:13  * thlorenzjoined
09:59:36  * thlorenzquit (Ping timeout: 256 seconds)
10:00:30  * ralphtheninjajoined
10:23:40  * kenansulaymanquit (Quit: ≈ and thus my mac took a subtle yet profound nap ≈)
10:43:20  * thlorenz_joined
10:57:19  * thlorenz_quit (Remote host closed the connection)
11:43:35  * dguttmanjoined
11:45:50  * dguttmanquit (Client Quit)
11:57:55  * Acconutjoined
11:58:29  * Acconutquit (Client Quit)
12:31:55  * thlorenz_joined
12:45:23  * eugenewarejoined
12:45:26  * eugenewarequit (Remote host closed the connection)
12:45:53  * eugenewarejoined
12:50:14  * eugenewarequit (Ping timeout: 240 seconds)
12:54:08  * Acconutjoined
12:55:07  * tmcwjoined
12:59:03  * thlorenz_quit (Remote host closed the connection)
13:00:18  * Acconutquit (Quit: Acconut)
13:14:16  * Acconutjoined
13:16:25  * eugenewarejoined
13:23:19  * brianloveswords_changed nick to brianloveswords
13:34:19  * fallsemojoined
13:38:53  * Acconutquit (Quit: Acconut)
13:46:18  * thlorenzjoined
13:51:25  * fallsemoquit (Quit: Leaving.)
13:52:53  * frankblizzardjoined
14:03:34  * thlorenzquit (Remote host closed the connection)
14:04:06  * thlorenzjoined
14:06:31  * thlorenzquit (Read error: Connection reset by peer)
14:07:03  * thlorenzjoined
14:12:18  * jjmalinajoined
14:22:29  * mikealquit (Quit: Leaving.)
14:31:00  * fallsemojoined
14:35:42  * thlorenzquit (Remote host closed the connection)
14:52:45  * thlorenzjoined
14:57:21  * fallsemoquit (Quit: Leaving.)
15:02:30  * thlorenzquit (Remote host closed the connection)
15:10:43  * eugenewarequit (Ping timeout: 256 seconds)
15:10:43  * fallsemojoined
15:11:42  * jerrysvjoined
15:14:10  * thlorenzjoined
15:18:14  * thlorenzquit (Ping timeout: 240 seconds)
15:25:35  * mikealjoined
15:27:53  * thlorenzjoined
15:28:05  <juliangruber>started working on a super fast validation library that treats string ranges well: https://github.com/juliangruber/validly
15:35:25  * thlorenzquit (Remote host closed the connection)
15:35:33  * eugenewarejoined
15:37:18  * mikealquit (Quit: Leaving.)
15:41:50  * thlorenzjoined
15:43:18  * thlorenzquit (Remote host closed the connection)
15:43:51  * thlorenzjoined
15:47:53  * frankblizzardquit (Remote host closed the connection)
15:48:03  * thlorenzquit (Ping timeout: 252 seconds)
15:48:49  * fallsemoquit (Quit: Leaving.)
15:49:33  * ednapiranhajoined
15:52:04  * fallsemojoined
16:03:16  * thlorenzjoined
16:06:59  * thlorenzquit (Read error: Connection reset by peer)
16:07:12  * thlorenzjoined
16:14:59  * frankblizzardjoined
16:33:50  * mikealjoined
16:38:10  * kenansulaymanjoined
16:41:17  * thlorenzquit (Remote host closed the connection)
16:41:49  * thlorenzjoined
16:44:50  * thlorenzquit (Read error: Connection reset by peer)
16:45:03  * thlorenzjoined
16:50:45  * jxsonjoined
16:53:30  * dguttmanjoined
17:02:24  * timoxleyquit (Remote host closed the connection)
17:05:42  * mikealquit (Quit: Leaving.)
17:07:17  * jxsonquit (Remote host closed the connection)
17:08:23  * ryan_ramagejoined
17:15:52  * thlorenzquit (Remote host closed the connection)
17:16:25  * thlorenzjoined
17:21:07  * thlorenzquit (Ping timeout: 260 seconds)
17:36:22  * mikealjoined
17:37:50  * dguttmanquit (Quit: dguttman)
17:43:20  * dguttmanjoined
17:44:37  * jxsonjoined
17:44:43  * jxsonquit (Remote host closed the connection)
17:45:10  * jxsonjoined
17:45:12  * mikealquit (Ping timeout: 252 seconds)
17:47:29  * mikealjoined
17:49:15  * chapeljoined
17:52:46  * vincentmacjoined
17:54:28  * vincentmacquit (Client Quit)
17:56:02  * vincentmacjoined
18:04:29  * soldairjoined
18:29:21  * Acconutjoined
18:29:52  * frankblizzardquit (Remote host closed the connection)
18:30:56  * Acconutquit (Client Quit)
19:03:44  * esundahljoined
19:10:52  * dguttmanquit (Quit: dguttman)
19:12:51  * jxsonquit (Remote host closed the connection)
19:13:27  * jxsonjoined
19:22:41  * nmartin867joined
19:25:57  * jcrugzzjoined
19:27:31  <nmartin867>I am performing a (chained) batch operation using Node and leveldown in which I am, purposley, performing a put() operation where the value is === null. In my write() callback function I am checking for an error. i.e. write(function(err){if(err){console.log('Boom')}}) The write operation is throwing the error but my callback is never called. Can someone tell me why? Happy to paste example code somewhere.
19:30:39  <mbalho>nmartin867: hmm weird sounds like you're doing it correctly
19:31:18  <kenansulayman>nmartin867 Example code is always happy code
19:32:12  <nmartin867>Can I just paste it here?
19:32:21  <kenansulayman>uhm
19:32:21  <nmartin867>Sure it's something silly
19:32:23  <kenansulayman>pastebin?
19:32:27  <brycebaril>nmartin867: no, don't do that, use gist or pastebin
19:32:35  <nmartin867>K.. sounds good
19:32:43  <nmartin867>Thanks… btw
19:35:15  * mikealquit (Quit: Leaving.)
19:35:28  <nmartin867>http://pastebin.com/A5wHY2Hm
19:36:02  <nmartin867>I'm running node -v 0.10.10
19:36:20  <kenansulayman>does it throw w/o .write?
19:37:32  <nmartin867>yes a write error..
19:37:34  <nmartin867>throw new WriteError(e)
19:37:34  <nmartin867> ^
19:37:35  <nmartin867>WriteError: value cannot be `null` or `undefined`
19:38:07  <kenansulayman>;)
19:38:18  <nmartin867>But it doesn't appear to have a problem writing to the db if I correct the put()
19:38:25  <nmartin867>So I know the db path is correct
19:38:45  <brycebaril>WriteError: Cannot call method 'put' of undefined
19:38:45  <brycebaril>That what you get?
19:38:51  * julianduquejoined
19:39:15  <nmartin867>yes I understand.. but Im curious why write() callback is not called with the err
19:39:41  <mbalho>yea it says in the levelup docs that it should
19:39:44  <nmartin867>The docs state that if an optional callback is provided it should be called with an error arg
19:40:08  <nmartin867>Did I stumble on a bug? I thought I was just overlooking something
19:40:23  <brycebaril>My hunch is bug, looking into it
19:40:49  <nmartin867>Im happy to look the source as well.. perhaps provide a pull req
19:41:04  <nmartin867>I just wanted to make sure I wasn't going loco
19:44:02  <brycebaril> try {
19:44:02  <brycebaril> this.batch.put(key, value)
19:44:02  <brycebaril> } catch (e) {
19:44:02  <brycebaril> throw new WriteError(e)
19:44:02  <brycebaril> }
19:44:19  <brycebaril>It's definitely just throwing, not holding the error until the .write()
19:44:25  <nmartin867>Yep
19:44:29  <nmartin867>Im seeing that too
19:44:49  <nmartin867>Ok.. ill see if I a pull request is needed/wanted
19:44:55  <nmartin867>or if the docs are wrong?
19:45:10  <nmartin867>Thanks a lot for your time
19:45:10  <brycebaril>Yep, definitely worth filing an issue
19:56:46  * jcrugzzquit (Ping timeout: 246 seconds)
20:08:20  * esundahlquit (Remote host closed the connection)
20:08:58  <kenansulayman>uhm rvagg
20:10:45  <kenansulayman>Just tried uberlevel on our app and it yielded: Error: MDB_BAD_RSLOT: Invalid reuse of reader locktable slot
20:11:04  <kenansulayman>#crashboombang
20:14:49  <kenansulayman>Seems to happen on too many mixed databases queries
20:15:14  <kenansulayman>12 databases, crashes with about 45 mixed queries
20:16:54  <soldair>kenansulayman: i tend to just use level-sublevel rather than opening many dbs. if i need more cpu i run them in in different processes and query them with multilevel. too bad about the crash though.
20:17:11  <kenansulayman>soldair Uhm??
20:17:17  <kenansulayman>Talking about uberlevel here
20:17:35  <kenansulayman>levelup + lmdb(down)
20:18:01  <soldair>kenansulayman: oh yes. sorry
20:18:13  <kenansulayman>hah np ;)
20:18:33  <mbalho>kenansulayman: you can still use sublevel with uberlevel
20:18:48  <soldair>kenansulayman: yeah the use pattern would be the same
20:19:08  <kenansulayman>mbalho ya well. switched back to hyperlevel now, but uberlevel should work. It's not about deployment here. it's about general function
20:19:09  <soldair>as a lib dev though it has to work and be awesome
20:19:19  <soldair>=)
20:20:30  <kenansulayman>brb in case rvagg shows up
20:23:42  * Acconutjoined
20:25:45  <mbalho>its 9:30 in portugal, so its possible
20:32:30  * Acconutquit (Quit: Acconut)
20:38:44  * esundahljoined
20:42:25  * Acconutjoined
20:42:45  * Acconutquit (Client Quit)
20:47:12  * dguttmanjoined
20:47:30  * esundahlquit (Ping timeout: 264 seconds)
20:52:52  * esundahljoined
20:54:37  * jxsonquit (Remote host closed the connection)
20:55:05  * jxsonjoined
20:59:47  * jxsonquit (Ping timeout: 256 seconds)
21:02:39  * dguttmanquit (Quit: dguttman)
21:03:06  * jerrysvquit (Ping timeout: 264 seconds)
21:05:53  * nnnnathannjoined
21:10:34  * jcrugzzjoined
21:19:04  * Acconutjoined
21:19:07  * Acconutquit (Client Quit)
21:25:35  * jxsonjoined
21:33:50  * jxsonquit (Ping timeout: 240 seconds)
21:44:08  * wolfeidauquit (Remote host closed the connection)
21:58:12  * vincentmacquit (Ping timeout: 252 seconds)
22:02:53  <kenansulayman>mbalho pm or am?
22:06:45  * jxsonjoined
22:07:46  * mikealjoined
22:10:52  * nlacasse_part
22:20:38  * jcrugzzquit (Ping timeout: 240 seconds)
22:22:20  * dguttmanjoined
22:22:29  <mbalho>brycebaril: check this out, https://github.com/maxogden/level-csv-bench
22:22:45  <mbalho>brycebaril: raw.js and multibuffer.js are the two actual benchmarks, they share the same setup code
22:24:15  <mbalho>brycebaril: so i think its slow because this particular csv has 28 columns, so for each row that i encode multibuffer is doing bops.join 28 times
22:24:23  <brycebaril>Hmm
22:24:46  <mbalho>brycebaril: though i think https://github.com/brycebaril/multibuffer/blob/master/index.js#L25 would be faster if you used a for loop
22:25:38  <mbalho>brycebaril: but in my case i doubt i can get any sort of framing thing to be as fast as I want it to be... i think what i'll have to do is just store the raw csv rows and decode them on read...
22:26:36  <brycebaril>I'll poke at these benchmarks in a bit, I'm sure it can be a lot faster, though you're right, it will never be as fast as not doing it :)
22:27:27  <mbalho>brycebaril: cool. 1m vs 8m is a wide gap, i'm sure we can make some headway
22:27:44  <brycebaril>mbalho: this sort of investigation makes me wish I had an environ with flamegraphs
22:30:07  <mbalho>you should ask trevnorris about his benchmarking setup sometime
22:33:40  <trevnorris>what's up?
22:34:16  <mbalho>trevnorris: i was just wishing there was a npm install trevors-benchmarking-setup :D
22:35:17  <mbalho>trevnorris: do you know any good instructions for gettign the llprof output that has all the c++ and js in one sorted stack?
22:35:43  <trevnorris>mbalho: yeah. it's easy. ;P
22:36:14  <trevnorris>mbalho: first, you need the v8 repo, the one in node source you're using should work fine.
22:36:29  <trevnorris>so cd deps/v8; make -j4 native
22:37:18  <trevnorris>now, you want to run your script with perf, like so:
22:37:18  <trevnorris>perf record -R -e cycles -c 10000 -f -i ./node --ll-prof test.js
22:37:30  <trevnorris>(but make sure it's not too long a test, that collects a lot of data.
22:37:33  <trevnorris>)
22:37:57  <mbalho>hmm in deps/v8 i get /bin/sh: build/gyp/gyp: No such file or directory when i do make -j4 native
22:38:21  <mbalho>i have a build/gyp_v8 but no build/build/
22:38:26  <trevnorris>ah, first do make dependencies
22:38:37  <trevnorris>that'll download a bunch of crap
22:38:45  <mbalho>ahh
22:38:55  <trevnorris>also, you'll want to drop some warnings from perf by doing: sudo sysctl kernel/kptr_restrict=0
22:39:28  <trevnorris>now, when the test finishes you'll have a v8.log, v8.log.ll and perf.data (something like that)
22:40:36  <mbalho>weird, make -j4 native fails with: ../src/store-buffer.h:229:9: error: private field 'heap_' is not used [-Werror,-Wunused-private-field]
22:40:41  <trevnorris>so now run:
22:40:41  <trevnorris>D8_PATH=/path/to/deps/v8/out/native/ /path/to/v8/tools/ll_prof.py --log=<v8.log location> --trace=<perf.data location>
22:40:50  <trevnorris>then wait a while. takes some time.
22:40:58  <mbalho>i'm on joyent/node/67a1f0c52e0708e2596f3f2134b8386d6112561e (0.18.0 tagged commit)
22:41:02  <trevnorris>mbalho: ah, stupid build failure.
22:41:40  <trevnorris>you'll need to build with werror=no
22:41:44  <mbalho>ah
22:43:03  <mbalho>trevnorris: ah crap is `perf` linux only?
22:43:12  <trevnorris>mbalho: ah, yup
22:43:20  <trevnorris>what you using?
22:43:21  * dguttmanquit (Quit: dguttman)
22:43:26  <mbalho>os x
22:44:26  <kenansulayman>trevnorris yo are you going to implement the nextTick addition? there's been no further feedback on it
22:44:52  <trevnorris>kenansulayman: eh? what about nextTick?
22:44:57  <brycebaril>trevnorris: this sounds cool, I'll definitely try it out in a bit. How long is 'not too long a test'?
22:45:09  <kenansulayman>trevnorris uhm https://github.com/joyent/node/issues/6290 ?
22:45:12  <trevnorris>mbalho: ah, sorry dude.
22:45:46  <mbalho>trevnorris: test.js only runs once, right?
22:45:52  <trevnorris>brycebaril: um. depends on the test. if your resulting perf.data file > 50-100MB then it'll take forever to process
22:45:56  <trevnorris>mbalho: yeah
22:46:05  <trevnorris>oh and when you parse, use the --kernel flag
22:46:16  <trevnorris>that'll give you kernel specific information, very useful for syscalls
22:46:24  <mbalho>brycebaril: so maybe you'd wanna shrink the csv test data file down to like 100k rows
22:46:35  <trevnorris>and you can also get the disassembly for the calls, though I usually save that for IRHydra.
22:46:39  <trevnorris>much more useful.
22:46:52  <mbalho>trevnorris: you should totally write this stuff up in a blog post
22:47:04  <mbalho>'How to profile node programs on linux'
22:47:29  <trevnorris>hah, well. I have one. but it only covers the basics.
22:47:44  <trevnorris>been meaning to do on on how to use prof and ll-prof
22:48:05  <mbalho>yea prof is aewsome
22:48:09  <mbalho>awesome*
22:48:38  * ryanjquit (Ping timeout: 240 seconds)
22:48:55  <trevnorris>valgrind is useful too. can do things like:
22:48:55  <trevnorris>valgrind --tool-massif --peak-inaccuracy=0.5 --pages-as-heap=yes --time-unit=B --detailed-freq=5 ./node test.js
22:49:06  <trevnorris>and it'll take memory snaps of your application over time.
22:50:13  * jjmalinaquit (Quit: Leaving.)
22:50:21  * tmcwquit (Remote host closed the connection)
22:50:57  * tmcwjoined
22:51:19  <trevnorris>but anyways. ignore that last one
22:52:15  <trevnorris>i'd say the basics are to just run with --trace-opt-verbose --trace-deopt --trace-inlining --code-comments
22:55:02  * tmcwquit (Ping timeout: 240 seconds)
22:56:41  <kenansulayman>trevnorris Nothing? :)
22:57:38  <trevnorris>kenansulayman: ah, sorry. get side tracked easily when I start doing performance tracing. :)
22:57:57  <kenansulayman>sure np ;)
22:58:28  <trevnorris>kenansulayman: so, I already tried to implement that, no can do easily. in core there are callbacks passed to nextTick that may expect arguments.
22:58:36  <trevnorris>kenansulayman: and if an argument is passed then it'll fail
22:58:46  <trevnorris>and using .call/apply from nextTick is way too much a performance hit
22:58:48  * ednapiranhaquit (Remote host closed the connection)
22:59:00  <kenansulayman>hum
22:59:41  <kenansulayman>Could we only .apply if an extra parameter is given?
23:00:31  <kenansulayman>ah i see
23:00:36  <trevnorris>wouldn't work because there would always be an extra parameter passed to _tickCallback from AsyncWrap::MakeCallback()
23:01:02  <kenansulayman>So it could only be done by sugar
23:01:05  <kenansulayman>mäh
23:01:08  <trevnorris>i'm actively working on a solution. but it won't be in time for v0.12
23:01:36  <kenansulayman>sure take your time, sugar won't be too expensive until then
23:01:58  <kenansulayman>ty after akk
23:02:01  <kenansulayman>all*
23:02:31  * fallsemoquit (Quit: Leaving.)
23:03:29  <kenansulayman>trevnorris Another thing regarding profiling; the dumps can't really be evaluated on osx (heap dump)
23:03:31  <trevnorris>the most performant way to do it now would be to
23:03:32  <trevnorris>function outerCall(self) { /* do much stuff */ }
23:03:32  <trevnorris>function instFn() {
23:03:32  <trevnorris> var self = this;
23:03:32  <trevnorris> process.nextTick(function() { outerCall(self); });
23:03:33  <trevnorris>}
23:03:52  <kenansulayman>yeah the self = this way ..
23:04:03  <trevnorris>yeah. hate it, but all we got for now :(
23:04:30  <kenansulayman>Actually how would the (a, b) => {} way work the others suggested from harmony?
23:04:38  <kenansulayman>I don't see a way to pass the context
23:04:48  <trevnorris>don't use harmony if you value performance. nothing in the harmony spec has been performance tuned.
23:05:09  <trevnorris>e.g. generators remove the ability to inline functions
23:05:18  <kenansulayman>I surely won't.. after all not only because of performance but because it scares the shit out of m
23:05:21  <kenansulayman>e
23:05:22  <brycebaril>kenansulayman: I believe because => functions don't create a new context, so 'this' would be the context of the creation of the function, not the calling of it
23:05:24  <trevnorris>hah
23:05:59  <kenansulayman>brycebaril That might be it; let me check that in the firefox nightly
23:05:59  * eugenewarequit (Ping timeout: 260 seconds)
23:07:26  <trevnorris>also, random tid-bit for anyone writing native modules. **dont't** use "arguments" from a method called from c++.
23:08:31  <kenansulayman>Yes brycebaril seems right
23:08:36  <kenansulayman>(function () { var self = this; (() => { console.log(self === this)})() })()
23:08:38  <kenansulayman>yields true
23:08:58  <kenansulayman>trevnorris Why?
23:09:12  <trevnorris>kenansulayman: kills performance. don't know why.
23:09:26  * ryan_ramagequit (Ping timeout: 240 seconds)
23:09:32  <kenansulayman>Instead local variables or what?
23:09:51  <trevnorris>sorry, i mean the "arguments" keyword
23:09:58  <trevnorris>pass all your arguments.
23:10:00  <kenansulayman>oh. hah
23:10:15  <trevnorris>for some reason it makes simple callbacks take up to 5x's longer.
23:10:36  <kenansulayman>wat
23:10:45  <kenansulayman>5x??
23:11:07  <trevnorris>yeah, but we're talking functions that can usually be inlined.
23:11:20  <trevnorris>ok, sorry. got me going about performance. i'll stop hogging the channel now. :)
23:11:33  <kenansulayman>haha you're not
23:11:40  <kenansulayman>there's usually not much up lol
23:11:52  <trevnorris>heh, ok
23:12:00  <kenansulayman>btw is try catch optimized by v8 now?
23:12:40  <trevnorris>a function called within a try/catch can be optimizes.
23:12:52  <trevnorris>but afaik, normal code in a try catch can't be.
23:13:03  <trevnorris>but haven't benchmarked it recently.
23:13:18  <kenansulayman>Well let me check the v8 source for updated bailout stuff
23:15:19  <trevnorris>kenansulayman: though, a cheap trick you can do with timers, since they return their own instance, is attach properties to it.
23:15:33  <trevnorris>kenansulayman: those will be accessible via "this" within the timer callback.
23:15:45  <trevnorris>just make sure you don't step on something that already exists.
23:18:29  <kenansulayman>hum
23:18:44  <kenansulayman>thing's timers ≠ nextTick
23:19:08  <kenansulayman>too many queued would block the look
23:19:10  <kenansulayman>loop
23:19:58  <kenansulayman>IMHO setTimeout(<foo>, 0) => <foo>()
23:20:02  <kenansulayman>;)
23:20:53  <trevnorris>you mean too many nextTick would block the loop?
23:24:21  <kenansulayman>trevnorris no setIntervals
23:24:36  <kenansulayman>uhm
23:24:39  <kenansulayman>TImeouts sry^
23:25:19  <trevnorris>how would too many setTimeout's block the loop?
23:26:11  <kenansulayman>trevnorris I'm not sure, I guess because they're all in the same tick?
23:26:18  * st_lukejoined
23:26:51  <kenansulayman>btw
23:26:58  <kenansulayman>they removed trycatch from the bailouts
23:27:01  <kenansulayman>trevnorris http://data.sly.mn/RkMq/contents
23:27:14  <trevnorris>yeah. but I mean a: while(/* a lot */) {setTimeout,setImmediate,nextTick}(fn() { }); would block anything
23:27:30  * nmartin867quit (Quit: nmartin867)
23:28:36  * dguttmanjoined
23:29:33  <kenansulayman>trevnorris ya sure while(var shiieeeet = !!void 0) would block
23:31:00  <kenansulayman>actually just !void 0
23:31:02  <trevnorris>kenansulayman: yeah, so i'm just curious at the specificity you had with setTimeout.
23:32:49  <kenansulayman>well let's take a session-garbage-collector as example; a pessimistic 12k sessions in memory and we're cleaning every 10 seconds
23:33:45  <kenansulayman>I experienced setTimeout(<foo>, 0) much worse than nextTick(<foo>, 0) in order keep things spinning
23:34:43  <kenansulayman>uhm remove the ", 0" from nextTick
23:35:56  * thlorenzjoined
23:38:04  <kenansulayman>trevnorris
23:38:05  * jcrugzzjoined
23:38:17  <trevnorris>hey
23:38:29  <trevnorris>oh, yeah. that's totally true.
23:39:06  <trevnorris>you're also going to experience gc from needing to create a function closure, but if the closures are small then the cleanup would still be less.
23:39:24  <trevnorris>kenansulayman: guess my comment about setting something on the setTimeout object was more just for fun :)
23:39:58  * ryanjjoined
23:40:03  <kenansulayman>trevnorris hah ok ;)
23:41:46  * st_lukequit (Read error: Connection reset by peer)
23:42:21  * nnnnathannquit (Read error: Connection reset by peer)
23:43:09  * fallsemojoined
23:43:39  * nnnnathannjoined
23:45:20  <kenansulayman>trevnorris mbalho http://data.sly.mn/RkW2
23:46:25  <kenansulayman>regarding profiling & osx
23:46:28  <trevnorris>kenansulayman: this is v0.10 right?
23:46:33  <kenansulayman>uhm yes
23:46:49  <trevnorris>heh, that'll be way different on master
23:47:03  <kenansulayman>why?
23:47:14  * timoxleyjoined
23:47:38  <trevnorris>well, went from v8 3.14 to 3.20
23:47:43  <kenansulayman>ow
23:47:46  <kenansulayman>let me check head
23:47:51  <trevnorris>also, i'm currently re-writing the entire MakeCallback mechanism as we speak.
23:47:59  <trevnorris>which should be merged in before v0.12
23:48:11  <kenansulayman>What'll be different?
23:48:32  <trevnorris>oy, um....
23:48:51  <trevnorris>well, now all calls to MakeCallback go though a new class called AsyncWrap, which handles all the internals.
23:49:20  <trevnorris>and it's using a state sharing technique to quickly check flag status between c++ and js to make sure it doesn't have to make any additional calls
23:49:38  <kenansulayman>oh yeay I smell performance
23:50:11  * fallsemoquit (Quit: Leaving.)
23:50:33  <trevnorris>eh. a little. most of what I want to do will take me the next 6 months or more: https://github.com/joyent/node/issues/6252
23:50:41  <trevnorris>so it'll have to wait until the v0.13 dev cycle.
23:50:53  <trevnorris>more so, this is setting up for a load of improvements coming down the pipe
23:50:56  * thlorenzquit (Remote host closed the connection)
23:51:26  <kenansulayman>That's quite a list
23:51:31  * thlorenzjoined
23:51:33  * dguttman_joined
23:51:47  <trevnorris>eh, just what was off the top of my head.
23:52:10  <kenansulayman>Apply is really slower than call?
23:52:16  <kenansulayman>because of the array unrolling?
23:52:41  * st_lukejoined
23:54:03  * dguttmanquit (Ping timeout: 260 seconds)
23:54:04  * dguttman_changed nick to dguttman
23:54:09  <trevnorris>well, depends on the situation. js functions operate differently when called from c++ than from js
23:54:18  <trevnorris>and a lot of js in core is called from c++
23:54:38  <kenansulayman>makes sense
23:55:32  <kenansulayman>Would it be possible to rewrite more lib/*.js modules to c++?
23:55:51  * thlorenzquit (Ping timeout: 245 seconds)
23:57:15  <trevnorris>eh. it's a delicate line. operating on JS objects via the v8 API from c++ is crazy slow. so all of that needs to be in JS
23:57:30  <trevnorris>I think we have about the right mix. it just needs to be cleaned up and optimized.
23:58:08  * ryanjquit (Ping timeout: 240 seconds)
23:58:15  <kenansulayman>Is c++ JS optimized?
23:58:37  <kenansulayman>btw trevnorris Node 0.11.8-pre http://data.sly.mn/Rk9K
23:58:50  * rudquit (Read error: Connection reset by peer)
23:59:22  <trevnorris>yup
23:59:35  * rudjoined