00:00:10  <tjfontaine>how long has that been a problem?
00:00:57  <tjfontaine>or is there 1 person out there using fbsd and they finally wanted a binary addon? :)
00:01:37  <piscisaureus_>I think EhevuTov uses fbsd
00:01:48  <piscisaureus_>yay
00:01:51  <piscisaureus_>my asm works
00:01:52  <piscisaureus_>phew
00:02:02  <bnoordhuis>tjfontaine: i got like four independent bug reports actually
00:02:02  * pieternquit (Quit: pietern)
00:02:02  <EhevuTov>reading...
00:02:08  <tjfontaine>bnoordhuis: nice
00:02:18  <bnoordhuis>tjfontaine: that's probably the whole freebsd user base though :)
00:02:21  <tjfontaine>piscisaureus_: but does it improve performance? :)
00:02:23  <tjfontaine>bnoordhuis: heh
00:02:26  <piscisaureus_>I dont know yet
00:02:31  <EhevuTov>are you talking about the add-on-freebsd bug?
00:02:35  <bnoordhuis>EhevuTov: yes
00:02:58  <piscisaureus_>indutny: what were you using to test ssl handshake performance?
00:03:05  <EhevuTov>ah, yeah bnoordhuis tipped me to that one. I won't have time to test until this weekend. Even then, i might not understand it enough to fix
00:03:12  <piscisaureus_>indutny: or do I have to write something myself?
00:03:13  <EhevuTov>but, I could help test without a doubt
00:03:57  <bnoordhuis>EhevuTov: oh, don't worry - i verified it myself with a couple of add-ons
00:04:18  <bnoordhuis>EhevuTov: nothing spectacular btw, it was a missing linker switch
00:04:27  <EhevuTov>bnoordhuis, oh did you get it fixed?!
00:04:37  <bnoordhuis>EhevuTov: http://git.io/7Bvjjg :)
00:04:53  * dapquit (Remote host closed the connection)
00:05:27  * dapjoined
00:05:32  <tjfontaine>https://github.com/hcilab is a creepy little bot
00:05:39  <EhevuTov>ah, a linker issue. Well that's cool. Thanks!
00:06:54  <EhevuTov>bnoordhuis, how'd you come to find out what the problem was? Just that it was looking for a symbol that wasn't there?
00:07:39  <bnoordhuis>EhevuTov: oh, not at all, just some deductive reasoning
00:08:13  <bnoordhuis>EhevuTov: i.e. fact: the symbol is in the binary, fact: dlopen() fails to resolve it, conclusion: somehow the symbol is not visible to dlopen()
00:08:31  <EhevuTov>just surprised other nix environments, particularly mac didn't error also
00:08:32  <tjfontaine>bnoordhuis: don't lie, you're an evil genius
00:08:41  <EhevuTov>^
00:08:48  <tjfontaine>EhevuTov: mac has a different set of default linker flags
00:08:58  <bnoordhuis>tjfontaine: evil, no doubt. genius, that's for others to decide
00:09:02  <bnoordhuis>how modest of me, eh?
00:09:12  <EhevuTov>ah, I use clang on fBSD. I'm not sure if that has it's own linker or not
00:09:18  <tjfontaine>bnoordhuis: well piscisaureus_ is convinced enough for the both of you
00:09:28  <bnoordhuis>haha, true that
00:09:48  <tjfontaine>EhevuTov: everyone should use clang+llvm, and it has its own linker but I don't think it works well outside of macho world (yet)
00:09:50  <EhevuTov>actually, I wonder if gyp overrides my clang or not
00:10:04  <EhevuTov>it will be default in fBSD 10
00:10:16  <tjfontaine>http://lld.llvm.org
00:10:35  <TooTallNate>EhevuTov: gyp just invokes `cc` and `c++`; whatever those are linked to
00:13:08  <piscisaureus_>C:\programming\wamp\bin\apache\Apache2.2.21\bin>ab
00:13:08  <piscisaureus_>SSL not compiled in; no https support
00:13:10  <piscisaureus_>:(
00:13:14  <EhevuTov>TooTallNate, ok cool. I modify my /etc/make.conf for CC=clang so good to know
00:13:18  <bnoordhuis>tjfontaine: i don't know. gcc is in many cases still a lot smarter
00:13:36  <tjfontaine>bnoordhuis: those cases you should be filing bugs for
00:13:52  <bnoordhuis>like i have nothing better to do :)
00:14:03  <tjfontaine>bnoordhuis: at least tell me so I can file them :)
00:14:14  <tjfontaine>and then pester the right people in irc
00:14:42  <bnoordhuis>tjfontaine: oh, i guess that's easy. take any non-trivial program, compile with both gcc and clang and compare the assembly output
00:14:54  <tjfontaine>bnoordhuis: ha ha ha
00:15:25  <bnoordhuis>:)
00:15:32  <tjfontaine>bnoordhuis: in my cases of non-trivial I have not found a significant impact either way
00:15:58  <tjfontaine>1 ~ 3% in favor or against clang built binaries
00:16:35  <bnoordhuis>tjfontaine: performance or tightness-of-generated-code?
00:16:35  <tjfontaine>not enough for my to cry about, the code base improvements and the quality of error diagnostics are enough for me to stick with clang+llvm (not to mention the eventual universal driver for cross compiling)
00:17:16  <tjfontaine>bnoordhuis: I don't necessarily dive too much into the asm, I take it as correlation that one implies the other :)
00:17:53  <tjfontaine>from watching the irc channel though, I know that google is investing heavily in improving codegen
00:18:00  <EhevuTov>I'm hunkering down more on C and learning of course. I'm finding clang to teach me a bit more. Not sure about runtime yet
00:18:12  <bnoordhuis>tjfontaine: yeah, i've noticed that
00:18:39  <bnoordhuis>isaacs: https://github.com/joyent/node/pull/3700#issuecomment-6950851 <- the guy has a point about setuid root + $HOME. i guess we should fix that
00:19:37  <bnoordhuis>EhevuTov: re learning C - at what level would you describe yourself?
00:20:58  <tjfontaine>a danger to myself and others.
00:21:03  <EhevuTov>I did the usual c/c++ in college, did odd jobs in higher-level languages, became an engineer where I didn't program hardly at all in lower-level. But I have a good knowledge of SNMP and have now found myself programming C full-time for the last few months
00:21:20  <bnoordhuis>feels good, doesn't it?
00:21:23  <EhevuTov>I would consider myself still a beginner, but I know more than most of the programmers around me in C
00:21:43  <EhevuTov>I love programming in C
00:21:55  <mitsuhiko>bnoordhuis: is it supposed to be safe to run node as setuid root?
00:22:10  <tjfontaine>is it safe to run node?
00:22:32  <bnoordhuis>mitsuhiko: it isn't now
00:22:45  <EhevuTov>I try to study your code and piscisaureus_ code when I can for libuv. I'm finding the mental context switching between Javascript and C, while trying to learn both better, to be a bit challenging
00:23:14  <EhevuTov>I also love assembly and was the best in my class at it, but haven't had much real-world experience in it
00:23:30  <tjfontaine>EhevuTov: c, c++, and js -- they really need some more functional languages in their lives
00:24:57  <EhevuTov>tjfontaine, so, do you think that since JS can save 'state', it's not functional? Just curious, cause I was taught it wasn't a fully functional language
00:25:13  <EhevuTov>seems to be which book you read, to me
00:25:30  <bnoordhuis>also how pedantic your professor is
00:25:37  <tjfontaine>ya, it's close enough for me
00:26:44  <EhevuTov>Do most of you run your fBSD tests (if you do) in a VM?
00:26:58  <piscisaureus_>https://github.com/joyent/node/pull/3701 <-- why do we want this? bnoordhuis / TooTallNate ?
00:28:11  <bnoordhuis>piscisaureus_: because i like pink and i can't have that now
00:28:41  <piscisaureus_>bnoordhuis: It's not that I mind this particular patch, but it's so much a slippery slope
00:29:01  <piscisaureus_>There's people that think node should be the new bash
00:29:13  <tjfontaine>people thought that about c# too
00:29:17  <piscisaureus_>and like have one billion customization options
00:29:22  <bnoordhuis>EhevuTov: both. i've some vms + two machines with resp. fbsd 8 and 9
00:29:29  <piscisaureus_>the next patch will be console.ponies()
00:29:48  <bnoordhuis>piscisaureus_: oh, if you want to shoot it down, go ahead - i don't care that much
00:29:50  <tjfontaine>piscisaureus_: sorry it's process.ponies()
00:31:34  <tjfontaine>btw, is the handle.unref refactor blocking on the desired stream refactor work?
00:31:54  <piscisaureus_>no
00:32:05  <piscisaureus_>not for tcp streams atleast
00:32:29  <tjfontaine>ok, do you guys have an idea of how you want that to look so I can take a swing at it?
00:33:31  <piscisaureus_>euh, well, I suppose we just want Stream.ref() and Stream.unref()
00:34:23  <piscisaureus_>I am thinking if there are any edge cases where this breaks
00:36:01  <tjfontaine>I mean, HandleWrap already has Ref/Unref it's just a matter of making TcpWrap and UdpWrap do the right things
00:36:19  <piscisaureus_>yeah
00:36:29  <piscisaureus_>I am trying to remember why we didn't put it in 0.8
00:36:36  <tjfontaine>I just don't think we got around to it
00:37:05  <tjfontaine>bnoordhuis wanted something generic that would just work for everything, I guess timers may not fit that bill?
00:37:11  <piscisaureus_>oh, sure
00:37:17  <piscisaureus_>timers is much more important actually :-)
00:37:38  <piscisaureus_>unrefing a stream has very little to it
00:37:47  <piscisaureus_>but you definitely want to unref() timers
00:37:50  <piscisaureus_>so go make that work ()
00:38:06  <tjfontaine>hehe, ok :)
00:40:05  * xaqquit (Read error: Connection reset by peer)
00:40:26  * xaqjoined
00:44:56  <piscisaureus_>https://github.com/joyent/node/pull/3701#issuecomment-6951800
00:45:36  <tjfontaine>he *really* cares
00:48:47  <piscisaureus_>yeah
00:48:53  <piscisaureus_>so now what?
00:49:06  <piscisaureus_>this patch won't solve his problem because bnoordhuis turned down his .noderc patch
00:50:08  <tjfontaine>tough titties, it can't be that difficult to make your own repl and util.inspect modification
00:50:09  <piscisaureus_>And I don't supose that he will go set all the colors manually every time he fires up node.
00:50:10  <piscisaureus_>MUHAHAHAHAHAHA
00:50:10  <piscisaureus_>^-- sardonic laugh
00:50:10  <piscisaureus_>So I'd say we either think of a good solution, or none at all :-)
00:50:38  <tjfontaine>loudbot always on point as ever
00:50:42  <mitsuhiko>ROFL
00:50:46  <piscisaureus_>LOUDBOT: whosaid
00:50:47  <LOUDBOT>piscisaureus_: buu in #perl on freenode
00:52:19  <TooTallNate>+1 for a custom repl
00:52:27  <TooTallNate>(to solve that guy's problem)
00:52:34  <TooTallNate>or he could use ultra-repl :p
00:55:42  * ericktquit (Ping timeout: 265 seconds)
01:06:54  <bnoordhuis>man, spammers are really into localization lately
01:07:42  <tjfontaine>piscisaureus_: what if unref pulled the timer from the global list and instantiated a new Timer then .unref'd that, with a caveat in the documentation that unref'ing too many timers will result in bad blah blah blah
01:07:53  <tjfontaine>or bnoordhuis can comment on that as well
01:07:54  <bnoordhuis>i've been getting tons of spam mails asking if i want to open a 28% interest rate savings account at my local bank
01:08:02  <tjfontaine>bnoordhuis: absolutely you do
01:08:09  <piscisaureus_>yes, I would do it too
01:08:10  <bnoordhuis>color me interested :)
01:08:40  <piscisaureus_>tjfontaine: maybe you could create a second global list for unref'ed timers?
01:08:47  <piscisaureus_>tjfontaine: but yeah I suppose that's okay
01:08:58  <tjfontaine>piscisaureus_: a secondary list would work as well
01:09:08  <bnoordhuis>i second the secondary list proposal
01:09:19  <piscisaureus_>tjfontaine: setTimeout is not typically a big concern btw, it's the net.Socket timeout that matters
01:09:22  <bnoordhuis>loose timers seem like potential maintenance/debugging pitfalls
01:09:31  * EhevuTovquit (Quit: This computer has gone to sleep)
01:09:59  <piscisaureus_>bnoordhuis: I don't quite understand what you mean with "loose timers". Timers that are not in a list?
01:10:04  <bnoordhuis>piscisaureus_: yes
01:10:05  <tjfontaine>nod, the net.Socket net.Server and dgram.Socket all work as expected though without any real fuss
01:10:12  <bnoordhuis>not loose as in 'loose girls'
01:10:19  <tjfontaine>[I wish we could have gotten that in 0.8]
01:10:37  <bnoordhuis>timers that'll expire for just anybody
01:10:37  <tjfontaine>they're api additions, not changes! :)
01:10:43  <tjfontaine>bnoordhuis: groan
01:11:01  <bnoordhuis>you should see me on birthday parties
01:11:30  <bnoordhuis>uncomfortable silences are just the start of it
01:11:31  <piscisaureus_>bnoordhuisL have you been using pot? You make no sense tonight...
01:11:52  <piscisaureus_>POT
01:12:02  <piscisaureus_>doesn't trigger loudbot
01:12:04  <piscisaureus_>ABCD
01:12:06  <tjfontaine>more than one word
01:12:07  <bnoordhuis>piscisaureus_: hah, no. it's because i didn't sleep much last night
01:12:12  <piscisaureus_>POT POT
01:12:18  <bnoordhuis>POL POT
01:12:33  <piscisaureus_>whosaid
01:12:38  <piscisaureus_>LOUDBOT: whosaid
01:12:38  * dapquit (Quit: Leaving.)
01:12:38  <LOUDBOT>piscisaureus_: lewellyn in ##turtles on freenode
01:12:47  <piscisaureus_>turtles is good for a lot of these
01:12:59  <bnoordhuis>that lewellyn guy is an unending source of quotes, it seems
01:16:26  * c4milojoined
01:16:42  <piscisaureus_>LOUDBOT: search bnoordhuis
01:16:43  <LOUDBOT>piscisaureus_: <lewellyn_:##turtles> BNOORDHUIS SHOULD SHUT THE FUCK UP
01:17:20  <bnoordhuis>LOUDBOT: search piscisaureus_
01:17:20  <LOUDBOT>bnoordhuis: <piscisaureus_:#libuv> WHAT ARE WE SUPPOSED TO DO NOW, HUH
01:17:42  <bnoordhuis>ey
01:18:25  * abraxasjoined
01:20:06  <piscisaureus_>LOUDBOT: search bnoordhuis
01:20:06  <LOUDBOT>piscisaureus_: <lewellyn_:##turtles> BNOORDHUIS SHOULD SHUT THE FUCK UP
01:20:09  <piscisaureus_>LOUDBOT: search bnoordhuis_
01:20:09  <LOUDBOT>piscisaureus_: <bnoordhuis_:##turtles> I LOVE JUSTIN BIEBER
01:20:17  <bnoordhuis>haha, what?
01:20:32  <bnoordhuis>lies! i only like his hairdo
01:50:56  <tjfontaine>oh nice, I got intervals for free, this is really just for timeout
01:57:31  * toothrotquit (*.net *.split)
01:58:26  * ericktjoined
01:59:53  <tjfontaine>neat it works, but I'm sure this will get frowny points
02:10:14  <TooTallNate>lol, well this room is chaos since i last checked :p
02:10:25  * toothrotjoined
02:17:32  <isaacs>i *really* do not want to go the route of writing a .noderc file.
02:17:48  <bnoordhuis>you and me both brother
02:17:50  <isaacs>bnoordhuis, piscisaureus_ ^
02:18:06  <isaacs>bnoordhuis: i have no problem exposing util.inspect.colors though
02:18:14  <isaacs>then people can write their own repls with their own colors.
02:18:23  <isaacs>but: master, not 0.8
02:18:31  <bnoordhuis>isaacs: you should tell that to TooTallNate, not me :)
02:19:05  <isaacs>also, we should revive that patch from a while ago with setting the default inspect fields that console.log uses
02:19:13  <isaacs>that's always kind of annoying
02:19:24  <isaacs>console.log(util.inspect(srsly?))
02:20:08  <isaacs>the rc file, though, no. no way in hell. that's a terrible idea.
02:21:03  <tjfontaine>https://github.com/tjfontaine/node/compare/unref
02:21:50  <tjfontaine>I know, no tests or documentation at the moment :)
02:22:08  <isaacs>bnoordhuis: what's the point that he has about setuid bins?
02:22:43  <bnoordhuis>isaacs: i said that loading code from $NODERC is dangerous with suid root binaries (which it is)
02:23:16  <bnoordhuis>isaacs: he pointed out that node will happily load code from $HOME/node_modules
02:23:25  <bnoordhuis>(or whatever it's called)
02:23:31  <bnoordhuis>which is just as dangerous
02:23:33  <isaacs>right, but only if your program require()s it
02:23:42  <isaacs>not every time node starts up
02:23:47  <bnoordhuis>yes, that's true
02:24:01  <isaacs>and $HOME/.node_libraries is *lower* in priority than the localized node_modules folders.
02:24:18  <isaacs>i mean, that's just relics. no one uses that but stone age node programs.
02:24:59  <bnoordhuis>as long as it doesn't turn up as a CVE
02:25:29  * TooTallNatequit (Quit: Computer has gone to sleep.)
02:32:17  * EhevuTovjoined
02:46:53  <piscisaureus_>I always wonder where the DataView global comes from. Is that TypedArray related?
02:47:15  <tjfontaine>sounds like a good guess
02:47:35  <tjfontaine>mdn seems to suggest so
02:47:41  <piscisaureus_>speaking about globals, I now have DTRACE_NET_SERVER_CONNECTION() as a global
02:47:46  <piscisaureus_>(on windows)
02:49:35  <tjfontaine>piscisaureus_: how does this look? https://github.com/tjfontaine/node/commit/e90266c7
02:51:49  <isaacs>piscisaureus_: it's taunting you
02:53:12  <piscisaureus_>tjfontaine: well, umm, it looks like it will work. But you should build and benchmark with http_simple :-)
02:53:33  <piscisaureus_>tjfontaine: and, beyond the obvious, check that all the tests pass :-)
02:54:11  <tjfontaine>piscisaureus_: well, I mean, I didn't want to hit a style nazi and/or hear that there was something glaringly obvious wrong with it :)
02:54:26  <piscisaureus_>tjfontaine: not obviously, no.
02:54:44  <tjfontaine>ok thanks
02:55:00  <piscisaureus_>tjfontaine: what you could consider is to set the list itself as a property on the timer object
02:55:07  <piscisaureus_>tjfontaine: instead of the name of the list
02:55:30  <tjfontaine>I had that, initially, but I thought it might get ugly if people started to muck with it itself, or they cloned it etc
02:56:08  <tjfontaine>not that they should do those things, but people can be evil/idiots
02:56:27  <piscisaureus_>yeah, true that
02:57:15  <piscisaureus_>Although I don't mind when people start hacking internal stuff. I like it that you can do that stuff with node
02:57:23  <piscisaureus_>as long as they don't file issues about it :-)
02:57:29  <tjfontaine>haha indeed
03:02:08  <piscisaureus_>I have the feeling that I am becoming more and more like this grumpy maintainer archetype
03:02:35  <piscisaureus_>whatever, I am going to sleep
03:02:39  <piscisaureus_>goodbye kids
03:04:56  <bnoordhuis>piscisaureus_: sleep tight, bertje
03:05:12  <piscisaureus_>dankje,
03:05:15  <piscisaureus_>bennetje
03:05:26  <piscisaureus_>niet te veel aan Justin Bieber denken
03:05:30  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
03:07:30  <tjfontaine>man, timers.active(this) is an evil pattern
03:15:51  * joeandaverdejoined
03:16:25  * philips_quit (Excess Flood)
03:19:10  * philips_joined
03:23:31  * brsonquit (Quit: leaving)
03:28:46  * AlbireoXquit (Quit: IRC crashed.)
03:28:51  <joeandaverde>I'm trying to create a node.js clone that shows how node.js combines libuv and v8 to create network servers. I'd like some guidance on some code i've written. I'm fairly inexperienced with c++. I'm also a bit uncertain of what a good pattern would be to invoke callbacks into js when a connection comes in over http.
03:29:01  * AlbireoXjoined
03:29:12  <joeandaverde>http://github.com/joeandaverde/joed/blob/master/joed.cpp heres what i've written
03:30:22  <joeandaverde>Any feedback would be greatly appreciated… i'm really wanting to understand this fully
03:32:41  * beachdogjoined
03:38:17  * beachdogquit (Quit: beachdog)
03:38:31  * beachdogjoined
03:39:56  * beachdogquit (Remote host closed the connection)
03:40:26  * beachdogjoined
03:41:52  * bnoordhuisquit (Ping timeout: 252 seconds)
03:57:19  * brsonjoined
04:24:43  * c4miloquit (Remote host closed the connection)
04:28:55  * perezdquit (Quit: perezd)
05:12:42  * theColequit (Quit: theCole)
05:40:26  * mmaleckijoined
05:40:52  * xaqquit (Remote host closed the connection)
05:43:21  * ericktquit (Quit: erickt)
05:59:04  * paddybyersjoined
06:06:53  * beachdogquit (Ping timeout: 246 seconds)
06:23:09  * sh1mmerquit (Quit: sh1mmer)
06:43:29  * stephankquit (Quit: *Poof!*)
06:46:37  * mmaleckiquit (Ping timeout: 255 seconds)
06:52:28  * brsonquit (Ping timeout: 255 seconds)
06:59:07  * AvianFluchanged nick to AvianusAsleepus
07:22:29  * loladirojoined
07:28:19  * rendarjoined
07:32:00  <indutny>hoya
08:14:13  * paddybyers_joined
08:17:14  * paddybyersquit (Ping timeout: 252 seconds)
08:17:14  * paddybyers_changed nick to paddybyers
08:18:16  * mmaleckijoined
08:26:29  * sh1mmerjoined
08:53:31  <mitsuhiko>does anyone know any streming based json parsers that would work well with libuv?
08:53:38  <mitsuhiko>(language requirement would be c)
09:00:55  <sh1mmer>there aren't that many streaming json parser at all are there?
09:01:29  <indutny>I know few js ones
09:03:07  <sh1mmer>events on what, complete properties?
09:05:36  * loladiroquit (Quit: loladiro)
09:08:28  <mitsuhiko>hmm. looks like yajl might work
10:00:53  * EhevuTovquit (Quit: This computer has gone to sleep)
10:03:30  * hzjoined
10:07:40  * mmaleckiquit (Ping timeout: 265 seconds)
10:08:46  * hzquit (Ping timeout: 272 seconds)
10:13:19  * hzjoined
10:24:57  * mmaleckijoined
10:27:47  * sh1mmerquit (Quit: sh1mmer)
10:28:09  * abraxasquit (Remote host closed the connection)
11:13:36  * hzquit
12:07:17  * hij1nxjoined
12:09:14  * hzjoined
12:16:55  * bnoordhuisjoined
12:33:10  * hzquit (Ping timeout: 272 seconds)
12:36:43  * hzjoined
12:44:19  * c4milojoined
12:53:45  <bnoordhuis>indutny: now i know for sure you're not using gyp to build libuv :)
12:53:57  <indutny>hahahahahah
12:53:58  <indutny>bnoordhuis: right :)
12:57:44  <indutny>bnoordhuis: does it looks good to you?
12:59:12  <CIA-108>libuv: Fedor Indutny v0.8 * rdc97d44 / (7 files in 3 dirs): unix: move uv_set_process_title() to proctitle.c - http://git.io/iZ9qxQ
12:59:35  <bnoordhuis>indutny: ^
13:00:12  <indutny>this answers my question weel
13:00:16  <indutny>well*
13:00:48  * c4miloquit (Remote host closed the connection)
13:01:22  * travis-cijoined
13:01:22  <travis-ci>[travis-ci] joyent/libuv#491 (v0.8 - dc97d44 : Fedor Indutny): The build is still failing.
13:01:22  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/3726dee5e932...dc97d44c561c
13:01:22  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1855744
13:01:22  * travis-cipart
13:06:43  * hij1nxquit (Quit: hij1nx)
13:08:19  <CIA-108>libuv: Ben Noordhuis v0.8 * ra87abc7 / src/unix/proctitle.c : unix: avoid buffer overflow in proctitle.c - http://git.io/RNQ36Q
13:09:52  * joeandaverdequit (Quit: joeandaverde)
13:11:22  * travis-cijoined
13:11:22  <travis-ci>[travis-ci] joyent/libuv#492 (v0.8 - a87abc7 : Ben Noordhuis): The build is still failing.
13:11:22  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/dc97d44c561c...a87abc7070de
13:11:22  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1855806
13:11:22  * travis-cipart
13:17:44  <mitsuhiko>god i love libuv. it's not even funny
13:18:17  <mitsuhiko>this is how you write c libraries :-)
13:18:34  * loladirojoined
13:26:17  * c4milojoined
13:28:39  <bnoordhuis>glad to hear that :)
13:41:46  <bnoordhuis>$ node -e 'process.title = Array(42).join("%s")'
13:41:46  <bnoordhuis>Segmentation fault: 11 (core dumped)
13:41:58  <bnoordhuis>^ format string vuln on freebsd :/
13:42:09  <tjfontaine>awesome
13:42:25  <AvianusAsleepus>lolnice
13:42:30  * AvianusAsleepuschanged nick to AvianFlu
13:44:55  <tjfontaine>does test-child-process-customfd-bounded on master fail for anyone else on osx?
13:45:17  * c4miloquit (Remote host closed the connection)
13:54:15  <indutny>bnoordhuis: :(
13:54:20  <indutny>not good
13:54:47  <indutny>should we escape this?
13:55:21  <bnoordhuis>indutny: no, it's trivial to fix - setproctitle("%s", s) instead of setproctitle(s)
14:03:11  <indutny>oh
14:03:12  <indutny>right
14:16:18  <bnoordhuis>according to the bbc's bmi calculator, i'm most likely a pakistani...
14:16:44  <tjfontaine>that should be said in all caps for loudbot to regurgitate
14:16:49  <bnoordhuis>hah
14:16:54  <bnoordhuis>for the interested: http://www.bbc.co.uk/news/health-18770328
14:17:51  <tjfontaine>I'm from armenia apparently
14:18:38  <bnoordhuis>what does that say about you?
14:18:53  <tjfontaine>I'm not really sure
14:20:25  <mitsuhiko>hmm. http-parser could need some love to make it more user friendly
14:20:35  <mitsuhiko>handling header splitting and continuations is not fun in c
14:22:18  <bnoordhuis>i don't dig that it's callback based, frankly
14:22:30  <bnoordhuis>callbacks only make sense if something is asynchronous, which http-parser isn't
14:24:07  * piscisaureus_joined
14:27:17  * hzquit
14:27:32  * xaqjoined
14:28:43  <mitsuhiko>bnoordhuis: well… it's the natural way to do that without buffering stuff up
14:29:44  <bnoordhuis>mitsuhiko: oh, i mean that http_parser_execute() should ideally return a parse info struct, not invoke callbacks
14:29:58  <mitsuhiko>oh yes indeed
14:34:08  * wankdankerquit (Quit: Konversation terminated!)
14:37:23  <mitsuhiko>bnoordhuis: do you think there would be use in writing another HTTP library for libuv?
14:37:29  <mitsuhiko>a slightly higher level one
14:38:03  <bnoordhuis>mitsuhiko: http-parser and libuv aren't really related, they just go well together
14:38:13  <mitsuhiko>you know what i mean though :)
14:38:31  <bnoordhuis>sure, if you want to write a new parser, go ahead
14:41:30  * c4milojoined
14:45:04  <bnoordhuis>https://gist.github.com/42667714666c727cccb4 <- setproctitle("%s", "test") - lots of invalid read/writes in libc...
14:45:16  <bnoordhuis>freebsd *sigh*
14:46:28  <mmalecki>bnoordhuis: code style in that C file makes pandas cry
14:47:11  <bnoordhuis>mmalecki: that's because pandas aren't Real Programmers
14:51:33  * hzjoined
14:54:22  * loladiroquit (Quit: loladiro)
14:55:45  <mitsuhiko>bnoordhuis: wtf
14:56:35  * loladirojoined
14:56:51  * mralephjoined
14:57:09  * mjr__joined
15:07:59  * hij1nxjoined
15:22:17  * hij1nxquit (Read error: No route to host)
15:22:57  * hij1nxjoined
15:24:18  <piscisaureus_>bnoordhuis: https://gist.github.com/3105452 <-- can you try that for me. Put it in the "benchmark" dir to work out of the box
15:24:28  <CIA-108>libuv: Ben Noordhuis v0.8 * ra9f6f06 / (src/unix/freebsd.c test/test-process-title.c): unix: fix format string vulnerability in freebsd.c - http://git.io/7MVsSw
15:25:35  <bnoordhuis>piscisaureus_: my system is kind of overloaded atm
15:25:49  <piscisaureus_>bnoordhuis: you, or your system?
15:26:06  <bnoordhuis>piscisaureus_: my system :) i'm compiling various things
15:26:22  <bnoordhuis>i'll try it in a few
15:26:35  * travis-cijoined
15:26:36  <travis-ci>[travis-ci] joyent/libuv#493 (v0.8 - a9f6f06 : Ben Noordhuis): The build is still failing.
15:26:36  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/a87abc7070de...a9f6f06feaf0
15:26:36  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/1856963
15:26:36  * travis-cipart
15:27:15  <tjfontaine>10000 connections in 22.145 s
15:27:16  <tjfontaine>452 connections per second
15:27:30  <tjfontaine>for master on my ubuntu 12.04 vm
15:28:04  <tjfontaine>x86_64
15:28:13  <tjfontaine>presuming that is pertinent information
15:32:33  <mmalecki>any idea how to dtrace non-blocking, async connect(2)? it returns EINPROGRESS so return value has no meaning. call is made by libuv
15:33:03  <bnoordhuis>mmalecki: trace getsockopt
15:33:26  <isaacs>good morning, heroes
15:35:12  <mmalecki>bnoordhuis: hm, how'd that work tho? what's the connection between connect and getsockopt?
15:36:05  <bnoordhuis>mmalecki: libuv checks with getsockopt(SOL_SOCKET, SO_ERROR) if the connection's been established
15:36:59  <mmalecki>bnoordhuis: right, so on entry I check if params match and if errno is set?
15:37:13  <bnoordhuis>mmalecki: on entry of what?
15:37:19  <mmalecki>bnoordhuis: getsockopt
15:37:45  <bnoordhuis>mmalecki: don't check errno, check that fd is the one connect() returned
15:38:06  <bnoordhuis>getsockopt only sets errno if the getsockopt syscall itself fails
15:38:48  <mmalecki>bnoordhuis: right, but I need to know what's the connect(2) errno
15:38:55  <bnoordhuis>my local copy of the freebsd tree was a little behind, the delta is over 640 mb...
15:39:31  <bnoordhuis>mmalecki: that's returned in the fourth param, &errorno
15:39:43  <mmalecki>bnoordhuis: cool, thanks :)
15:50:53  * hij1nxquit (Quit: hij1nx)
15:52:18  <mitsuhiko>interesting how http_parser already has to parse some headers internally (like upgrade) but does not expose that
15:53:48  <piscisaureus_>indutny: hey
15:54:20  <piscisaureus_>tjfontaine: right, cool
15:54:36  <indutny>hey bertje
15:54:38  <indutny>piscisaureus_: ^
15:54:48  <bnoordhuis>warning: 175370 lines add whitespace errors.
15:55:00  <bnoordhuis>(git rebase of the freebsd source tree)
15:55:05  <mmalecki>what happens when you don't use vim ^
15:55:15  <piscisaureus_>indutny: what were you doing to test ssl performance, when you added this asm stuff at nodeconf?
15:55:26  <indutny>piscisaureus_: `ab`
15:55:40  <piscisaureus_>ah, crap, I can't use ab :-(
15:56:16  <mitsuhiko>http parser is not very clever. If i understand it correctly PATCH and PASOMETHINGELSE result in the same method
15:56:35  <mmalecki>piscisaureus_: siege is quite cool
15:56:38  <piscisaureus_>indutny: I did this asm stuff for windows but the performance difference is fairly small.
15:57:41  <bnoordhuis>mitsuhiko: have you tried it?
15:57:49  <mitsuhiko>bnoordhuis: not yet, about to
15:59:04  <piscisaureus_>so what I get is:
15:59:05  <piscisaureus_>170 connections per s <-- 0.8.2, x86 build
15:59:05  <piscisaureus_>484 connections per s <-- 0.8.2, x64 build
16:00:25  <mitsuhiko>bnoordhuis: apparently not. but it's not apparent from the code why not
16:04:58  <bnoordhuis>piscisaureus_: 10000 connections in 37.835 s
16:04:59  <bnoordhuis>264 connections per second
16:05:31  <piscisaureus_>bnoordhuis: is that with or without fedor's patsje?
16:05:38  <bnoordhuis>piscisaureus_: without
16:05:39  <piscisaureus_>I wonder if that makes any difference
16:05:51  <piscisaureus_>for me the difference is very small if not negligable
16:05:58  <bnoordhuis>piscisaureus_: or... what patch in particular?
16:06:09  <tjfontaine>the bn asm
16:06:15  <piscisaureus_>bnoordhuis: where he enables bn/asm/x86_64.c
16:06:16  <piscisaureus_>yeah
16:06:30  <bnoordhuis>ah, i tested it with v0.8
16:07:01  <piscisaureus_>So did I
16:08:06  * dapjoined
16:08:16  <bnoordhuis>let me apply fedor's patch
16:09:32  <bnoordhuis>piscisaureus_: 10000 connections in 29.435 s
16:09:32  <bnoordhuis>340 connections per second
16:09:47  <piscisaureus_>so it makes a difference for you heh
16:10:00  <piscisaureus_>for me, not
16:10:04  <tjfontaine>someones compiler sucks here :)
16:10:14  <piscisaureus_>I think it's not my compiler :-)
16:10:39  <tjfontaine>fwiw I don't think openssl has the ssl stuff enabled for msvc anyway, right?
16:10:56  <piscisaureus_>tjfontaine: eh?
16:11:03  <piscisaureus_>tjfontaine: you mean, openssl has ssl off?
16:11:09  <tjfontaine>sorry asm :)
16:11:10  * piscisaureus_shakes head
16:11:16  <piscisaureus_>tjfontaine: yeah that's why I wrote it
16:11:17  <tjfontaine>the letters, they jumble
16:11:21  <piscisaureus_>but it was a futile effort
16:11:32  <tjfontaine>piscisaureus_: sorry you had to waste your time!
16:11:38  <piscisaureus_>well, never mind
16:11:41  <piscisaureus_>it happens right
16:12:25  * bnoordhuisis off to dinner
16:17:13  * hij1nxjoined
16:18:28  * mikealquit (Quit: Leaving.)
16:19:33  * hij1nxquit (Read error: Connection reset by peer)
16:24:15  <piscisaureus_>yep
16:24:16  <piscisaureus_>https://gist.github.com/3105766
16:24:22  <piscisaureus_>^--- msvc just does a good job
16:24:56  <tjfontaine>if I had to guess the asm is a gas representation of some older version of what msvc produced :)
16:27:16  <piscisaureus_>well umm
16:27:31  <piscisaureus_>the gas representation is somewhat more readable
16:27:39  <piscisaureus_>like, more structures
16:27:46  <piscisaureus_>msvc generates slightly more code
16:28:14  <piscisaureus_>it is also slightly slower is my feeling
16:28:30  <piscisaureus_>but that would be like 1 or 2 %, not really a difference you can really measure with these benchmarks
16:29:44  * hij1nxjoined
16:36:39  * philips_quit (Excess Flood)
16:36:47  * philips_joined
16:38:21  * ericktjoined
16:54:47  * hij1nx__joined
16:55:22  * hij1nxquit (Read error: Connection reset by peer)
16:55:22  * hij1nx__changed nick to hij1nx
16:58:22  * eholkjoined
17:03:02  * mikealjoined
17:03:52  * eholkpart
17:18:08  * hij1nxquit (Quit: hij1nx)
17:32:35  * ericktquit (Quit: erickt)
17:36:55  * hij1nxjoined
17:38:56  * mmaleckiquit (Read error: Connection reset by peer)
17:41:02  <paddybyers>einaros: yt?
17:41:15  * ericktjoined
17:54:20  * brsonjoined
17:58:01  * EhevuTovjoined
17:58:30  <piscisaureus_>http://yfrog.com/z/gyj11vp
17:58:33  <piscisaureus_>VERY BAD
18:20:40  * bnoordhuisquit (Ping timeout: 265 seconds)
18:29:02  * loladiro_joined
18:29:44  * AndreasMadsenjoined
18:30:46  * mikealquit (Quit: Leaving.)
18:31:04  * loladiroquit (Ping timeout: 248 seconds)
18:31:05  * loladiro_changed nick to loladiro
18:31:28  * hij1nxquit (Quit: hij1nx)
18:32:06  * mmaleckijoined
18:35:23  * loladiroquit (Ping timeout: 246 seconds)
18:38:11  * loladirojoined
18:41:16  * loladiro_joined
18:41:20  * loladiro_quit (Client Quit)
18:42:54  * loladiroquit (Ping timeout: 265 seconds)
18:43:56  * piscisaureus_quit (Ping timeout: 246 seconds)
18:58:13  * c4miloquit (Remote host closed the connection)
18:58:29  <einaros>paddybyers: sup
18:59:16  <paddybyers>einaros: never mind; it was a ws question but I saw you fixed it already
18:59:20  * c4milojoined
19:01:48  * mikealjoined
19:05:34  * mmaleckiquit (Quit: leaving)
19:10:05  <CIA-108>node: isaacs reviewme * r9d43624 / (291 files in 77 dirs): npm: upgrade to 1.1.41 - http://git.io/mpGKBg
19:10:06  <CIA-108>node: isaacs reviewme * ref1b7dd / tools/installer.js : build: Move npm shebang logic into an npm script - http://git.io/J_I1ZA
19:10:38  <isaacs>anyone wanna test that out? fixes https://github.com/joyent/node/issues/3703
19:14:20  * sh1mmerjoined
19:15:21  * mmaleckijoined
19:17:24  <CIA-108>node: isaacs v0.8 * ref1b7dd / tools/installer.js : build: Move npm shebang logic into an npm script - http://git.io/J_I1ZA
19:17:26  <CIA-108>node: isaacs v0.8 * r9d43624 / (291 files in 77 dirs): npm: upgrade to 1.1.41 - http://git.io/mpGKBg
19:19:35  * piscisaureus_joined
19:20:54  * isaacswhatevs. seems to work. we can always revert it :)
19:21:01  <tjfontaine>heh
19:21:58  * mmaleckiquit (Quit: leaving)
19:26:54  <CIA-108>node: isaacs master * rdb59c84 / (282 files in 77 dirs): Merge remote-tracking branch 'ry/v0.8' (+31 more commits...) - http://git.io/IkNEog
19:27:29  * mikealquit (Quit: Leaving.)
19:30:12  <paddybyers>einaros: sorry, another ws question if you have a minute
19:32:12  <einaros>paddybyers: go ahead
19:32:42  <paddybyers>einaros: this line: https://github.com/einaros/ws/blob/master/lib/WebSocket.js#L592
19:33:16  <paddybyers>if I decline a connection attempt in verifyClient(), the client doesn't see close or error
19:33:44  <tjfontaine>piscisaureus_: when you get time https://github.com/joyent/node/pull/3707 after running the http benchmarks I see no appreciable difference between master and master+unref, so I don't think there's a lot of timer overhead being added
19:33:57  <paddybyers>einaros: but the spec seems ambiguous about which should be raised
19:35:28  <einaros>if anything I suppose an error should emitted
19:35:52  <einaros>but then again, there hasn't been a connection established at that point, so the client shouldn't care
19:44:27  <paddybyers>einaros: but the client is wailting for an open to progress; I think it needs some indication to be able to fail
19:45:35  <paddybyers>einaros: I don't want to spam this channel
19:47:50  <paddybyers>einaros: I think here it says emit an error: http://www.w3.org/TR/websockets/#closeWebSocket
19:50:04  * stephankjoined
19:52:48  * loladirojoined
19:59:03  <einaros>paddybyers: the line you point to doesn't have anything to do with notifying the connecting peer
19:59:22  <einaros>if that's what you mean
20:00:31  <paddybyers>einaros: I think it says that the client should see an error event in the case that the user agent fails the connection
20:01:01  <einaros>paddybyers: just so we're on the same page here: when you say 'client' you mean the remote connecting party, right?
20:01:23  * `3rdEdenjoined
20:01:37  <paddybyers>I mean the end that initiated the connection; as in WebSocket.initAsClient()
20:02:54  <paddybyers>I'm using ws at both ends
20:04:09  <einaros>paddybyers: right, so what you're saying is that if your client connects to a server which drops the connection as part of verifyClient, the client should raise have an 'error' event
20:04:22  <paddybyers>yes
20:05:48  <einaros>paddybyers: right, well my interpretation of http://www.w3.org/TR/websockets/#closeWebSocket is that if the user agent (that is the client) closes the connection because of a protocol error or anything else, the 'error' event should be emitted
20:05:52  <einaros>but that's not the case here
20:06:00  <einaros>the server closes the connection
20:06:12  <einaros>and in that case the client can do nothing but relay the error code reported by the server
20:08:53  <indutny>piscisaureus_: sad panda
20:09:07  <paddybyers>einaros: yes, but elsewhere it says "When the user agent validates the server's response during the "establish a WebSocket connection" algorithm, if the status code received from the server is not 101 (e.g. it is a redirect), the user agent must fail the websocket connection."
20:09:28  <piscisaureus_>indutny: y u sad?
20:09:35  <indutny>piscisaureus_: because of asm optimizations
20:09:54  <indutny>do you still see no performance difference on windows?
20:09:56  <piscisaureus_>indutny: yeah, well... Apparently msvc already generates good code here :-)
20:10:02  <indutny>:(
20:10:33  <piscisaureus_>indutny: although I think we might improve the x86 situation a little
20:10:48  <indutny>well, the thing is that bignumbers are really faster on x64
20:10:49  <indutny>:)
20:11:03  <piscisaureus_>indutny: I see about 480/490 conns/s on x64, and about 170 conns/s on x86
20:11:21  <indutny>hahaha
20:11:31  <indutny>all hashing stuff is faster on x64 too
20:11:35  <piscisaureus_>yeah
20:11:40  <piscisaureus_>there's something lame going on there as well
20:11:42  <indutny>odd, but I see more conn/s on osx
20:11:56  <indutny>unfortunately callgrind doesn't work on windows
20:11:59  <piscisaureus_>indutny: with the test that I wrote?
20:12:04  <indutny>nope
20:12:06  <indutny>with ab
20:12:07  <piscisaureus_>ah
20:12:12  <indutny>but I understand now
20:12:13  <piscisaureus_>try it with the test that I wrote
20:12:19  <indutny>sorry, have no time atm
20:12:25  <piscisaureus_>it makes the connections in the same process that accepts
20:12:26  <piscisaureus_>ok
20:12:42  <piscisaureus_>indutny: so openssl can also use sse3 etc on x86
20:12:49  <einaros>paddybyers: alright, that should probably cause an error emit
20:12:51  <piscisaureus_>it even decides at runtime
20:12:52  <indutny>yeah, I seen this
20:12:55  <piscisaureus_>but it's disabled
20:12:58  <indutny>at runtime?
20:13:01  <indutny>ah
20:13:02  <indutny>cpuid
20:13:05  <piscisaureus_>because we compile with OPENSSL_NO_ASM
20:13:06  <piscisaureus_>yes
20:13:12  <piscisaureus_>but cpuid is disabled :-(
20:13:20  <indutny>well, you should be close to removing OPENSSL_NO_ASM
20:13:26  <indutny>define from gyp
20:13:36  <piscisaureus_>it's set in the config files
20:13:39  <piscisaureus_>but yes
20:13:43  <piscisaureus_>I can disable it on windows now
20:13:47  <indutny>oh, great
20:13:55  <piscisaureus_>on x64 I think it does not matter
20:14:30  <paddybyers>einaros: I can have a go if you like
20:16:17  <einaros>paddybyers: pullreq or add an issue, I'll deal with it tomorrow if you don't look into it before then
20:17:50  <piscisaureus_>I wonder why google translate works so poorly for japanese
20:17:53  * felixgejoined
20:17:53  * felixgequit (Changing host)
20:17:53  * felixgejoined
20:17:55  <indutny>:)
20:19:05  <paddybyers>einaros: ok, thanks
20:27:54  <piscisaureus_>http://www.twitter.com/elotente/status/223875297794203649 <-- ?
20:28:41  <indutny>wow
20:30:24  <tjfontaine>heh, he's a professional troll don't worry about him
20:31:57  <piscisaureus_>I didn't worry
20:32:51  <piscisaureus_>I was wondering what the likelihood was that a random sequence of alphanumerical characters ends up like that
20:38:05  * `3rdEdenquit (Quit: Leaving...)
20:42:52  * AndreasMadsenquit (Remote host closed the connection)
20:45:23  <felixge>piscisaureus_: At 2012-07-12T13:13:02.222Z, in #libuv, piscisaureus said: felixge will, probably
20:45:27  <felixge>^--- what was that about?
20:45:35  <felixge>(forgot the link to the logs)
20:45:38  <felixge>ircretary: logs
20:45:38  <ircretary>felixge: Logs can be found at: http://irc.npmjs.org/libuv
20:45:46  <felixge>hm, doesn't work
20:46:11  <tjfontaine>slurp is his log bot
20:46:17  <felixge>slurp: logs
20:46:24  <felixge>tjfontaine: where do I find the logs?
20:46:41  <tjfontaine>http://piscisaureus.no.de/libuv/latest
20:47:27  <tjfontaine>13:12:01<mmalecki>hey, anyone of you guys going to jsconf.eu?
20:47:37  <tjfontaine>seems to be what he was responding to
20:50:41  * arlolrajoined
20:53:29  * mikealjoined
20:55:27  <felixge>tjfontaine: thx
21:05:44  * piscisaureus_quit (Ping timeout: 248 seconds)
21:11:09  <CIA-108>node: George Shank v0.8 * r8721667 / (doc/index.html doc/images/forkme.png): doc: update 'Fork me at Github' ribbon - http://git.io/3txOsA
21:19:44  * piscisaureus_joined
21:25:21  * piscisaureus_quit (Ping timeout: 255 seconds)
21:36:01  * stephankquit (Ping timeout: 260 seconds)
21:37:36  * stephankjoined
21:39:20  * c4miloquit (Remote host closed the connection)
21:54:04  * joeandaverdejoined
21:57:26  * joeandaverdequit (Read error: No route to host)
21:57:35  * joeandaverdejoined
21:57:55  * rendarquit
22:06:35  * piscisaureus_joined
22:08:32  * c4milojoined
22:08:59  * joeandaverdequit (Quit: joeandaverde)
22:09:36  * mmaleckijoined
22:11:28  * felixgequit (Quit: felixge)
22:16:59  * c4miloquit (Remote host closed the connection)
22:25:11  * loladiro_joined
22:25:12  * loladiroquit (Ping timeout: 248 seconds)
22:25:13  * loladiro_changed nick to loladiro
22:25:50  * piscisaureus_quit (Ping timeout: 246 seconds)
22:26:04  * hzquit
22:26:48  * arlolraquit (Quit: Leaving...)
22:32:31  * mralephquit (Quit: Leaving)
22:38:45  * mjr__quit (Quit: mjr__)
22:43:59  * mmaleckiquit (Ping timeout: 240 seconds)
22:47:21  <isaacs>can anyone tell me what simple/test-eio-limit is supposed to be testing?
22:48:34  * xaqquit (Remote host closed the connection)
22:49:37  * ericktquit (Read error: Operation timed out)
22:50:01  <indutny>hahaha
22:50:12  <indutny>you are no the first who asks there
22:50:17  <indutny>:D
22:54:45  <isaacs>indutny: it seems like it's verifying incorrect behavior.
22:55:07  <isaacs>indutny: ie, if i want to say that nextTick is higher priority than other things, then this test will fail.
22:58:41  * paddybyersquit (Quit: paddybyers)
23:00:19  * paddybyersjoined
23:02:57  * piscisaureus_joined
23:03:46  <piscisaureus_>isaacs: just delete test-eio-limit
23:04:30  <piscisaureus_>isaacs: after that, close #3474 :-)
23:14:13  <isaacs>piscisaureus_: nextTick is a really bit pita right now..
23:15:36  <isaacs>piscisaureus_: i'm tempted to just rip it out entirely, and do MakeCallback(processObject, "runAllTheNextTicks"); in MakeCallback
23:15:37  * loladiroquit (Read error: Connection reset by peer)
23:15:48  * loladirojoined
23:16:21  <isaacs>i mean, apart from some very academic cases, people expect nextTick to happen before anything else.
23:16:58  <piscisaureus_>isaacs: it will break compiled addons that don't use MakeCallback though...
23:17:08  <isaacs>true
23:17:21  <piscisaureus_>umm, wait
23:17:40  <piscisaureus_>I suppose you want to do this *in* makeCallback
23:17:42  <isaacs>piscisaureus_: so, what's the fix here, you think? do we have a way to say "do xyz after every v8 call"?
23:18:20  <piscisaureus_>umm ...
23:18:58  <isaacs>the timeline should be: run to completion, process._doNextTicks(), <event loop>, repeat
23:19:09  <piscisaureus_>haha
23:19:12  <piscisaureus_>that's how it works now :-)
23:19:25  <isaacs>no, because nexTTicks happen on their own spinner thing
23:19:40  <isaacs>so you are not guaratneed that process.nextTick() will come before anything else
23:19:50  <piscisaureus_>the problem is that multiple events can arrive in the same event loop iterations
23:19:53  <piscisaureus_>*iteration
23:19:54  <isaacs>right
23:20:01  <piscisaureus_>maybe we can have some sort of trampoline
23:20:04  * mikealquit (Quit: Leaving.)
23:20:14  <piscisaureus_>so MakeCallback calls process._makeCallback(cb)
23:20:29  <isaacs>hrm..
23:20:44  <isaacs>then what would that do?
23:20:46  <isaacs>call the function?
23:21:08  <isaacs>piscisaureus_: or just process nextTicks before calling it?
23:21:19  <piscisaureus_>and _makeCallback is defined as
23:21:20  <piscisaureus_>function _makeCallback(cb, args) {
23:21:20  <piscisaureus_> cb.apply(this, args);
23:21:20  <piscisaureus_> // all the next ticks;
23:21:20  <piscisaureus_>}
23:21:44  <piscisaureus_>otherwise there will be 2 boundary crossings for every callback
23:21:49  <isaacs>how is that different from calling Tick() in MakeCallback?
23:22:04  <piscisaureus_>well, then you cross the boundary twice
23:22:15  <isaacs>oic. yeah
23:22:40  <piscisaureus_>the nice thing is that process.nextTick also doesn't need to cross the boundary any more
23:23:09  <isaacs>right, so what about process.nextTick(function F() { process.nextTick(F) })
23:23:22  <piscisaureus_>yes
23:23:31  <piscisaureus_>so you want to make this a spinner
23:23:38  * paddybyersquit (Quit: paddybyers)
23:23:49  <isaacs>i guess process.allTheTicks() could just keep going as long as there's any ticks to process.
23:24:00  <isaacs>so if one of those added something, you starve it out and loop forever.
23:24:18  <piscisaureus_>yeah
23:24:26  <piscisaureus_>although, maybe people don't want this
23:24:27  <isaacs>what you want is, at some point, to check for callbacks, but only if you've done 10 loops in a row or something
23:24:36  <isaacs>no, we discussed this.
23:24:45  <isaacs>people want it, they just ALSO want it to be safe
23:25:29  <piscisaureus_>maybe we need two functions
23:25:30  <isaacs>judging from existing node programs, they seem to believe (even WE seem to believe) that this is already how it works.
23:25:42  <isaacs>this is all over http.js
23:25:48  * loladiroquit (Read error: Connection reset by peer)
23:25:54  * loladiro_joined
23:25:59  <isaacs>the assumption, i mean
23:26:09  <piscisaureus_>I know
23:26:13  <piscisaureus_>but
23:26:23  <piscisaureus_>can this assumption ever be safely made
23:26:25  * mikealjoined
23:26:47  <piscisaureus_>because there is no guarantee that your tick will run immediately after :-)
23:26:56  <piscisaureus_>even if we change this
23:26:57  <isaacs>i think it ought to be safe to assume that process.nextTick will come before any other events, unless you're several ticks deep
23:27:02  <isaacs>in the recursion
23:27:09  <piscisaureus_>yes
23:27:09  * loladiro_quit (Read error: Connection reset by peer)
23:27:21  <isaacs>but the level goes back to 0 each time
23:27:29  <isaacs>each time process._makeCallback is called, that is
23:27:54  <piscisaureus_>so it's probably safe
23:28:04  <isaacs>hm. i could keep most of the existing machinery around, then, it sounds like, but pass over it a few times after makeCallback, and move that into js
23:28:12  <isaacs>yeah, i think that'll work.
23:28:14  <isaacs>thanks :)
23:28:33  <isaacs>also, test/simple/test-eio-limit.js can be made to be deterministic
23:28:51  <isaacs>or rather, remove that, and have test/simple/test-nexttick-recursion.js which verifies the intended behavior.
23:29:23  <piscisaureus_>you'll have to drop test-nexttick-loop-starvation or something
23:29:59  <piscisaureus_>would we have something like process.onIdle() ?
23:32:50  * beachdogjoined
23:38:05  * ericktjoined
23:45:17  <CIA-108>node: Bert Belder v0.8 * r23dc099 / benchmark/tls-connect.js : benchmark: add single process tls connection benchmark - http://git.io/_Eo99A
23:52:30  * EhevuTov_joined
23:55:31  * EhevuTov_quit (Client Quit)
23:56:06  * EhevuTovquit (Ping timeout: 265 seconds)