00:02:11  * loladiroquit (Quit: loladiro)
00:27:49  * mmaleckichanged nick to mmalecki[zzz]
00:29:10  * Ariajoined
00:31:27  * bnoordhuisquit (Ping timeout: 246 seconds)
00:39:04  * ericktquit (Quit: erickt)
00:44:48  * AvianFlujoined
01:00:15  * ryahwaves
01:31:13  * Ariawaves to ryah
01:35:06  * perezdquit (Quit: perezd)
01:46:40  * ArmyOfBrucequit (Excess Flood)
01:47:10  * ArmyOfBrucejoined
01:47:57  * abraxasjoined
02:07:15  * brsonquit (Ping timeout: 252 seconds)
02:08:47  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
02:15:03  * joshthecoderquit (Quit: Leaving...)
02:45:01  * brsonjoined
03:35:34  * joshthecoderjoined
04:05:22  * kazuponjoined
04:46:45  * stagasjoined
05:00:38  * brsonquit (Quit: leaving)
05:17:39  * toothrotquit (Ping timeout: 248 seconds)
05:29:22  * paddybyersjoined
05:44:47  * isufyjoined
05:48:09  * isufyquit (Client Quit)
05:53:14  * tomshredsquit (Quit: Leaving...)
06:14:10  * avalanche123|hjoined
06:22:03  * toothrjoined
06:23:26  * avalanche123|hquit (Quit: Leaving...)
06:25:57  * paddybyersquit (Ping timeout: 260 seconds)
06:32:15  * V1joined
06:32:44  * V1changed nick to `3rdEden
06:50:56  * stephankquit (Quit: *Poof!*)
06:53:06  * `3rdEdenquit (Quit: brb)
06:54:57  * AvianFluquit (Remote host closed the connection)
07:00:47  * Raltjoined
07:02:57  * rendarjoined
07:08:58  * `3rdEdenjoined
07:27:44  * paddybyersjoined
08:13:31  * felixgequit (Quit: felixge)
08:30:09  * toothrquit (Ping timeout: 276 seconds)
08:34:03  * toothrjoined
08:42:01  * mralephquit (Ping timeout: 246 seconds)
08:44:31  * mralephjoined
08:45:10  * felixgejoined
08:45:10  * felixgequit (Changing host)
08:45:10  * felixgejoined
09:05:39  * kazuponquit (Remote host closed the connection)
09:11:15  * hzjoined
09:36:11  * kazuponjoined
09:45:17  * kazuponquit (Ping timeout: 240 seconds)
09:55:03  * kazuponjoined
10:02:13  * kazuponquit (Remote host closed the connection)
10:05:34  * mmalecki[zzz]changed nick to mmalecki
10:25:18  * bnoordhuisjoined
10:37:37  * mikealquit (Quit: Leaving.)
10:38:02  * mikealjoined
10:45:12  * xaqjoined
10:51:57  * felixgequit (Quit: felixge)
11:03:17  * xaq_joined
11:04:29  * xaqquit (Read error: Connection reset by peer)
11:15:22  * mmaleckiquit (Quit: leaving)
11:22:26  * felixgejoined
11:25:04  * mmaleckijoined
11:33:49  * kazuponjoined
11:35:55  * kazupon_joined
11:38:26  * kazuponquit (Ping timeout: 255 seconds)
11:40:24  * kazuponjoined
11:40:35  * stagasquit (Ping timeout: 248 seconds)
11:43:10  * kazupon_quit (Ping timeout: 252 seconds)
11:43:33  * xaqjoined
11:45:38  * kazuponquit (Remote host closed the connection)
11:46:25  * xaq_quit (Ping timeout: 244 seconds)
12:06:25  * mikealquit (Quit: Leaving.)
12:16:16  * kazuponjoined
12:24:55  * xaqquit (Remote host closed the connection)
12:28:36  * xaqjoined
12:31:38  * xaqquit (Read error: Connection reset by peer)
12:31:54  * xaqjoined
12:35:05  <MI6>joyent/libuv: Ben Noordhuis master * 47b2cd3 : build: rename uv.a to libuv.a - http://git.io/UwUgsA
12:35:52  * Ariaquit (Remote host closed the connection)
12:36:20  * Ariajoined
12:36:44  * travis-cijoined
12:36:44  <travis-ci>[travis-ci] joyent/libuv#792 (master - 47b2cd3 : Ben Noordhuis): The build was broken.
12:36:44  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/cb03e3bd2658...47b2cd31c9b7
12:36:44  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/2747861
12:36:44  * travis-cipart
12:37:40  * Ariaquit (Read error: Operation timed out)
12:37:46  <MI6>joyent/node: Ben Noordhuis master * d7c45ea : deps: upgrade libuv to 47b2cd3 - http://git.io/sI8WFA
12:38:46  * abraxasquit (Remote host closed the connection)
12:46:59  * kazuponquit (Remote host closed the connection)
12:48:36  <indutny>finally
12:48:38  <indutny>libuv.a
12:52:53  <txdv>what?
12:52:58  <txdv>libuv.so would be finally
12:54:32  * AvianFlujoined
12:55:33  * TheJHjoined
12:56:45  * kazuponjoined
12:57:08  * felixge_joined
12:57:08  * felixge_quit (Changing host)
12:57:08  * felixge_joined
12:57:38  * felixgequit (Read error: Connection reset by peer)
12:57:38  * felixge_changed nick to felixge
12:59:31  <saghul>txdv https://github.com/bnoordhuis/libuv/commit/776d82608ace2a4ee79ca0db9e9493594d91b0f1
13:03:59  <txdv>o boy o boy
13:04:04  <txdv>ill use ninja!
13:04:39  * stagasjoined
13:10:46  * tomshredsjoined
13:38:34  * piscisaureus_joined
13:53:54  * c4milojoined
13:54:31  * tomshredsquit (Ping timeout: 245 seconds)
14:10:13  <indutny>piscisaureus_: heya
14:10:20  <piscisaureus_>ola felixge
14:10:20  <indutny>piscisaureus_: does lion ships with Instruments?
14:10:22  <piscisaureus_>er, indutny
14:10:28  <piscisaureus_>umm
14:10:31  <piscisaureus_>I don't know
14:10:40  <indutny>are you on osx now?
14:10:42  <piscisaureus_>I am using mountain lion btw
14:10:43  <piscisaureus_>no
14:10:49  <piscisaureus_>I am on ubuntu and windows
14:10:52  <indutny>oh
14:10:53  <indutny>ok
14:11:07  <piscisaureus_>where would the binary be?
14:11:11  <piscisaureus_>I can look on my mac disk
14:11:27  <piscisaureus_>indutny: ^
14:11:49  <indutny> /Developer/Applications/Instruments.app
14:11:51  <indutny>I suppose
14:12:20  <piscisaureus_>indutny: I don't have /Developer there
14:12:36  <indutny>piscisaureus_: where does xcode installs itself on 10.8?
14:12:49  <indutny>instruments should be somewhere within it then
14:13:10  <piscisaureus_>. /Applications/xcode.App
14:14:34  <piscisaureus_>indutny: E:\Applications\Xcode.app\Contents\Applications\Instruments.app>
14:14:37  <piscisaureus_>indutny: yes, it's there
14:14:39  <indutny>good
14:14:46  <indutny>thank you
14:14:51  <indutny>btw, it's really cool
14:14:53  <piscisaureus_>indutny: although I am not sure it ships with xcode
14:14:56  <indutny>you should try it out
14:15:02  <piscisaureus_>I think I installed it from the app store
14:15:11  <indutny>ah
14:15:14  <piscisaureus_>indutny: it's like a graphical dtruss right?
14:15:28  <indutny>better
14:15:33  <indutny>but sort of yes
14:15:39  <indutny>it's like UI for dtrace scripts
14:18:54  <indutny>piscisaureus_: odd
14:18:58  <piscisaureus_>bnoordhuis: indutny: do you guys know if sem_wait / sem_post have an implicit memory barrier?
14:19:08  <indutny>piscisaureus_: it should
14:19:17  <indutny>piscisaureus_: you can disasm it
14:19:34  <bnoordhuis>piscisaureus_: yes
14:19:40  <piscisaureus_>good
14:19:53  <indutny>well, otherwise things won't work
14:20:33  <piscisaureus_>I just need to know if I do
14:20:52  <piscisaureus_>* (volatile int*) &stop = 1;
14:20:52  <piscisaureus_>uv_sem_wait(...)
14:21:03  <piscisaureus_>whether the stop assignment can be moved after the sem_wait
14:21:06  <piscisaureus_>but I suppose so
14:21:37  <indutny>no, it can't
14:21:40  <indutny>ah
14:21:42  <indutny>no
14:21:43  <indutny>it can't
14:21:45  <piscisaureus_>yes
14:21:50  <piscisaureus_>I suppose it can't :-)
14:21:57  <indutny>it surely can't :)
14:22:18  <indutny>but what you see is actually depends on how you're checking it
14:24:01  <piscisaureus_>well I use the kludgey syntax to show you guys the "stop" variable is a volatile
14:24:15  <piscisaureus_>obviously it's just declared as a volatile sig_atomic_t
14:25:09  * txdvquit (Ping timeout: 246 seconds)
14:25:25  <indutny>and
14:25:34  <indutny>not sure I follow
14:27:53  * mikealjoined
14:42:05  * joeandaverdequit
14:43:05  * kazuponquit (Remote host closed the connection)
14:56:37  * tomshredsjoined
15:03:37  * Raltquit (Ping timeout: 240 seconds)
15:04:26  * Raltjoined
15:04:51  * `3rdEdenchanged nick to `3E|AFK
15:07:05  * xaqquit (Remote host closed the connection)
15:08:51  <piscisaureus_>bnoordhuis: hey, does gdb automatically reload the binary when I restart it with "run" ?
15:09:55  <tjfontaine>generally yes, you should see a "reloading symbols" line if it detects a new binary
15:10:10  <tjfontaine>or something along those lines
15:10:58  <indutny>piscisaureus_: hoya
15:11:11  <indutny>piscisaureus_: can ask you to do some proof reading?
15:12:10  <piscisaureus_>indutny: point me to it
15:12:22  <indutny>piscisaureus_: kewl, one sec
15:13:04  <piscisaureus_>yay multiloop signals actually work
15:17:01  <indutny>good
15:17:09  <indutny>piscisaureus_: https://github.com/indutny/blog/blob/master/posts/1.to-lock-or-not-to-lock.md
15:17:23  <indutny>bnoordhuis: and thanks
15:17:28  <indutny>piscisaureus_: you too :)
15:20:15  <bnoordhuis>piscisaureus_: yes
15:20:21  <piscisaureus_>indutny: let me guess, russian does not have a "definite particle"
15:20:29  <piscisaureus_>bnoordhuis: ?
15:20:31  <indutny>indeed
15:21:27  <bnoordhuis>piscisaureus_: re: gdb reloading symbols
15:21:28  <piscisaureus_>indutny: you should use them in your english writing :-)
15:22:16  <indutny>piscisaureus_: I'm trying
15:22:18  <indutny>:)
15:34:16  <MI6>joyent/node: isaacs v0.8 * 99b2368 : doc: Reduce crypto stability to 2-Unstable - http://git.io/xX3K2g
15:35:49  <indutny>isaacs: noone seen
15:36:33  <piscisaureus_>indutny: done
15:36:40  <indutny>piscisaureus_: about goes on stage
15:36:47  <piscisaureus_>indutny: yes
15:36:51  <piscisaureus_>indutny: what's that mean?
15:36:53  <indutny>piscisaureus_: what to use here
15:37:02  <indutny>well, it's a weird russian sentence
15:37:15  <piscisaureus_>ah
15:37:20  <indutny>it's quite similar to "has shown up"
15:37:22  <indutny>or something like that
15:37:24  <indutny>I suppose
15:37:28  <piscisaureus_>I think in english there are similar expressions
15:37:32  <piscisaureus_>"comes into play"
15:37:36  <piscisaureus_>or something
15:37:36  <indutny>oh
15:37:38  <indutny>thanks
15:37:41  <piscisaureus_>better ask isaacs tho
15:37:48  <piscisaureus_>He may have a better idea
15:37:56  <indutny>haha
15:37:59  <indutny>ok
15:38:02  <indutny>I think I'll release it
15:38:09  <indutny>and correct eventually if isaacs will have any comments
15:38:12  <piscisaureus_>it's somewhat odd to have dutch guys review your english :-)
15:38:27  <indutny>hahaha :D
15:38:38  <indutny>well, england is much closer to you, than to me
15:38:47  <indutny>especially considering that I'm in Siberia right now
15:39:06  <piscisaureus_>Ah your probation time ended? :-p
15:39:46  <indutny>haha
15:39:59  <indutny>it's live btw http://blog.indutny.com/1.to-lock-or-not-to-lock
15:40:24  <piscisaureus_>indutny: ah I missed some spots
15:41:49  <piscisaureus_>indutny: isaacs: bnoordhuis: TooTallNate: call in 20?
15:41:56  <indutny>oh, call
15:42:16  <isaacs>call in 20, yes
15:44:42  <isaacs>indutny: yes, "comes into play"
15:44:53  <indutny>kewl
15:44:54  <indutny>thank you
15:45:45  * kazuponjoined
15:46:52  <isaacs>indutny: the way your'e using it there is a little bit weird, though..
15:47:00  <isaacs>i am having a hard time explaining exactly why
15:47:16  <indutny>isaacs: engrish is so hard
15:47:22  <indutny>lets go shopping
15:47:41  <tjfontaine>swap the usage, "and this is where Instruments.app comes into play"
15:48:11  <indutny>aah
15:49:08  <indutny>updated http://blog.indutny.com/1.to-lock-or-not-to-lock
15:49:14  <indutny>isaacs: tjfontaine: thanks
15:49:45  * mikealquit (Quit: Leaving.)
15:51:00  * xaqjoined
15:55:47  * TooTallNatejoined
15:59:41  <piscisaureus_>Ben and me are ready for it
15:59:46  <piscisaureus_>isaacs: don't call ben btw
15:59:53  <isaacs>k
16:04:25  * bentkusjoined
16:04:40  <bentkus>boom
16:08:24  * indexzerojoined
16:10:32  <isaacs>> [0,1,2,3].map(function(k) { return new Buffer([k])}).reduce(function(a,b){return a.toString('base64')+b.toString('base64')})
16:10:35  <isaacs>'AA==AQ==Ag==Aw=='
16:10:37  <isaacs>> b.toString('base64')
16:10:39  <isaacs>bnoordhuis, piscisaureus_: ^
16:10:41  <isaacs>'AAECAw=='
16:15:55  * TheJHquit (Ping timeout: 272 seconds)
16:18:05  * perezdjoined
16:18:12  * dapjoined
16:22:06  <isaacs>bnoordhuis, piscisaureus_: So, tha'ts what you get when you use StringDecoder for base64 data.
16:22:18  <isaacs>even if we strip out the ==, it's still not accurate.
16:22:37  <isaacs>> new Buffer('AAAqAgAw', 'base64')
16:22:38  <isaacs><Buffer 00 00 2a 02 00 30>
16:23:27  <piscisaureus_>ah right
16:24:02  <piscisaureus_>it may actually be accurate
16:24:18  <piscisaureus_>but not without the == things indeed
16:24:20  <isaacs>or rather, it's not the original buffer.
16:24:32  <indutny>bnoordhuis: so what's about that leak
16:24:36  <piscisaureus_>ya, this needs fixing. So you can't strip the == signs
16:24:37  <indutny>bnoordhuis: how can I reproduce it?
16:24:49  <piscisaureus_>you have to treat it as a full stop and restart the parser after the = signs
16:24:50  <isaacs>> new Buffer('AA==AQ==Ag==Aw==', 'base64')
16:24:50  <isaacs><Buffer 00 00 10 02 00 30>
16:25:01  <indutny>much closer
16:25:32  <isaacs>yeah, maybe we just need to update how we reconstitute buffers from base64 strings
16:25:38  <isaacs>and not assume that == can only be at the end.
16:25:42  * kazuponquit (Remote host closed the connection)
16:25:48  <isaacs>then you could concat base64 strings, and get the same buffer out.
16:25:58  <indutny>huh?
16:26:09  <indutny>I don't think it will work really fine
16:26:43  * felixgequit (Quit: felixge)
16:26:57  <indutny>especially if you try to encode not % 4 == 0 bytes
16:27:22  * Raltquit (Ping timeout: 246 seconds)
16:30:44  <isaacs>right now we just skip over = chars that don't come at the very end.
16:30:53  <bnoordhuis>indutny: https://gist.github.com/2cbc86de7719c37ba0d0 - run e.g. the 1000 125000 benchmark
16:32:28  * stephankjoined
16:34:38  <indutny>interesting
16:39:08  <indutny>it's all CRYPTO_malloc
16:39:17  <indutny>mostly allocated from ssl3_new
16:39:28  <indutny>which means that SSL_free wasn't called yet
16:39:55  <indutny>yeah
16:39:58  <indutny>it all comes from SSL_new
16:40:18  <indutny>I suppose .close() isn't called
16:41:35  <indutny>yeah
16:41:40  <indutny>'end' event isn't happening
16:43:52  <bnoordhuis>indutny: plausible. most of the action happens on the first tick
16:44:06  <indutny>does this matter?
16:45:20  <indutny>I mean first tick thing
16:47:05  <indutny>aah
16:47:07  <indutny>process.nextTick
16:47:23  <indutny>surely they won't be destroyed ever
16:48:18  * xaqquit (Remote host closed the connection)
16:48:29  <indutny>also
16:48:32  <indutny>you doing it wrong
16:48:39  <indutny>bnoordhuis: you should use .end() instead of .write()
16:49:17  <indutny>what are you trying to benchmark here?
16:49:30  <indutny>maximum throughput?
16:49:59  <bnoordhuis>indutny: yes
16:50:06  <indutny>ok
16:50:10  <indutny>so my suggestion
16:50:19  <indutny>replace .write() with .end()
16:50:37  <indutny>and call next pummel iteration once 'close' is emitted either on encrypted or cleartext part of stream
16:51:39  <bnoordhuis>i know all that :)
16:51:46  <indutny>ok
16:51:49  <bnoordhuis>but it surprises me that it clings on to so much memory
16:51:51  <indutny>so what's the problem then?
16:51:57  <indutny>why?
16:52:08  <indutny>ah
16:52:12  <indutny>because you're writing much less data
16:52:13  <indutny>ok
16:52:18  <indutny>it allocates BIO for handshake data
16:52:29  <indutny>it allocates two BIO for your data
16:52:36  <indutny>it allocates two BIO for SSL internal stuff
16:52:39  <indutny>it allocates SSL itself
16:52:44  <indutny>it duplicates certificates
16:52:49  <indutny>more? :)
16:53:08  <indutny>I don't think that my ring buffer will help here
16:53:11  <pquerna>there are ways to reduce certificate memory; it has a mech to store them on a disk... but...
16:53:18  <pquerna>then you have IO
16:53:23  <indutny>pquerna: indeed
16:53:34  <indutny>pquerna: have you seen my BIO_snappy() ?
16:53:38  <pquerna> nope
16:54:12  <indutny>pquerna: https://github.com/indutny/tlsnappy/blob/master/src/ring.cc and https://github.com/indutny/tlsnappy/blob/master/src/bio.cc
16:54:15  <indutny>if you're interested
16:57:38  <indutny>bnoordhuis: btw, memory usage is pretty high indeed
16:57:43  <indutny>bnoordhuis: it's like 10mb per connection
17:00:51  * bnoordhuisquit (Ping timeout: 265 seconds)
17:01:32  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
17:02:40  <indutny>pquerna: and more description, just in case: http://blog.indutny.com/1.to-lock-or-not-to-lock
17:03:42  <ryah>indutny: what does "default" show in your graphs?
17:03:54  <indutny>ryah: 16 threads on one node instance
17:04:11  <indutny>it locks too much
17:04:39  <ryah>indutny: https?
17:04:55  <indutny>16 processes with `http` module as backend
17:05:01  <indutny>i.e. clusterized
17:05:04  * indexzeroquit (Quit: indexzero)
17:05:06  <ryah>really!
17:05:20  <ryah>how is that possible?
17:05:47  <ryah>a cluster of 16 processes is getting only 2000 req/sec?
17:06:09  <indutny>huh?
17:06:12  <indutny>what are you looking at?
17:06:21  <indutny>it's doing about 3500 req/sec
17:06:23  <ryah>https://raw.github.com/indutny/tlsnappy/master/benchmark/tlsnappy-rps-2.png
17:06:36  <indutny>ah
17:06:38  <indutny>that's default
17:06:46  <indutny>it's 16 threads of tlsnappy
17:06:46  <tjfontaine>as in require('https')
17:06:49  <tjfontaine>?
17:06:54  <tjfontaine>ah ok
17:07:08  <indutny>http://blog.indutny.com/0.benchmarking-tls
17:07:14  <indutny>I think I'm describing naming there ^
17:07:19  <ryah>and the green one is a single process with https?
17:07:22  <indutny>default - one tlsnappy process with 16 threads
17:07:22  <indutny>hybrid - 4 tlsnappy processes with 4 threads each
17:07:22  <indutny>cluster - 16 tlsnappy processes with 1 thread each
17:07:22  <indutny>http - 16 node.js processes in cluster
17:07:34  <indutny>ryah: green one is a cluster of https processes
17:07:45  <ryah>indutny: also 16?
17:07:50  <indutny>yes
17:07:51  <ryah>without tlsnappy?
17:07:55  <indutny>yes
17:08:56  <indutny>ryah: have you seen this https://docs.google.com/spreadsheet/ccc?key=0AhEDnA4M4EKGdDIwb3VYZTd1alA5T1pTVnlQWl9wanc#gid=0 ?
17:09:07  <indutny>ryah: patched openssl is the latest one
17:09:15  <indutny>i mean "patched openssl" sheet
17:10:51  <indutny>so basically tlsnappy is kicking ass now
17:10:58  <indutny>:)
17:17:16  <ryah>indutny: excited to see what comes from this
17:17:21  <ryah>sounds interesting
17:18:47  <ryah>indutny: you should clarify in the blog post what the different labels are in the graph
17:18:54  <indutny>ok
17:18:59  <indutny>I'll copy paste it from previous post
17:19:42  <indutny>done
17:22:44  <indutny>ok
17:22:49  <indutny>time to watch some Doctor Who series
17:22:52  <indutny>ttyl
17:22:56  <ryah>"https" shouldn't be effected by the patch?
17:23:06  <ryah>since there's no sync
17:23:14  <ryah>by "https" i mean the https label
17:23:24  <ryah>"http - 16 node.js processes in cluster
17:23:25  <ryah>"
17:27:45  <indutny>yeah
17:27:55  <indutny>it won't be affected at all
17:28:05  <indutny>I think we may try using BIO_snappy() in node.js
17:28:19  <indutny>probably it'll perform better when transfering large amounts of data via tls
17:33:56  * brsonjoined
17:36:11  * kazuponjoined
17:37:00  * TheJHjoined
17:40:40  * kazuponquit (Ping timeout: 246 seconds)
17:47:12  * `3E|AFKchanged nick to `3rdEden
17:55:36  * EhevuTovjoined
17:57:27  * EhevuTov_joined
18:00:46  * EhevuTovquit (Ping timeout: 260 seconds)
18:01:59  <ryah> build: rename uv.a to libuv.a
18:02:03  <ryah>^-- why?
18:02:11  <ryah>bnoordhuis
18:03:54  <ryah>sigh whatever
18:06:19  * EhevuTov_quit (Quit: This computer has gone to sleep)
18:06:46  * EhevuTovjoined
18:07:02  <ryah>upgrade libuv - app break. anger.
18:07:14  <ryah>ESPIPE invalid seekReadFileSync
18:07:16  <ryah>-_-
18:16:32  * lohkeyjoined
18:17:33  * `3rdEdenquit (Quit: Moving to another machine, MOAR.)
18:19:18  <ryah>req.result is broken
18:21:59  * ki9ajoined
18:34:17  * paddybyersquit (Ping timeout: 256 seconds)
18:42:05  <saghul>ryah with the new name -luv works when compiling, it's convenient
19:03:34  * V1joined
19:11:37  * V1changed nick to `3rdEden
19:22:22  <bentkus>why not create two build targets, uv.a and libuv.a
19:22:43  <ki9a>or libuv.so/dylib/dll ?
19:23:22  <bentkus>and
19:23:28  <saghul>AFAIK the shared lib thing will happen
19:23:39  <bentkus>the shared libraries are covered by gyp
19:23:50  <saghul>libuv.a fixes things, but what does naming it uv.a give?
19:24:26  <bentkus>ryah just said it, all the old build scripts will still work
19:25:37  <saghul>oh, thaaaat… since it was changed in an unstable release I guess it can be considered the new way for libuv 0.10
19:26:25  <bentkus>we can celebrate the new release in a wild cosplay pary
19:30:27  * `3rdEdenquit (Remote host closed the connection)
19:48:18  * hzquit
19:51:59  * ki9aquit (Quit: Leaving.)
20:02:53  * perezdquit (Quit: perezd)
20:04:22  * Ariajoined
20:08:27  * Ariaquit (Remote host closed the connection)
20:09:00  * Ariajoined
20:10:20  * Ariaquit (Read error: Operation timed out)
20:12:06  <bentkus>why is utime a double
20:13:53  * ericktjoined
20:15:48  <ryah>saghul: 1. dynamic linking libuv is stupid
20:16:10  <ryah>saghul: 2. if you create a dynamic lib it will have the proper prefix
20:16:40  <saghul>ryah I use it for static linking
20:16:45  <ryah>what does libuv.a fix?
20:16:55  <ryah>it doesn't fix anything
20:17:29  <saghul>the library directory is in the path and -luv will pick it up without explicitly listing the file
20:17:39  <ryah>dude
20:17:46  <ryah>-l is for dynamic linking
20:17:57  <saghul>or that's what I had to do to embed it in a Python module
20:18:42  <ryah>why dont you just compile libuv into your module?
20:19:17  <saghul>ryah that what I actually do
20:19:26  <ryah>then why do you have any -luv?
20:19:28  * piscisaureus_joined
20:19:31  <ryah>you dont need to link
20:19:37  <piscisaureus_>hello
20:19:42  <saghul>I wonder how -l actually works then, need to check that out :-)
20:19:45  <ryah>hello bert
20:20:00  <bentkus>why is dynamic linking stupid?
20:20:25  <ryah>why is it smart?
20:20:34  <mmalecki>bentkus: it's too complicated
20:20:36  <ryah>it's complex
20:20:39  <ryah>it breaks shit
20:20:48  <ryah>increases dependencies
20:20:51  <ryah>increases startup time
20:20:59  <mmalecki>and when linker tries to be smart (smartos' linker) tends to do that, it fails miserably
20:21:13  <saghul>ryah AFAIS -l will search for .so and then for .a, but since .so is not there it picks up .a.
20:21:41  <ryah>saghul: static libraries are included just like object files in the gcc command
20:22:04  <ryah>gcc 1.o 2.o 3.o uv.a -o myprogram
20:22:20  <saghul>sure, I was just wondering how come -l had worked :-)
20:23:00  <ryah>:)
20:23:01  <bentkus>my wrapper works only with a dynamic library
20:23:25  <ryah>bentkus: why?
20:24:07  <ryah>look dynamic linking some things might make sense - libcurl, libz, or openssl - but libuv is basically the center of your program
20:24:15  <ryah>do you really want that to exist outside of your program?
20:24:29  <bentkus>I would like to exist it in the core of my runtime
20:25:28  <bentkus>ryah: sure, it makes sense just statitcally link libuv in node
20:25:49  <bentkus>but I have a runtime which has a base class library and there will be no additions for sure
20:26:25  <bentkus>and modules are not an option, because there are many different implementations of the runtime
20:27:44  <ryah>well whatever. i don't want to convince you otherwise - i am of the opinion that dynamic linking is on of the major cancers killing unix
20:31:02  <ryah>so can we change it back to uv.a ?
20:31:32  <ryah>strlen("uv.a") < strlen("libuv.a")
20:32:43  <bentkus>yeah uv.a has to be uv.a
20:35:32  * bnoordhuisjoined
20:37:45  <ryah>bnoordhuis: libuv.a ?
20:38:00  <piscisaureus_>I don't think bnoordhuis is home yet
20:38:01  <bnoordhuis>ryah: yes
20:38:12  <ryah>bnoordhuis: porque?
20:38:19  <bnoordhuis>ryah: so -luv works
20:38:21  <piscisaureus_>oh hah
20:38:34  <bentkus>prometheus is angry with your doings, mortal
20:38:42  <ryah>bnoordhuis: but... (insert obvious complaint)
20:39:09  <ryah>(-l is for dynamic linking)
20:39:28  <ryah>whatever i dont know why im arguing for this so much
20:39:36  <ryah>just pissed i had to change my scripts
20:39:42  <bnoordhuis>heh
20:39:51  <bnoordhuis>it's not just for dynamic linking though
20:40:07  <ryah>bnoordhuis: yeah saghul explained it to me
20:40:25  <ryah>but people who don't care if they static or dynamically link should die
20:40:32  <ryah>who would not care about that?
20:40:52  <ryah>why would you leave this up to a flag..
20:40:56  <bnoordhuis>ryah: the guy that requested it had a good story
20:41:12  <bnoordhuis>he's trying to bundle libuv as a luarock
20:41:23  <bnoordhuis>and luarocks assume a lib means -llibname
20:41:35  <bnoordhuis>*assumes
20:41:36  * paddybyersjoined
20:41:51  <ryah>lua should die
20:42:20  <ryah>well whatever i changed my script - now it's more effort to go back
20:42:27  <ryah>and lua is supported
20:44:39  * paddybyers_joined
20:48:00  * paddybyersquit (Ping timeout: 255 seconds)
20:48:00  * paddybyers_changed nick to paddybyers
20:50:00  * perezdjoined
20:51:10  * AvianFluquit (Remote host closed the connection)
20:51:59  <bnoordhuis>ryah: you'll be pleased to know though that dynamic linking is an option too now :)
20:52:20  <ryah>:P
20:52:46  <bentkus>only an option
20:55:13  <isaacs>bnoordhuis: don't tell anyone.
20:55:29  <isaacs>bnoordhuis: dynamic linking libuv in node, you mean?
20:55:33  <bnoordhuis>isaacs: yes
20:55:35  <isaacs>bnoordhuis: that's crazy.
20:55:45  <bnoordhuis>isaacs: except for the 'in node' part
20:55:57  <isaacs>ok, good :)
20:56:06  <isaacs>though, it could be nice to just rebuild libuv and see the changes in dev right away.
20:56:12  <isaacs>(in node, i mean)
20:56:19  <isaacs>would make bisecting easier
20:57:52  <bnoordhuis>isaacs: you can already do that today with some git bisect fu
20:58:13  <bnoordhuis>just bit bisect libuv and git archive | tar x it to node/
20:58:27  <bnoordhuis>s/bit/git/
20:58:48  <ryah>chrome people build chrome with dynamic libraries during development
20:58:55  <ryah>makes for faster build times
20:59:03  <bnoordhuis>it'd be nice for v8
20:59:11  <ryah>they set the <(library) variable to "shared_library"
20:59:24  <bnoordhuis>but libuv builds in 3 seconds flat on my machine
21:00:55  <ryah>http://neugierig.org/software/blog/2012/07/gyp-toc.html
21:11:19  <isaacs>bnoordhuis: yeah, that's what i do.
21:11:25  <isaacs>bnoordhuis: but it'd be nice to not have to rebuild node also.
21:11:36  <isaacs>bnoordhuis: but like ryah says, libuv is really not the problem there.
21:11:40  <isaacs>it's v8 that's the beast.
21:11:48  <bnoordhuis>yeah
21:11:58  <bnoordhuis>that's quite straightforward to fix though
21:12:59  <MI6>joyent/node: isaacs v0.8 * 218f08d : npm: Upgrade to 1.1.63 - http://git.io/Q0Okkw
21:14:35  <isaacs>bnoordhuis: is there a new way to build AUTHORS?
21:14:39  <isaacs>bnoordhuis: or is that just for master?
21:15:00  <bnoordhuis>isaacs: it's part script, part manual labor
21:15:54  <bnoordhuis>in case you're wondering, the script is this: git log --all --reverse --format='%aN <%aE>' | perl -ne 'BEGIN{print "# Authors ordered by first contribution.\n"} print unless $h{$_}; $h{$_} = 1' > AUTHORS
21:17:29  <isaacs>bnoordhuis: I just do: git log --pretty='format:%ae %an' | tail -r | awk -f tools/updateAuthors.awk
21:17:40  <isaacs>bnoordhuis: then copy the last few bits and paste onto the bottom of AUTHORS
21:20:24  <bnoordhuis>isaacs: doesn't that mess with the order of contribution?
21:23:33  <MI6>joyent/node: isaacs created branch v0.8.12-release - http://git.io/v7eTwQ
21:24:12  <bnoordhuis>all these years and i never knew about :abbr retrun return...
21:27:27  <isaacs>bnoordhuis: no
21:27:35  <isaacs>bnoordhuis: because tail -r reverses it, and i just copy the last few.
21:28:16  <isaacs>review? http://git.io/v7eTwQ
21:30:16  <isaacs>indutny: you remember that bug with the debugger tests leaving child procs lying around?
21:33:59  <bnoordhuis>isaacs: "crypto: fix -Wtautological-compare warning" and "build: Fix -Wsizeof-array-argument compiler warning." are thoroughly uninteresting
21:34:17  <isaacs>ok
21:35:32  <bnoordhuis>otherwise lgtm
21:35:43  <MI6>joyent/node: isaacs v0.8.12-release * 38c72d4 : 2012.10.12, Version 0.8.12 (Stable) * npm: Upgrade to 1.1.63 * crypto: - http://git.io/Ghdodg
21:37:37  * rendarquit
21:41:56  <isaacs>only pummels failing
21:53:30  * perezdquit (Quit: perezd)
21:54:24  * felixgejoined
21:59:58  * felixgequit (Quit: felixge)
22:04:36  * c4miloquit (Remote host closed the connection)
22:13:10  <isaacs>bnoordhuis, piscisaureus_, indutny: How do you feel about adding a .end() method on StringDecoder?
22:13:28  <piscisaureus_>No objections I think
22:13:29  <isaacs>then we could use this with base64, and it would work
22:13:39  <piscisaureus_>can you not implement it as a stream? :-)
22:13:53  <piscisaureus_>(that may not necessarily be a good idea)
22:16:18  * AvianFlujoined
22:31:19  * jmar777joined
22:35:31  * stagasquit (Ping timeout: 248 seconds)
22:37:13  * perezdjoined
22:39:32  * perezdquit (Client Quit)
22:41:00  * perezdjoined
22:41:37  * perezdquit (Remote host closed the connection)
22:54:40  <jmar777>i'm going to be out of my league in this discussion in 3...2... but was just curious about the future of fast file i/o in node. is this basically just a challenge of finding a portable solution for non-buffered, raw i/o?
22:56:12  <jmar777>e.g., O_DIRECT (linux), F_NOCACHE (osx), SOME_NON_BUFFERING_FLAG_I_DONT_KNOW (windows), etc?
22:59:54  * TheJHquit (Ping timeout: 260 seconds)
22:59:57  <piscisaureus_>where did you get the idea that unbuffered == fast?
23:00:57  <piscisaureus_>and no, we know what the flags are called. The windows one is FILE_FLAG_NO_BUFFERING
23:02:02  <jmar777>piscisaureus_: just a google hunt spawned from reading through this: http://piscisaureus.no.de/libuv/2012-04-06#00:08:48.951
23:03:20  <piscisaureus_>jmar777: well, unbuffered io can enable kernel async file io
23:03:40  <piscisaureus_>jmar777: on windows, and on linux with exceptions
23:03:47  <piscisaureus_>but it comes at a high cost
23:03:50  <piscisaureus_>no caching :-)
23:03:54  <jmar777>piscisaureus_: right - i assume AIO is the real goal, not necessarily the lack of buffers
23:03:57  <piscisaureus_>annoying alignment restrictions
23:04:21  <jmar777>piscisaureus_: true. we're looking at some use cases where we're needing to stream through gigs of data - as best i can tell we don't actually want caching cause we'll virtually never have a cache hit
23:04:34  <piscisaureus_>ah
23:04:48  <piscisaureus_>I don't think caching will hurt, either
23:04:55  <piscisaureus_>you might benefit from readahead caching
23:05:02  <jmar777>piscisaureus_: regardless of how it's done (which is where I'm stuck), we just want to be able to move bottleneck to cpu, rather than on IO
23:05:08  <piscisaureus_>operating systems are not stupid
23:05:11  <piscisaureus_>(well they are)
23:05:13  <bnoordhuis>except os x
23:05:24  <piscisaureus_>but they will actually notice that you are reading front to back :-)
23:07:21  <piscisaureus_>jmar777: I suppose that you mean it the other way around?
23:07:38  <jmar777>piscisaureus_: so would it be a reasonable (albeit overly generalized) assumption that currently in node it would be impossible to do file i/o (sequential read through N-gigs) fast enough that CPU is the bottleneck?
23:08:02  <piscisaureus_>jmar777: why do you want the cpu to be the bottleneck?
23:08:25  <piscisaureus_>jmar777: we can make node faster, but we can't make your platters spin faster?
23:08:44  <jmar777>piscisaureus_: well, ideally there are no bottlenecks. we're doing really simple stream based aggregates (sortta CEP-ish).
23:09:20  <jmar777>piscisaureus_: we've had to implement this on scala for now simply because we're able to stream the data from disk much faster than we've been able to do in node
23:09:54  <jmar777>piscisaureus_: normally node wouldn't be my first pick for doing intensive math, but at the same time that's what the rest of our stack uses and the math itself is pretty trivial and i'd trust the JIT to do a good enough job there
23:11:41  <jmar777>piscisaureus_: so maybe "moving bottlenecks" is the wrong terminology here. the real goal is just file i/o that can compete with AIO/O_DIRECT speeds
23:12:48  <bnoordhuis>jmar777: we're expected to have that in 0.10 or 0.12
23:12:58  <isaacs>Anyone want to review? https://github.com/joyent/node/pull/4119/files
23:13:05  <jmar777>bnoordhuis: awesome :)
23:13:08  <isaacs>https://github.com/isaacs/node/commit/0d17997547bcfa6d420306043f5434a767e3e2f8
23:13:10  <bnoordhuis>jmar777: if not quite as fast at least comparable to
23:13:43  <bnoordhuis>isaacs: are you using no brace if statements too now? :)
23:13:55  <jmar777>bnoordhuis: i think in this case "close" would be good enough for what we need
23:14:03  <isaacs>bnoordhuis: converted.
23:14:37  <bnoordhuis>isaacs: not that i particularly mind, mind you, it's my 'home' style
23:14:46  <bnoordhuis>but consistency and all that
23:15:20  <isaacs>bnoordhuis: make jslint is ok with it
23:15:30  <isaacs>and we've sort of used it here and there in node for a long time anyway
23:15:53  * isaacsforgot the copyright spam on the test..
23:18:42  <bnoordhuis>☃<- what's that?
23:21:25  <bnoordhuis>isaacs: lots of duplication
23:21:35  <bnoordhuis>otoh, it's only a few lines of code
23:21:58  <bnoordhuis>and overabstraction is the root of all evil, along with premature optimization
23:24:37  <ryah>bnoordhuis++
23:24:37  <kohai>bnoordhuis has 25 beers
23:26:02  <piscisaureus_>bnoordhuis: SNOWMAN
23:30:40  * jmar777quit (Remote host closed the connection)
23:32:56  * tommybergeronjoined
23:34:39  * mralephquit (Quit: Leaving.)
23:35:00  * Ariajoined
23:36:06  <isaacs>bnoordhuis: it's a snowman and an apple
23:36:31  <isaacs>bnoordhuis: yes, the duplication will go away with the move to streams2
23:36:49  <isaacs>bnoordhuis: along with a lot of other duplication.
23:36:50  * tomshredsquit (Ping timeout: 244 seconds)
23:36:53  * lohkeyquit (Quit: lohkey)
23:37:00  <bnoordhuis>isaacs: snowman, apple... i hear a whooshing sound
23:38:45  * Ariaquit (Remote host closed the connection)
23:38:53  * Ariajoined
23:39:31  <isaacs>bnoordhuis: it's just some random unicode stuff.
23:39:39  <isaacs>bnoordhuis: i suppose i should put an emoji in there just to be on the safe side.
23:39:47  <bnoordhuis>ah, is that what it is
23:40:03  <bnoordhuis>it looks like a bug in my font :)
23:41:54  <isaacs>bnoordhuis: pushed a change to put an emoji in there.
23:42:03  <isaacs>now it's snowman, poopface, apple.
23:42:12  <bnoordhuis>ah, good old poopface
23:43:27  <isaacs>bnoordhuis: so, +1?
23:43:40  <isaacs>oh, needs docs, i suppose
23:45:17  <isaacs>pushed
23:46:04  <bnoordhuis>isaacs: lgtm
23:46:20  <TooTallNate>where's MI6?
23:46:57  <isaacs>MI6: hi
23:47:01  <tjfontaine>if it's only happening in his own repo or a pull req there's not currently updates subscribed to it
23:47:05  <isaacs>TooTallNate: oh, i'm pushing to my own fork
23:47:37  <MI6>joyent/node: isaacs master * 061f207 : string_decoder: Add 'end' method, do base64 properly - http://git.io/hQMjgA
23:47:39  <isaacs>there we go
23:47:43  <TooTallNate>daammmmmnnnnn
23:48:11  <isaacs>now i can go back to moving crypto out of c++. hooray :)
23:48:17  <isaacs>release tomorrow morning.
23:48:20  <isaacs>0.8.12
23:48:25  <isaacs>almost no changes, which is optimum.
23:48:35  <isaacs>another 0.9 on monday
23:49:39  <bnoordhuis>that's going to be interesting
23:49:45  <bnoordhuis>fair amount of changes
23:49:47  <isaacs>yes.
23:49:58  <isaacs>0.9.3 seems like mostly bugfixes.
23:50:05  <isaacs>hopefully 0.9.4 will be streams2
23:50:09  <bnoordhuis>if you call removing libeio a bug fix :)
23:50:14  <isaacs>or at least half of streams2 :)
23:50:18  <isaacs>bnoordhuis: yeah, of course it is!
23:50:22  <tjfontaine>we should probably figure out which fix for setImmediate we want as well
23:50:23  <isaacs>bnoordhuis: if it wasn't a bug, why'd you fix it??
23:51:05  <TooTallNate>so it sucks that there's no good way to make util.format() accept options for when it calls inspect()
23:52:14  <isaacs>yeah.
23:52:44  <TooTallNate>it makes doing a console.inspectOptions object kinda impossible…
23:54:14  <isaacs>right, because any args after the format string are parameters.
23:55:00  <isaacs>TooTallNate: sleep on it. you'll think of something. i have confidence in you.
23:55:05  * paddybyersquit (Ping timeout: 276 seconds)
23:55:07  <isaacs>right now, it's beer o'clock, i think