00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:03  <MI6>nodejs-master: #117 UNSTABLE linux-ia32 (1/569) windows-ia32 (4/569) osx-ia32 (2/569) windows-x64 (5/569) http://jenkins.nodejs.org/job/nodejs-master/117/
00:00:08  * ircretaryjoined
00:04:38  * sblomquit (Ping timeout: 276 seconds)
00:21:44  <trevnorris>bnoordhuis: i'm trying a perf improvement by storing references to old persists and not disposing them.
00:22:04  <tjfontaine>that's an interesting concept
00:22:11  <trevnorris>problem is i'm not sure of the syntax to store a persistent handle in a persistent<object>[n]
00:22:57  <tjfontaine>could you use a queue by size and push/pop them as they become free/needed?
00:22:59  * benoitcquit (Excess Flood)
00:23:50  <trevnorris>tjfontaine: that's what i'm trying to do, except when I try to "p_saved[n] = target" it gives me an error
00:23:57  <trevnorris>error: assigning to 'v8::Object *volatile' from incompatible type 'v8::Value *'
00:24:30  * benoitcjoined
00:24:35  <bnoordhuis>you have an array of Persistent<Object> handles?
00:24:44  <tjfontaine>oh the weakcallback gets a value and not an object?
00:25:09  <trevnorris>bnoordhuis: yeah. i'm declaring "Persistent<Object> p_saved[n]"
00:25:53  <trevnorris>then on MakeWeakCallback i'd like to store one, not dispose it, then use it later.
00:26:13  <bnoordhuis>you can't re-set a Persistent
00:26:25  <bnoordhuis>re-set, reassign
00:26:25  <trevnorris>what do you mean re-set?
00:26:54  <bnoordhuis>that is, once you create it, you can't make it point to something else
00:26:55  <trevnorris>oh, i don't need to assign it anything. they're used as misc storage containers to track the external memory.
00:27:07  <trevnorris>i'm attaching the persistent handles to the objects. so it's the other way around.
00:27:07  <bnoordhuis>okay, you've lost me :)
00:27:24  <bnoordhuis>so where do the persistent handles point to?
00:27:49  <trevnorris>an empty object. it's just used to store a reference of the data so gc known when to clean it up.
00:27:55  <bnoordhuis>ah
00:28:42  <trevnorris>here: https://github.com/trevnorris/node/blob/buffer-buffet/src/node_smalloc.cc#L77-L78
00:29:06  <trevnorris>yeah. so all i'll need to to is remove the existing external data, and point it somewhere else.
00:29:09  <trevnorris>that's totally do-able.
00:30:08  <bnoordhuis>why the ObjectTemplate and NewInstance()?
00:30:17  <bnoordhuis>just Object::New() should work, right?
00:30:24  <trevnorris>for some reason it's faster than Object::New() in that case.
00:30:30  <trevnorris>i'm just going off the benchmarks for that.
00:31:40  <bnoordhuis>okay. that would surprise me but i guess anything's possible
00:33:23  <trevnorris>i have to run, but be on later. i read through the chat logs, so if you would know the syntax for storing one to an array the help is appreciate. =)
00:33:35  * trevnorrisquit (Quit: Leaving)
00:33:59  <tjfontaine>well, you're making a Persistent<Object> array and trying to store a Value in it :P
00:38:09  * kazuponjoined
00:39:11  <MI6>joyent/node: Manav Rathi master * d205761 : tls: expose SSL_CTX_set_timeout via tls.createServer Add the `sessionTim - http://git.io/cZk5Gw
00:42:03  * c4milojoined
00:44:03  * c4milo_joined
00:45:46  * sblomjoined
00:48:05  <tjfontaine>sblom: did you see my comments on 4966?
00:50:37  * dapchanged nick to Guest93187
00:50:47  * kazuponquit (Remote host closed the connection)
00:53:28  * Guest93187quit (Quit: Leaving.)
00:54:31  * kazuponjoined
00:55:17  <MI6>nodejs-master: #118 UNSTABLE osx-x64 (1/569) windows-ia32 (4/569) osx-ia32 (2/569) windows-x64 (5/569) smartos-ia32 (1/569) smartos-x64 (2/569) http://jenkins.nodejs.org/job/nodejs-master/118/
00:56:22  * c4miloquit (Ping timeout: 256 seconds)
00:56:30  * c4milojoined
00:59:09  * dominictarrjoined
01:01:12  * kazuponquit (Remote host closed the connection)
01:03:39  <sblom>tjfontaine: Yeah--I did see that.
01:03:39  * dominictarrquit (Ping timeout: 240 seconds)
01:04:08  <sblom>I'm digesting.
01:07:07  * dominictarrjoined
01:09:54  <sblom>tjfontaine: I don't understand all of this yet.
01:11:02  <sblom>But if I'm reading right, your net.js change is just handling a few possibly null refs. and the real meat of your change is in tcp.c, right?
01:13:48  <sblom>tjfontaine: I'll be away for a bit, but I'll hop back on this evening.
01:13:54  * sblomquit
01:23:42  * mikealquit (Quit: Leaving.)
01:25:46  * benoitcquit (Excess Flood)
01:38:29  * AvianFlujoined
01:38:30  * benoitcjoined
01:43:11  <isaacs>bnoordhuis: in that timeout/nexttick/domain/debug thing...
01:43:30  * qmx|awaychanged nick to qmx
01:43:31  <isaacs>bnoordhuis: it looks like when you run via the debugger, it's not overriding process._tickCallback with process._tickDomainCallback
01:44:00  <bnoordhuis>that sounds plausible
01:45:31  * abraxasjoined
01:52:21  * brsonquit (Read error: Operation timed out)
01:54:00  * luxigojoined
01:55:22  <bnoordhuis>it's not v8, at least
01:55:39  <bnoordhuis>it has this bug where it will sometimes munge function arguments in debug contexts
01:55:55  <bnoordhuis>but downgrading v8 doesn't fix it so that's probably not it
02:05:56  <tjfontaine>ircretary: tell sblom ideally the change to net.js should not happen, instead the master process should send a valid socket even though it failed to bind
02:05:56  <ircretary>tjfontaine: I'll be sure to tell sblom
02:07:13  * luxigoquit (Remote host closed the connection)
02:09:29  * TooTallNatequit (Quit: Computer has gone to sleep.)
02:15:09  <isaacs>bnoordhuis: i have a test with a console.trace() shoing that it's clearly in _tickCallback, not _tickDomainCallback
02:15:32  <isaacs>bnoordhuis: i think what's happening is that we're processing ticks while the swap-out happens
02:17:03  * bnoordhuisquit (Ping timeout: 252 seconds)
02:23:15  * bradleymeckquit (Quit: bradleymeck)
02:25:57  * kazuponjoined
02:37:59  * brsonjoined
02:41:11  * kazuponquit (Remote host closed the connection)
02:41:27  * kazuponjoined
02:49:30  * loladirojoined
03:04:12  * c4miloquit (Remote host closed the connection)
03:09:12  * c4milojoined
03:09:45  * wolfeidauquit (Read error: Connection reset by peer)
03:10:02  * wolfeidaujoined
03:10:06  * qmxchanged nick to qmx|away
03:15:11  * mikealjoined
03:15:40  * c4milo_quit (Remote host closed the connection)
03:16:09  * c4milo_joined
03:20:34  * c4miloquit (Remote host closed the connection)
03:20:58  * c4milo_quit (Ping timeout: 272 seconds)
03:21:02  * skebcio_quit (Quit: No Ping reply in 180 seconds.)
03:21:22  * skebciojoined
03:23:33  * hzquit
03:36:19  * erickt_joined
03:41:31  * dominictarrquit (Quit: dominictarr)
03:41:37  * AvianFluquit (Remote host closed the connection)
03:41:39  * trevnorrisjoined
03:42:02  <tjfontaine>wb trevnorris
03:42:34  <trevnorris>hello
03:45:57  * mikealquit (Quit: Leaving.)
03:49:24  <trevnorris>i hate domains with a passion. and even more since so many developers act like they're node's saving grace.
03:50:07  <tjfontaine>heh
03:54:25  <tjfontaine>trevnorris: "this job would be great, if it weren't for the users"
03:54:39  <trevnorris>lol
03:54:56  <trevnorris>what developers seem to completely forget is that domains require context jumping. which pretty much pisses on any performance improvements if you want to access variables outside the function scope.
03:55:06  <tjfontaine>it's a common mantra, users could be replaced with just about everything
03:57:14  * wolfeidauquit (Remote host closed the connection)
03:57:20  <tjfontaine>trevnorris: sometimes it's a perf hit you're willing to take
03:58:20  <trevnorris>it's not for me. i spent almost a week figuring out how to prevent the domain virus from infecting the code of those who don't want to use it.
03:58:37  <tjfontaine>and that's admirable :)
03:58:43  <tjfontaine>and helpful
03:59:47  * mikealjoined
04:03:13  * mikealquit (Client Quit)
04:12:36  * brsonquit (Quit: leaving)
04:33:27  * mikealjoined
04:44:01  * kazuponquit (Remote host closed the connection)
04:44:45  * kazuponjoined
05:13:37  * mikealquit (Read error: Connection reset by peer)
05:16:37  <trevnorris>isaacs: sup?
05:18:28  * mikealjoined
05:22:42  <trevnorris>domain problem fixed.
05:27:05  <trevnorris>tjfontaine: and I figured out what was wrong w/ the persistent array thing. what i meant to do was create an array of void pointers, not an array of persistents themselves.
05:29:39  * TooTallNatejoined
05:36:43  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
05:39:18  * SomeoneWeirdjoined
06:05:02  * kazupon_joined
06:05:18  * kazuponquit (Ping timeout: 252 seconds)
06:24:24  * defunctzombiechanged nick to defunctzombie_zz
06:25:28  * kazuponjoined
06:27:04  * kazupon_quit (Ping timeout: 245 seconds)
06:45:19  * wolfeidaujoined
06:49:31  <trevnorris>indutny: you around?
06:49:35  <indutny>yeah
06:49:36  <indutny>sort of
06:50:09  <trevnorris>is it possible to refer to a Persistent handle by a pointer? or do those also get moved around?
06:51:27  <indutny>huh?
06:51:41  <indutny>surely it's possible...
06:51:47  <indutny>but I'm not sure that we're talking about the same thing
06:52:01  <trevnorris>i'm trying to create an array of persistent handle pointers. and when the make weak callback is fired, instead of Disposing it save it and use it later.
06:55:10  <trevnorris>problem is it seems the pointer in memory is being cleaned up, even though I'm not calling Dispose on the persistent handle.
06:56:04  <indutny>oh gosh :)
06:57:09  <trevnorris>heh. this probably seems insane.
06:58:18  <indutny>yeah, totally looks insane :)
06:59:15  <trevnorris>so if what I explained makes sense, think it's possible?
06:59:36  <indutny>it should be
07:03:04  <trevnorris>here's the snippet of what i've got: https://gist.github.com/trevnorris/5243611#file-persist-array-cc-L29
07:05:13  <indutny>oh gosh
07:05:26  <trevnorris>lol
07:09:55  <trevnorris>i'll take that as my syntax is totally FUBAR.
07:14:28  * rendarjoined
07:41:48  <trevnorris>ok. well I got it working w/o using pointers. now to figure out the other...
07:53:16  * dominictarrjoined
07:56:20  <trevnorris>indutny: the array of pointers to existing persistents is killing me. every time I think my syntax is correct it gives me an "error: taking the address of a temporary object of type"
07:57:20  * dominictarrquit (Client Quit)
07:59:23  * dominictarrjoined
07:59:49  * paddybyersjoined
08:03:07  * dominictarrquit (Client Quit)
08:05:45  * csaohjoined
08:08:23  * csaohquit (Client Quit)
08:17:12  <trevnorris>well. going to have a bowl of cereal and watch some tv before I break my laptop.
08:17:33  * trevnorrisquit (Quit: Leaving)
08:42:55  * dominictarrjoined
09:01:25  * einaros_joined
09:01:25  * kuplatup1ujoined
09:02:55  * dsantiag_joined
09:05:44  * philips_joined
09:06:25  * philipsquit (*.net *.split)
09:06:26  * einarosquit (*.net *.split)
09:06:27  * kuplatupsuquit (*.net *.split)
09:06:27  * dsantiagoquit (*.net *.split)
09:06:29  * philips_changed nick to philips
09:33:56  * kazupon_joined
09:37:10  * kazuponquit (Ping timeout: 272 seconds)
09:54:04  * kazupon_quit (Remote host closed the connection)
10:07:22  * benoitcquit (Excess Flood)
10:09:35  * benoitcjoined
10:11:36  * loladiroquit (Quit: loladiro)
10:35:03  * `3rdEdenjoined
10:38:51  * `3rdEdenchanged nick to `3E
10:42:42  * benoitcquit (Excess Flood)
10:46:00  * `3rdEdenjoined
10:47:05  * benoitcjoined
10:51:11  * rvaggquit (Excess Flood)
10:51:26  * rvaggjoined
10:54:22  * abraxasquit (Remote host closed the connection)
11:03:31  * `3Equit (Remote host closed the connection)
11:07:16  * Kakerajoined
11:10:00  * stagasjoined
11:28:31  * sgallaghjoined
11:30:49  * piscisaureus_joined
11:33:04  <piscisaureus_>ircretary: notes
11:33:08  <piscisaureus_>hello everyone
11:34:24  <indutny>hello
11:34:26  <indutny>fuck ISS
11:42:09  <indutny>err
11:42:11  <indutny>s/ISS/IIS
11:42:13  <indutny>:)
11:43:27  * c4milojoined
11:49:48  * kazuponjoined
11:50:55  * kazuponquit (Read error: Connection reset by peer)
11:51:07  * kazuponjoined
11:55:12  <sgallagh>indutny: Thanks for correcting that. The cosmonauts were aiming the death-ray.
11:57:06  <indutny>phew
12:31:40  * benoitcquit (Excess Flood)
12:41:34  * `3Ejoined
12:42:31  * bnoordhuisjoined
12:43:06  * benoitcjoined
12:44:21  * kazuponquit (Remote host closed the connection)
12:45:57  <indutny>bnoordhuis: hey ben
12:46:06  <indutny>are you aware of any TLS issues with IIS?
12:46:52  <bnoordhuis>indutny: hey
12:47:00  <bnoordhuis>i'd say there are many
12:47:19  <indutny>heh
12:47:25  <indutny>well, it doesn't seem to work at all
12:47:30  <indutny>could it be called an issue?
12:47:48  <Kakera>if create a shared library makefile with gyp_uv -Dlibrary=shared_library, how do I then make a Release build? make -C out builds Debug by default
12:47:48  <bnoordhuis>uhm, what doesn't work? what are you trying to do?
12:48:03  <bnoordhuis>Kakera: add BUILDTYPE=Release
12:48:05  <indutny>bnoordhuis: tls
12:48:08  <indutny>bnoordhuis: only ssl does
12:48:17  <Kakera>bnoordhuis, thanks
12:48:38  <bnoordhuis>indutny: can you connect with openssl s_client?
12:48:43  <indutny>yes
12:48:48  <indutny>but it sends 0x8080....
12:48:49  * hzjoined
12:48:51  <indutny>and we're sending 0x16....
12:48:59  <indutny>so I guess s_client is using ssl3 by default
12:49:21  <indutny>and if I'll use SSL_OP_NO_TLS1 - everything will work perfectly
12:49:27  <bnoordhuis>indutny: add -tls1 -no_ssl2 -no_ssl3
12:49:35  <Kakera>../src/unix/core.c:69:1: warning: ISO C forbids zero-size array ‘static_assert_failed’ [-pedantic]
12:49:41  <Kakera>hm, I don't remember seeing this before
12:49:43  <indutny>works
12:49:48  * `3Equit (Ping timeout: 256 seconds)
12:49:52  <bnoordhuis>Kakera: that's my STATIC_ASSERT macro. newer versions of gcc don't like it
12:50:03  <Kakera>I see
12:50:11  <bnoordhuis>as long as it's just a warning, it's okay
12:50:15  <indutny>oddd
12:50:23  <indutny>bnoordhuis: may be its some tls extensions?
12:50:27  <indutny>that are not supported by IIS?
12:50:32  <bnoordhuis>when the static assert fails, you'll get a compile time error
12:50:39  <indutny>like NPN
12:50:44  <bnoordhuis>indutny: possibly. or disabled by the administrator
12:50:50  <indutny>interesting
12:50:52  <indutny>domain is
12:50:59  <indutny>bssdev.sharepoint.com
12:51:03  <indutny>try doing any https request
12:51:20  <bnoordhuis>curl works
12:51:24  <indutny>it seems to be working from chrome and curl
12:53:02  <indutny>hm... I disabled NPN
12:53:07  <indutny>but it still fails with node
12:53:33  <indutny>it writes ClientHello, but never receives ServerHello
12:54:18  <bnoordhuis>v0.8 works
12:54:25  <bnoordhuis>try downgrading openssl
12:54:31  <indutny>oh no
12:54:36  <indutny>not this :)
12:54:39  <indutny>ok, will do
12:54:43  <indutny>looks like I need to reopen that issue
12:54:44  <bnoordhuis>i.e. git checkout origin/v0.8 -- deps/openssl
12:57:17  * sgallaghquit (Remote host closed the connection)
13:03:02  * kazuponjoined
13:06:11  * sgallaghjoined
13:17:43  <indutny>bnoordhuis: you were right
13:17:45  <indutny>it is openssl
13:17:58  <indutny>now I'll figure out what's different in ClientHello
13:18:04  <bnoordhuis>i kind of expected that :)
13:18:23  <bnoordhuis>it's using tls 1.1 by default now, i think
13:18:36  <indutny>I don't believe ya
13:18:43  <indutny>I think that happens because of extensions
13:19:24  <indutny>16030100db010000d703015151a054159b19050f9bcdfe458ec7dfb2c56bd0350e0a19d1784a7b0424d12c000048c014c00a00390038c00fc0050035c012c00800160013c00dc003000ac013c00900330032c00ec004002fc011c007c00cc002000500040015001200090014001100080006000300ff010000660000001a00180000156273736465762e7368617265706f696e742e636f6d000b000403000102000a00340032000100020003000400050006000700080009000a000b000c000d000e000f001000110012001300140015001600170018001
13:19:26  <indutny>v0.8 ^
13:21:43  <indutny>https://gist.github.com/indutny/7a282bdf98ecbdf079b6
13:22:08  <indutny>brb
13:31:13  * qmx|awaychanged nick to qmx
13:34:43  * bradleymeckjoined
13:41:06  <bnoordhuis>for some reason, a9740c9 ("rename OS to PLATFORM") breaks libuv out-of-tree builds
13:41:11  <bnoordhuis>but for the life of me, i can't see why
13:42:38  <bnoordhuis>and now it works again, without me having changed anything...
13:45:41  * SomeoneWeirdchanged nick to SomeoneWe1rd
13:47:05  * SomeoneWe1rdchanged nick to SomeoneWeird
13:49:11  * loladirojoined
13:52:05  <bnoordhuis>hm, i guess it's the run-test target that's broken. `make libuv.a builddir_name=out` works
14:01:52  * loladiroquit (Quit: loladiro)
14:03:04  * kazuponquit (Remote host closed the connection)
14:16:50  <MI6>joyent/libuv: Ben Noordhuis v0.10 * 0fb9b22 : build: simplify .buildstamp rule (+2 more commits) - http://git.io/vi-RCg
14:17:32  <MI6>joyent/libuv: Ben Noordhuis master * 73524cd : Merge remote-tracking branch 'origin/v0.10' (+8 more commits) - http://git.io/SuvH5A
14:19:12  <MI6>libuv-v0.10: #20 UNSTABLE windows (7/187) linux (2/186) osx (4/186) smartos (4/186) http://jenkins.nodejs.org/job/libuv-v0.10/20/
14:19:58  <MI6>libuv-master: #59 UNSTABLE windows (8/187) osx (3/186) smartos (5/186) linux (3/186) http://jenkins.nodejs.org/job/libuv-master/59/
14:24:35  * bradleymeckquit (Quit: bradleymeck)
14:28:02  * bradleymeckjoined
14:31:55  <bradleymeck>indutny: is jit.js able to integrate with a ffi or something so i can get the results in js?
14:39:28  * AvianFlujoined
14:41:32  * mikealquit (Quit: Leaving.)
14:43:07  * c4miloquit (Remote host closed the connection)
14:43:34  * c4milojoined
14:45:05  * erickt_quit (Quit: erickt_)
14:45:23  * bradleymeckquit (Quit: bradleymeck)
14:46:57  * c4miloquit (Remote host closed the connection)
14:47:03  * c4milo_joined
14:57:58  * defunctzombie_zzchanged nick to defunctzombie
14:58:11  <bnoordhuis>indutny, isaacs: what are the top issues right now?
14:58:19  <bnoordhuis>looking for something useful to work on
14:58:42  <bnoordhuis>not that we're wanting for open issues, of course
15:10:27  <MI6>joyent/node: Ben Noordhuis v0.10 * 0e08e14 : doc: fix formatting in tty.markdown Fixes #5135. - http://git.io/O-poEg
15:11:43  * mikealjoined
15:13:31  * kazuponjoined
15:14:49  <piscisaureus_>bnoordhuis: shouldn't we implicitly stop readingo UV_ENOBUFS?
15:15:00  <piscisaureus_>bnoordhuis: uv-win always does that when a read error happens
15:18:12  * kazuponquit (Ping timeout: 264 seconds)
15:28:20  * mikealquit (Quit: Leaving.)
15:32:09  <bnoordhuis>piscisaureus_: oh, uv-unix doesn't. the user is supposed to close the handle anyway when an error happens
15:33:39  <MI6>nodejs-v0.10: #72 UNSTABLE windows-x64 (5/567) osx-ia32 (2/567) smartos-ia32 (1/567) windows-ia32 (4/567) http://jenkins.nodejs.org/job/nodejs-v0.10/72/
15:35:14  <MI6>joyent/node: Ben Noordhuis v0.10 * a80a132 : doc: child_process: document 'error' event Fixes #5130. - http://git.io/0a7w_g
15:38:38  * solarisjoined
15:39:04  * solarispart
15:40:03  * bnoordhuisquit (Ping timeout: 252 seconds)
15:48:13  * bnoordhuisjoined
15:50:43  * mikealjoined
15:51:22  <isaacs>call in 10 minutes
15:53:08  * sblomjoined
15:54:24  <MI6>nodejs-v0.10: #73 UNSTABLE linux-x64 (1/567) windows-x64 (4/567) osx-ia32 (2/567) smartos-x64 (1/567) smartos-ia32 (1/567) windows-ia32 (4/567) http://jenkins.nodejs.org/job/nodejs-v0.10/73/
15:55:05  * mikealquit (Client Quit)
15:56:02  <piscisaureus_>isaacs: noted
16:00:22  * nsmjoined
16:02:05  <bnoordhuis>call?
16:04:17  <isaacs>indutny: halo?
16:04:52  <bnoordhuis>real men play quake
16:05:32  * brsonjoined
16:13:56  * trevnorrisjoined
16:17:09  * bradleymeckjoined
16:17:53  * `3rdEdenquit (Remote host closed the connection)
16:22:16  * trevnorrisquit (Quit: Leaving)
16:25:06  <indutny>bradleymeck: em... not really
16:25:09  <indutny>not yet
16:25:22  <indutny>bnoordhuis: real men were in restaraunt
16:25:25  <bradleymeck>mmm, maybe if i just dump it to an elf
16:25:26  <indutny>isaacs: sorry, missed the call
16:25:34  <isaacs>np
16:25:45  <indutny>isaacs: was meeting with my father
16:26:06  <indutny>what are results of standup?
16:27:43  <bnoordhuis>v0.12 will be rewritten in java for maximum portability
16:27:58  <indutny>bnoordhuis: finally
16:28:08  <indutny>will I be able to use it in my enterprise stack?
16:29:19  * bradleymeckponders all the JVM OSless hypervisor apps
16:31:50  * trevnorrisjoined
16:34:02  * bradleymeckquit (Quit: bradleymeck)
16:37:36  * perezdjoined
16:39:17  * mikealjoined
16:40:21  <bnoordhuis>indutny: that's what we're doing it for, big enterprise acceptance
16:40:28  <bnoordhuis>also, big enterprise money
16:40:49  <piscisaureus_>we'll also close-source the tests
16:41:34  <indutny>ok
16:41:39  <indutny>will we move to svn then?
16:41:53  <indutny>I think its right time
16:42:27  * c4milo_quit (Remote host closed the connection)
16:42:53  * c4milojoined
16:43:02  * dapjoined
16:43:45  * perezdquit (Quit: perezd)
16:44:25  <pquerna>k.
16:46:03  <piscisaureus_>perforce ?
16:47:17  <pquerna>hg.
16:47:24  <pquerna>its the future, joel on software said so.
16:47:48  * c4miloquit (Ping timeout: 256 seconds)
16:52:16  * piscisaureus_quit (Ping timeout: 272 seconds)
16:52:51  <bnoordhuis>any pull requests i need to review? now is the time to speak up
16:53:55  <tjfontaine>maybe 5138
16:54:15  <MI6>joyent/node: Trevor Norris master * ccda6bb : buffer: remove _charsWritten _charsWritten is an internal property that - http://git.io/NKKP-g
16:59:30  * dapquit (Quit: Leaving.)
16:59:51  <trevnorris>bnoordhuis, isaacs: 5144
17:00:07  <txdv_>couldn't node somehow use select for files and the faster variants for other fds all in one?
17:00:34  <bnoordhuis>txdv_: select as in select(2)? doesn't work
17:01:01  <txdv_>it doesn't work for files?
17:01:06  <bnoordhuis>no
17:01:16  <txdv_>hm
17:01:38  <bnoordhuis>tjfontaine, trevnorris: noted. will look after my evening walk :)
17:01:45  <trevnorris>thanks
17:01:50  <txdv_>does libuv support unix domain sockets?
17:03:43  * loladirojoined
17:04:17  * piscisaureus_joined
17:05:07  <isaacs>trevnorris: btw, if github click fails happen, we can always just ignore the crud in the html.
17:05:10  <indutny>txdv_: es
17:05:14  <isaacs>trevnorris: we land patches via git cli anyway
17:05:26  <txdv_>indutny: i dont speak spanish
17:05:32  <indutny>hola
17:05:49  <trevnorris>isaacs: noted. =)
17:05:54  <indutny>txdv_: I think it is
17:06:03  <txdv_>with _open?
17:06:08  * bnoordhuisquit (Ping timeout: 240 seconds)
17:06:23  <indutny>with uv_pipe_open
17:06:29  <indutny>oh
17:06:32  <indutny>uv_pipe_bind
17:06:33  <indutny>actually
17:06:49  <txdv_>unix domain sockets with pipes
17:06:55  <indutny>yes
17:07:05  <indutny>well
17:07:19  <indutny> * uv_pipe_t is a subclass of uv_stream_t
17:07:20  <indutny> *
17:07:20  <indutny> * Representing a pipe stream or pipe server. On Windows this is a Named
17:07:20  <indutny> * Pipe. On Unix this is a UNIX domain socket.
17:07:40  <indutny>so I think you can just call uv_read_start on it
17:07:46  <indutny>and accept connections
17:07:51  <indutny>oops
17:07:53  <indutny>uv_listen
17:07:54  <indutny>gosh
17:07:59  <indutny>I will never remember all APIs
17:12:46  * qmxchanged nick to qmx|lunch
17:12:53  <MI6>nodejs-master: #119 UNSTABLE linux-ia32 (1/569) windows-ia32 (5/569) osx-ia32 (2/569) windows-x64 (4/569) smartos-x64 (1/569) http://jenkins.nodejs.org/job/nodejs-master/119/
17:13:27  <tjfontaine>first time seeing this weird test failure http://jenkins.nodejs.org//job/nodejs-master/DESTCPU=x64,label=smartos/lastCompletedBuild//tapTestReport/test.tap-418/
17:13:35  <tjfontaine>but seems racey by nature
17:14:51  <indutny>seems to be timing issue
17:15:04  <indutny>I bet its caused by some virtualization weirdness
17:15:26  <isaacs>ah, should be 'close', not 'exit'
17:18:02  <MI6>joyent/node: isaacs master * 2eb8478 : test: Use 'close' event in simple/test-repl-timeout-throw - http://git.io/gIg_Xg
17:18:05  <isaacs>tjfontaine: ftfy
17:18:31  <tjfontaine>isaacs: thanks :)
17:26:26  <indutny>ooh
17:26:27  <indutny>:)
17:26:29  <indutny>interesting
17:27:24  * defunctzombiechanged nick to defunctzombie_zz
17:35:45  <trevnorris>they must be rolling out changes on github or something. been acting funky w/ rebases and code comments.
17:37:10  * c4milojoined
17:38:06  <MI6>nodejs-master: #120 UNSTABLE osx-x64 (1/569) windows-ia32 (4/569) osx-ia32 (2/569) windows-x64 (5/569) smartos-ia32 (1/569) http://jenkins.nodejs.org/job/nodejs-master/120/
17:39:43  * dapjoined
17:50:13  <indutny>https://gist.github.com/indutny/7a282bdf98ecbdf079b6
17:50:17  <indutny>so that's it
17:50:31  <indutny>signature algorithms
17:50:35  <indutny>heartbeat
17:50:39  <indutny>and TSLv1.2
17:50:43  <indutny>and IIS will fuck up
17:50:50  <indutny>and won't even reply
17:55:00  * bnoordhuisjoined
17:56:31  <bnoordhuis>indutny: yep, that's what i said right? tls 1.2
17:56:36  <indutny>well
17:56:42  <indutny>1.0 doesn't work either :)
17:56:50  <indutny>the problem is heartbeat extension
17:56:55  <bnoordhuis>before, we shipped 0.9.x and that only supported 1.1
17:56:59  <indutny>going to figure out how to disable it
17:57:11  * nsmquit (Quit: nsm)
17:57:46  <bnoordhuis>oh? it's not the tls 1.2 advertisement iis is barfing on? it's the heartbeat extension?
17:57:54  <tjfontaine>isaacs: jenkins likes to taunt you, http://jenkins.nodejs.org//job/nodejs-master/DESTCPU=ia32,label=smartos/lastCompletedBuild//tapTestReport/test.tap-418/
18:08:05  * brsonquit (Ping timeout: 248 seconds)
18:08:43  * brsonjoined
18:11:02  * TooTallNatejoined
18:17:11  <indutny>bnoordhuis: yt?
18:17:22  <indutny>bnoordhuis: its heartbeat extension + tls1.2
18:17:24  <indutny>tls1.1 works fine
18:17:39  <indutny>so I think users should use secureOptions: require('constants').SSL_OP_NO_TLSv1_2
18:17:51  <indutny>and we should add define to disable heartbeats
18:18:03  <indutny>or at least some JS-function
18:27:40  * `3rdEdenjoined
18:29:17  <indutny>JS-function is impossible... :(
18:29:21  * loladiroquit (Quit: loladiro)
18:29:28  <indutny>it'll advertise extension anyway
18:29:36  <indutny>regardless of configuration
18:29:44  <indutny>its quite odd that IIS doesn't support it
18:30:01  <indutny>sblom: do you know where I could write about IIS+TLS problem?
18:30:47  <tjfontaine>always amuses me to find out people are using iis
18:31:28  <indutny>tjfontaine: well
18:31:30  <indutny>sharepoint.com
18:31:37  <indutny>is really that kind of people who're using this stuff
18:32:51  <tjfontaine>nod
18:37:46  <indutny>bnoordhuis: https://github.com/joyent/node/pull/5147
18:37:54  <indutny>tjfontaine: could you start builds ^
18:38:04  <indutny>I'm hitting build button, but it doesn't seem to be doing anything
18:38:13  <indutny>probably, because I'm on chromium's bleeding edge
18:39:39  <tjfontaine>indutny: have you filled out your api key?
18:39:43  <indutny>yep
18:39:48  <tjfontaine>interesting
18:40:03  <tjfontaine>anyway, it's queued
18:40:08  <indutny>thanks
18:42:56  * piscisaureus_quit (Read error: Connection reset by peer)
18:45:52  * sblomquit (Ping timeout: 256 seconds)
18:47:37  <isaacs>tjfontaine: https://github.com/joyent/node/pull/5144
18:48:43  <indutny>aha
18:49:09  <tjfontaine>isaacs: ya there might have been a cache issue in your browser, because it somehow got the wrong target branch to rebase on
18:49:13  <tjfontaine>I'm looking at it now
18:50:17  <tjfontaine>because the one I triggered for indutny has the right rebase branch http://jenkins.nodejs.org/job/node-pullrequest/107/DESTCPU=ia32,label=linux/parameters/?
18:51:32  <tjfontaine>isaacs: also make sure your checkout of the plugin is up to date
18:52:06  <trevnorris>hate it when I get sucked into comment battles. main reason i stay away from the mailing list.
18:52:40  <indutny>trevnorris: streams2 discussion?
18:52:49  <tjfontaine>the EE discussion
18:53:06  <tjfontaine>#5114
18:53:38  * qmx|lunchchanged nick to qmx
18:56:42  * dominictarrquit (Quit: dominictarr)
18:59:06  <tjfontaine>indutny: your build finished
18:59:51  <indutny>thanks
19:00:28  <trevnorris>bnoordhuis: i understand singleton, but not complete sure about "primitive singleton"
19:00:53  <tjfontaine>null, undefined, NaN probably
19:01:17  <tjfontaine>I interpreted that to mean "language primitives"
19:02:00  <trevnorris>tjfontaine: https://github.com/joyent/node/pull/5142#discussion_r3529800
19:02:19  <tjfontaine>right
19:02:46  <tjfontaine>a language primitive like null, undefined, NaN has a singleton representation
19:03:48  * dsantiag_changed nick to dsantiago
19:03:48  <trevnorris>hm. so will the HandleScope automatically cleanup any Local Handles when the function completes?
19:04:00  <bnoordhuis>yes
19:04:10  <trevnorris>coolio. thanks.
19:04:19  <tjfontaine>well, when the handlescope goes out of scope :)
19:04:31  <tjfontaine>or closes I guess
19:04:36  <indutny>noo
19:04:46  <indutny>handlescope is much cooler than this
19:04:51  <indutny>though, its not required
19:04:53  <indutny>:)
19:04:56  <indutny>to make things work
19:06:03  <indutny>but it simplifies them a lot. Basically, each isolate knows all current handlescopes
19:06:17  <indutny>and GC can relocate handles in each of them
19:06:20  <indutny>that's the main purpose
19:06:33  <indutny>destruction of Local handles will happen anyway
19:06:35  <indutny>on scope close
19:06:35  * CoverSlidejoined
19:07:45  <trevnorris>so I understand that as Local handles stick around if Close isn't called explicitly?
19:07:55  <bnoordhuis>trevnorris: no
19:09:09  <bnoordhuis>you could say a HandleScope makes Local handles persistent for the scope of the HandleScope
19:09:16  <indutny>bnoordhuis: what do you think about my PR
19:09:37  <indutny>bnoordhuis: https://github.com/joyent/node/pull/5147
19:10:00  <trevnorris>ah, found it. in the v8 embedder's guide they use Handle instead of Local, which was confusing me.
19:10:00  <indutny>bnoordhuis: ++ for description
19:10:07  <trevnorris>but found it: " local handle you're trying to return will end up being deleted by the handle scope's destructor immediately before the function returns"
19:10:22  <bnoordhuis>indutny: always with the pull requests
19:10:37  <bnoordhuis>can't we going forward just fix things with the power of positive thinking?
19:11:52  <bnoordhuis>"Note that test is impossible without embedding IIS. (Which seems to be a little bit unacceptable considering that node.js is a cross-platform application)." <- very droll :)
19:20:48  <trevnorris>thought I was doing something really cool reusing the Persistent handles, but not doing anything.
19:21:22  <trevnorris>anyone mind giving a quick critique http://git.io/G0XQFQ
19:25:30  <bnoordhuis>trevnorris: uhm, what's it supposed to do? reuse the Persistent?
19:26:05  <trevnorris>bnoordhuis: yeah.
19:26:58  <bnoordhuis>trevnorris: p_obj = p_saved[p_saved_start]; <- that makes a copy of the Persistent
19:27:27  <trevnorris>bnoordhuis: I tried with pointers but the compiler kept bitching at me.
19:28:06  <bnoordhuis>which is probably not what you intend
19:28:55  <trevnorris>so, you think there's a way to track and reuse the same handle?
19:29:12  <bnoordhuis>trevnorris: what you probably want is something like this:
19:29:23  <bnoordhuis>Persistent<Object> handles[1024];
19:29:51  <bnoordhuis>then Persistent<Object>* handle = handles + index
19:30:10  <bnoordhuis>or Persistent<Object>* handle = &handles[index] if you prefer that notation (Real Men don't)
19:30:31  <indutny>bnoordhuis: positive thinking?
19:30:33  <bnoordhuis>then obj->SetHiddenValue(sym, *handle)
19:31:10  <bnoordhuis>it's a bit roundabout though. are you sure Persistent::New() is that expensive?
19:31:35  <bnoordhuis>i guess it could be, it adds an entry to the global roots list
19:31:51  <bnoordhuis>indutny: left a comment on the PR. LGTM but needs a comment
19:32:05  <indutny>yeah
19:32:12  <indutny>sure, just want that guys to test it first
19:32:17  <trevnorris>it's partially because of ::New, and partially because GC seems to hate persistents.
19:33:20  <indutny>it would be pretty interesting if trevnorris' solution will work out
19:33:21  <bnoordhuis>trevnorris: why do you need so many persistent handles? isn't a single one enough
19:33:24  <indutny>I never thought about it
19:33:59  <trevnorris>bnoordhuis: you need a persistent for every new external allocation, because the data is linked to the persistent, and the persistent to the js object.
19:34:31  <bnoordhuis>right, i get that
19:34:46  <bnoordhuis>but why the list? once you Persistent::New() it, you can't reseat it
19:34:59  <indutny>trevnorris: exactly
19:35:03  <indutny>I was looking at the APIs
19:35:17  <indutny>its impossible to skip v8::GlobalizeReference call
19:35:24  <trevnorris>don't need to. remember i'm just creating a new empty object. it's just a way to track js references.
19:35:32  <indutny>ah
19:35:56  <trevnorris>i make it weak and pass the external data reference as the arg. then I know when it can be cleaned up.
19:36:34  <bnoordhuis>okay, but why the list?
19:37:20  <trevnorris>so I can keep track of unused persistents. they're only trashed on Dispose, so if I keep and reuse the skips another Persistent::New, Object::New
19:38:20  <bnoordhuis>ah
19:40:46  <bnoordhuis>trevnorris: what happens when you put a assert(target->IsNearDeath() == false) in your WeakCallback?
19:42:02  <trevnorris>fails. my original code returned if the make weak callback was called before was near death. but realized that can't happen.
19:42:16  <trevnorris>the make weak callback won't be called unless it's near death.
19:43:00  <bnoordhuis>is the Persistent actually usable after that?
19:43:21  <trevnorris>yeah.
19:44:00  <trevnorris>well. let me test your example before I pass final judgement on that =)
19:44:13  <indutny>haha
19:44:17  <indutny>this is really funny
19:44:27  <indutny>I don't think that Persistent is useful after that
19:44:36  <indutny>because it will require GC to perform additional work
19:44:50  <indutny>to mark everything reachable from that handle once again
19:44:52  <bnoordhuis>yeah, i think so too
19:44:59  <indutny>its a bit problematic in many cases
19:45:04  <indutny>though, possible
19:45:11  <trevnorris>so what's the reason for Dispose()?
19:45:14  <bnoordhuis>i'm pretty sure v8 actually checks that it's not state=NEAR_DEATH anymore after the callback
19:45:27  <bnoordhuis>ASSERT(state_ != NEAR_DEATH);
19:45:29  <indutny>trevnorris: continue checking
19:45:29  <bnoordhuis>^ that
19:46:54  <indutny>ah
19:47:00  <indutny>so it should be dead after that
19:47:02  <indutny>otherwise v8 will throw
19:47:11  <indutny>either dead or rearmed
19:47:17  <indutny>according to:
19:47:18  <indutny> // FREE -> NORMAL <-> WEAK -> PENDING -> NEAR_DEATH -> { NORMAL, WEAK, FREE }
19:47:26  <bnoordhuis>yep, you either have to Dispose() or ClearWeak() it
19:47:29  <bnoordhuis>sorry, trevor :-/
19:47:54  <indutny>I'm thinking about exploiting existing ByteArrays
19:48:07  <indutny>working on separate semi-fixable space
19:48:12  <indutny>fixable=non-moving
19:48:22  <indutny>so it'll be partially non-moving mark-compact
19:48:23  <bnoordhuis>semi-fixed then?
19:48:32  <indutny>last definition is much better
19:48:44  <bnoordhuis>bit wordy though :)
19:48:47  <indutny>yes
19:48:52  <indutny>I wonder if someone already did it
19:48:53  <indutny>before
19:49:39  <trevnorris>i believe you. but going to try it anyways. =)
19:49:56  <indutny>yeah, you should try it
19:50:04  <indutny>ok, shower time
19:50:07  <bnoordhuis>trevnorris: okay. but you want to read the stuff in deps/v8/src/global-handles.cc
19:50:18  <trevnorris>bnoordhuis: thanks.
19:50:22  <bnoordhuis>and test it with a debug build, the release build has asserts in v8 disabled
19:59:05  <trevnorris>so when the persistent object is passed to the make weak callback, how is it referenced as Value instead of Object?
20:06:19  <bnoordhuis>trevnorris: because it's possible to create a Persistent<Value>
20:06:44  <bnoordhuis>you could in theory create e.g. a Persistent<Number>
20:07:11  <trevnorris>bnoordhuis: what i'm not understanding is I can &value from the value passed to make weak callback.
20:07:41  <trevnorris>but it errors when I compile if I try to reference Persisten<Object>.. with "taking the address of a temporary object of type"
20:08:51  <bnoordhuis>example code?
20:09:10  * dominictarrjoined
20:12:55  <trevnorris>bnoordhuis: here's a rough snippet of code https://gist.github.com/trevnorris/5243611
20:13:31  <trevnorris>so the code "&(Persistent<Object>::New(iso, Object::New()))" will error on compile.
20:13:41  <indutny>trevnorris: oh
20:13:43  <trevnorris>but the snippet there compiles fine, but the assert at the bottom fails.
20:13:45  <indutny>its a total shit :)
20:13:54  <indutny>you can't use pointers to local values
20:13:55  <trevnorris>what, my code? lol
20:14:01  <indutny>and target is local value
20:14:05  <indutny>it doesn't exist outside
20:14:08  <indutny>bnoordhuis: right?
20:14:56  <trevnorris>indutny: then why can I pass by reference the "Persistent<Value> value" passed to the make weak callback?
20:15:25  <indutny>oh, don't ask me
20:15:31  <indutny>its pretty shady corner of C++ for me
20:15:38  <indutny>that I don't fully know how it works
20:17:43  <trevnorris>lol, then i'm in _way_ over my head. =)
20:18:13  <bnoordhuis>trevnorris: you're trying to take the address of a temp object
20:18:26  <indutny>ah, that's what it is
20:18:28  <indutny>temporary object
20:18:56  * loladirojoined
20:19:43  <indutny>ttyl
20:19:47  * indutny&
20:21:45  <tjfontaine>LOUDBOT: I really enjoy your banter
20:26:51  <tjfontaine>ok, so test-regress-GH-746 is only failing inside jenkins, something to do with the stdin that it's passing the child
20:27:07  <tjfontaine>that jenkins is passing to the test runner
20:27:27  <tjfontaine>I'm fairly tempted to skip the test on jenkins
20:28:00  * qmxchanged nick to qmx|afk
20:31:59  <trevnorris>bnoordhuis: what i'm curious about is why allow for creation of an empty storage cell? unless you can assign something to it later.
20:35:00  * dominictarrquit (Ping timeout: 264 seconds)
20:42:46  * defunctzombie_zzchanged nick to defunctzombie
20:56:54  <bnoordhuis>trevnorris: beats me
21:03:06  <tjfontaine>bnoordhuis: does that mean ngx_queue is leaving node as well?
21:03:40  * c4miloquit (Remote host closed the connection)
21:03:43  <bnoordhuis>tjfontaine: probably. why?
21:03:58  <tjfontaine>I just anticipate hearing about some addins using it
21:04:07  * c4milojoined
21:04:19  <bnoordhuis>they can bundle their own copy of ngx-queue.h
21:04:20  <tjfontaine>not that they can't ship their own and ifdef on its existence
21:04:27  <tjfontaine>or ignore
21:04:33  <tjfontaine>or what have you
21:07:22  * defunctzombiechanged nick to defunctzombie_zz
21:08:53  * c4miloquit (Ping timeout: 248 seconds)
21:12:21  * benoitcquit (Excess Flood)
21:13:48  <isaacs>tjfontaine: i'm tempted to start sending pull reqs just because running `make test` is tedious.
21:13:51  <isaacs>nicely done
21:17:00  * c4milojoined
21:18:37  * benoitcjoined
21:24:09  * papertigers_joined
21:26:21  <papertigers_>node 8 and up package openssl now correct? Is there a way to make sure when compiling from source that openssl is using hardware acceleration?
21:26:25  * c4milo_joined
21:26:41  <tjfontaine>"hardware acceleration"?
21:28:01  <papertigers_>as in openssl is built with hardware acceleration baked in. Taking advantage of the cpu crypto features?
21:28:29  <tjfontaine>well can you be more specific as to which acceleration, or only aesni stuff?
21:29:41  <papertigers_>Probably the aesni stuff. When we used to build node 6 we discovered it was linking against the wrong ssl on smartos that didn't have hardware acceleration which made anything ssl based extremely slow
21:30:41  <tjfontaine>the aesni is in the gyp, so it's compiled, but of course as far as openssl properly detecting it
21:31:55  <MI6>joyent/libuv: Ben Noordhuis master * 76d831e : unix: getaddrinfo_cb status arg should be 0 or -1 The documentation in u - http://git.io/I-zB5g
21:32:07  * qmx|afkchanged nick to qmx
21:33:01  * wolfeidauquit (Remote host closed the connection)
21:33:19  * AvianFluquit (Remote host closed the connection)
21:34:11  * sgallaghquit (Ping timeout: 245 seconds)
21:34:24  <MI6>libuv-master: #60 UNSTABLE windows (6/188) osx (1/187) smartos (5/187) linux (2/187) http://jenkins.nodejs.org/job/libuv-master/60/
21:37:22  <tjfontaine>papertigers_: my statement is true for 0.10+ I'm checking 0.8 at the moment
21:37:52  <papertigers_>tjfontaine: thanks
21:38:34  <tjfontaine>there's at least no source file with a name aesni in the openssl version shipped with 0.8
21:38:47  <tjfontaine>at least what's in the gyp for it
21:40:11  * benoitcquit (Excess Flood)
21:40:24  <papertigers_>I looked at this with indutny a few weeks ago, he seemed to think it was when we disassembled a function
21:40:51  * bradleymeckjoined
21:41:19  <bnoordhuis>tjfontaine, papertigers_: node's openssl uses the hand-optimized assembly functions now where possible
21:41:32  <bnoordhuis>i'm reasonably sure we didn't back-port that to v0.8
21:41:36  <tjfontaine>it very well may be, it's just not as easy as it was to determine if AES-NI is compiled in
21:41:58  <bnoordhuis>or maybe we did: e0e9f0c15ac9fba896dd135ced1afa2601687dfe
21:42:26  <tjfontaine>ya the gyp certainly looks like the asm instructions are there :)
21:42:43  <tjfontaine>anyway, in .10+ there's aesni.s (roughly) files included
21:43:15  <tjfontaine>so that was an easy spot check
21:45:08  <papertigers_>so it should be in v0.8
21:48:32  <tjfontaine>I wish there were a define I could check for it
21:48:37  * benoitcjoined
21:48:44  * rendarquit
21:49:52  <trevnorris>isaacs: thoughts on https://github.com/joyent/node/issues/5114#issuecomment-15490923
21:51:41  <bnoordhuis>papertigers_: v0.8 ships an old version of openssl, it's possible it doesn't support aesni
21:52:33  <bnoordhuis>yeah, doesn't look like it
21:52:40  <bnoordhuis>one more reason to upgrade
21:53:31  * niska`changed nick to niska
21:53:56  <papertigers_>bnoordhuis: thanks, maybe ill just link agains the system ssl like we used to do with node v6
21:54:26  <tjfontaine>there do seem to exist patches in the ether for 1.0.0 branch to add NI
21:55:39  * defunctzombie_zzchanged nick to defunctzombie
22:01:43  * philipsquit (Changing host)
22:01:43  * philipsjoined
22:02:15  <trevnorris>bnoordhuis: ok. i admit defeat. but this war isn't over!
22:07:11  * defunctzombiechanged nick to defunctzombie_zz
22:09:10  <bnoordhuis>seems most of the v0.10 bugs are streams2 fallout
22:09:19  <bnoordhuis>i guess that's both good and bad
22:09:30  <tjfontaine>well it was the biggest feature
22:10:00  <tjfontaine>I'm not sure what to do about that windows-stderr one
22:12:49  <trevnorris>bnoordhuis: do you need a handlescope if only one handle is created and returned?
22:19:37  * wolfeidaujoined
22:21:42  <bnoordhuis>trevnorris: yes
22:21:50  <trevnorris>thanks
22:22:13  * benoitcquit (Excess Flood)
22:22:20  <bnoordhuis>trevnorris: think of it like this: any code that could conceivably kick off a gc run should have a proper HandleScope
22:22:37  <bnoordhuis>because if you omit it, your handles might get gc'ed while you're still operating on them
22:23:30  <MI6>joyent/node: Ben Noordhuis master * 8548920 : openssl: make sed tool configurable Those poor sods on systems where /us - http://git.io/3mt9zQ
22:23:46  * bradleymeckquit (Quit: bradleymeck)
22:24:09  <trevnorris>bnoordhuis: interesting. so you're saying that v8's gc could halt the following and cleanup the handle? http://git.io/oWyOlQ
22:24:20  * qmxchanged nick to qmx|afk
22:24:37  * benoitcjoined
22:24:45  <tjfontaine>any object creation could trigger a gc
22:25:52  <trevnorris>i get that. but how does v8 cleanup a handle that it still being operated on, does it halt execution of the program?
22:26:15  <tjfontaine>you've "yielded" execution to ::New already
22:26:25  <bnoordhuis>trevnorris: when you root a Local in a HandleScope, v8 knows it's in use
22:26:40  <bnoordhuis>if you don't, it doesn't and hence will reclaim the memory the Local points to
22:26:50  <bnoordhuis>s/memory/object or value/
22:26:51  <trevnorris>interesting. thanks.
22:27:23  <bnoordhuis>the exception being SMIs but forget i said that :)
22:27:40  <tjfontaine>hmm seems irc dropped a message there... :)
22:30:13  * brsonquit (Ping timeout: 240 seconds)
22:30:46  <trevnorris>bnoordhuis: not sure how you feel about this, but now that external memory is being managed elsewhere all the Buffer:: methods can directly extend the Buffer.prototype.
22:30:55  <trevnorris>no need for a class (well, not that I can see right now)
22:32:18  <trevnorris>and we can get rid of using __proto__
22:32:36  * brsonjoined
22:37:27  <trevnorris>isaacs: Buffer..write. still need to support legacy syntax of "(string, encoding, offset, length)"?
22:37:54  <isaacs>trevnorris: in general, if it's not raising a deprecation warning *now*, then yes, we need to support it.
22:38:11  <trevnorris>ok.
22:38:15  <isaacs>trevnorris: if you'd like to have the option to remove it in 2 or more versions, then add a util.deprecate()
22:38:20  <isaacs>trevnorris: it sucks, i know
22:38:36  <isaacs>trevnorris: what were you admitting defeat about earlier?
22:38:45  <trevnorris>eh, I understand. just funny when there's a comment about how in 0.4 or what not.
22:38:49  <isaacs>22:06 < trevnorris> bnoordhuis: ok. i admit defeat. but this war isn't over!
22:38:54  <trevnorris>oh, about reusing persistent handles.
22:39:00  <isaacs>oh, gotcha
22:39:01  <isaacs>yeah
22:39:10  <trevnorris>i'm convinced in some way it's possible, but already burned way too much time on it.
22:39:16  <isaacs>yeah
22:40:26  <MI6>nodejs-master: #121 UNSTABLE osx-x64 (1/569) linux-x64 (2/569) windows-ia32 (4/569) osx-ia32 (2/569) windows-x64 (6/569) smartos-ia32 (1/569) http://jenkins.nodejs.org/job/nodejs-master/121/
22:41:02  <tjfontaine>I like the idea in principle
22:41:57  <trevnorris>tjfontaine: well, i can't figure out why you're allowed to create an empty storage cell.
22:42:06  <trevnorris>like you should be able to use the cell for a persistent in the future.
22:44:34  <tjfontaine>trevnorris: you really need to have a conversation with a v8 guy, instead of trying to do it all from the outside
22:45:21  <trevnorris>heh, seriously. maybe once I'm "officially" working on node I'll see what can be arranged.
22:45:51  <trevnorris>i mean. I work just a couple miles from google hq. don't think it'd be _that_ hard.
22:46:46  <tjfontaine>well i think isaacs and bnoordhuis etc have contacts you could leverage as well
22:47:27  <trevnorris>awesomeness.
22:50:21  * piscisaureus_joined
22:51:00  <trevnorris>isaacs: now that Buffer's aren't aware of their own memory pools, it's impossible for them to write over/under their allocated space (in js).
22:51:16  <isaacs>trevnorris: interesting
22:51:24  <trevnorris>isaacs: so what do you think about removing the assert checks and just returning "undefined" like native arrays do?
22:51:45  <isaacs>trevnorris: you mean, like if you do b[b.length + 1] or something?
22:52:05  <trevnorris>yeah. that would pop out undefined
22:52:15  <isaacs>doesn't it already?
22:52:21  <trevnorris>no. it throws
22:52:26  * papertigers_quit (Quit: papertigers_)
22:52:29  <isaacs>> b = new Buffer(2); b[3]
22:52:30  <isaacs>undefined
22:52:32  <isaacs>?
22:52:58  <isaacs>> b.parent.length
22:52:58  <isaacs>8192
22:52:58  <isaacs>> b.parent[b.parent.length]
22:52:58  <isaacs>undefined
22:52:58  <isaacs>> b.parent[b.parent.length + 1]
22:53:01  <isaacs>undefined
22:53:10  <isaacs>seems ot work for SlowBuffer's already, also
22:53:21  <isaacs>oh, i think write* methods throw
22:53:22  <tjfontaine>I think the asserts he means are on the .write*
22:53:25  <isaacs>right?
22:53:40  <tjfontaine>which take a , noAssert boolean
22:53:47  <isaacs>i think we can keep those asserts. you shouldn't be trying to write() outside your bounds
22:54:11  <trevnorris>> var buf = new Buffer(3);
22:54:16  <trevnorris>buf.readUInt16LE(buf.length);
22:54:20  <trevnorris>RangeError: Trying to access beyond buffer length
22:54:29  <tjfontaine>ya, I still think that's a valid error
22:55:06  <trevnorris>instead of just returning undefined? before it was emphasised because of read/write overflow.
22:55:26  <trevnorris>write I get. same for read?
22:55:37  <isaacs>hm.
22:55:50  <isaacs>i think in this case throwing still "feels" right, because you're doing something a bit more formal.
22:55:50  <tjfontaine>you're trying to read more than what's available, getting undefined back for that case is a significant change
22:55:57  <trevnorris>just because I'd think buf[buf.length] should error the same as buf.writeUInt8(buf.length)
22:56:11  <trevnorris>(or not error in this case)
22:56:27  <trevnorris>ok. i'm not concerned either way. just curious what you guys thought.
22:56:53  <isaacs>if at all possible, it's best to not change implementation and behavior at the same time.
22:57:01  <trevnorris>erm. I meant readUInt8.
22:57:09  <trevnorris>noted
22:57:13  <isaacs>ie, if you're making a big implementation change, try to kep behavior the same. if you're trying to change behavior, try to make the minimum required impl change.
22:57:47  <isaacs>breaking that rule makes the work slower and more costly, even if it seems like a great idea. (qv. streams2)
22:57:59  <trevnorris>lol
22:58:07  <isaacs>of course, you can refactor the implementation all to hell so that then it's easier to make the behavior changes you want.
22:58:15  <isaacs>but it should be two separate phases.
22:58:45  <isaacs>for now, focus on making it so that no one even notices that Buffers got a facelift. (or, i guess, a skeleton-lift?)
22:58:58  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
22:59:22  <trevnorris>agreed. this impl change needs to be vetted for a while. better not screw around with unnecessaries.
22:59:23  <trevnorris>lol
22:59:50  <tjfontaine>we're putting the pinto body onto the porsche chassis
23:01:27  <trevnorris>isaacs: also, the reason for the Buffer class was to ObjectWrap and track external memory. now that's handled, there's no need for a full class.
23:02:19  <isaacs>trevnorris: well, i mean, except for identification, and a place to hang the various methods.
23:02:26  <isaacs>trevnorris: classes are good stuff, usuaally.
23:03:06  <isaacs>or do you mean a full "class" class, like, in C++?
23:03:17  <trevnorris>oh, yeah. sorry. the c++ class.
23:03:49  <isaacs>right
23:03:50  <tjfontaine>the node::Buffer class?
23:04:01  <isaacs>i thikn there are some addons and such that use it
23:04:07  <tjfontaine>almost certainly
23:04:26  <tjfontaine>I think probably the ref stuff, TooTallNate would know
23:04:47  <tjfontaine>this goes to the discussion of what the addon api should be :)
23:04:58  <trevnorris>+1
23:05:13  <TooTallNate>sup?
23:05:25  <tjfontaine>but at the very least trevnorris you'll need to supply some node::Buffer transitional period if you plan on removing it
23:05:36  <tjfontaine>TooTallNate: you instantiate buffers from the c++ side in ref/ffi land?
23:05:49  <trevnorris>oh, i'm leaving the ability to instantiate in.
23:06:03  <TooTallNate>tjfontaine: ummm rarely, i usually try to pass in Buffer instances manually
23:06:14  * benoitcquit (Excess Flood)
23:06:23  <isaacs>TooTallNate: yeah, that's almost always the correct approach
23:06:23  <trevnorris>i mean, just the need for an actual c++ class. since there's no need to track anything. (it'd basically be a class of statics)
23:06:29  <TooTallNate>tjfontaine: as far as ref/ffi go, no never, all Buffers are created with `new Buffer` in JS land first
23:06:32  <isaacs>TooTallNate: if you're *creating* buffers in C++, it's probably a mistake.
23:06:55  <trevnorris>isaacs: heh, you realize that's now the SlabAllocator works? =P
23:06:59  <isaacs>yes :)
23:07:05  <isaacs>i mean, if your addon is doing this.
23:07:05  <TooTallNate>isaacs: right… on the other hand, "wrapping" arbitrary pointers using Buffers is extremely powerful
23:07:11  <isaacs>yeah
23:07:12  <TooTallNate>so that's where I <3 SlowBuffers
23:07:22  <TooTallNate>err, Buffers created from C++ land
23:07:24  <isaacs>yeah
23:07:25  <trevnorris>how do you mean "wrapping"?
23:07:33  <TooTallNate>trevnorris: one sec
23:07:46  <trevnorris>lol. of course you have an example.
23:08:02  * c4miloquit (Remote host closed the connection)
23:08:07  <trevnorris>TooTallNate: I don't think you've never had an example ready to go.
23:08:11  <TooTallNate>trevnorris: here's a little helper file i use https://gist.github.com/TooTallNate/3987725
23:08:14  <tjfontaine>trevnorris: node::Buffer::New is staying?
23:08:26  <trevnorris>tjfontaine: oh, absolutely.
23:08:28  * c4milojoined
23:08:34  <TooTallNate>trevnorris: in short, I only care about the +callback version of Buffer::New()
23:08:44  <TooTallNate>since that doesn't actually alloc any memory
23:08:45  <trevnorris>all the ::New() are staying.
23:08:56  <TooTallNate>it just uses the pointer given with the length specified
23:09:07  * benoitcjoined
23:09:47  <trevnorris>ok. while it's not necessary. I can replicate handle_, data_, etc.
23:10:19  <MI6>joyent/libuv: Ben Noordhuis master * 0635e29 : unix, windows: remove ngx-queue.h Avoids an extra #include in public hea - http://git.io/edhyDQ
23:11:00  <trevnorris>the only thing I can think can't be replicated is ::Wrap(), but that's not set in stone.
23:11:47  * qmx|afkchanged nick to qmx
23:12:18  <bnoordhuis>https://github.com/joyent/node/issues/5149 <- is this guy for real?
23:12:45  <MI6>libuv-master: #61 UNSTABLE windows (6/188) osx (2/187) smartos (5/187) linux (2/187) http://jenkins.nodejs.org/job/libuv-master/61/
23:13:09  * c4miloquit (Ping timeout: 248 seconds)
23:13:30  <tjfontaine>bnoordhuis: are you listening in on our conversations?
23:14:07  <trevnorris>TooTallNate: ok, i get what what that does. but i'm wondering why?
23:14:39  * wolfeidauquit (Read error: Connection reset by peer)
23:14:39  <TooTallNate>trevnorris: passing "function pointers" around as JS objects for example
23:14:51  * wolfeidaujoined
23:15:11  <TooTallNate>trevnorris: sometimes it's more about the memory address than the actual contents ;)
23:15:31  <trevnorris>ah, ok
23:15:37  <TooTallNate>node-ffi does a lot of that
23:17:04  * defunctzombie_zzchanged nick to defunctzombie
23:20:42  * c4milojoined
23:20:46  * `3rdEdenquit (Quit: Zzzzz)
23:26:31  * defunctzombiechanged nick to defunctzombie_zz
23:32:55  * c4milo_quit (Remote host closed the connection)
23:34:24  * c4milo_joined
23:38:10  * c4milo_quit (Remote host closed the connection)
23:41:20  * Kakeraquit (Ping timeout: 264 seconds)
23:47:10  <trevnorris>there's a comment in Buffer::Copy that says "need to use slightly slower memmove is the ranges might overlap"
23:47:20  <trevnorris>anyone know what that comment is referring to?
23:55:37  <TooTallNate>trevnorris: memmove() supports overlapping regions, and memcpy() doesn't iirc
23:55:48  <trevnorris>is memcpy faster?
23:56:00  <TooTallNate>i would guess so :p
23:56:03  <TooTallNate>assuming the comment is correct haha
23:56:10  <TooTallNate>i think bnoordhuis impl'd that?
23:56:12  * TooTallNateguessing
23:56:32  <TooTallNate>bnoordhuis is usually pretty spot on when it comes to his C knowledge though
23:56:55  * defunctzombie_zzchanged nick to defunctzombie
23:57:04  <trevnorris>cool. was just curious.
23:58:55  * defunctzombiechanged nick to defunctzombie_zz