00:07:08  * hzquit
00:08:01  * EhevuTovjoined
00:12:15  * EhevuTovquit (Client Quit)
00:13:33  * EhevuTovjoined
00:15:11  * paddybyersquit (Ping timeout: 255 seconds)
00:18:06  * EhevuTovquit (Ping timeout: 240 seconds)
00:28:34  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
00:44:39  <TooTallNate>^ always happens right when I need him
00:55:33  <tjfontaine>with how he reads the logs it's like he's omnipresent :P
00:56:09  * ArmyOfBrucequit (Excess Flood)
00:56:58  * ArmyOfBrucejoined
00:57:14  <TooTallNate>well i'm just in an interesting predicament right now
00:57:23  <TooTallNate>i wrote node-ogg already, binding to libogg
00:57:27  <TooTallNate>that's fine
00:57:40  <TooTallNate>the problem is that now i need to write node-vorbis, which depends on libogg
00:57:48  <TooTallNate>so my options are:
00:58:05  <TooTallNate>1) statically link always, have duplicate symbols for libogg
00:58:31  <TooTallNate>2) compile libogg as a shared library, and dynamically link to it, also have node-vorbis link to the node-ogg libogg .so file
00:58:46  <TooTallNate>2 is preferable, but also might not be possible
00:59:11  <TooTallNate>i'd need to know the location of the node-ogg libogg at build-time of node-vorbis, which is anyone's guess
00:59:31  <TooTallNate>at that point, i'd have to hack up the rpath of the node-vorbis binary
00:59:42  <TooTallNate>but i don't think it would at all be possible on Windows :(
01:00:54  <tjfontaine>couldn't you make node-vorbis link against node-ogg?
01:01:22  <tjfontaine>or rather teach node-gyp how to link against it
01:13:23  * c4milojoined
01:42:54  <TooTallNate>tjfontaine: i'd have to do the same thing we're doing for the openssl-exports to make all the libogg symbols be exported in the native addon, but the problems for #2 are the same
01:46:38  * lohkey_joined
01:50:19  * lohkeyquit (Ping timeout: 252 seconds)
01:51:02  * lohkey_quit (Ping timeout: 252 seconds)
02:00:09  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
02:06:56  * bradleymeckjoined
02:07:51  * c4miloquit (Remote host closed the connection)
02:15:58  * tomshredsquit (Ping timeout: 272 seconds)
02:23:30  * bradleymeckquit (Quit: bradleymeck)
02:36:09  * bnoordhuisjoined
02:39:11  * kristatequit (Ping timeout: 255 seconds)
02:41:29  * bradleymeckjoined
02:45:36  * c4milojoined
02:57:18  * c4miloquit (Remote host closed the connection)
03:06:58  * c4milojoined
03:07:00  <warz>well that took literally an entire 2 days, but i think it's finally working: https://github.com/ryancole/topdf/blob/master/src/topdf.cc
03:07:13  <warz>my brain is hurting. lol.
03:07:33  * kazuponjoined
03:08:26  <warz>i got a little hacky in that convert function, mostly with the strncpy and memset lines
03:08:41  <warz>im sure i need to go look it over now and make sure im cleaning everything up
03:28:04  * c4miloquit (Remote host closed the connection)
03:32:09  * c4milojoined
03:34:11  * ArmyOfBrucequit (Excess Flood)
03:34:41  * ArmyOfBrucejoined
03:39:18  * brsonquit (Ping timeout: 245 seconds)
03:45:35  * mmalecki[off]changed nick to mmalecki
03:49:39  <bnoordhuis>[% 100|+ 170|- 3]: Done. <- libuv rm-ev on sunos, first try
03:49:48  <bnoordhuis>same tests that were failing before
03:49:56  <bnoordhuis>i am as surprised as you are, dear reader
03:54:04  * c4miloquit (Remote host closed the connection)
03:54:21  * abraxasquit (Read error: Connection reset by peer)
03:54:31  * abraxasjoined
04:30:36  * warzquit
04:39:22  * loladiroquit (Quit: loladiro)
04:48:10  * loladirojoined
04:52:06  * loladiroquit (Client Quit)
04:55:39  * loladirojoined
04:56:46  * loladiroquit (Client Quit)
05:00:48  * loladirojoined
05:03:08  * pooyajoined
05:03:48  * loladiro_joined
05:04:45  * loladiroquit (Read error: Connection reset by peer)
05:04:45  * loladiro_changed nick to loladiro
05:05:31  * pooyaquit (Client Quit)
05:16:59  * kristatejoined
05:19:36  * joshthecoderquit (Quit: Leaving...)
05:28:22  * bradleymeckquit (Quit: bradleymeck)
05:40:44  * joshthecoderjoined
05:41:42  * TheJHjoined
05:48:03  * bnoordhuisquit (Ping timeout: 245 seconds)
05:51:31  * TheJHquit (Ping timeout: 260 seconds)
06:06:38  * kristatequit (Ping timeout: 260 seconds)
06:07:51  <txdv>bnordhuis! yeah!
06:45:50  * EhevuTovjoined
06:49:16  * paddybyersjoined
06:57:01  * lohkeyjoined
06:59:39  * paddybyersquit (Ping timeout: 260 seconds)
06:59:55  * lohkeyquit (Client Quit)
07:20:02  * rendarjoined
07:35:47  * loladiroquit (Read error: Connection reset by peer)
07:36:05  * loladirojoined
07:53:18  * kristatejoined
07:58:34  * kristatequit (Ping timeout: 252 seconds)
08:00:28  * kristatejoined
08:06:34  * kristatequit (Ping timeout: 240 seconds)
08:10:42  * joshthecoderquit (Quit: Leaving...)
08:12:51  * kristatejoined
08:31:30  * paddybyersjoined
08:44:00  * kristat__joined
08:46:23  * kristatequit (Ping timeout: 255 seconds)
08:58:04  <Yorhel>From libuv.h: "Using uv_poll_t for any other other purpose is not recommended; uv_tcp_t, uv_udp_t, etc. provide an implementation that is much faster and more scalable than what can be achieved with uv_poll_t, especially on Windows"
08:59:26  <Yorhel>Ignoring the Windows part, is it explained/documented anywhere why uv_tcp_t on unix is faster than something homebrew based on polling? What architecture does uv_tcp_t use that makes it more scalable?
08:59:51  * kazuponquit (Remote host closed the connection)
09:01:09  * kazuponjoined
09:16:47  <Yorhel>In fact, from what I see in src/unix/ is that uv_stream_t uses the same polling mechanism :-/
09:16:50  * kristat__quit (Read error: Connection reset by peer)
09:17:23  * kristatejoined
09:25:32  * kristat__joined
09:26:07  * kristatequit (Read error: Connection reset by peer)
09:27:43  * kristat__quit (Read error: Connection reset by peer)
09:28:04  * kristatejoined
09:29:53  * kristat__joined
09:29:53  * kristatequit (Read error: Connection reset by peer)
09:50:14  * janjongboomjoined
09:56:24  * kristatejoined
09:58:39  * krista___joined
09:58:53  * kristat__quit (Ping timeout: 245 seconds)
10:00:52  * stagasjoined
10:00:58  * kristatequit (Ping timeout: 245 seconds)
10:09:51  * loladiroquit (Quit: loladiro)
10:09:52  * krista___quit (Read error: Connection reset by peer)
10:12:00  * ArmyOfBrucequit (*.net *.split)
10:12:02  * EhevuTovquit (*.net *.split)
10:12:02  * btraskquit (*.net *.split)
10:12:02  * txdvquit (*.net *.split)
10:12:02  * toothrotquit (*.net *.split)
10:12:02  * einarosquit (*.net *.split)
10:15:40  * EhevuTovjoined
10:15:41  * ArmyOfBrucejoined
10:15:41  * btraskjoined
10:15:41  * txdvjoined
10:15:41  * toothrotjoined
10:15:41  * einarosjoined
10:17:29  * `3rdEdenjoined
10:17:42  * stagasquit (Ping timeout: 260 seconds)
10:19:41  <saghul>Yorhel uv_tcp_t and friends could eventually be edge triggered inside
10:19:50  <saghul>uv_poll will always be level triggered
10:20:23  <saghul>and it also reads 64k chunks taking care of the errors for you, so they are pretty convenient
10:20:37  * rendarquit (*.net *.split)
10:20:37  * hij1nxquit (*.net *.split)
10:20:37  * LOUDBOTquit (*.net *.split)
10:20:38  * indutnyquit (*.net *.split)
10:20:38  * ircretaryquit (*.net *.split)
10:20:38  * voodootikigodquit (*.net *.split)
10:20:38  * chrisdickinsonquit (*.net *.split)
10:20:40  * janjongboomquit (*.net *.split)
10:20:40  * sj26quit (*.net *.split)
10:20:40  * Chip_Zeroquit (*.net *.split)
10:20:40  * russell_hquit (*.net *.split)
10:20:40  * kazuponquit (Remote host closed the connection)
10:21:09  * stagasjoined
10:22:05  * janjongboomjoined
10:22:05  * rendarjoined
10:22:05  * sj26joined
10:22:05  * hij1nxjoined
10:22:05  * LOUDBOTjoined
10:22:05  * ircretaryjoined
10:22:05  * Chip_Zerojoined
10:22:05  * chrisdickinsonjoined
10:22:05  * voodootikigodjoined
10:22:05  * russell_hjoined
10:22:05  * indutnyjoined
10:22:32  * rendarquit
10:25:36  * janjongboomquit (*.net *.split)
10:25:37  * sj26quit (*.net *.split)
10:25:37  * Chip_Zeroquit (*.net *.split)
10:25:37  * russell_hquit (*.net *.split)
10:26:18  * loladirojoined
10:26:43  * ircretaryquit (*.net *.split)
10:26:43  * voodootikigodquit (*.net *.split)
10:26:43  * chrisdickinsonquit (*.net *.split)
10:26:57  * janjongboomjoined
10:26:57  * sj26joined
10:26:57  * Chip_Zerojoined
10:26:57  * russell_hjoined
10:27:13  * ircretaryjoined
10:27:13  * voodootikigodjoined
10:27:13  * chrisdickinsonjoined
10:29:28  * loladiroquit (Client Quit)
10:30:01  * dscapequit (*.net *.split)
10:30:29  * dscapejoined
10:31:11  * kristat__joined
10:37:42  * kristatejoined
10:40:36  * kristat__quit (Ping timeout: 256 seconds)
10:41:00  * kristat__joined
10:42:26  * krista___joined
10:44:30  * kristatequit (Ping timeout: 276 seconds)
10:45:31  * kristatejoined
10:45:39  * kristat__quit (Ping timeout: 252 seconds)
10:48:47  * krista___quit (Ping timeout: 260 seconds)
11:00:34  * stagasquit (Quit: ChatZilla 0.9.89-rdmsoft [XULRunner 1.9.0.17/2009122204])
11:03:54  * kristatequit (Ping timeout: 268 seconds)
11:17:29  * `3rdEdenquit (Remote host closed the connection)
11:18:18  * paddybyersquit (Read error: Connection reset by peer)
11:18:42  * paddybyersjoined
11:22:42  * abraxasquit (Remote host closed the connection)
11:23:19  * abraxasjoined
11:27:56  * abraxasquit (Ping timeout: 255 seconds)
12:08:51  * kazuponjoined
12:11:23  * EhevuTovquit (Quit: This computer has gone to sleep)
12:15:14  * `3rdEdenjoined
12:31:04  * hzjoined
12:31:29  * stagasjoined
12:46:44  * Yorhelquit (Ping timeout: 248 seconds)
12:47:08  * Yorheljoined
12:51:29  * sgallaghjoined
12:57:22  * bnoordhuisjoined
13:07:30  <bnoordhuis>Yorhel: the devil is in the details when it comes to uv_tcp_t and friends
13:08:01  <bnoordhuis>for instance, a rather common deoptimization you see in a lot of code is to read until EAGAIN happens
13:08:30  <bnoordhuis>(which can have a pretty bad performance impact)
13:11:33  <bnoordhuis>oh, and let's not forget about all the platform-specific niceties like accept4, socket(SOCK_CLOEXEC|SOCK_NONBLOCK) etc.
13:12:53  * Yorhelquit (Read error: Operation timed out)
13:13:09  <bnoordhuis>aww, did i scare him away?
13:13:54  * Yorheljoined
13:25:51  <Yorhel>Thanks for the clarification. Glad to see that the basic polling architecture that I always thought as the most efficient still is the most efficient (on unix). :-)
13:42:53  <saghul>bnoordhuis all tests pass on rm-ev for me on OSx 10.6! \o/
13:43:12  <saghul>what happened to faio, btw?
13:56:10  * ArmyOfBrucequit (Excess Flood)
13:56:59  * ArmyOfBrucejoined
14:11:15  * `3rdEdenchanged nick to `3E|BRB
14:19:01  <txdv>nice bnoordhuis, rm-ev works passes all tests on ubuntu 12.04
14:19:10  <txdv>but benchmark doesn't as I see
14:23:08  <txdv>what is the use of poll at all then?
14:23:28  <txdv>other than binding in ncurse
14:28:09  <saghul>txdv I use it to make Python's sockets integrate with libuv seamlessly
14:31:32  <indutny>bnoordhuis: hoya
14:32:29  * kristatejoined
14:39:03  <bnoordhuis>saghul: faio is in maintenance mode :)
14:39:20  <bnoordhuis>i may sync it with the rm-ev branch, it's a useful lib in its own right
14:39:37  <saghul>bnoordhuis I see
14:39:45  <bnoordhuis>txdv: you probably need to raise the open fd limit
14:40:14  <bnoordhuis>though there's a couple that still fail, yes
14:40:18  <bnoordhuis>indutny: hey
14:40:43  <indutny>bnoordhuis: so how can I be helpful today :)
14:40:50  <indutny>btw, I've finally updated to Mountain Lion
14:40:54  <indutny>going to test fsevents :)
14:41:08  <bnoordhuis>indutny: it seems to work
14:41:12  <indutny>yeah
14:41:13  * bradleymeckjoined
14:41:21  <indutny>but I want to look at it with my own eyes
14:42:31  <indutny>bnoordhuis: so anything else?
14:42:57  <bnoordhuis>indutny: well, there's a ton of open bug reports, pull requests that need reviewing, the usual
14:43:22  <bnoordhuis>indutny: i noticed that the debugger tests are still failing sometimes
14:43:28  <indutny>aaha
14:43:29  <indutny>right
14:43:32  <indutny>I forgot about it
14:43:37  <indutny>or hoped you forgot about it
14:43:38  <indutny>anyway
14:43:42  <indutny>I'll look into it
14:45:12  <bnoordhuis>seems some of the failing benchmarks are failing in master as well
14:45:20  <indutny>benchmarks?
14:45:21  <bnoordhuis>that's both good and bad
14:45:22  <indutny>in libuv?
14:45:24  <bnoordhuis>yes
14:46:59  <txdv>saghul: but uv_*_open doesn't work on windows on initiated sockets
14:48:05  <saghul>txdv right, I start it on __init__, before it's connected or bound
14:49:51  * c4milo_joined
14:51:38  * bradleymeckquit (Quit: bradleymeck)
14:52:59  * bradleymeckjoined
14:55:39  * `3E|BRBchanged nick to `3rdEden
14:59:32  <MI6>joyent/libuv: Ben Noordhuis master * b9c8d19 : bench: close timer handles before deleting loop Fixes a segmentation fau - http://git.io/KQIHRA
15:01:57  * travis-cijoined
15:01:57  <travis-ci>[travis-ci] joyent/libuv#870 (master - b9c8d19 : Ben Noordhuis): The build passed.
15:01:57  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/3243e9ae673b...b9c8d196379d
15:01:57  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/3180275
15:01:57  * travis-cipart
15:07:44  <txdv>a 4 line feature
15:08:26  * piscisaureus_joined
15:09:18  <bnoordhuis>piscisaureus_: finally got out of bed? :)
15:09:35  <indutny>bert hang outs like a boss :P
15:10:22  <piscisaureus_>oh I just arrived at the offic
15:10:32  <piscisaureus_>so I suppose my irc client was disconnected
15:10:37  <piscisaureus_>until I just restarted :-0
15:10:43  <piscisaureus_>you guys need something from me?
15:11:12  <indutny>piscisaureus_: yeah
15:11:15  <indutny>piscisaureus_: a cup of coffee please
15:11:18  <indutny>piscisaureus_: without sugar
15:11:28  <txdv>sex drugs and awesome code
15:11:33  <piscisaureus_>indutny: it's here. when are you going to get it
15:11:41  <piscisaureus_>indutny: it has been sitting on my deskt for 3 months now
15:11:42  <indutny>piscisaureus_: ask jos ;)
15:11:48  <indutny>piscisaureus_: 3 months
15:11:49  <indutny>eew
15:12:21  <indutny>that's disgusting
15:12:30  <indutny>god thanks, I'm not drinking coffee
15:13:02  <piscisaureus_>coffee doesn't really expire
15:13:04  <piscisaureus_>it just gets cold
15:13:21  <piscisaureus_>indutny: I will happily put it in the microwave for you when you come to amsterdam
15:13:40  <indutny>piscisaureus_: I'll bring something with me too
15:13:55  <indutny>piscisaureus_: like old apricot from summer 2009
15:14:20  <indutny>piscisaureus_: I didn't know you by then, but...
15:14:35  <piscisaureus_>do you know me now?
15:15:05  <indutny>I know your name
15:15:07  <indutny>and I seen ya
15:15:21  <indutny>not sure If I want to know more :D
15:15:22  <piscisaureus_>huh, did we meet? Are you sure that was me?
15:15:44  <indutny>that was ben?
15:15:54  <piscisaureus_>dunno. bnoordhuis?
15:16:24  <bnoordhuis>no, not me
15:16:27  <piscisaureus_>I think you met ben once. At nodeconf I believe?
15:16:40  <indutny>yeah
15:16:44  <bnoordhuis>i never get out of my basement
15:16:58  <bnoordhuis>also, what's this nodeconf you speak of?
15:17:02  <piscisaureus_>bnoordhuis: yeah I think we can discuss this
15:17:15  <piscisaureus_>bnoordhuis: I'll let you out for a while
15:17:17  <piscisaureus_>somewhere next week
15:17:28  <indutny>don't let him feel too much freedom
15:17:29  <indutny>he may not return
15:17:40  <bnoordhuis>don't wanna, the big yellow thing in the sky frightens me
15:18:11  <piscisaureus_>don't worry, I wont let you take off your blindfold
15:20:12  <bnoordhuis>should we reintroduce node office hours?
15:22:06  <indutny>yeah
15:22:08  <piscisaureus_>yeah why not
15:22:10  <piscisaureus_>in amsterdam?
15:22:11  <indutny>I will make it in russia
15:22:14  <piscisaureus_>or online?
15:22:14  <indutny>in moscow
15:22:17  <indutny>ahahaha
15:22:19  <indutny>btw
15:22:22  <indutny>we can do hangouts
15:22:23  <bnoordhuis>piscisaureus_: both?
15:22:26  <indutny>google hangouts
15:22:31  <bnoordhuis>that'd work too
15:22:31  <indutny>this may be quite popular
15:22:42  <piscisaureus_>google hangouts is pretty limited I think
15:25:47  <indutny>to what
15:29:19  * TheJHjoined
15:38:03  * warzjoined
15:39:09  <txdv>ice ice
15:43:36  <piscisaureus_>indutny: max 20 people or so?
15:44:02  <indutny>piscisaureus_: ah
15:44:04  <indutny>hm...
15:44:05  <indutny>dunno
15:44:22  <indutny>ah
15:44:24  <indutny>10 maximum
15:44:47  <indutny>we can do it in google docs
15:44:51  <indutny>:)
15:47:28  * loladirojoined
15:49:37  <indutny>or in vock :)
15:54:55  <bnoordhuis>i may be a victim of my own success...
15:55:16  <txdv>pyp pyp pyp
15:55:18  <bnoordhuis>the reason udp_timed_pummel_1000v1000 fails with rm-ev but not master is that in rm-ev the event loop is starved
15:55:35  <bnoordhuis>with libev, the data doesn't get pushed out fast enough for that to happne
15:55:37  <bnoordhuis>*happen
15:55:43  <piscisaureus_>bnoordhuis: without rm-ev it also starves on my machine
15:55:44  * TheJHquit (Quit: goodbye)
15:55:49  <piscisaureus_>bnoordhuis: this also happens to tcp pump btw
15:55:53  <bnoordhuis>piscisaureus_: yeah? interesting
15:56:01  <piscisaureus_>bnoordhuis: I opened a ticker for this
15:56:03  <piscisaureus_>*ticket
15:56:12  <bnoordhuis>a ticker would've been nice too
15:56:32  <bnoordhuis>piscisaureus_: is that on real or virtual hardware?
15:56:44  <piscisaureus_>bnoordhuis: virtual
15:56:59  <piscisaureus_>bnoordhuis: the issue seems to be that it never gets arount to processing timeouts
15:57:08  <bnoordhuis>yeah, that's what happens
15:57:08  <piscisaureus_>bnoordhuis: because write() never returns EAGAIN
15:57:27  <bnoordhuis>let's see if i can reproduce it in a vm
15:57:33  <piscisaureus_>bnoordhuis: this used to be an issue with uv-win as well until 0.6.5 or so
15:58:08  <bnoordhuis>i thought i put a safeguard in but maybe that was for tcp
15:58:56  <piscisaureus_>bnoordhuis: what I do in windows is split the queue before processing callbacks
15:59:19  <piscisaureus_>bnoordhuis: and callbacks that are inserted after the split are not processed until the next round, e.g. after processing timeouts and polling again
16:00:03  <piscisaureus_>waitpid is weird :-(
16:00:49  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/commit/738b31 <- apparently i *did* fix it
16:00:53  <bnoordhuis>only it's not working now :)
16:01:15  <piscisaureus_>bnoordhuis: you also need this in the write() path
16:01:29  <bnoordhuis>ah right, that's it
16:04:07  <bnoordhuis>weird that i can't reproduce it with master though
16:05:06  <piscisaureus_>I am running ubuntu in a virtualboxvm on windows on my retina macbook
16:05:15  <piscisaureus_>bnoordhuis: I think you have all the components to replicate this setup :-p
16:05:20  <bnoordhuis>haha
16:05:29  <tjfontaine>I died a little on the inside
16:06:14  <piscisaureus_>as the french say "partir c'est un peu mourir"
16:06:24  <piscisaureus_>tjfontaine: so are you going to leave us?
16:06:41  <piscisaureus_>I still think tjfontaine is french somehow.
16:06:46  <tjfontaine>piscisaureus_: is that a subtle way to ask me to leave?
16:06:49  <tjfontaine>:)
16:07:10  <piscisaureus_>haha
16:07:21  <piscisaureus_>No I am asking you to be french
16:08:31  <tjfontaine>I'll have to work hard on that, I took spanish in highschool and I don't think these romance languages translate as well as it was made out to me :P
16:08:50  * Yorhelpart ("WeeChat 0.3.9")
16:12:05  <bnoordhuis>ha hum
16:12:27  <bnoordhuis>i'm doing this in the inner epoll/kqueue/etc. -> if (nfds == ARRAY_SIZE(events)) continue; // poll again
16:12:39  <bnoordhuis>but the events are coming in as fast as i can read them
16:12:45  <piscisaureus_>haha
16:12:52  <piscisaureus_>WRONG
16:12:57  <bnoordhuis>so it seems :)
16:13:25  <piscisaureus_>I could imagine this if you have a very inefficient backend, like one that only reports one event at a time
16:14:02  <bnoordhuis>i guess i'll put an upper limit in there
16:14:11  <piscisaureus_>bnoordhuis: I think you should not do it at all
16:14:24  <piscisaureus_>bnoordhuis: if you can process 32 or 64 events at a time, don't bother
16:14:43  <bnoordhuis>it's a lot more than that: ARRAY_SIZE(events) == 1024
16:14:49  <piscisaureus_>ooh
16:14:57  <piscisaureus_>in that case it's probably just bad to do it
16:15:10  <bnoordhuis>though the way it works is that not all events translate to user-visible events
16:16:55  <bnoordhuis>if the user stops or closes a handle, i don't disarm it until it's reported as readable/writable
16:16:55  <bnoordhuis>(to reduce the # of syscalls)
16:17:04  <piscisaureus_>bnoordhuis: well - it has a risk
16:17:10  <piscisaureus_>bnoordhuis: you end up seeing the same events over and over again
16:17:18  <piscisaureus_>because you are not using edge-triggered backends
16:17:42  <bnoordhuis>piscisaureus_: maybe i didn't explain it well
16:17:44  <piscisaureus_>unless you deregister all fds that are already dequeued - but that would be even worse for performance I think
16:17:48  <piscisaureus_>bnoordhuis: show me the code
16:18:04  <bnoordhuis>piscisaureus_: https://github.com/bnoordhuis/libuv/compare/rm-ev
16:18:14  <bnoordhuis>Showing 66 changed files with 957 additions and 56,264 deletions. <- awesome
16:18:26  <bnoordhuis>let me link you to the relevant bits :)
16:18:27  <piscisaureus_>nice
16:18:54  <bnoordhuis>piscisaureus_: https://github.com/bnoordhuis/libuv/compare/rm-ev#L54R196
16:19:02  <bnoordhuis>that's where it starts
16:19:12  <bnoordhuis>kqueue and event ports code is more or less the same
16:19:50  <bnoordhuis>oh, and i know about the superfluous if (pe->events & (UV__EPOLLERR | UV__EPOLLHUP)) statement
16:20:11  <piscisaureus_>bnoordhuis: not using faio?
16:20:38  <bnoordhuis>piscisaureus_: no. i decided it was easier/more easily integrable this way. it's clearly inspired by faio though
16:21:52  <piscisaureus_>bnoordhuis: I see what you mean but I don't see the point of it
16:22:11  <piscisaureus_>bnoordhuis: in case of heavy i/o this will just make timers suck more
16:22:35  <piscisaureus_>1024 is more than enough and it doesn't really save many syscalls
16:22:36  <bnoordhuis>piscisaureus_: well, not doing it has a pretty negative impact on performance/throughput
16:22:55  <bnoordhuis>i guess i should do some benchmarking to see what the golden value is
16:23:02  <piscisaureus_>ya
16:23:16  <piscisaureus_>I remember that on windows 64 was actually pretty much the sweet spot
16:23:21  <piscisaureus_>but it may not be completely comparabe
16:23:24  <piscisaureus_>*comparable
16:23:45  <piscisaureus_>because we have short-circuiting so in many cases events are not reported through the polling syscall
16:25:52  <bnoordhuis>still, performance is pretty good right now and there's still room for further improvement
16:25:56  <bnoordhuis>354898/s received, 355098/s sent. 1773072 received, 1774072 sent in 5.0 seconds. <- that's master
16:26:05  <bnoordhuis>361254/s received, 361299/s sent. 1820000 received, 1820224 sent in 5.0 seconds. <- that's rm-ev
16:26:20  <piscisaureus_>nice
16:26:56  <txdv>1%
16:27:26  <bnoordhuis>txdv: yeah, but this is the unoptimized version and it's already faster
16:27:26  <piscisaureus_>thanks for the heads up, txdv :-p
16:29:10  <bnoordhuis>and actually, after some runs i can say with confidence that the difference is more like 2% :)
16:32:31  * loladiroquit (Quit: loladiro)
16:32:43  * rendarjoined
16:33:54  * `3rdEdenchanged nick to `3E|FOODING
16:38:19  <bnoordhuis>48 rounds of 1024 events each seem to give the best throughput
16:38:23  <bnoordhuis>magic numbers...
16:45:21  * bradleymeckquit (Ping timeout: 252 seconds)
16:48:13  <MI6>joyent/libuv: Ben Noordhuis master * 09b0222 : bench: report proper benchmark name - https://github.com/joyent/libuv/compare/b9c8d196379d...09b022232aad
16:50:00  * travis-cijoined
16:50:01  <travis-ci>[travis-ci] joyent/libuv#871 (master - 09b0222 : Ben Noordhuis): The build passed.
16:50:01  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/b9c8d196379d...09b022232aad
16:50:01  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/3181918
16:50:01  * travis-cipart
16:51:21  * bradleymeckjoined
16:58:36  * TheJHjoined
17:00:17  * bradleymeckquit (Quit: bradleymeck)
17:07:46  * brsonjoined
17:19:33  * sblomjoined
17:25:12  * sgallaghquit (Remote host closed the connection)
17:56:22  * `3E|FOODINGchanged nick to `3rdEden
17:57:15  <piscisaureus_>gosh
17:57:28  <piscisaureus_>can't fcntl include unistd.h by itself ? :-(
18:01:02  * TooTallNatejoined
18:02:10  * c4milo_quit (Remote host closed the connection)
18:04:05  * AvianFlujoined
18:05:51  * brsonquit (Ping timeout: 276 seconds)
18:13:28  * Ralt_joined
18:14:16  * brsonjoined
18:19:31  * Ralt_quit (Remote host closed the connection)
18:20:25  * sgallaghjoined
18:20:46  * janjongboom_joined
18:20:46  * janjongboomquit (Read error: Connection reset by peer)
18:20:46  * janjongboom_changed nick to janjongboom
18:29:31  * loladirojoined
18:30:10  * `3rdEdenquit (Remote host closed the connection)
18:31:55  * c4milojoined
18:33:44  * joshthecoderjoined
18:42:56  * btraskquit (Quit: btrask)
18:48:57  * `3rdEdenjoined
18:49:12  * janjongboomquit (Quit: janjongboom)
18:50:44  * loladiroquit (Quit: loladiro)
18:58:45  * indexzerojoined
18:58:48  * Ralt_joined
19:00:00  * lohkeyjoined
19:02:30  * loladirojoined
19:04:17  * Ralt_quit (Remote host closed the connection)
19:09:13  * kohaiquit (Ping timeout: 268 seconds)
19:14:50  * paddybyersquit (Ping timeout: 260 seconds)
19:15:29  * AndreasMadsenjoined
19:28:58  * loladiroquit (Quit: loladiro)
19:34:29  * loladirojoined
19:34:47  * bradleymeckjoined
19:38:01  * loladiroquit (Client Quit)
19:40:40  * Ralt_joined
19:41:27  * lohkeyquit (Quit: lohkey)
19:45:19  <TooTallNate>piscisaureus_: do you have any thought on http://logs.libuv.org/libuv/2012-11-13#00:57:14.382 ?
19:46:40  <tjfontaine>TooTallNate: I think in the long run figuring out a way to teach binary modules to be able to link against each other is the ideal mechanism, in that case libogg itself could be its own module, that both node-ogg and node-vorbis depend on
19:46:51  <piscisaureus_>TooTallNate: you mean in general, or the windows parts?
19:47:26  <TooTallNate>piscisaureus_: both? :p
19:47:34  <TooTallNate>tjfontaine: i think that's easier said than done
19:47:43  <piscisaureus_>yes
19:47:43  <TooTallNate>tjfontaine: we basically have to play by unix/windows linking rules
19:47:57  <tjfontaine>TooTallNate: I didn't say it was easy, I just think it's the right path for other things to come
19:48:15  <tjfontaine>TooTallNate: if you want easy I think node-ogg and node-vorbis being separate doesn't make much sense, make them one module :)
19:48:18  <piscisaureus_>TooTallNate: on windows symbols are tied to a particular dll filename (not path). That's why you can move node.exe around but not rename it (when you want to use compiled addons anyway)
19:48:52  <piscisaureus_>TooTallNate: In theory you could also statically link libogg to node-ogg.node and use symbols from that file :-p
19:49:07  <TooTallNate>piscisaureus_: right, like the openssl-exports stuff right?
19:49:12  <piscisaureus_>TooTallNate: yeah
19:49:21  <TooTallNate>piscisaureus_: that'd be ideal really
19:50:01  <piscisaureus_>TooTallNate: if you can get node-gyp to generate a node-ogg.lib it will contain stubs for all exports that are in node-ogg.node.
19:50:11  <piscisaureus_>TooTallNate: then you can link node-vorbis to that.
19:50:20  <piscisaureus_>TooTallNate: you can also go wild with http://msdn.microsoft.com/en-us/library/151kt790.aspx :-)
19:50:32  <piscisaureus_>If you have a day or more
19:50:59  <tjfontaine>that doesn't sound very much different from just shipping libogg as a module
19:51:01  * `3rdEdenquit (Quit: brb, switching devices)
19:51:20  <tjfontaine>which from a gyp standpoint is an easier task
19:51:33  <TooTallNate>tjfontaine: i don't think it solves the problems though
19:51:47  <TooTallNate>piscisaureus_: how do we generate the node.lib file?
19:51:54  <TooTallNate>i can probably make node-gyp do it for addons
19:52:01  <tjfontaine>TooTallNate: not a "real module" that is loadable from require() but that just ships a .so|dll|dylib
19:52:02  <piscisaureus_>I would actually expect it to already do that
19:52:12  <tjfontaine>TooTallNate: it just happens to be installable with npm
19:52:52  <TooTallNate>tjfontaine: the real difficult part is that we don't know where node-ogg will be… it could be in vorbis/node_modules or, in a shared node_modules with vorbis, or who knows where
19:52:55  <piscisaureus_>TooTallNate: yes it already generates it
19:53:02  <TooTallNate>piscisaureus_: ahh, cool
19:53:05  * lohkeyjoined
19:53:06  * AvianFluquit (Remote host closed the connection)
19:53:19  <piscisaureus_>TooTallNate: now you need to get the linker to re-export libogg
19:54:03  <TooTallNate>piscisaureus_: easy in this case :) https://github.com/TooTallNate/node-ogg/blob/master/deps/libogg/win32/ogg.def
19:54:09  <piscisaureus_>TooTallNate: you do this by decorating function declarations with __declspec(dllexport) at compile time (so, when you're node-vorbis you should include libogg.h and make sure everything is decorated)
19:54:15  <piscisaureus_>or with a def file, it's also easy :-)
19:54:44  * `3rdEdenjoined
19:54:46  <TooTallNate>piscisaureus_: so how does vorbis.node know where ogg.node is when being loaded?
19:54:49  <piscisaureus_>I was not going to suggest that, because it's usually painful
19:55:06  <piscisaureus_>TooTallNate: well, if it's already loaded it should not matter.
19:55:06  <txdv>ogg.node?
19:55:21  <TooTallNate>piscisaureus_: do we use RTLD_GLOBAL?
19:55:26  <TooTallNate>i haven't checked :\
19:55:37  <piscisaureus_>TooTallNate: I don't know
19:55:39  * V1joined
19:55:40  <TooTallNate>txdv: https://github.com/TooTallNate/node-ogg
19:55:58  <TooTallNate>txdv: it actually gets built as "binding.node", i'm just calling it that here for clarity
19:56:20  <TooTallNate>piscisaureus_: ok cool, that's encouraging. i'll play around some more
19:56:21  <piscisaureus_>TooTallNate: ai, that may cause problems actualy
19:56:37  * paddybyersjoined
19:56:41  <piscisaureus_>TooTallNate: http://msdn.microsoft.com/en-us/library/windows/desktop/ms684179%28v=vs.85%29.aspx, see LOAD_WITH_ALTERED_SEARCH_PATH.
19:56:51  <piscisaureus_>That's how it locates .node files
19:57:54  <txdv>crazy stuff
19:57:54  <piscisaureus_>TooTallNate: you may end up having to fiddle with the delay loader ...
19:58:13  <TooTallNate>AddDllDirectory() or something?
19:58:46  <piscisaureus_>TooTallNate: well - if you use normal loading you can't call anything, because it will resolve references at load time.
19:58:54  * `3rdEdenquit (Ping timeout: 240 seconds)
19:59:02  <piscisaureus_>I mean, loading the dll will already have failed before any of your own code runs
19:59:36  <piscisaureus_>TooTallNate: with delay loading you can pretty much do anything. It gives you sort of a "callback" when it is missing a symbol, and it will give you the opportunity to look it up.
20:00:02  <TooTallNate>piscisaureus_: how are we re-exporting the symbols on the other platforms?
20:00:13  <tjfontaine>it's not necessary currently with the osx linker
20:00:15  <piscisaureus_>TooTallNate: by just not stripping them
20:00:41  <piscisaureus_>TooTallNate: and on linux we're currently re-exporting by accident only, but we'll move to the not-stripping method
20:02:59  * Ralt_quit (Remote host closed the connection)
20:06:13  * V1changed nick to `3rdEden
20:06:32  * kazuponquit (Remote host closed the connection)
20:09:39  * AndreasMadsenquit (Remote host closed the connection)
20:12:44  * AndreasMadsenjoined
20:15:37  * bradleymeckquit (Quit: bradleymeck)
20:25:38  * stagas_joined
20:26:09  * EhevuTovjoined
20:30:25  * AndreasMadsenquit (Remote host closed the connection)
20:35:05  * Ralt_joined
20:36:11  <piscisaureus_>Why did ansi c never add something to get the size of a heap allocated block
20:36:36  <piscisaureus_>I mean, it knows to do realloc - it should be possible to get the size of a memory block at all times
20:36:55  * kazuponjoined
20:37:24  * Ralt_quit (Remote host closed the connection)
20:38:10  <CoverSlide|TPFR>wouldn't it be like anything else in c-land? keep track of it yourself?
20:38:47  <piscisaureus_>sure, it's easy to keep track of it
20:38:59  * AvianFlujoined
20:39:10  <piscisaureus_>but I mean, it seems so obvious and so easy to implement
20:46:18  * kazuponquit (Ping timeout: 260 seconds)
20:46:34  * paddybyersquit (Ping timeout: 240 seconds)
20:47:42  * Ralt_joined
20:55:00  * sgallaghquit (Remote host closed the connection)
21:03:36  * loladirojoined
21:04:26  * loladiroquit (Client Quit)
21:11:24  * loladirojoined
21:42:19  <bnoordhuis>why does talk.google.com:5223 use a self-signed certificate? wth google?
21:43:05  * kazuponjoined
21:45:45  <indutny>:)
21:46:27  * rendarquit
21:48:06  * kazuponquit (Ping timeout: 264 seconds)
21:49:06  <bnoordhuis>ah, somehow openssl s_client is not using my system's default ca store
21:49:30  <bnoordhuis>i guess ubuntu botched something, ffs
21:49:46  <piscisaureus_>stupid os
21:53:28  * `3rdEdenquit (Remote host closed the connection)
21:53:45  <bnoordhuis>you learn something new everyday, ubuntu has not one but two certificate stores, one in /etc/ssl/certs and one in /usr/share/ca-certificates
21:54:12  * lohkeyquit (Quit: lohkey)
21:55:58  <bnoordhuis>they both have the right ca cert though, so i guess s_client uses neither
22:07:32  * paddybyersjoined
22:08:49  * warzquit
22:10:03  * Ralt_quit (Remote host closed the connection)
22:13:29  * indexzeroquit (Quit: indexzero)
22:24:17  * `3rdEdenjoined
22:31:53  * EhevuTov_joined
22:32:38  * `3rdEdenquit (Ping timeout: 245 seconds)
22:34:43  * EhevuTovquit (Ping timeout: 246 seconds)
22:34:51  <piscisaureus_>tired
22:34:56  <piscisaureus_>going to bed
22:35:02  <piscisaureus_>goodbye peepz
22:35:24  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
22:35:26  <indutny>bye bye
22:41:18  * c4miloquit (Remote host closed the connection)
22:42:31  * lohkeyjoined
22:42:45  * joshthecoderquit (Quit: Leaving...)
22:43:51  * kazuponjoined
22:46:56  * EhevuTov_quit (Quit: Leaving)
22:47:25  * EhevuTovjoined
22:48:21  * kazuponquit (Ping timeout: 252 seconds)
22:50:50  * warzjoined
22:52:55  * lohkeyquit (Quit: lohkey)
22:53:36  * AvianFluquit (Remote host closed the connection)
23:18:56  * TheJHquit (Ping timeout: 255 seconds)
23:19:22  * yunongjoined
23:33:27  * hzquit
23:33:39  * xer0xjoined
23:35:35  * xer0xquit (Client Quit)
23:35:56  * xer0xjoined
23:36:47  * joshthecoderjoined
23:41:03  * yunongpart
23:41:47  <warz>hm. im trying to think of a quick and easy way to see if a function in a third party lib im using performs any disk io.
23:44:35  * kazuponjoined
23:49:16  * kazuponquit (Ping timeout: 246 seconds)
23:53:00  * xer0xquit (Quit: Lost terminal)
23:53:09  <bnoordhuis>warz: strace
23:56:58  <warz>hm, ok looking into that
23:57:45  <warz>oh wow looks like a powerful tool