--- Log opened Tue May 14 00:00:51 2013 00:02 <@MI6> libuv-node-integration: #51 UNSTABLE windows-ia32 (8/584) windows-x64 (13/584) osx-x64 (1/584) smartos-ia32 (2/584) osx-ia32 (1/584) smartos-x64 (9/584) linux-ia32 (1/584) linux-x64 (1/584) http://jenkins.nodejs.org/job/libuv-node-integration/51/ 00:08 <@MI6> joyent/node: Ben Noordhuis master * 9498fd1 : deps: upgrade c-ares to 1.10.0 - http://git.io/aC0BqQ 00:08 < bnoordhuis> tjfontaine: ^ 00:08 <@tjfontaine> dun dun dun 00:08 < bnoordhuis> thus it begins 00:08 <@tjfontaine> I'm still a fan of doing the string parsing in js than C :) 00:09 < bnoordhuis> yeah, me too. dns in general 00:09 <@tjfontaine> ya I may try and convince the powers to let me cleanup my work for consideration 00:18 <@MI6> nodejs-master: #214 UNSTABLE smartos-x64 (3/595) http://jenkins.nodejs.org/job/nodejs-master/214/ 00:19 <@tjfontaine> I really don't get why those debugger tests are failing on smartos-x64 00:19 <@tjfontaine> unless it's a v8 bug 00:25 <@tjfontaine> bnoordhuis: all instances of my use of struct then? 00:42 <@MI6> nodejs-master-windows: #24 UNSTABLE windows-x64 (10/595) windows-ia32 (9/595) http://jenkins.nodejs.org/job/nodejs-master-windows/24/ 00:52 -!- mode/#libuv [+o TooTallNate] by ChanServ 03:19 -!- mode/#libuv [+o TooTallNate] by ChanServ 07:13 -!- mode/#libuv [+o piscisaureus_] by ChanServ 07:27 <@indutny> hoya 09:49 < kuebk> hi 09:49 < kuebk> what is the best way to use JSON.parse 09:49 < kuebk> in C land? 09:53 < kuebk> i'm currently doing it that way 09:53 < kuebk> http://pastebin.com/eJmPMiFz 10:33 <@MI6> joyent/node: Ben Noordhuis v0.10 * f13a3fd : doc: clarify subsystems in CONTRIBUTING.md - http://git.io/8jurWg 10:38 <@MI6> joyent/node: Benoit Vallée v0.10 * dbe9f8d : test: increase workers to 8 in cluster-disconnect - http://git.io/TvomwA 10:44 <@MI6> nodejs-v0.10: #183 UNSTABLE smartos-x64 (2/584) http://jenkins.nodejs.org/job/nodejs-v0.10/183/ 10:55 <@MI6> nodejs-v0.10: #184 UNSTABLE smartos-x64 (1/584) linux-x64 (1/584) http://jenkins.nodejs.org/job/nodejs-v0.10/184/ 11:10 < bnoordhuis> bajtos: any patches that need reviewing? 11:11 < bajtos> bnoordhuis: what about this one? https://github.com/joyent/libuv/pull/778 11:12 < bajtos> bnoordhuis: and also this: https://github.com/joyent/libuv/pull/783/files 11:12 < bajtos> https://github.com/joyent/libuv/pull/783/ 11:20 < bnoordhuis> bajtos: i landed #778 didn't i? 11:21 < bnoordhuis> yeah, i did - i'll close it 11:21 < bajtos> bnoordhuis: ah ok, I didn't remember that you already landed it. thanks 11:23 < bnoordhuis> bajtos: rule of thumb: use #if defined(__sun) 11:24 < bnoordhuis> and try to avoid negations, i.e. not #ifndef 11:24 < bajtos> bnoordhuis: ok, I'll keep it in mind 11:24 < bajtos> shall I rework the PR, or will you change it yourself during merge? 11:24 < bnoordhuis> so in that patch you'd write #if defined(__sun) RETURN_SKIP(...) #else // and so on 11:25 < bnoordhuis> i'm lazy, you do it :) 11:25 < bajtos> ok 11:28 < bajtos> bnoordhuis: pushed 11:29 < bajtos> bnoordhuis: btw, the test fails on OSX too, but that will be another PR sometimes else 11:29 < bnoordhuis> bajtos: oh? it wfm 11:31 < bnoordhuis> bajtos: btw, the patch doesn't apply to v0.10 or master 11:31 < bnoordhuis> can you rebase and force-push? 11:32 < bajtos> bnoordhuis: at my mac, the size limit of process title is another character less than the size of test string 11:34 < bajtos> bnoordhuis: after fetch+merge+rebuild, the test does not fail anymore. strange 11:35 < bajtos> bnoordhuis: anyway, PR is updated (force-pushed) 11:37 <@MI6> joyent/libuv: Miroslav Bajtoš v0.10 * 0564ee4 : test, sunos: disable process_title test - http://git.io/pzf4KQ 11:50 <@indutny> bnoordhuis: hey man 11:50 <@indutny> so you was asking how is rust 11:50 <@indutny> the answer is its beautiful 11:50 <@indutny> :) 11:50 <@indutny> but needs to be polished 11:50 <@indutny> and that's not only about compiler bugs 11:51 <@indutny> but about language semantics as well 11:54 < bnoordhuis> indutny: what kind of semantics? 11:54 < bnoordhuis> and is it ready to rewrite node in? :) 11:54 <@indutny> well, it still requires to do a lot of copying in some cases 11:54 <@indutny> bnoordhuis: definitely not :) 11:54 <@indutny> this mutable/immutable concept is really good 11:54 <@indutny> but the fact that you can't have two mutable pointers derived from one is a little bit abusing 11:55 <@indutny> but eliminates runtime errors 11:55 <@indutny> bnoordhuis: but its on a right path! :) 11:55 < bnoordhuis> okay, nice 11:55 <@indutny> I'd like to see node rewritten in rust eventually 15:33 -!- mode/#libuv [+o TooTallNate] by ChanServ 15:43 < trevnorris> is it possible for the %'s from "perf record" not to add up to 100%? 15:46 < trevnorris> wtf. 3.19 no longer has the --prof option 15:47 < trevnorris> wait. nm. 15:58 -!- mode/#libuv [+o sblom] by ChanServ 15:59 <@MI6> nodejs-v0.10-windows: #14 FAILURE http://jenkins.nodejs.org/job/nodejs-v0.10-windows/14/ 15:59 <@tjfontaine> and the day is going great so far on windows 16:00 <@sblom> >_< 16:00 <@tjfontaine> :) 16:00 <@sblom> How on earth did that change break it? 16:01 < trevnorris> isaacs: standup? 16:02 <@tjfontaine> sblom: it didn't, this is a debugger issue 16:02 <@sblom> oh 16:02 <@sblom> got it 16:02 <@tjfontaine> we're back to debugger tests being sorta flakey, it is more pronounced on windows (fairly reliable failure) and x64 smartos 16:04 <@MI6> libuv-v0.10: #59 UNSTABLE smartos (2/186) windows (4/187) http://jenkins.nodejs.org/job/libuv-v0.10/59/ 16:05 -!- mode/#libuv [+o piscisaureus_] by ChanServ 16:05 <@piscisaureus_> hey 16:05 <@piscisaureus_> isaacs: call? 16:05 <@tjfontaine> he's not in the office, but since he's not online I guess he's in transit? 16:05 <@piscisaureus_> Ok 16:05 <@MI6> libuv-v0.10-gyp: #23 UNSTABLE smartos-x64 (2/186) windows-ia32 (3/187) windows-x64 (4/187) linux-x64 (1/186) smartos-ia32 (2/186) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/23/ 16:13 < trevnorris> well, since bn isn't here. anyone know what the ":e" in "perf record -e cycled:e" is for? 16:13 < trevnorris> s/cycled/cycles 16:16 <@tjfontaine> interesting, it's a modifier, but not listed on the wiki 16:23 <@MI6> libuv-node-integration: #52 ABORTED osx-x64 (1/584) osx-ia32 (1/584) smartos-x64 (1/584) http://jenkins.nodejs.org/job/libuv-node-integration/52/ 16:24 <@tjfontaine> he must be sleeping 16:25 < trevnorris> which, ben or isaacs? 16:25 <@tjfontaine> isaacs 16:25 <@tjfontaine> oh 16:25 <@tjfontaine> speak of the devil 16:36 <@isaacs> hola 16:36 <@isaacs> sorry i'm late. 16:42 < trevnorris> anyone mind verifying that "perf-stat-throughput.txt" is a valid upper-limit test of bus throughput? https://gist.github.com/trevnorris/5577360 16:45 < bnoordhuis> trevnorris: you probably want to set bs= 16:46 < trevnorris> bnoordhuis: ah, thanks. 16:46 < bnoordhuis> trevnorris: how do you feed the server data? 16:46 < trevnorris> bnoordhuis: "cat /dev/zero | nc -U /tmp/test.sock" 16:47 < bnoordhuis> ah, right 16:47 < trevnorris> bnoordhuis: oh mother. yeah. bs=1024 just doubled my throughput. freak. 16:47 < bnoordhuis> maybe make that `nc -U /tmp/test.sock < /dev/zero` so you don't have the overhead of an extra pipe 16:47 < trevnorris> ah, good idea. thanks. 16:47 < bnoordhuis> try bs=4096 or bs=8192, i bet you'll see even more of a speedup 16:49 < trevnorris> wow, yeah. 16:49 < trevnorris> well um. hm. guess that upper-limit test is flawed. 16:53 <@isaacs> tjfontaine: https://gist.github.com/creationix/5544019 16:57 < trevnorris> bnoordhuis: thanks for the "< /dev/zero" tip. doubled throughput. oh, and what is the ":e" in "perf record -e cycles:e" for? it's not on the wiki. 17:01 < trevnorris> isaacs: is the call off today? 17:02 <@tjfontaine> trevnorris: yes, we're already in another meeting :) 17:02 <@isaacs> trevnorris: yeah, i missed it, and the meeting train proceeds apace 17:03 < trevnorris> heh. 17:11 < trevnorris> isaacs: fyi, have basic thin buffers test. tcp-raw-c2s: master - 15.3 Gb/s; thinbuffer - 19.4 Gb/s 17:11 < trevnorris> isaacs: problem right now is the thinbuffer to buffer method suddenly got slower in the 3.19 upgrade. figuring that out. 17:14 < bnoordhuis> trevnorris: re cycles:e, i don't know 17:15 < bnoordhuis> invalid or unsupported event: 'cycles:e' <- guess that answers that 17:15 < trevnorris> bnoordhuis: oy, i'm a moron. mistype. :u, and that's in the wiki. sorry. :P 17:16 < bnoordhuis> right. :u means user-mode cycles only (c.f. :k) 17:16 <@tjfontaine> heh 17:18 < trevnorris> i was trying to measure how much node gets in the way of throughput. haven't been able to figure out which modifiers would most reliably show me that. 17:18 < bnoordhuis> trevnorris: you probably want cycles:e for that 17:19 < bnoordhuis> anything that gets accounted to perf-xxxxxx.map is usually generated code 17:19 < bnoordhuis> i have a patch somewhere that resolves those addresses to js function names 17:20 < bnoordhuis> it has some overhead though and you need to disable code move / code gc 17:23 < trevnorris> bnoordhuis: using "record -e cycles:u" and "report --sort=dso" it shows node at 81% 17:23 < trevnorris> but w/o :u it shows node at 24% 17:24 < trevnorris> sorry, just trying to figure out how much of the bottleneck is from node, and just seems there's a lot of ways to analyze it. 17:27 <@isaacs> piscisaureus_: so, i must be missing something about function overloading... 17:27 <@isaacs> piscisaureus_: it's complaining about setting = NULL rather than defining the fucntion twice and passing NULL as the arg 17:27 <@isaacs> Undefined symbols for architecture x86_64: "node::StringBytes::Write(char*, unsigned long, v8::Handle, node::encoding)", referenced from: 17:28 <@isaacs> if i don't have that second definition in the .h, i get: 17:28 <@isaacs> ../src/node_crypto.cc: In static member function ‘static v8::Handle node::crypto::Cipher::CipherUpdate(const v8::Arguments&)’: 17:28 <@isaacs> ../src/node_crypto.cc:2244: error: no matching function for call to ‘node::StringBytes::Write(char*&, size_t&, v8::Local, node::encoding&)’ 17:28 < bnoordhuis> trevnorris: yeah, that's because you're only measuring user cycles and node is pretty much node + libc 17:28 <@tjfontaine> isn't a position thing? where it's the last arg or set of args? 17:28 <@isaacs> and if i put the =NULL in the .h, i get this: 17:28 <@isaacs> ../src/string_bytes.cc:170: error: default argument given for parameter 5 of ‘static size_t node::StringBytes::Write(char*, size_t, v8::Handle, node::encoding, int*)’ 17:28 <@isaacs> ../src/string_bytes.h:55: error: after previous specification in ‘static size_t node::StringBytes::Write(char*, size_t, v8::Handle, node::encoding, int*)’ 17:28 <@tjfontaine> ah 17:28 < bnoordhuis> trevnorris: so everything gets accounted to the node binary. it still gives some insight in what functions are hot 17:29 < bnoordhuis> trevnorris: just -e cycles, no :u means 'measure both kernel and user'. if node is at 24%, you're probably spending most of your time in kernel mode 17:30 < bnoordhuis> which is usually good 17:32 <@isaacs> bnoordhuis: you know about C++ stuff. you know how to do this properly? 17:32 < trevnorris> bnoordhuis: that sounds about right. using --prof output shows 62% of ticks in libpthread, 21% in syscall, and the rest are 1% or less. 17:32 <@isaacs> bnoordhuis: per this comment from piscisaureus_ https://github.com/isaacs/node/commit/cc7681fd321eed5a40be38a173b08fa4852fe9a4#src-string_bytes-cc-P164 17:32 <@MI6> nodejs-v0.10-windows: #15 UNSTABLE windows-x64 (9/584) windows-ia32 (7/584) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/15/ 17:33 < bnoordhuis> isaacs: sorry, back in a few - dinner is ready :-/ 17:38 <@isaacs> ohhh, i see. in teh function declaration, not in the definition 17:38 <@isaacs> piscisaureus_, bnoordhuis: Nevermind, C++ noobishness figured out. 17:45 <@piscisaureus_> isaacs: sorry was doing an interview 17:46 <@piscisaureus_> isaacs: you have to declare the default value in the function declaration (in the .h file usually) 17:46 <@piscisaureus_> but I guess you figured that out yourself :) 18:11 <@piscisaureus_> isaacs: did bnoordhuis look at the StringBytes implementation yet? 18:14 <@isaacs> piscisaureus_: i don't think so. 18:14 <@isaacs> he posted a few comments, but not his usual thoroughness. 18:24 <@isaacs> things work and it makes crypto way faster, though 18:24 <@isaacs> piscisaureus_: i fixed up all your suggestions. 18:24 <@isaacs> piscisaureus_: i think i'm gonna just land it and fix whatever bnoordhuis wants fixed later. 18:25 <@isaacs> piscisaureus_: any final objections? 18:25 < trevnorris> isaacs: sooner the better for me. :) 18:25 <@piscisaureus_> isaacs: taking a final look. should be short 18:27 <@tjfontaine> a watched pot never boils, of course now that I'm sitting here waiting for the windows debugger tests to hang they work without issue 18:27 <@piscisaureus_> isaacs: apparently you rolled up all StringBytes commits 18:28 <@piscisaureus_> isaacs: I'll take your word for fixing all my issues... 18:28 <@piscisaureus_> isaacs: so go for it! 18:28 < bnoordhuis> looking 18:30 < roxlu> hey guys, how can I build libuv into a shared lib? 18:31 <@tjfontaine> make libuv.so 18:31 <@tjfontaine> assuming !win32 and !osx 18:31 < roxlu> me == osx 18:31 < roxlu> ;-) 18:31 <@tjfontaine> make libuv.dylib 18:32 < roxlu> tjfontaine: thanks! can I also tell it what architectue I want? (i386, x86_64) 18:32 <@tjfontaine> not with the makefile at the moment, I don't believe so anyway 18:32 <@tjfontaine> you can with gyp 18:33 * isaacs preemtpively starting v0.10.6 on top of this.. 18:33 < roxlu> ah that's great! 18:36 <@MI6> joyent/node: isaacs v0.10 * 6a833a3 : blog: Release v0.11.2 - http://git.io/t8JmiQ 18:41 < roxlu> tjfontaine: do you know how I can create a i386/x86_64 dylib with gyp? 18:41 <@tjfontaine> roxlu: lemme break out the script I use 18:42 <@TooTallNate> roxlu: you mean a fat binary? 18:42 < roxlu> no 18:42 <@MI6> joyent/node: isaacs created branch v0.10.6-release - http://git.io/c3KhIg 18:42 <@isaacs> ^ pending fixups from bnoordhuis StringBytes review 18:43 < roxlu> I want to create a static lib + dylibs for both x386/64 18:43 <@TooTallNate> roxlu: so 2 separate dylibs? 18:43 < roxlu> TooTallNate: yep 18:43 < trevnorris> isaacs: you planing on merging that into master today. :) 18:43 <@TooTallNate> ok i see 18:44 <@TooTallNate> haha wow this release is like purely isaacs 18:44 <@TooTallNate> at least that commit range :p 18:44 <@tjfontaine> roxlu: https://gist.github.com/tjfontaine/5578370 you'll also need to set -Dlibrary=shared_library and -Dcomponent=shared_library I believe on the gyp command line 18:45 < roxlu> thanks 18:47 <@TooTallNate> tjfontaine: what's the "component" variable for? 18:47 <@MI6> nodejs-v0.10: #185 UNSTABLE smartos-x64 (2/584) http://jenkins.nodejs.org/job/nodejs-v0.10/185/ 18:47 <@tjfontaine> TooTallNate: I really haven't investigated, but it may be about when you're using it as a direct descendent in gyp 18:49 < roxlu> tjfontaine: do I need to install gyp system-wide? 18:49 <@tjfontaine> roxlu: nope 18:49 <@TooTallNate> roxlu: naw 18:49 <@tjfontaine> gyp_uv needs it in that location though 18:50 < roxlu> in what location? 18:50 <@tjfontaine> build/gyp 18:50 < roxlu> tjfontaine: ah I see 18:50 <@tjfontaine> also your two arch types are ia32 and x64 18:53 <@isaacs> piscisaureus_, bnoordhuis: So, what do you say we ditch this callback and event emitter malarky, and use generators? 18:53 < bnoordhuis> i'm game 18:54 <@isaacs> var data = yield fs.readFile(filename) 18:55 < roxlu> ok great I got a dylib now! 18:55 < trevnorris> not sure why, but that makes me hurt inside a little. 18:56 < roxlu> one last thing, can I use --prefix ? 18:56 <@tjfontaine> roxlu: for install prefix? 18:56 < roxlu> yes 18:57 < bnoordhuis> there is no `make install` target 18:57 < roxlu> ok 18:57 <@tjfontaine> right I was just double checking that myself, I didn't think gyp had a concept of it 18:58 <@TooTallNate> there's no prefix 18:58 <@TooTallNate> in gyp 18:59 <@isaacs> bnoordhuis: still reviewing? 19:05 < bnoordhuis> isaacs: done 19:06 < trevnorris> v8. thanks for being so sucktastic at setting object values. 19:07 < roxlu> tjfontaine: when I do: -Dtarget_arch=x64 it creates a i386 19:08 <@tjfontaine> find out/ -name \*.dylib -exec file '{}' \; 19:08 <@tjfontaine> out//Debug/libuv.dylib: Mach-O 64-bit dynamically linked shared library x86_64 19:09 <@tjfontaine> roxlu: I would blow away the `out` directory before running gyp again 19:09 < roxlu> ok 19:13 < roxlu> tjfontaine: https://gist.github.com/roxlu/1cdb5098f7b062ae5ce8 19:13 < roxlu> that's what I'm using. still getting a i386 19:14 < bnoordhuis> curious. `out/Debug/node --allow-natives-syntax -e '%DebugPrint(console.log)'` crashes 19:15 < bnoordhuis> but debug-printing e.g. process.exit works 19:15 < bnoordhuis> oh, process.exit is not a native function 19:15 < bnoordhuis> then again, neither is console.log 19:15 < bnoordhuis> weird 19:19 < roxlu> tjfontaine: even when I hardcode target_arch=x64, I get a i386 19:19 < bnoordhuis> roxlu: how are you invoking gyp/gyp_uv? 19:20 < bnoordhuis> also, what version/commit of libuv are you at? 19:20 < roxlu> bnoordhuis: python gyp_uv -Dlibrary=shared_library -Dcomponent=shared_library -Dtarget_arch=x64 -Dhost_arch=x64 19:20 < roxlu> I'm not using the latest git version 19:20 < bnoordhuis> roxlu: does your copy contain commit 0761fb5? 19:21 < roxlu> bnoordhuis: how can I check that? 19:21 < bnoordhuis> with `git log 0761fb5`? 19:21 < bnoordhuis> or is it not a git checkout at all? 19:21 < roxlu> ah yes I got that one 19:22 < bnoordhuis> okay, good 19:22 < bnoordhuis> then it should Just Work(TM) :) 19:22 < roxlu> I'll try that example in your comment 19:22 < bnoordhuis> what does `make -C out BUILDTYPE=Debug V=1` print? 19:22 < trevnorris> bnoordhuis: hm. does it have to do w/ the debug build? the following fails for me: ./node_g --expose_natives_as=nnn -e 'console.log(nnn)' 19:23 < bnoordhuis> trevnorris: %DebugPrint only exists in debug builds 19:23 < trevnorris> bnoordhuis: oop, yeah. nm. that failure is for something else. 19:23 < roxlu> bnoordhuis: '-D_FILE_OFFSET_BITS=64' '-D_GNU_SOURCE' '-D_DARWIN_USE_64_BIT_INODE=1' '-DDEBUG' '-D_DEBUG' '-DEV_VERIFY=2' -I../include -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof -arch i386 -W 19:23 < roxlu> .. and a bit more.. so it's not using the x64 flags somehow 19:24 < bnoordhuis> don't know, works for me 19:25 < bnoordhuis> maybe try upgrading to HEAD 19:25 < roxlu> ok 19:25 < roxlu> bnoordhuis: I think that works 19:26 < bnoordhuis> yay :) 19:27 < roxlu> awesome! 19:27 < roxlu> is that: make -C out, a standard make option to set the out path? 19:28 < bnoordhuis> no, it tells make to cd to out/ first 19:28 < roxlu> ok 19:28 < roxlu> and gyp creates that out ? 19:28 < bnoordhuis> else it would start executing the Makefile in the top-level directory 19:28 < bnoordhuis> yes, it's created by gyp 19:40 < trevnorris> bnoordhuis: one last Q. how would you measure the impact node has on throughput from the "node .. < /dev/zero" example? 19:40 < bnoordhuis> trevnorris: depends on your definition of 'impact' 19:42 < trevnorris> bnoordhuis: heh, yeah. well if I understand correctly data can only go in as fast as it can be processed (e.g. onread called passing Buffer) 19:42 <@MI6> nodejs-v0.10-windows: #16 UNSTABLE windows-x64 (7/584) windows-ia32 (8/584) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/16/ 19:44 < trevnorris> bnoordhuis: oy, ok. seems my problem is not understanding how the even lower guts work. 19:44 * trevnorris goes off to study 19:47 < bnoordhuis> trevnorris: if you run `perf record`, all time that is not spent inside kernel land is essentially overhead 19:47 < bnoordhuis> that is, all cpu time that is accounted to node directly or indirectly (libc) 19:47 < trevnorris> bnoordhuis: guess what i was looking at was the "perf stat -B dd" example. i incremented "bs=" until throughput didn't increase anymore. 19:47 < trevnorris> it maxed out around 21Gb/sec 19:47 < trevnorris> where node maxes out around 15Gb/s 19:48 < bnoordhuis> right 19:49 < trevnorris> ok. so libc is also accounted as overhead. good to know. 19:49 < trevnorris> thanks. 20:05 < trevnorris> bnoordhuis: well, fwiw, returning a thin buffer from stream_wrap increases throughput by 35%. not very usefull, but heh. i'll take it. :P 20:08 <@isaacs> bnoordhuis: thanks, updating now 20:35 <@tjfontaine> bnoordhuis: any final comments on https://github.com/joyent/node/pull/5435 20:37 < bnoordhuis> tjfontaine: that UV_OK assert? 20:38 <@tjfontaine> I made it an if() that returns ARES_EBADSTR 20:38 <@tjfontaine> if you'd rather I can make it assert, I wasn't sure which was preferred 20:38 -!- mode/#libuv [+o piscisaureus_] by ChanServ 20:39 < bnoordhuis> tjfontaine: oh, i was talking about the call to uv_inet_ntop in GetServers() 20:39 <@tjfontaine> oh 20:39 < bnoordhuis> it's rather unlikely to trigger but defense in depth 20:40 <@tjfontaine> nod, I will add an assert there for that 20:44 <@isaacs> bnoordhuis: MayContainNonAscii still provides correct info in v0.10 20:44 <@isaacs> bnoordhuis: gonna keep that around for now 20:44 <@isaacs> bnoordhuis: in master, whatever, we can use the new APIs 20:44 <@isaacs> but for now, it seems to save potentially a lot of cost not all that expensively. 20:45 < bnoordhuis> right. i thought i was looking at a PR for master 20:45 < bnoordhuis> it still works in v0.10 20:46 <@isaacs> yep 20:46 <@isaacs> just verified 20:46 <@isaacs> > b = require('./build/release/binding.node') 20:46 <@isaacs> { hello: [Function], 20:46 <@isaacs> hasNonAscii: [Function] } 20:46 <@isaacs> > b.hasNonAscii('asdf') 20:46 <@isaacs> false 20:46 <@isaacs> > b.hasNonAscii('asdfü') 20:46 <@isaacs> true 20:49 < trevnorris> isaacs: doesn't look like there's a replacement API for MayContainNonAscii in 3.19. 20:50 <@isaacs> trevnorris: no, it just returns true all the time 20:51 < trevnorris> isaacs: so we'll have to impl't our own? 20:52 < bnoordhuis> no, we're switching back to 7 bits ascii everywhere 20:52 * bnoordhuis ducks 20:52 <@isaacs> 7 bits should enough for anyone. 20:52 <@isaacs> 7 bits should be enough for anyone. 20:52 <@isaacs> if you want more bits, just break them up into groups of 7, and put them together. 20:52 <@isaacs> easy as pie. 20:53 <@isaacs> do you want node to chew your pie for you, too? 20:53 <@isaacs> people are babies with their encodings and extravagant 8 bit bytes. 20:53 <@isaacs> bnoordhuis: ok, i'm pushing this to 0.10 and doing the binaries for 10.6 20:53 <@tjfontaine> 1 should be enough for anyone 20:54 <@isaacs> tjfontaine: true. 20:57 < trevnorris> damn you Persistent!!! 20:58 <@MI6> joyent/node: isaacs v0.10 * a241deb : crypto: Pass encodings for Hmac digest (+12 more commits) - http://git.io/e7XRYQ 21:01 <@MI6> joyent/node: isaacs v0.10.6-release * 5deb167 : 2013.05.14, Version 0.10.6 (Stable) - http://git.io/39UpKQ 21:02 <@tjfontaine> bnoordhuis: ok I updated #5435 do you prefer declaration in the loop or outside? 21:04 <@isaacs> tjfontaine: about to start building on smartos. jenkins may be impacted. 21:05 <@tjfontaine> heh ok 21:05 < bnoordhuis> tjfontaine: inside if it's only used inside the loop 21:06 < bnoordhuis> you can fold the declaration and the assignment btw 21:06 <@tjfontaine> ya but then I approach 80 chars :) 21:06 < bnoordhuis> ah right 21:06 <@tjfontaine> not necessarily there but with the static_cast 21:06 < bnoordhuis> maybe const void* addr = static_cast(&cur->addr) 21:06 <@tjfontaine> I thought about just wrapping it all in ann assert 21:07 < bnoordhuis> then you can probably reduce it to two lines 21:07 < bnoordhuis> right, don't do that - it gets compiled away when NDEBUG is defined 21:07 < bnoordhuis> those are annoying bugs to track down :-/ 21:07 <@tjfontaine> oh right, ya 21:07 <@tjfontaine> silly people not wanting their asserts 21:12 <@tjfontaine> force pushed 21:13 <@MI6> nodejs-v0.10: #186 UNSTABLE smartos-x64 (1/584) http://jenkins.nodejs.org/job/nodejs-v0.10/186/ 21:14 < bnoordhuis> tjfontaine: lgtm but you can squeeze the uv_inet_ntop lines into a single one 21:14 < bnoordhuis> anyway, minor thing. like i said, lgtm :) 21:14 <@tjfontaine> heh 21:16 <@indutny> bnoordhuis: hey man 21:16 <@indutny> wanna hear funny thing? :) 21:16 < bnoordhuis> indutny: sure. what's up? 21:16 <@indutny> haha 21:16 <@MI6> joyent/node: Timothy J Fontaine master * 8886c6b : dns: add getServers and setServers - http://git.io/5Ws9Ng 21:16 <@indutny> its about russian postal service 21:17 <@indutny> there was a fire in their international warehouse 21:17 <@indutny> right after they publicly said that there was a couple of tons of unprocessed mails from other countries 21:17 <@indutny> and they're stopping accepting them :) 21:17 < bnoordhuis> hah. coincidence? 21:18 <@isaacs> In Russia, mail delivers you! 21:18 <@indutny> :) 21:18 <@isaacs> (is yakov smirnov retro-funny yet?) 21:18 <@indutny> some people do believe 21:18 <@indutny> yakov smirnov? 21:19 <@isaacs> https://en.wikipedia.org/wiki/Yakov_Smirnoff 21:19 <@indutny> ah, I don't know this man 21:19 <@indutny> interesting fact 21:19 <@indutny> one of mails addressed was moved to this storage right before the fire 21:19 <@indutny> as I can see on tracking website 21:20 <@indutny> I wonder if I'll still receive it 21:25 <@isaacs> funny story about mail... 21:25 <@isaacs> i once sent my rent check to my landlord 21:26 <@isaacs> usually my partner does this, and she's really astute with such things, but this time it was my turn. 21:26 <@isaacs> and my landlord emailed me a week late, and said "You guys are always so prompt, but i haven't gotten a rent check.. is everything alrigth?" 21:26 <@isaacs> i thought, "Hm. Well, I'll send another check, if you get the first one, just rip it up" 21:26 <@isaacs> sent again 21:26 <@isaacs> 2 weeks later, she had still not got it 21:27 <@isaacs> and i thught maybe the oakland post office had broken or something 21:27 <@tjfontaine> were you putting it in the wrong box? 21:27 <@isaacs> 2 weeks later, i got this text message from Marisa: 21:27 <@isaacs> "My Love. When you send something that isn't Netflix, you have to use a stamp." 21:28 < bnoordhuis> haha 21:28 <@tjfontaine> well played 21:28 <@isaacs> now my bank automatically mails my rent. 21:28 * isaacs can't be trusted with such things 21:28 <@tjfontaine> good choice 21:32 <@MI6> nodejs-v0.10-windows: #17 UNSTABLE windows-x64 (9/584) windows-ia32 (10/584) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/17/ 21:33 <@MI6> joyent/node: isaacs created tag v0.10.6 - http://git.io/1Ied7Q 21:33 < trevnorris> isaacs: i got married for that. =P 21:34 <@tjfontaine> free automatic billpay? 21:34 < trevnorris> well, she takes care of all the bills. 21:34 < trevnorris> if she left, i'd have no idea what to do. 21:36 <@MI6> joyent/node: isaacs v0.10 * ca38def : blog: Release 0.10.6 (+3 more commits) - http://git.io/f7otcA 21:36 < bnoordhuis> lucky you, i have to take care of that myself 21:36 < bnoordhuis> my girlfriend only cooks, cleans, looks after the kids and drives me around 21:36 < bnoordhuis> it's tough 21:36 <@tjfontaine> man, you should fix that 21:37 < trevnorris> lol 21:37 <@isaacs> whoops, forgot to update npm in 0.10 21:37 <@isaacs> oh well. 21:37 <@isaacs> 10.7 tomorrow, i guess :) 21:38 <@MI6> joyent/node: isaacs v0.10 * f7b10f5 : npm: Upgrade to 1.2.21 - http://git.io/vVmFmw 21:39 <@isaacs> libuv has some updates too. 21:39 * isaacs shrug. 21:39 <@isaacs> oh wel 21:40 <@MI6> joyent/libuv: isaacs created tag v0.10.6 - http://git.io/H0CV2w 21:40 <@isaacs> doing a libuv release now 21:40 <@MI6> joyent/libuv: isaacs v0.10 * 1fd10de : Now working on v0.10.7 (+1 more commits) - http://git.io/d65iLw 21:42 <@MI6> joyent/node: isaacs v0.10 * f564b6b : uv: Upgrade to 0.10.6 - http://git.io/xVXzvA 21:42 <@MI6> nodejs-master: #215 UNSTABLE smartos-x64 (5/596) linux-x64 (1/596) smartos-ia32 (1/596) http://jenkins.nodejs.org/job/nodejs-master/215/ 21:54 < bnoordhuis> anyone have a 32 bits build of node at hand? 21:54 < bnoordhuis> if yes, could you tell me what "node --allow-natives-syntax -p '%_IsSmi(0x7fffffff)'" prints? 21:58 < bnoordhuis> okay, no worries - figured out it's 0x3fffffff on ia32 21:59 <@tjfontaine> ./node --allow-natives-syntax -p '%_IsSmi(0x7fffffff)' 21:59 <@tjfontaine> false 21:59 <@tjfontaine> :P 22:01 < bnoordhuis> yeah, the smi tag is 2 bits on ia32 and 1 bit on x64, hence 0x3fffffff and 0x7fffffff 22:02 < bnoordhuis> i kind of knew that but it's nice to have it confirmed 22:03 <@tjfontaine> nod 22:12 <@MI6> nodejs-master-windows: #25 UNSTABLE windows-x64 (9/596) windows-ia32 (10/596) http://jenkins.nodejs.org/job/nodejs-master-windows/25/ 22:23 <@MI6> nodejs-v0.10: #187 UNSTABLE smartos-x64 (2/584) linux-ia32 (1/584) http://jenkins.nodejs.org/job/nodejs-v0.10/187/ 22:23 < trevnorris> indutny: from inside a Buffer prototype method, i'm trying to retrieve the associated Persistent from args.This(), though it's looking to not be possible. 22:24 < trevnorris> indutny: is there something I'm missing? 22:42 < trevnorris> isaacs: oh dude, might have found a safe way to implement thin buffers 22:45 < trevnorris> isaacs: turns out the big killer is gc constantly trying to clean up w/ external memory around. so I added a Buffer.prototype.dispose which just drops the underlying data. 22:45 < trevnorris> isaacs: if I run that in the onread callback, tcp-raw-c2s perf goes from 15 Gb/s to 20Gb/s 22:46 < trevnorris> isaacs: unfortunately I haven't been able to figure out how to clear the Persistent of the buffer instance, so the target callback still runs. but seems that was a much smaller hit than I though all along. 22:46 < trevnorris> s/target callback/makeweak callback 22:47 <@MI6> nodejs-v0.10-windows: #18 UNSTABLE windows-x64 (9/584) windows-ia32 (9/584) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/18/ 22:47 <@isaacs> trevnorris: so it'd be an optional deletion? 22:47 < trevnorris> isaacs: yeah. you just run buffer.dispose() and it turns it into a zero-length buffer. 22:48 < trevnorris> and it's completely safe. 22:49 <@MI6> libuv-v0.10: #60 UNSTABLE smartos (2/186) osx (1/187) windows (4/187) linux (1/186) http://jenkins.nodejs.org/job/libuv-v0.10/60/ 22:53 <@MI6> joyent/node: piscisaureus created branch tj-try-this - http://git.io/G_fuhg 22:53 <@MI6> libuv-v0.10-gyp: #24 UNSTABLE smartos-x64 (2/186) windows-ia32 (4/187) linux-ia32 (1/186) windows-x64 (4/187) smartos-ia32 (4/186) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/24/ 22:54 <@TooTallNate> trevnorris: i like that idea 22:54 <@MI6> joyent/node: Bert Belder tj-try-this * 43b7658 : Test - http://git.io/WwHjyg 22:55 < trevnorris> TooTallNate: yeah. seriously can't believe it took me this long to think of, but immediately disposing the buffer increases net throughput by ~35% 22:56 < trevnorris> TooTallNate: what would be perfect is if I could find a way to ClearWeak on the Buffer instance. problem is I can't figure out how to get the existing weak Persistent reference from an existing Local. 22:57 <@TooTallNate> trevnorris: ya i hear ya… i'm not sure the solution there 22:57 < trevnorris> TooTallNate: luckily that's adding so little overhead it's almost within the error margin. 22:58 < trevnorris> TooTallNate: the one problem is you can't dispose a slice. so it'll just return false letting you know it failed. 23:03 <@MI6> libuv-node-integration: #53 UNSTABLE osx-x64 (1/584) osx-ia32 (1/584) smartos-x64 (2/584) http://jenkins.nodejs.org/job/libuv-node-integration/53/ 23:15 < trevnorris> TooTallNate: oh, i'm a moron. I can "dispose" the data against a slice. basically just removing the reference of .parent and null-ifying the linked data. 23:16 <@MI6> joyent/node: Bert Belder tj-try-this * 7437633 : Test - http://git.io/2CIQWA 23:23 <@MI6> nodejs-v0.10-windows: #19 UNSTABLE windows-x64 (9/584) windows-ia32 (8/584) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/19/ 23:43 -!- mode/#libuv [+o piscisaureus_] by ChanServ 23:43 <@piscisaureus_> hey bnoordhuis are you there? 23:43 <@piscisaureus_> I need you to sign off on a patch 23:43 <@piscisaureus_> or sblom for that matter but I don't want to hold my breath for that long 23:44 <@MI6> joyent/libuv: piscisaureus created branch reviewme - http://git.io/GaVJdg 23:44 <@piscisaureus_> or isaacs :) 23:44 <@tjfontaine> lgtm :) 23:44 <@piscisaureus_> haha 23:44 <@piscisaureus_> ok 23:45 <@piscisaureus_> piscisaureus_: ^^ 23:48 <@MI6> joyent/libuv: Bert Belder v0.10 * 415f4d3 : windows: kill child processes when the parent dies - http://git.io/ClQe4w 23:50 <@MI6> joyent/libuv: piscisaureus created tag v0.10.7 - http://git.io/8yoMdA 23:51 <@MI6> joyent/libuv: Bert Belder v0.10 * 13496e9 : Now working on v0.10.8 (+1 more commits) - http://git.io/seXxDQ 23:51 <@MI6> libuv-v0.10: #61 UNSTABLE smartos (2/186) windows (3/187) linux (1/186) http://jenkins.nodejs.org/job/libuv-v0.10/61/ 23:53 <@MI6> joyent/node: piscisaureus created branch V0.10 - http://git.io/T3KSjw 23:55 <@MI6> libuv-v0.10: #62 UNSTABLE smartos (5/186) windows (3/187) http://jenkins.nodejs.org/job/libuv-v0.10/62/ 23:57 <@MI6> libuv-v0.10-gyp: #25 UNSTABLE smartos-x64 (2/186) windows-ia32 (4/187) windows-x64 (3/187) smartos-ia32 (2/186) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/25/ --- Log closed Wed May 15 00:00:57 2013