00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:01:39  * c4miloquit (Remote host closed the connection)
00:02:46  <MI6>nodejs-master-windows: #32 UNSTABLE windows-x64 (9/598) windows-ia32 (9/598) http://jenkins.nodejs.org/job/nodejs-master-windows/32/
00:03:28  <tjfontaine>trevnorris: darn you didn't bsod us again
00:03:43  <trevnorris>yey! \o/
00:03:50  <trevnorris>tjfontaine: did you do something? now the tap results are loading much faster
00:04:14  <tjfontaine>trevnorris: nothing was changed, it's just the nature of the beast, and how busy everything else is
00:05:06  <tjfontaine>last week I had to block a jamaican ip block because they were hammering the shit out of us crawling everything and bring jenkins to its knees
00:05:32  <trevnorris>strange.
00:09:10  <trevnorris>ok. slaballocator gone. slabbuffer gone. now to figure out this fs pooling mechanism.
00:13:15  * dapquit (Quit: Leaving.)
00:14:06  * c4milojoined
00:23:47  * st_lukequit (Remote host closed the connection)
00:32:01  * nsm_joined
00:33:28  * nsmquit (*.net *.split)
00:33:29  * MI6quit (*.net *.split)
00:33:30  * Chip_Zeroquit (*.net *.split)
00:33:30  * wankdankerquit (*.net *.split)
00:33:31  * toothrotquit (*.net *.split)
00:33:31  * roxluquit (*.net *.split)
00:33:31  * kellabytequit (*.net *.split)
00:33:32  * philipsquit (*.net *.split)
00:33:32  * skebcio_quit (*.net *.split)
00:33:32  * trevnorrisquit (*.net *.split)
00:33:32  * groundwaterquit (*.net *.split)
00:33:35  * benoitcquit (*.net *.split)
00:33:35  * brsonquit (*.net *.split)
00:33:36  * stephankquit (*.net *.split)
00:33:36  * creationixquit (*.net *.split)
00:33:36  * juliangruberquit (*.net *.split)
00:33:39  * hij1nxquit (*.net *.split)
00:33:39  * saghulquit (*.net *.split)
00:33:39  * brucemquit (*.net *.split)
00:33:40  * luigyquit (*.net *.split)
00:33:40  * joshthecoderquit (*.net *.split)
00:33:40  * qmxquit (*.net *.split)
00:33:42  * timoxleyquit (*.net *.split)
00:33:42  * paddybyersquit (*.net *.split)
00:33:42  * kenperkinsquit (*.net *.split)
00:33:43  * jez0990_quit (*.net *.split)
00:33:44  * pfox__quit (*.net *.split)
00:33:44  * isaacsquit (*.net *.split)
00:33:44  * chobie2quit (*.net *.split)
00:33:44  * tellnesquit (*.net *.split)
00:33:45  * DrPizzaquit (*.net *.split)
00:33:45  * tjfontainequit (*.net *.split)
00:33:45  * chrisdickinsonquit (*.net *.split)
00:34:45  * nsm_changed nick to nsm
00:35:28  * TooTallNatequit (Quit: Computer has gone to sleep.)
00:38:16  * timoxleyjoined
00:38:16  * paddybyersjoined
00:38:16  * kenperkinsjoined
00:38:16  * jez0990_joined
00:38:16  * pfox__joined
00:38:16  * isaacsjoined
00:38:16  * chobie2joined
00:38:16  * tellnesjoined
00:38:16  * DrPizzajoined
00:38:16  * tjfontainejoined
00:38:16  * chrisdickinsonjoined
00:41:05  * paddybyersquit (Ping timeout: 252 seconds)
00:49:55  * TooTallNatejoined
00:52:25  * hij1nxjoined
00:52:25  * saghuljoined
00:52:25  * brucemjoined
00:52:25  * luigyjoined
00:52:25  * joshthecoderjoined
00:52:25  * qmxjoined
00:52:48  * juliangruberjoined
00:52:48  * benoitcjoined
00:52:48  * brsonjoined
00:52:48  * Chip_Zerojoined
00:52:48  * wankdankerjoined
00:52:48  * stephankjoined
00:52:48  * toothrotjoined
00:52:48  * creationixjoined
00:52:48  * roxlujoined
00:52:48  * kellabytejoined
00:52:48  * trevnorrisjoined
00:52:48  * philipsjoined
00:52:48  * skebcio_joined
00:52:56  * kevinswiberjoined
00:55:24  * st_lukejoined
00:57:19  * qardquit (Quit: Leaving.)
00:58:51  * st_lukequit (Remote host closed the connection)
01:19:23  * dannycoatesquit (Remote host closed the connection)
01:26:17  * mralephjoined
01:26:41  * TooTallNatequit (Quit: Computer has gone to sleep.)
01:32:48  * qardjoined
01:36:23  * abraxasjoined
01:39:38  * c4miloquit (Remote host closed the connection)
01:50:03  * kazuponjoined
01:53:22  * icarotjoined
01:59:11  * bnoordhuisquit (Ping timeout: 256 seconds)
02:05:14  * kazuponquit (Remote host closed the connection)
02:09:51  * piscisaureus_quit (Read error: Connection reset by peer)
02:10:37  * piscisaureus_joined
02:13:18  * AvianFlujoined
02:23:48  * kevinswiberquit (Remote host closed the connection)
02:24:24  * kevinswiberjoined
02:24:58  * TooTallNatejoined
02:28:24  * kevinswiberquit (Ping timeout: 245 seconds)
02:29:46  * c4milojoined
02:33:05  * piscisaureus_quit (Ping timeout: 248 seconds)
02:34:57  * hzquit
02:39:18  * piscisaureus_joined
02:41:36  * Kjerskijoined
02:45:31  * piscisaureus_quit (Ping timeout: 264 seconds)
02:58:43  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
03:00:41  * timoxleyquit (Quit: Computer has gone to sleep.)
03:05:59  * bnoordhuisjoined
03:10:34  * bnoordhuisquit (Ping timeout: 252 seconds)
03:15:05  * brsonquit (Read error: Operation timed out)
03:34:46  * kenperkinsquit (Quit: Computer has gone to sleep.)
03:39:09  * kenperkinsjoined
03:47:21  * AvianFluquit (Remote host closed the connection)
03:56:06  * kazuponjoined
04:00:26  * timoxleyjoined
04:17:15  * normanmjoined
04:29:04  * timoxleyquit (Quit: Textual IRC Client: www.textualapp.com)
04:44:24  * kenperkinsquit (Quit: Computer has gone to sleep.)
04:47:21  * brsonjoined
04:51:28  * brsonquit (Ping timeout: 246 seconds)
04:52:36  * brsonjoined
05:05:41  * timoxleyjoined
05:18:36  * bajtosjoined
05:20:24  * MI6joined
05:22:18  * benoitcquit (Excess Flood)
05:23:28  * timoxleyquit (Quit: Computer has gone to sleep.)
05:25:07  * icarotquit (Remote host closed the connection)
05:28:15  * benoitcjoined
05:35:15  * stolsmajoined
05:36:12  * paddybyersjoined
05:38:39  * normanmquit (Remote host closed the connection)
05:45:37  * timoxleyjoined
05:47:11  * c4miloquit (Remote host closed the connection)
06:11:13  * indexzerojoined
06:30:34  * rendarjoined
06:35:42  * `3rdEdenjoined
07:10:35  * timoxleyquit (Quit: Computer has gone to sleep.)
07:17:09  * indexzeroquit (Quit: indexzero)
07:17:11  * hueniverse1joined
07:17:23  * hueniverse1quit (Client Quit)
07:17:34  * hueniverse1joined
07:20:29  * qardquit (Quit: Leaving.)
07:21:19  * hueniversequit (Ping timeout: 256 seconds)
07:24:34  * timoxleyjoined
07:25:11  * brsonquit (Quit: leaving)
07:28:41  * normanmjoined
07:33:09  * bajtosquit (Quit: bajtos)
07:41:04  * bajtosjoined
08:03:42  * stolsmaquit (Ping timeout: 264 seconds)
08:05:47  * timoxleyquit (Quit: Computer has gone to sleep.)
08:26:31  * timoxleyjoined
09:21:14  * stagasjoined
09:21:17  * rvaggquit (Excess Flood)
09:21:45  * rvaggjoined
09:49:19  * hzjoined
09:49:51  * kazuponquit (Remote host closed the connection)
09:51:41  * `3rdEdenquit (Quit: BRB, sometime)
10:14:12  * bajtosquit (Quit: bajtos)
10:18:54  * abraxasquit (Remote host closed the connection)
10:24:47  * timoxleyquit (Quit: Computer has gone to sleep.)
10:43:04  * piscisaureus_joined
10:55:40  * kazuponjoined
10:56:38  * kazuponquit (Read error: Connection reset by peer)
10:56:49  * kazuponjoined
10:57:53  * timoxleyjoined
11:36:50  * kazuponquit (Read error: Connection reset by peer)
11:36:54  * kazupon_joined
11:49:12  * kazupon_quit (Remote host closed the connection)
12:15:18  * bnoordhuisjoined
12:19:11  * abraxasjoined
12:23:55  * abraxasquit (Ping timeout: 264 seconds)
12:43:20  * benoitcquit (Excess Flood)
12:49:49  * benoitcjoined
12:59:40  * kazuponjoined
13:05:05  * kazuponquit (Ping timeout: 248 seconds)
13:05:49  * bajtosjoined
13:06:31  * kevinswiberjoined
13:19:16  * AvianFlujoined
13:29:35  * benoitcquit (Excess Flood)
13:30:19  * benoitcjoined
14:01:17  * c4milojoined
14:19:22  * `3rdEdenjoined
14:26:20  * kenperkinsjoined
14:29:02  * c4miloquit (Remote host closed the connection)
14:36:32  * mbroadstquit (Ping timeout: 252 seconds)
14:46:35  * groundwaterjoined
14:50:45  * c4milojoined
14:52:43  * rjequit (Ping timeout: 264 seconds)
14:55:51  * rjejoined
14:57:03  * kevinswiberquit (Remote host closed the connection)
14:57:36  * kevinswiberjoined
15:01:20  * `3rdEdenquit (Remote host closed the connection)
15:02:18  * kevinswiberquit (Ping timeout: 256 seconds)
15:04:16  * kevinswiberjoined
15:15:02  * pachetjoined
15:15:02  * pachetquit (Changing host)
15:15:02  * pachetjoined
15:17:56  <isaacs>ircretary: welcome back
15:17:56  <ircretary>isaacs: I'm not sure what to do with that command. Ask for help in PM.
15:19:09  <isaacs>good morning
15:19:15  <isaacs>trevnorris: debug code in b3cf3f35?
15:19:24  <isaacs>trevnorris: there's a commented-out fprintf in there, i see..
15:20:50  * cjdjoined
15:22:20  * mbroadstjoined
15:29:09  * dannycoatesjoined
15:52:32  * c4milo_joined
15:56:08  * c4miloquit (Ping timeout: 256 seconds)
15:57:31  * stolsmajoined
16:05:35  * stolsmaquit (Quit: Nettalk6 - www.ntalk.de)
16:05:57  * TooTallNatejoined
16:09:41  * dominictarrjoined
16:13:32  * dapjoined
16:13:53  * c4milo_quit (Ping timeout: 248 seconds)
16:16:43  * c4milojoined
16:16:45  * c4miloquit (Remote host closed the connection)
16:20:28  * syskkjoined
16:20:52  <tjfontaine>g'day
16:20:56  <bnoordhuis>sup tj
16:22:02  <isaacs>bnoordhuis: you'd mentioned adding a non-refing timer thing the other day that we could use internally. you have any cycles for adding that soon?
16:22:36  <bnoordhuis>isaacs: not in the next few days
16:22:45  <isaacs>bnoordhuis: ok, i'll look into it, then
16:23:07  <isaacs>bnoordhuis: got any pointers?
16:24:13  <bnoordhuis>0xdeadbeef, 0xcafebabe
16:24:15  <bnoordhuis>i can go on
16:24:18  <tjfontaine>oh man
16:24:32  <bnoordhuis>let me think
16:24:59  <bnoordhuis>if it were me, i'd probably leave lib/timers.js to the unwashed masses
16:25:05  <bnoordhuis>i mean, our users
16:25:18  <bnoordhuis>and implement a lightweight timer in lib/_timers.js or whatever
16:26:45  <bnoordhuis>lib/timers.js tries to be user-friendly but that adds overhead and we don't need user-friendliness in internal code
16:27:04  <tjfontaine>you'd still want the grouped timers though, you could reuse a lot that interface and just swap out the Timer creation
16:27:16  <bnoordhuis>grouped timers? you mean timer lists?
16:27:16  * bradleymeckjoined
16:27:19  <tjfontaine>yes
16:27:20  * bradleymeckquit (Client Quit)
16:27:51  <bnoordhuis>right. but that's easy to implement. just create a uv handle, deref it and rearm it every time with the next pending timer
16:29:18  <bnoordhuis>i don't presume i'm telling you anything you don't already know
16:29:22  <bnoordhuis>but for posterity, you know
16:29:25  <indutny>bnoordhuis: hey man
16:29:32  <indutny>I think I've a fix for that CF Loop thing
16:29:38  <bnoordhuis>okay, good
16:29:46  <indutny>if it'll work out - I'll let you know
16:29:51  <bnoordhuis>cool
16:33:47  <isaacs>bnoordhuis: i think we could probably just have an undocmented flag to the ctor or something
16:34:06  <indutny>bnoordhuis: basically, that's it https://github.com/joyent/libuv/pull/800
16:34:08  <isaacs>bnoordhuis: a new _module is actually a bit more visible than a secret flag :)
16:34:13  <indutny>but would be good if reporter will confirm it first
16:35:30  <bnoordhuis>isaacs: the reason i'd opt for a new module (or internal code) is that you can probably cut some fat from the current implementation
16:35:46  <isaacs>i see.
16:35:58  <bnoordhuis>all that juggling with ref->unref'd timers isn't really necessary for example
16:36:14  <isaacs>i've had to dig into that code before, but haven't ever had to get very involved with it
16:36:28  <isaacs>usually just tracing through for some net thing or whatever.
16:36:39  <tjfontaine>I've spent some time in timers, I can take a swing if you'd prefer
16:36:53  <isaacs>tjfontaine: if you feel like checking it out, sure.
16:37:25  <isaacs>tjfontaine: it's a context-switch for me from the http keepalive stuff. next up, i'm going to the "closed server closes sockets" thing
16:37:43  <tjfontaine>ok then I'll do it
16:37:49  <tjfontaine>or make a pass for review anyway
16:39:20  * kazuponjoined
16:41:38  <isaacs>awesome, thanks!
16:42:01  <isaacs>i wonder if it's worth doing in v0.10, even.
16:42:25  <isaacs>it's internal API, and there's really no reason to have the overhead of a ref'ed timer for every http connection, since the socket itself is already refed anyway
16:42:53  <isaacs>tjfontaine: i'll leave it up to your judgement there, i guess. if it feels like too deep of a touch, then feel free to put off for 0.12
16:43:21  * isaacsstarting on teh v0.10 merge... ugh
16:43:32  <tjfontaine>right, and enjoy that merge :)
16:47:28  * pachetquit (Quit: leaving)
16:49:07  * TooTallNatequit (Quit: Computer has gone to sleep.)
16:54:32  * kevinswiberquit (Remote host closed the connection)
16:55:04  * kevinswiberjoined
16:58:49  * inolenquit (Quit: Leaving.)
16:59:17  * kevinswiberquit (Ping timeout: 248 seconds)
16:59:18  * qardjoined
16:59:37  * amartensjoined
17:01:00  <isaacs>trevnorris, bnoordhuis: We ditch charsWritten in 0.11, right?
17:01:17  * c4milojoined
17:04:28  * TooTallNatejoined
17:05:34  <isaacs>ohhh... crap.
17:05:41  <isaacs>cipher/decipher are refactored into cipherbase.
17:05:45  <isaacs>well. that sucks.
17:08:12  * bnoordhuisquit (Ping timeout: 240 seconds)
17:10:27  * mjr__joined
17:16:24  <isaacs>Protip: If you convert a file in master from class Foo { int Function() {... } } style to class Foo {}; Foo::Function style, in master, do the same in the stable branch.
17:18:26  * c4miloquit (Remote host closed the connection)
17:42:56  * inolenjoined
17:43:56  <isaacs>jesus h christ, is anyone actually using sign/verify? the api is completely fucking insane.
17:44:18  <tjfontaine>heh
17:44:29  <isaacs>require('crypto2')
17:44:55  <isaacs>so tempted.
17:46:59  <isaacs>Verify.prototype.verify = function(object, signature, sigEncoding) {
17:47:09  <isaacs>why is there an encoding argument for the signature, but not for the object?
17:48:29  <isaacs>this is so insane.
18:00:49  <isaacs>If you create a char[] on the stack, like char data[1024]; and then do: Buffer* buf = Buffer::New(data, 1024), and then return scope.Close(buf->handle_), what happens when the stack gets cleaned up? is that a segv landmine?
18:01:05  <isaacs>seems like we're returning a pointer to some data that's going to be gone pretty soon.
18:01:30  <isaacs>indutny: ^ this happens in node_crypto.cc in master.
18:01:35  <isaacs>indutny: HashDigest function
18:01:37  <tjfontaine>if the char wasn't new'd then yes that would disappear
18:01:53  <tjfontaine>except Buffer::New copies
18:01:55  <tjfontaine>in some cases
18:02:24  <isaacs>i see.
18:02:43  <isaacs>how does it know to copy? it seems that this is the case where it *won't* copy
18:03:36  <isaacs>oh... it only doesn't copy when you give it a callback and hint, it looks like
18:03:37  <isaacs>nvm
18:03:40  <tjfontaine>Buffer::New calls Buffer::Replace with a length
18:03:42  <isaacs>so, in this case, it's not a segv
18:03:44  <tjfontaine>right
18:03:47  <isaacs>it's a copy
18:03:50  <isaacs>ok, lovely.
18:04:19  <isaacs>indutny: nvm, false alarm :)
18:09:06  * cjdpart
18:10:49  * defunctzombie_zzchanged nick to defunctzombie
18:12:25  * kazuponquit (Remote host closed the connection)
18:15:46  * timoxleyquit (Quit: Computer has gone to sleep.)
18:17:15  * c4milojoined
18:18:40  * `3rdEdenjoined
18:20:09  * abraxasjoined
18:21:44  * c4miloquit (Ping timeout: 245 seconds)
18:22:40  * brsonjoined
18:24:42  * abraxasquit (Ping timeout: 264 seconds)
18:25:07  * isaacsmoving onto the writev collisions...
18:37:20  * kevinswiberjoined
18:40:18  <isaacs>indutny: for writev, how would you feel about passing "buffer","utf8",etc instead fo 0,1,2...
18:40:36  <isaacs>indutny: it's rather cryptic to have to align a JavaScript integer with a C++ enum
18:50:20  * syskkquit (Quit: syskk)
19:01:11  * kevinswiberquit (Remote host closed the connection)
19:01:47  * kevinswiberjoined
19:06:19  * kevinswiberquit (Ping timeout: 260 seconds)
19:07:51  <indutny>ok
19:24:02  * defunctzombiechanged nick to defunctzombie_zz
19:40:59  * dsantiagoquit (Quit: Computer has gone to sleep.)
19:41:44  <isaacs>tjfontaine: could you run the call on Tuesday?
19:42:02  <isaacs>tjfontaine: i want everyone to get a chance to check-in, but also, i have to do this nodestack webinar thing
19:42:53  * pachetjoined
19:43:34  * kazuponjoined
19:47:24  * `3rdEdenquit (Remote host closed the connection)
19:49:39  * kazuponquit (Ping timeout: 245 seconds)
19:50:43  * dsantiagojoined
20:00:43  * bajtosquit (Quit: bajtos)
20:04:28  <tjfontaine>isaacs: yup
20:04:39  <MI6>joyent/node: isaacs created branch v0.10-merge - http://git.io/YwyzCQ
20:04:40  <isaacs>indutny: can you review that? ^
20:06:43  <isaacs>indutny: tests all pass, but there's a lot of code that you and i both touched in crypto and writev stuff.
20:16:36  * kazuponjoined
20:22:07  * kazuponquit (Ping timeout: 264 seconds)
20:34:49  <trevnorris>afternoon
20:35:50  <trevnorris>isaacs: yeah, I figured the fprint was just some code for debugging left around. and yeah, we ditched charsWritten
20:36:10  <isaacs>kewl
20:38:52  <trevnorris>tjfontaine: yeah. Buffer::New(char*, length) copies. Buffer::New(char*, length, callback, hint) uses the original data.
20:39:26  <tjfontaine>ya, I know :)
20:39:34  <isaacs>trevnorris: i was the one asking :)
20:39:45  <trevnorris>heh
20:40:23  <trevnorris>isaacs: sorry about your pain. that merge is a complex one.
20:41:06  <isaacs>trevnorris: yeah, it's just tedious
20:41:13  <isaacs>had to go through crypto function by function
20:41:58  <trevnorris>isaacs: did some of that get removed? when I tried seemed like stuff was missing.
20:42:24  <isaacs>trevnorris: yeah, because Cipher and Decipher were refactored into CipherBase
20:42:30  <trevnorris>ah, ok
20:42:43  * AvianFluquit (Remote host closed the connection)
20:48:19  * Benviequit (Ping timeout: 240 seconds)
20:48:50  * Benviejoined
20:56:39  <MI6>joyent/node: Brandon Frohs v0.10 * 49300a4 : doc: Fix link to open issues on GitHub. (+1 more commits) - http://git.io/FwmWEg
20:59:21  <MI6>joyent/node: isaacs created branch v0.10.7-release - http://git.io/MD5B2Q
21:03:28  <indutny>isaacs: sorry
21:03:36  <indutny>beer time :)
21:03:48  <indutny>can't really make important decisions
21:03:52  <indutny>ttyl
21:04:09  <isaacs>indutny: no worries. it's master, whatever. i'll justland it and let people complain :)
21:05:19  <MI6>joyent/node: isaacs master * 61c9f78 : Merge remote-tracking branch 'ry/v0.10' into master (+29 more commits) - http://git.io/UIvWPg
21:06:06  <trevnorris>whoot!
21:06:12  <trevnorris>ok, my turn. :)
21:06:17  <mjr__>aww, you still call your remote "ry".
21:06:20  <mjr__>That's adorable.
21:07:26  <MI6>nodejs-v0.10: #195 UNSTABLE smartos-x64 (1/584) http://jenkins.nodejs.org/job/nodejs-v0.10/195/
21:09:47  * AvianFlujoined
21:13:48  * normanmquit (Quit: Computer has gone to sleep.)
21:16:22  <MI6>nodejs-v0.10-windows: #25 UNSTABLE windows-ia32 (8/584) windows-x64 (9/584) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/25/
21:16:29  <trevnorris>isaacs: while it's on my mind, just food for thought. rvagg suggested increasing NODE_MODULE_VERSION since the Buffer changes will break backwards compatibility. What's your thoughts on alerting module writers to the changes?
21:18:12  <isaacs>yes, always bump the NODE_MODULE_VERSION if we change binary compatibility
21:18:37  <isaacs>ie, any changes to node_buffer or any external node:: stuff
21:18:49  * kazuponjoined
21:19:11  <trevnorris>coolio.
21:23:00  * kazuponquit (Ping timeout: 240 seconds)
21:24:16  <trevnorris>isaacs: StringBytes::Encode always makes a copy of the data. Is there ever a case where you'd want to use the original data?
21:25:51  * AvianFluquit (Remote host closed the connection)
21:27:07  <trevnorris>isaacs: because, for example, HmacDigest creates md_value. so why would it need to be duplicated. Couldn't md_value be used directly?
21:27:37  <isaacs>trevnorris: yeah, there are cases where you want to use the data without copying
21:27:55  <trevnorris>isaacs: is there an Encode that allows you to use the original data instead of a copy?
21:27:58  <isaacs>trevnorris: look thorugh node_crypto.cc for "because it's a string"
21:28:05  <isaacs>trevnorris: not now, no
21:28:14  <isaacs>trevnorris: but it's an implementation detail. could create one easily enough
21:30:04  <MI6>nodejs-master: #223 UNSTABLE osx-ia32 (1/598) smartos-x64 (5/598) http://jenkins.nodejs.org/job/nodejs-master/223/
21:30:15  <trevnorris>isaacs: ok. going to do the bare minimum to get this going. but between what you've done and the new buffers there's going to be a lot more optimizations coming down the pipe.
21:33:28  <isaacs>awesome :)
21:33:41  <isaacs>10.7 is almost done baking
21:33:55  <trevnorris>isaacs: want to keep around that massive " Buffer code from v0.2 to v0.3 is difficult" comment at the top of buffer.h? since I did so much refactoring, just removed it.
21:34:08  <trevnorris>sweet.
21:34:17  * hzquit
21:35:07  <tjfontaine>isaacs: did you upgrade libuv again?
21:35:17  <isaacs>tjfontaine: no
21:35:25  <isaacs>tjfontaine: was just one commit
21:35:39  <tjfontaine>ya, spawn'ing might break on certain windows systems
21:36:30  <tjfontaine>nested spawning anyway
21:36:34  <MI6>joyent/node: isaacs created tag v0.10.7 - http://git.io/WcmaoA
21:38:13  <MI6>joyent/node: isaacs v0.10 * 77de207 : blog: Release 0.10.7 (+3 more commits) - http://git.io/t7Rvxg
21:38:51  <MI6>nodejs-master-windows: #33 UNSTABLE windows-x64 (12/598) windows-ia32 (10/598) http://jenkins.nodejs.org/job/nodejs-master-windows/33/
21:39:41  <piscisaureus_>isaacs: ... :(
21:40:27  <isaacs>piscisaureus_: was that important?
21:40:28  <piscisaureus_>tjfontaine: spawning will only fail under job control. Let's pray nobody uses that
21:40:38  <isaacs>piscisaureus_: it's ok, we'll have another release next week :)
21:40:44  <isaacs>we don't have any actual windows users anyway.
21:40:50  <isaacs>just dev machines
21:40:55  <isaacs>and azure, i guess.
21:40:57  <isaacs>;)
21:43:36  <trevnorris>isaacs: heads up. StringSlice api is going to change. w/o a class inheritance the arguments need to be passed.
21:44:05  * kesslerjoined
21:44:11  <isaacs>ok
21:44:15  * rendarquit
21:46:06  <kessler>Evening folks. not sure this is the right spot to ask this question, so apologies in advance... I'm wondering if its possible to write a native module that will use v8 apis to completely replace a reference in the entire heap... anyone got a clue of its possible or not?
21:47:22  <tjfontaine>what more precisely are you trying to do
21:47:54  <kessler>I'm interested in code hot loading
21:48:20  <kessler>I've already implemented something using "require" api
21:48:26  <kessler>but referencing is a problem
21:49:30  <kessler>I want to explore the possibility of having something more "under the hood" and less obtrusive in the client code
21:49:47  <MI6>nodejs-v0.10: #196 UNSTABLE smartos-x64 (1/584) http://jenkins.nodejs.org/job/nodejs-v0.10/196/
21:51:26  <kessler>does that even makes sense to anyone or ?
21:51:37  <kessler>I mean my idea :)
21:51:45  <isaacs>kessler: like LiveEdit?
21:52:06  <kessler>I'm sorry i'm not familiar with that ...
21:52:19  <kessler>hang on
21:53:48  * hzjoined
21:55:40  <kessler>yes like that , only try to update existing functions as well
21:55:46  <kessler>if that is even possible
21:56:27  <kessler>my main goal is programs that rewrite themselves as they go
21:56:38  <kessler>but looks like i have a long thread to read about live edit :)
21:57:10  <mjr__>liveedit is pretty impressive stuff
21:57:39  <mjr__>And I'll bet the only way to reliably replace the references that everybody else already holds
21:58:19  <MI6>nodejs-v0.10-windows: #26 UNSTABLE windows-ia32 (8/584) windows-x64 (9/584) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/26/
21:59:20  <kessler>thanks for point me in the right direction folks!
21:59:43  <MI6>nodejs-v0.10: #197 UNSTABLE osx-ia32 (1/584) smartos-x64 (1/584) http://jenkins.nodejs.org/job/nodejs-v0.10/197/
22:07:10  <trevnorris>isaacs: nix that last one. forgot that the Arguments object itself has the instance information needed.
22:08:24  <isaacs>ok
22:08:42  <tjfontaine>isaacs: https://github.com/tjfontaine/node/compare/socket-timer
22:09:04  <isaacs>tjfontaine: kewl, i'll review when i get back from picking up my bike and getting lunch finally
22:09:07  * isaacs&
22:09:07  <LOUDBOT>THERE WAS THIS ONE DICK THAT WOULDN'T STAY LICKED
22:09:18  <tjfontaine>not sure that try{}finally{} is needed for the domain stuff
22:09:23  <isaacs>LOUDBOT: INAPPROPRIATE
22:09:23  <LOUDBOT>isaacs: ACHIEVEMENT UNLOCKED: PASSED AUDIT
22:10:47  * paddybyersquit (Ping timeout: 252 seconds)
22:13:15  * paddybyersjoined
22:16:43  * c4milojoined
22:19:21  * kazuponjoined
22:23:49  * kazuponquit (Ping timeout: 245 seconds)
22:32:35  * paddybyersquit (Ping timeout: 260 seconds)
22:34:57  * paddybyersjoined
22:35:56  <pachet>with flying colors
22:39:09  <trevnorris>isaacs: just want to double check that we've dropped the "sanity checks" from node_buffer.cc?
22:39:29  <txdv>add a changelog link to the libuv changes in the nodejs changelog announcement news
22:40:19  <txdv>just a suggestion for the future
22:41:09  * wolfeidauquit (Remote host closed the connection)
22:42:26  * AvianFlujoined
22:57:41  <isaacs>txdv: good idea. can you post it as an issue or send a pull req?
22:57:51  <isaacs>txdv: i'll forget in about 23 seconds otherwise :)
22:58:02  <isaacs>tjfontaine: reviewing your thing
22:58:05  <isaacs>trevnorris: what sanity checks?
22:58:23  <txdv>joyent/libuv?
22:59:01  * bnoordhuisjoined
22:59:04  <trevnorris>isaacs: http://git.io/Mg42ew
22:59:10  <tjfontaine>isaacs: k
22:59:17  <txdv>i mean you will close that PR or ISSUE and still be releasing node versions with changelogs
22:59:33  <txdv>How will that issue or pr help you to memorize?
22:59:39  <isaacs>trevnorris: oh, yeah.
22:59:44  <isaacs>trevnorris: those were silly :)
23:00:02  <trevnorris>isaacs: ok, cool. i just never took the time to investigate why they were there.
23:00:09  <isaacs>txdv: post an issue to joyent/node asking for us to link to joyent/libuv's change logs
23:01:51  <txdv>o shit
23:01:57  <txdv>it has 5500 issues
23:02:02  <MI6>joyent/libuv: Fedor Indutny v0.10 * d5fa633 : darwin: assume CFRunLoopStop() isn't thread-safe - http://git.io/P1P40Q
23:02:14  <txdv>NOW i understand why the issue work on libuv is so slow
23:03:59  * c4miloquit (Remote host closed the connection)
23:04:17  <MI6>libuv-v0.10: #65 UNSTABLE smartos (2/186) windows (3/187) http://jenkins.nodejs.org/job/libuv-v0.10/65/
23:04:26  * c4milojoined
23:04:26  <trevnorris>isaacs: were Buffer's ever going to support utf16 write/slice?
23:08:58  <MI6>libuv-v0.10-gyp: #30 UNSTABLE smartos-x64 (2/186) windows-ia32 (6/187) smartos-ia32 (2/186) windows-x64 (5/187) http://jenkins.nodejs.org/job/libuv-v0.10-gyp/30/
23:09:21  * c4miloquit (Ping timeout: 248 seconds)
23:09:56  <TooTallNate>trevnorris: isn't there "u16le" encoding?
23:10:18  <TooTallNate>oh no, guess not
23:10:47  <TooTallNate>"utf16le" that is
23:11:01  <trevnorris>TooTallNate: yeah there is. :)
23:11:17  <trevnorris>hm. wonder if that comment was just old and never removed.
23:11:32  <trevnorris>TooTallNate: is Ucs2 == Utf16le?
23:11:47  <isaacs>trevnorris: in practice, yes.
23:11:55  <trevnorris>coolio
23:12:02  <TooTallNate>trevnorris: according to string_decoder, yes :p
23:12:11  <isaacs>trevnorris: in the sense that we do teh same thing. in theory, there's surrogate pairs for astral plane stuff.
23:12:18  <isaacs>trevnorris: but in js, you get 2 chars for that.
23:12:22  <isaacs>the bytes are the same.
23:12:25  <trevnorris>heh, ok.
23:13:20  <bnoordhuis>TooTallNate: does that mean #5460 should be closed?
23:14:25  <TooTallNate>bnoordhuis: i'd say ya probably. isaacs, thoughts?
23:14:49  <TooTallNate>isaacs: i know at one point we *did* update the shasums.txt with the arm-pi shasums, but i haven't done it since
23:15:12  <isaacs>$ cat tiger.js
23:15:12  <isaacs>var tiger = '🐅'
23:15:12  <isaacs>console.log(tiger.length)
23:15:12  <isaacs>$ ./node tiger.js
23:15:12  <isaacs>2
23:15:15  <isaacs>trevnorris: ^
23:15:42  <bnoordhuis>ah, surrogate pairs
23:15:48  <bnoordhuis>fun fact, they don't work in regular expressions
23:16:10  <trevnorris>hm. i'm perfectly happy w/ ascii. :)
23:16:18  <bnoordhuis>you american >:(
23:16:34  <tjfontaine>bnoordhuis: https://github.com/tjfontaine/node/compare/socket-timer this something like what you had in mind?
23:16:40  <isaacs>bnoordhuis: yeah, you end up with crazy regexes like this: https://github.com/isaacs/sax-js/blob/master/lib/sax.js#L256-L258
23:17:03  <tjfontaine>ugh that regex
23:17:16  <bnoordhuis>hah, that's monstrous
23:17:25  <MI6>libuv-node-integration: #60 UNSTABLE smartos-x64 (1/584) osx-x64 (1/584) osx-ia32 (1/584) http://jenkins.nodejs.org/job/libuv-node-integration/60/
23:18:09  <bnoordhuis>oh, snake case. the gods of js will smite you for that, tj
23:18:20  <tjfontaine>oh right meh
23:18:27  <tjfontaine>I think I have other style issues to be sure :)
23:18:29  <isaacs>tjfontaine: yeah, make it a _pseudoPrivate thing
23:18:30  <isaacs>also
23:18:36  <isaacs>so that people will be afraid to touch it :)
23:18:38  <tjfontaine>there's probably function () {}
23:18:43  <trevnorris>isaacs: here's a fun one. "var b = Buffer(1).parent; b.<Tab><Tab>"
23:18:48  <trevnorris>from REPL
23:18:52  <isaacs>tjfontaine: `make jslintfix`
23:19:09  <tjfontaine>indeed
23:19:16  <isaacs>trevnorris: HA!
23:19:30  <isaacs>trevnorris: yikes
23:19:58  * kazuponjoined
23:20:23  <isaacs>tjfontaine: why is there a try/finally tht does nothing?
23:20:50  <bnoordhuis>hah, just commented on that
23:20:52  <tjfontaine>isaacs: I wasn't entirely sure why we did that in the timer work, in that case we delay to next tick
23:21:16  <tjfontaine>I wasn't sure if there was some functionality that needed to replicate in that case
23:21:16  <bnoordhuis>also, does the timer need to enter the domain?
23:21:26  <bnoordhuis>i guess the callback could do that itself on a need-to basis
23:21:47  * paddybyersquit (Ping timeout: 252 seconds)
23:21:53  <TooTallNate>isaacs: woah, crazy regexp haha
23:22:04  <isaacs>tjfontaine: the reason is that if you have multiple timers in that loop, and you throw, and it *doesn't* crash the process, thne you need to come back to process those other ones.
23:22:10  * indexzerojoined
23:22:14  <isaacs>tjfontaine: that's why it's in a finally
23:22:18  <trevnorris>tjfontaine: which try/finally?
23:22:21  <isaacs>but not a catch
23:22:48  <tjfontaine>but defer the tick there, it was just a weird scenario I wasn't entirely clear on
23:23:09  <tjfontaine>but ok
23:23:16  <isaacs>tjfontaine: so, yeah, i think it needs to threw = true; try { doStuff; threw=false } finally { if (threw) process.nextTick(unrefTimeout) }
23:23:36  <tjfontaine>alright
23:23:48  <bnoordhuis>another thing, we could expose uv_default_loop()->now to js land
23:23:49  * AvianFluquit (Remote host closed the connection)
23:23:53  <bnoordhuis>saves a couple of calls to Date.now()
23:24:00  <isaacs>bnoordhuis: sure, that sounds good
23:24:08  <isaacs>bnoordhuis: why is that better than Date.now?
23:24:16  <bnoordhuis>because Date.now() makes syscalls
23:24:18  <tjfontaine>won't do gettimeofday
23:24:29  * AvianFlujoined
23:24:31  <tjfontaine>we could monkey patch that for everyone! :P
23:24:36  <isaacs>bnoordhuis: ok, but how does uv_default_loop()->now get the time if not gettimeofday?
23:24:45  <isaacs>bnoordhuis: or is it just accurate as of the most recent wakeup?
23:24:49  * kazuponquit (Ping timeout: 248 seconds)
23:24:52  <tjfontaine>isaacs: it does every tick, but Date.now always asks the system
23:24:54  <isaacs>bnoordhuis: so we don't have to do *another* gettimeofday
23:24:56  <bnoordhuis>isaacs: yeah. it gets updated every tick
23:24:59  <bnoordhuis>exactl
23:25:02  <isaacs>oh, yeah, that's definitely better, then
23:25:02  <bnoordhuis>+y
23:25:25  <trevnorris>i think there's a comment like that about hrtime better because it's not subject to "clock drift"
23:25:36  <isaacs>a surprising amount of node's on-cpu time is spent checking its watch
23:26:20  <isaacs>trevnorris: yeah, it would be kinda nice to do setTimeout with a relative time clock rather than wall clock time
23:26:31  <isaacs>trevnorris: since, semantically, that's what it is.
23:26:40  <isaacs>"do this in 1000ms" not "do this at 10:43:52"
23:26:49  <trevnorris>isaacs: true.
23:27:03  <isaacs>anyway, future enhancements :)
23:27:34  <trevnorris>isaacs: oh, in the next week or so i'm going to try a re-implement of http_parser. the current one is slow only from the fact that so many object properties are set from cc.
23:27:47  <trevnorris>isaacs: which is horribly slow.
23:28:04  <tjfontaine>isaacs: so bnoordhuis wondered if this timeout should even adhere to the domain, you're of the opinion that it should?
23:28:29  * AvianFluquit (Remote host closed the connection)
23:28:29  <isaacs>tjfontaine, bnoordhuis: Yeah, i think so
23:28:49  <isaacs>in this case, the "timer" object is the socket, right?
23:28:59  <tjfontaine>yes
23:29:01  <isaacs>ok
23:29:18  <isaacs>so, what happens if i do: socket.setTimeout(1000, function() { whoops_this_is_not_defined })
23:29:39  <bnoordhuis>oh, my thinking was that the callback can enter the domain on a need-to basis
23:30:05  <bnoordhuis>correct me if i'm wrong but the callback is always internal code right?
23:30:06  <isaacs>bnoordhuis: ok, so: socket.setTimeout(123, throwerFunction); socket.domain = someDomain;
23:30:18  <isaacs>bnoordhuis: well, no, not always
23:30:34  <isaacs>bnoordhuis: you can put arbitrary code in a socket 'timeout' event
23:30:43  <isaacs>bnoordhuis: it's just that people won't be creating these *timers* from userland code.
23:30:52  <isaacs>but they'll still call *into* userland code when they dig
23:30:55  <isaacs>*ding
23:31:00  <bnoordhuis>oh, i thought there was always some lib/net.js code in between
23:31:03  <bnoordhuis>okay, nvm then
23:31:13  <isaacs>i suppose we could put some
23:31:37  <bnoordhuis>no, it's fine for now. we can always revisit that later
23:31:41  <isaacs>so that socket.setTimeout(1234,fn) does setupTimerOrWhatever(1234, function() { socket.emit('timeout')}); socket.on('timeout', fn)
23:31:56  <isaacs>but that seems unnecessary
23:32:03  <trevnorris>isaacs: there's a bug in StringWrite that allows you to write beyond buffer bounds in the pool.
23:32:24  <trevnorris>isaacs: require('buffer').SlowBuffer(5).asciiWrite('', 6);
23:32:34  <trevnorris>isaacs: Buffer(5).asciiWrite('', 6);
23:32:35  <isaacs>tjfontaine, bnoordhuis: https://github.com/joyent/node/issues/5497
23:32:44  <trevnorris>isaacs: first errors, the second doesn't.
23:33:02  <isaacs>trevnorris: good catch. test and patch welcome :)
23:33:19  <trevnorris>isaacs: heh, i'll put it on my list. :)
23:34:46  <isaacs>trevnorris: https://github.com/joyent/node/issues/5498
23:35:03  <isaacs>trevnorris: whoever gets to it first wins :)
23:35:13  <trevnorris>isaacs: cool.
23:35:36  <trevnorris>isaacs: problem is my repo's in a mess from working on the merge. so might be a bit.
23:35:55  <isaacs>trevnorris: i recommend having a v0.10 checkout and a master checkout
23:36:08  <isaacs>trevnorris: if only to avoid recompiling V8 every time you switch contexts.
23:36:39  <trevnorris>isaacs: ah, good idea. until recently all my work has been to master so haven't worried about it much.
23:37:00  <isaacs>i have a lot of node checkouts on my machine :)
23:37:12  <isaacs>recently rm-rf'd my node-v0.4 folder
23:37:28  <trevnorris>lol
23:39:14  <tjfontaine>bnoordhuis: the debug() pattern is littered through the core code, I will admit that I was pretty debug() happy while I was trying to make sure my linked list ended up in order, so those can be trimmed
23:39:52  <bnoordhuis>tjfontaine: i don't object to the debug() itself, it's that v8 still does the string concatenation thing
23:40:05  <bnoordhuis>though i'm admittedly not 100% sure if v8 will optimize that away
23:40:10  <tjfontaine>right
23:40:17  <bnoordhuis>lithium might but i don't think hydrogen does
23:40:40  <isaacs>bnoordhuis, tjfontaine: I prefer using a debug() function that passes the args directly to console.log
23:40:46  <isaacs>then you can have it do the argument handling in there.
23:41:02  <isaacs>rather than doing debug(someBigObject + ' that takes a while to toString')
23:41:03  <bnoordhuis>tjfontaine: you heard the man
23:41:16  <isaacs>actually, it'd be nice if we moved that to util.debug or somethign
23:41:17  <tjfontaine>:)
23:41:35  <bnoordhuis>yeah, but you want it enabled on a per-module basis
23:42:43  <isaacs>util.debug = function(section) { if (new RegExp('\\b' + section + '\\b').test(process.env.NODE_DEBUG)) { return function debug() { console.log('%s: %s', section, util.format.apply(util, arguments)) } } else { return function() {} } }
23:42:59  <isaacs>then, in http.js...
23:43:08  <isaacs>var debug = util.debug('HTTP')
23:43:16  <isaacs>in timers:
23:43:21  <isaacs>var debug = util.debug('TIMER')
23:43:22  <isaacs>etc.
23:43:38  <isaacs>debug(and, then, just, pass, whatever)
23:44:17  <bnoordhuis>sure, i guess. it should probably be called util._debug though
23:44:50  * c4milojoined
23:46:00  <isaacs>meh. people can use it, I don't mind :)
23:46:19  <MI6>joyent/node: Robert Kowalski master * 8123560 : module: use path.sep instead of a custom solution - http://git.io/jgyP1g
23:46:20  <isaacs>we only put the _ on util._extend because of our sordid past.
23:46:55  <bnoordhuis>well, that and because it stops people from filing bug reports because it doesn't work the way they'd like it to
23:47:00  <isaacs>yeah
23:47:07  <tjfontaine>indeed, I want color in my debug!
23:47:11  <bnoordhuis>^ that
23:47:16  <isaacs>tjfontaine: demerit
23:47:18  <tjfontaine>heh
23:48:04  <tjfontaine>anyway I can roll that up in this branch or do it in another, which ever you prefer
23:48:35  <isaacs>tjfontaine: roll up util.debug into socket-timer?
23:48:39  <tjfontaine>yes
23:48:44  <isaacs>tjfontaine: nah, it's a separate thing
23:48:52  <tjfontaine>k
23:49:42  <isaacs>tjfontaine: so, on this, mostly lgtm, but should be timers._unrefActive(), do the domain needful, and get rid of all the snake_case
23:50:01  <tjfontaine>yup already done all that just hadn't +pushed in case there was more to come
23:50:13  <trevnorris>isaacs: quick thing. in ::Encode you static_cast<const char*>() an already const char*. something i'm missing?
23:50:27  <bnoordhuis>trevnorris: you can't be too certain
23:50:55  <trevnorris>bnoordhuis: oh, i see. yeah. a user doesn't have to pass in a const char* do they?
23:51:20  <isaacs>trevnorris: ha! yeah, tha'ts a bug.
23:51:26  <isaacs>trevnorris: i think bnoordhuis is having fun
23:51:47  <bnoordhuis>i always triple-cast, just to be sure
23:51:58  <bnoordhuis>trevnorris: Buffer::New(static_cast<const char*>(buf), buflen)->handle_) <- that one? if yes, then yes, that's superfluous
23:52:12  <bnoordhuis>not harmful but superfluous
23:52:23  <tjfontaine>I have a bad habit of <esc>:w\r:w\r:q
23:52:23  <trevnorris>bnoordhuis: well, actually I completely didn't realize in my code I was passing a char* when it was expecting a const char*. could that cause any problems?
23:53:03  <isaacs>trevnorris: it just gets const'ed as far as that function is concerned.
23:53:04  <bnoordhuis>trevnorris: no. const char* is a strict subset of char* so that's okay
23:53:12  <trevnorris>ah, ok. coolio.
23:53:16  <bnoordhuis>the other way around however wouldn't work without a const_cast
23:53:30  <bnoordhuis>which should nearly always make you stop and ask yourself what you're doing
23:53:53  <trevnorris>son of a bitch. almost have the buffer merge complete, but a couple crypto tests keep failing.
23:53:58  <trevnorris>hate debugging crypto
23:55:15  <tjfontaine>oh man
23:55:20  <tjfontaine>isaacs: this was for 0.10?
23:56:14  <MI6>nodejs-master: #224 UNSTABLE osx-x64 (1/599) linux-x64 (2/599) smartos-x64 (4/599) http://jenkins.nodejs.org/job/nodejs-master/224/
23:57:09  <isaacs>tjfontaine: the timer thingie?
23:57:12  <isaacs>tjfontaine: meh.
23:57:19  <isaacs>tjfontaine: i guess we cna make it master only
23:58:22  <MI6>joyent/node: isaacs v0.10 * f57ff78 : src: Remove superfluous static_cast - http://git.io/uvBtxA
23:58:24  <trevnorris>can someone verify for me the error message generated by: "crypto.createDecipher('aes-128-ecb', '').final('utf8');"
23:58:32  <tjfontaine>whatever you'd like, there is certainly a bug in 10 with .unref and setTimeout
23:58:59  <isaacs>tjfontaine: yeah, sure. definitely make sure this is internal-api only, then
23:59:18  <isaacs>trevnorris: TypeError: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
23:59:42  <trevnorris>isaacs: ok, now look at test/simple/test-crypto.js line 863
23:59:48  <trevnorris>isaacs: and tell me how the hell that test is passing