00:09:41  * isaacsquit (Ping timeout: 248 seconds)
00:13:35  * mikealjoined
00:21:57  * isaacsjoined
00:26:35  * bnoordhuisjoined
00:36:16  <CIA-115>node: koichik v0.6 * r35fe3eb / (lib/http.js test/simple/test-http-parser-free.js):
00:36:16  <CIA-115>node: http: reduce creating http-parser instances
00:36:16  <CIA-115>node: Fixes #2577. - http://git.io/asvz4Q
00:43:28  * mikealquit (Quit: Leaving.)
00:43:50  * travis-cijoined
00:43:50  <travis-ci>[travis-ci] joyent/node#289 (v0.6 - 35fe3eb : koichik): The build passed.
00:43:50  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/40c9348...35fe3eb
00:43:50  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/551648
00:43:50  * travis-cipart
00:49:37  * AvianFluquit (Ping timeout: 244 seconds)
01:02:38  * AvianFlujoined
01:02:56  <isaacs>mmalecki: even if it's changed, it should be a separate commit from the one that moves it.
01:03:00  <isaacs>since it's a different issue.
01:03:13  <isaacs>you'll have a +1 from me, but i don't use that function ever, so i'm not sure i should get a vote :)
01:03:18  <mmalecki>isaacs: I *always* do microcommits :)
01:03:42  <mmalecki>(as in, no 'and' in commit message)
01:04:10  <mmalecki>isaacs: brb, doing this stuff :)
01:08:45  <isaacs>kk.
01:19:43  * orlandovftwquit (Ping timeout: 260 seconds)
01:43:51  * piscisaureus_joined
01:49:54  <mmalecki>isaacs: https://github.com/joyent/node/pull/2587
01:50:13  <isaacs>great
01:50:19  <isaacs>i'm off for dinner and weekend.
01:50:21  <mmalecki>isaacs: gotta open another one for semantics.
01:50:24  <isaacs>kel
01:50:27  <mmalecki>isaacs: oh, right, it's weekend
01:50:27  <isaacs>*kewl
01:50:30  <isaacs>:)
01:50:33  <isaacs>go have fun, man!!
01:50:42  * sh1mmerjoined
01:50:43  <isaacs>close the laptop! :)
01:51:01  <mmalecki>isaacs: I'll, weekend just started for me :)
01:51:15  * isaacsquit (Remote host closed the connection)
01:55:30  * sh1mmerquit (Client Quit)
02:00:52  * piscisaureus_quit (Ping timeout: 240 seconds)
02:06:37  * piscisaureus_joined
02:09:05  * orlandovftwjoined
02:09:33  <CIA-115>libuv: Dan VerWeire v0.6 * rb674187 / src/unix/udp.c : unix: set SO_REUSEADDR before binding - http://git.io/i2psSg
02:09:34  <CIA-115>libuv: Dan VerWeire v0.6 * r497b1ec / (include/uv.h src/unix/udp.c): unix: add uv_udp_set_broadcast() and uv_udp_set_multicast_ttl() - http://git.io/ccCkQw
02:09:45  <CIA-115>node: Igor Zinkovsky master * rde78922 / (5 files in 2 dirs): ref isolate loop - http://git.io/Bqrhyw
02:10:52  * piscisaureus_quit (Ping timeout: 252 seconds)
02:11:11  * travis-cijoined
02:11:11  <travis-ci>[travis-ci] joyent/libuv#44 (v0.6 - 497b1ec : Dan VerWeire): The build is still failing.
02:11:11  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/32b291d...497b1ec
02:11:11  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/551877
02:11:11  * travis-cipart
02:13:30  * piscisaureus_joined
02:21:59  <piscisaureus_>Looks like github has a major fuckup
02:22:13  <piscisaureus_>issues got renumbered, comments lost
02:22:15  <piscisaureus_>:-/
02:22:24  <piscisaureus_>yay for the cloud :-(
02:22:37  * orlandovftwquit (Ping timeout: 244 seconds)
02:22:52  * AvianFluquit (Ping timeout: 240 seconds)
02:27:57  <CIA-115>node: Ben Noordhuis v0.6 * r08ab306 / (18 files in 7 dirs): uv: upgrade to 497b1ec - http://git.io/YxNOUQ
02:27:58  <CIA-115>node: Roman Shtylman v0.6 * ra38fd60 / (3 files in 3 dirs):
02:27:58  <CIA-115>node: dgram: reintroduce addMembership() and dropMembership()
02:27:58  <CIA-115>node: Removed during the early stages of node 0.5 refactoring to libuv. - http://git.io/F1NQ7Q
02:27:59  <CIA-115>node: Dan VerWeire v0.6 * rf749338 / (3 files in 3 dirs):
02:27:59  <CIA-115>node: dgram: reintroduce setBroadcast()
02:27:59  <CIA-115>node: Removed during the early stages of node 0.5 refactoring to libuv. - http://git.io/WdSF8A
02:27:59  <CIA-115>node: Dan VerWeire v0.6 * rf2b1f57 / (3 files in 3 dirs):
02:27:59  <CIA-115>node: dgram: reintroduce setMulticastTTL()
02:28:00  <CIA-115>node: Removed during the early stages of node 0.5 refactoring to libuv. - http://git.io/G-RZPQ
02:28:11  * brsonquit (Quit: leaving)
02:29:19  * mmaleckichanged nick to mmalecki[zzz]
02:30:11  * travis-cijoined
02:30:11  <travis-ci>[travis-ci] joyent/node#290 (master - de78922 : Igor Zinkovsky): The build is still failing.
02:30:11  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/f9a47de...de78922
02:30:11  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/551880
02:30:11  * travis-cipart
02:35:42  * travis-cijoined
02:35:42  <travis-ci>[travis-ci] joyent/node#291 (v0.6 - f2b1f57 : Dan VerWeire): The build passed.
02:35:42  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/35fe3eb...f2b1f57
02:35:42  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/551941
02:35:42  * travis-cipart
02:36:06  * piscisaureus_topic: welcome to the void
02:36:36  * AvianFlujoined
02:44:51  * dshaw_quit (Ping timeout: 248 seconds)
02:45:52  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
02:55:20  * pieternquit (Quit: pietern)
03:17:08  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
03:17:42  * TooTallNatejoined
03:18:26  * TooTallNatequit (Client Quit)
03:49:54  * AvianFluquit (Quit: Leaving)
03:59:46  * bnoordhuisquit (Ping timeout: 252 seconds)
04:30:35  * perezdquit (Quit: perezd)
04:59:42  * orlandovftwjoined
04:59:53  * orlandovftwquit (Client Quit)
05:00:10  * orlandovftwjoined
05:10:40  * orlandovftwquit (Quit: leaving)
05:10:55  * orlandovftwjoined
05:17:29  * AvianFlujoined
05:25:20  * orlandovftwquit (Ping timeout: 252 seconds)
05:44:18  * indutny_sleepingchanged nick to indutny
05:49:16  * isaacsjoined
05:50:59  * isaacsquit (Remote host closed the connection)
06:24:08  * isaacsjoined
08:04:59  * isaacsquit (Remote host closed the connection)
08:08:17  * paddybyersjoined
08:18:43  * mralephjoined
08:31:49  * mikealjoined
08:36:38  * mikealquit (Client Quit)
08:39:41  * felixgejoined
08:39:48  * mikealjoined
08:42:20  * mikealquit (Client Quit)
08:48:21  * paddybyersquit (Quit: paddybyers)
08:56:40  * mikealjoined
09:01:27  * mikealquit (Client Quit)
09:18:44  * mikealjoined
09:32:31  * mikealquit (Read error: Connection reset by peer)
09:55:46  * paddybyersjoined
10:16:30  * paddybyersquit (Quit: paddybyers)
10:20:31  * AndreasMadsenjoined
10:23:23  <AndreasMadsen>Hey, is process._channel.close() async or sync
11:01:51  * orlandovftwjoined
11:11:33  * orlandovftwquit (Ping timeout: 248 seconds)
11:29:36  * mmalecki[zzz]changed nick to mmalecki
11:42:20  * mralephquit (Quit: Leaving.)
11:42:37  * mralephjoined
11:43:33  * felixge_joined
11:45:31  * felixgequit (Ping timeout: 240 seconds)
11:45:32  * felixge_changed nick to felixge
12:08:03  * `3rdEdenjoined
12:10:03  <indutny>AndreasMadsen: let me check
12:10:15  <AndreasMadsen>indutny: thanks
12:12:36  <indutny>AndreasMadsen: no
12:12:46  <AndreasMadsen>indutny: no what`
12:12:50  <indutny>ah
12:12:57  <indutny>async
12:13:00  <indutny>not async
12:13:00  <indutny>:D
12:13:03  <indutny>oops
12:13:05  <indutny>sorry
12:13:14  <indutny>_channel.close() is sync
12:13:22  <indutny>or not
12:13:22  <indutny>wait
12:13:32  <indutny>haha
12:13:40  <indutny>sorry, just came back home
12:13:51  <indutny>https://github.com/joyent/node/blob/master/src/handle_wrap.cc#L106
12:13:57  <indutny>it's calling uv_close
12:14:11  <indutny>so it'll be closed eventually
12:14:18  <indutny>that means that _channel.close() is async
12:14:21  <indutny>yeah
12:14:51  <AndreasMadsen>indutny: That was my conclusion too, but is has no closed-callback
12:15:11  <AndreasMadsen>like process._channel.onclose
12:15:17  <indutny>yes
12:15:23  <indutny>AndreasMadsen: should it have it?
12:15:48  <indutny>why do you need it?
12:15:59  <AndreasMadsen>indutny: Would it not make sense.
12:16:03  <AndreasMadsen>indutny: sec
12:16:32  <indutny>that makes sense if it's useful
12:17:03  <AndreasMadsen>indutny: The next cluster patch will add a graceful disconnect method, it require process._channel.close, but without knowing when it is done, well things becomes difficult
12:17:37  <AndreasMadsen>indutny: also please see -> https://github.com/joyent/node/pull/2426
12:18:15  <indutny>one sec
12:20:02  <indutny>ok, got it
12:20:10  <indutny>so you're emitting 'disconnect' event
12:20:18  <indutny>and you want to emit after handle is definitely closed
12:20:24  <indutny>is your test broken now?
12:20:33  <indutny>because of that?
12:22:08  <AndreasMadsen>indutny: Oh, I can't remember it is a long time ago I made that patch, but in cluster I need to do process.nextTick - and sometimes I get a random error and I think it is because process.nextTick is called before the channel is closed.
12:22:28  <indutny>AndreasMadsen: ok, I'll write patch and you'll try it
12:22:38  <indutny>AndreasMadsen: then I'll ask bnoordhuis to review it
12:23:13  <AndreasMadsen>indutny: awesome
12:41:38  * bnoordhuisjoined
12:41:52  <indutny>bnoordhuis: heya!
12:42:04  <bnoordhuis>indutny: hoya
12:42:07  <indutny>bnoordhuis: what do you think about adding js-callback to handle_wrap::close
12:42:20  <indutny> /cc AndreasMadsen ^
12:42:28  <bnoordhuis>indutny: well... why?
12:42:40  <AndreasMadsen>hi
12:43:16  <indutny>bnoordhuis: for graceful shutdown
12:43:17  <AndreasMadsen>bnoordhuis: we need to be able to gracefull disconnect workers in cluster
12:43:39  <indutny>bnoordhuis: I think sometimes there're queued 'data' events for _channel
12:43:51  <indutny>bnoordhuis: and uv_close will fire callback after one's execution, or am I wrong?
12:44:05  <AndreasMadsen>And it is also a requested feature in child_process.fork
12:44:25  <bnoordhuis>indutny: "after one's execution"?
12:44:28  <AndreasMadsen>Oh we are talking in parallel, hehe
12:44:58  <indutny>bnoordhuis: I CAN'T HAZ SAY MORE
12:45:30  <indutny>bnoordhuis: uv_close will fire callback when all events for that handle are finished
12:45:34  <indutny>bnoordhuis: is that right?
12:45:35  <bnoordhuis>indutny: yes
12:45:38  <indutny>bnoordhuis: cool
12:45:48  <indutny>bnoordhuis: that shouldn't slowdown things
12:45:54  <indutny>bnoordhuis: as callback will be optional
12:46:20  <bnoordhuis>indutny: but where/when do you need it exactly?
12:46:33  <indutny>bnoordhuis: https://github.com/joyent/node/pull/2426/files#L1R143
12:46:59  <indutny>bnoordhuis: 'disconnect' event is emitted to early
12:47:10  <bnoordhuis>indutny: the channel is closed immediately
12:47:24  <indutny>bnoordhuis: that's what I was asking before :)
12:47:43  <indutny>bnoordhuis: even it's not a channel between isolates?
12:48:01  <bnoordhuis>indutny: yes - if it's fd based the fd is closed immediately
12:48:06  <indutny>bnoordhuis: oh
12:48:13  <indutny>bnoordhuis: that changes things, thank you
12:48:39  <bnoordhuis>indutny: however, if there are pending writes, you may get write callbacks on the next tick
12:48:46  <indutny>AndreasMadsen: look, I was wrong. I think that something in your code is borked
12:49:17  <indutny>bnoordhuis: so it's no fully-sync :)
12:49:24  <indutny>s/no/not
12:49:34  <indutny>fck, what's with my english today
12:50:23  <bnoordhuis>indutny: that's correct - but the callbacks only run to inform the callee that the write has failed
12:50:41  <indutny>bnoordhuis: k
12:51:37  <AndreasMadsen>indutny: Okay, I think I will try make a specific testcase on process._channel.close later today to confirm that.
12:51:55  <indutny>AndreasMadsen: cool
12:57:31  * AndreasMadsenquit (Remote host closed the connection)
12:58:11  * creationixjoined
13:02:59  <mmalecki>argh, backwards compatibility :/
13:03:13  <mmalecki>who the hell taught people to do that?!
13:04:32  <bnoordhuis>mmalecki: users, customers
13:05:16  <mmalecki>bnoordhuis: but... job security!
13:05:49  <bnoordhuis>mmalecki: breaking other people's code isn't job security :)
13:06:10  <mmalecki>bnoordhuis: fixing it is
13:07:55  <indutny>mmalecki: don't say that to me, have you worked at very big companies?
13:08:03  <indutny>they've a lot of legacy code
13:08:22  <indutny>and implementing something new that will not break existing stuff is not so easy
13:08:42  <mmalecki>indutny: no, it's like, well, my first job :)
13:09:02  <indutny>ah, you're at school :)
13:09:02  <mmalecki>indutny: and big companies shouldn't rely on legacy code
13:09:08  <indutny>mmalecki: they're
13:09:09  <bnoordhuis>programmers, they're so cute when they're young!
13:09:30  <mmalecki>indutny: that's their problem
13:09:46  <indutny>bnoordhuis: like pink pony
13:09:49  <indutny>:D
13:09:58  <indutny>mmalecki: no offense, you're really cute
13:10:11  <indutny>mmalecki: yep, that's a problem
13:10:15  <mmalecki>lol, no offense taken
13:10:59  <indutny>mmalecki: but costs of porting everything to new code w/o breaking it are much higher than costs of making small fixes in a shit code
13:11:22  <indutny>mmalecki: even more, let's assume you make some shit code better
13:11:33  <indutny>mmalecki: you'll need to make all it's dependencies better
13:11:40  <indutny>mmalecki: and their dependencies too
13:11:40  <mmalecki>it makes me a sad panda
13:11:57  <indutny>mmalecki: and if company exists for 7-8 years - there're a lot of places to look in
13:11:59  <mmalecki>fixing shitty code is the Right Thing (tm)
13:12:12  <indutny>mmalecki: that's why I love nodejitsu
13:12:12  <mmalecki>indutny: decoupling stuff is the way to go
13:12:26  <indutny>mmalecki: you can just rewrite everything from scratch
13:12:29  <bnoordhuis>and not five minutes ago he was talking about job security...
13:12:38  <mmalecki>indutny: in fact, we do
13:12:50  <indutny>bnoordhuis: who?
13:13:07  <bnoordhuis>indutny: mmalecki
13:13:08  <indutny>ah
13:13:10  <indutny>I see now
13:13:43  <mmalecki>lol
13:14:19  <felixge>bnoordhuis: do you know if we need to hack libev for this? https://github.com/joyent/node/issues/1167#issuecomment-3595353
13:14:45  <felixge>(not saying we should, just wondering if that whole approach is doomed without patching libev)
13:15:24  <bnoordhuis>felixge: that's a non-hackable issue, it has to do with signal delivery
13:15:49  <indutny>bnoordhuis: only main thread will receive signals, right?
13:15:53  <felixge>bnoordhuis: so the berts idea of running the sync child process in its own uv loop cannot work?
13:16:10  <bnoordhuis>"the bert", gotta remember that one :)
13:16:25  <felixge>lol
13:16:30  <felixge>s/the//
13:16:31  <felixge>:)
13:17:13  <bnoordhuis>well, never say never but you cannot know from inside a signal handler which event loop should receive it
13:17:38  <mmalecki>bnoordhuis: fixed all the things
13:17:42  <bnoordhuis>mmalecki: good
13:17:59  <bnoordhuis>indutny: not necessarily, you can install per-thread signal handlers
13:18:05  <bnoordhuis>indutny: but that still doesn't help here
13:18:34  <felixge>bnoordhuis: I see now
13:19:49  <felixge>I'll wait for bert to comment, I think he saw this problem as well when he suggested the approach to me at jsconf and had an idea how to make it work
13:20:24  <felixge>but it would be awfully nice to not duplicate the entire exec machinery for execSync like my initial patch did … in fact it may not be worth to have this feature at that price
13:20:49  <bnoordhuis>mmalecki: _deprecationWarning('path', '`path.exists` is now called `fs.exists`'); <-use 'path.exists' as the identifier (same for path.existsSync)
13:21:45  <mmalecki>bnoordhuis: k.
13:22:19  <mmalecki>bnoordhuis: wait, path.existsSync should also use path.exists?
13:22:31  <bnoordhuis>mmalecki: no, 'path.existsSync'
13:23:06  <mmalecki>bnoordhuis: not sure if that matches other _deprecationWarning usages, but ok
13:23:33  <indutny>==68187== HEAP SUMMARY:
13:23:33  <indutny>==68187== in use at exit: 88 bytes in 1 blocks
13:23:33  <indutny>==68187== total heap usage: 473,419 allocs, 473,418 frees, 1,201,883,101 bytes allocated
13:23:36  <indutny>hell yeah!!!
13:23:51  <bnoordhuis>mmalecki: it's an unique label for that particular warning
13:24:09  <bnoordhuis>indutny: still missing one free :)
13:25:54  <indutny>bnoordhuis: that's not it
13:26:01  <mmalecki>bnoordhuis: these unique ids make no sense without showing a stack trace after in every _deprecationWarning while in debug mode
13:26:06  <indutny>bnoordhuis: ==68187== suppressed: 88 bytes in 1 blocks
13:26:25  <mmalecki>bnoordhuis: done.
13:27:50  <bnoordhuis>mmalecki: wait... i think i'm wrong :$
13:29:10  <mmalecki>bnoordhuis: :)
13:29:36  <bnoordhuis>mmalecki: did you push the change?
13:29:41  <mmalecki>bnoordhuis: yes.
13:30:02  <bnoordhuis>mmalecki: oh well, i still have the old commits - i'll fix it
13:30:03  <mmalecki>bnoordhuis: want that _deprecationWarning('path') back?
13:30:11  <mmalecki>bnoordhuis: I can force-push it as well
13:30:16  <mmalecki>ORIG_HEAD n' shit
13:30:18  <bnoordhuis>mmalecki: yes please
13:30:26  <bnoordhuis>oh, can you squash the commits?
13:30:37  <mmalecki>bnoordhuis: sure
13:31:00  <mmalecki><3 git
13:33:02  <bnoordhuis>mmalecki: did you push it?
13:33:32  <indutny>oh, PRs are so slow
13:33:40  <mmalecki>bnoordhuis: no, sec, magic
13:34:06  <CIA-115>node: Ben Noordhuis master * r0bb79c7 / lib/http.js :
13:34:06  <CIA-115>node: http: fix deprecation warning module ID
13:34:06  <CIA-115>node: Mea culpa, I told @mmmalecki wrong. - http://git.io/Ny27oA
13:34:20  <mmalecki>bnoordhuis: wrong again!
13:34:25  <mmalecki>bnoordhuis: @mmalecki :)
13:34:45  <bnoordhuis>aah
13:34:48  <indutny>@bbbbbbbbbbbnorhuis!
13:34:54  <indutny>brb
13:34:59  * indutnychanged nick to indutny_away
13:35:06  <CIA-115>node: Ben Noordhuis master * r56e34c2 / lib/http.js :
13:35:06  <CIA-115>node: http: fix deprecation warning module ID
13:35:06  <CIA-115>node: Mea culpa, I told @mmalecki wrong - http://git.io/kl_obQ
13:35:21  <mmalecki>bnoordhuis: pushed old version, squashing now
13:37:51  <mmalecki>bnoordhuis: done
13:39:58  <bnoordhuis>someone borked node master...
13:40:34  <mmalecki>and by 'borked', you mean?
13:40:55  <CIA-115>node: Maciej Małecki master * re10ed09 / (7 files in 3 dirs):
13:40:55  <CIA-115>node: path fs: move `path.exists*` to `fs.exists*`
13:40:55  <CIA-115>node: `path.exists*` functions show a deprecation warning and call functions
13:40:55  <CIA-115>node: from `fs`. They should be removed later.
13:40:55  <CIA-115>node: test: fix references to `path.exists*` in tests
13:40:55  <CIA-115>node: test fs: add test for `fs.exists` and `fs.existsSync`
13:40:56  <CIA-115>node: doc: reflect moving `path.exists*` to `fs` - http://git.io/p4OGZA
13:41:04  <bnoordhuis>mmalecki: try it, the event loop never quits on unix
13:41:10  <mmalecki>bnoordhuis: thanks
13:41:22  <bnoordhuis>it's igor's fix from de78922
13:41:26  <mmalecki>bnoordhuis: oh, lol
13:41:33  * bnoordhuisstarts gdb again
13:54:14  * travis-cijoined
13:54:14  <travis-ci>[travis-ci] joyent/node#292 (master - 0bb79c7 : Ben Noordhuis): The build is still failing.
13:54:14  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/de78922...0bb79c7
13:54:14  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/553111
13:54:14  * travis-cipart
13:55:15  * travis-cijoined
13:55:15  <travis-ci>[travis-ci] joyent/node#293 (master - 56e34c2 : Ben Noordhuis): The build is still failing.
13:55:15  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/0bb79c7...56e34c2
13:55:15  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/553114
13:55:15  * travis-cipart
13:58:36  * AndreasMadsenjoined
14:01:11  * travis-cijoined
14:01:11  <travis-ci>[travis-ci] joyent/node#294 (master - e10ed09 : Maciej Małecki): The build is still failing.
14:01:11  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/56e34c2...e10ed09
14:01:11  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/553128
14:01:11  * travis-cipart
14:13:44  * indutny_awaychanged nick to indutny
14:16:50  * felixgequit (Quit: http://www.debuggable.com/)
14:45:45  <indutny>bnoordhuis: are you using c89 for libuv?
14:45:49  <indutny>bnoordhuis: why not c99?
14:46:16  <bnoordhuis>indutny: because c89 is how c was meant to be
14:46:23  <bnoordhuis>c99 is a heresy decent people do not speak of
14:46:45  <bnoordhuis>also, because compilers had / have varying support for c99
14:46:52  <indutny>bnoordhuis: hm...
14:46:59  <indutny>bnoordhuis: what about uint64_t?
14:47:05  <indutny>bnoordhuis: and inline?
14:47:26  <bnoordhuis>inline is something you can #define away if you have to
14:47:34  <bnoordhuis>and stdint.h is just a nice thing to have
14:47:41  <indutny>bnoordhuis: I use it
14:47:51  <indutny>bnoordhuis: but uint64_t doesn't work with c89
14:48:17  <bnoordhuis>yeah - we're *mostly* c89 compliant
14:48:21  <indutny>bnoordhuis: :)
14:48:25  <indutny>bnoordhuis: ok, so am I
14:48:30  <indutny>but I'll use c99 anyway
14:48:46  <indutny>:)
14:48:52  <indutny>I kinda like inlines
14:52:39  <indutny>btw, what is a prefered way to do benchmarks in C?
14:52:46  <indutny>gettimeoftheday?
14:52:47  <indutny>bnoordhuis: ^
14:52:56  <indutny>errgh, gettimeofday
14:53:10  <bnoordhuis>indutny: c or unix or linux?
14:53:42  <indutny>bnoordhuis: unix
14:53:49  <indutny>C on unix
14:54:03  <bnoordhuis>indutny: gettimeofday
14:54:16  <bnoordhuis>on linux, you can use clock_gettime(CLOCK_MONOTONIC)
14:54:55  <indutny>yep, but I'm on osx
14:55:01  <indutny>and going to test on it mostly
14:55:02  <bnoordhuis>indutny: or just use `time ./benchmark`
14:55:33  <indutny>bnoordhuis: I want to benchmark different things in one file
14:55:48  <indutny>or benchmark only one thing from multiple
14:55:55  <indutny>like insert 100000 items and benchmark deletion
14:56:34  <mmalecki>indutny: make sure to state that Java does that 100 times faster
14:56:52  <indutny>mmalecki: hahaha
14:57:10  <indutny>Java won't use 50kb of RSS when doing 10000000 insertions
14:58:01  <mmalecki>indutny: BUT IT'S ENTERPRISE-READY.
14:58:15  <mmalecki>AND IT SCALES.
14:58:16  <indutny>mmalecki: got ya
14:58:32  <mmalecki>but let's be kind. bnoordhuis did some Java.
14:58:40  <bnoordhuis>not just some
14:59:22  <bnoordhuis>probably close to 1 MLoC
14:59:36  <mmalecki>:(
14:59:38  <indutny>bnoordhuis: I did it too
14:59:44  <bnoordhuis>that's not saying much with java, of course
14:59:44  <indutny>worst experience
15:00:04  <bnoordhuis>oh, i don't know
15:00:05  <indutny>and a lot of Delphi in my school years :D
15:00:11  <bnoordhuis>java the language isn't so bad
15:00:20  <bnoordhuis>it's all the enterprise-y shit they tacked on
15:00:23  * paddybyersjoined
15:00:24  <indutny>bnoordhuis: yeah
15:00:45  <indutny>bnoordhuis: but me kinda hates a mess of abstraction that it's using
15:01:00  <bnoordhuis>yeah, that's the enterprise-y shit i mean
15:01:46  <bnoordhuis>it's still one of my goals in life to beat up gavin king, the guy that wrote hibernate
15:02:00  <mmalecki>lol
15:02:08  <mmalecki>epic nerdfight.
15:02:46  <indutny>:)
15:03:07  <bnoordhuis>time for a walk, tty guys later
15:03:19  <indutny>bnoordhuis: later
15:07:59  <mmalecki>indutny: can I start a debugger on specific port from node?
15:14:20  <indutny>mmalecki: yes
15:14:24  <indutny>mmalecki: from node?
15:14:27  <indutny>mmalecki: nope
15:14:36  <indutny>mmalecki: port is deep in C++
15:14:53  <mmalecki>indutny: k, thanks
15:14:54  <indutny>mmalecki: can you start debugger from node?
15:15:11  <indutny>mmalecki: you can only send SIGUSR1 to process itself
15:15:20  <indutny>but that's not really starting it from node
15:15:24  <mmalecki>indutny: that kinda sucks
15:15:33  <mmalecki>indutny: see #nodejitsu for context
15:15:35  <indutny>mmalecki: not really
15:15:43  <indutny>mmalecki: you can debug isolates in 0.7.0
15:15:49  <indutny>mmalecki: and no server will be spawned at all
15:16:21  <indutny>mmalecki: ok, context is clear
15:16:33  <AndreasMadsen>mmalecki: will `process.kill(process.pid, 'SIGUSR1')` not work?
15:16:35  <indutny>mmalecki: so you can catch all isolate debugger messages and run your own server
15:16:48  <indutny>AndreasMadsen: it will, but it'll run debugger on 5858 port
15:17:07  <indutny>AndreasMadsen: which is not cool if you're going to debug multiple applications simultaneosly
15:17:14  <mmalecki>indutny: I see, thanks
15:17:36  <AndreasMadsen>indutny: oh, I see that is a big problem :/
15:17:46  <indutny>mmalecki: API is loosy now
15:18:01  <indutny>mmalecki: so if you'll find any issues with that - I'm ok with fixing them
15:18:30  <mmalecki>indutny: cool, thanks!
15:28:37  * paddybyersquit (Quit: paddybyers)
16:28:48  * bnoordhuisquit (Ping timeout: 252 seconds)
16:35:56  * isaacsjoined
17:55:23  * sh1mmerjoined
18:01:33  <indutny>hm... I think C is cheating
18:04:49  * sh1mmerquit (Quit: sh1mmer)
18:05:48  <indutny>I'm calling one c function two times
18:05:51  <indutny>a(b)
18:05:53  <indutny>a(c)
18:07:48  <indutny>and it seems to be receiving b in both cases
18:07:50  <indutny>any C experts here?
18:08:17  <mmalecki>wut? show me the codez
18:08:26  <indutny>one second
18:08:48  <indutny>mmalecki: one second
18:08:56  <indutny>I think problem is with const usage
18:09:07  <indutny>I'll try looking asm code
18:13:02  * `3rdEdenquit (Read error: Connection reset by peer)
18:14:57  * `3rdEdenjoined
18:21:58  * orlandovftwjoined
18:22:20  <indutny>fixed! :)
18:22:23  <indutny>thanks to mmalecki
18:23:28  <mmalecki>but... I didn't do anything
18:25:49  * isaacsquit (Remote host closed the connection)
18:26:42  * AndreasMadsenquit (Remote host closed the connection)
18:34:32  <AvianFlu>indutny, what was the problem?
18:41:51  <indutny>AvianFlu: I compiled binary
18:41:59  <indutny>AvianFlu: and then recompiled only part of it
18:42:03  <AvianFlu>oh lol
18:42:09  <AvianFlu>that makes sense
18:42:09  <indutny>AvianFlu: so when I was running debugger - I was seeing only part of code
18:42:17  <indutny>AvianFlu: actually I seen newer code
18:42:19  <indutny>:D
18:49:35  * orlandovftwquit (Ping timeout: 245 seconds)
19:03:09  * mikealjoined
19:07:46  * indutnychanged nick to indutny_sleeping
19:08:40  * AndreasMadsenjoined
19:12:11  * isaacsjoined
19:17:18  * sh1mmerjoined
19:17:40  * paddybyersjoined
19:29:03  * isaacsquit (Remote host closed the connection)
19:33:30  * paddybyersquit (Quit: paddybyers)
19:42:32  * AndreasMadsenquit (Remote host closed the connection)
20:03:03  * mikealquit (Quit: Leaving.)
20:03:35  * mikealjoined
20:22:32  * mikealquit (Quit: Leaving.)
20:28:39  * bmeck_vacationjoined
20:29:41  <bmeck_vacation>can anyone explain why https://github.com/joyent/node/blob/master/src/node.cc#L1734 would cause https://gist.github.com/1653777 ? i see no reference to __lookupGetter__, im rethrowing an error from inside a setTimeout (new Error('herp'))
20:46:41  * brsonjoined
20:47:54  * isaacsjoined
21:04:32  * TooTallNatejoined
21:04:38  * piscisaureus_joined
21:21:24  * orlandovftwjoined
21:30:04  * paddybyersjoined
21:44:24  * mikealjoined
21:46:31  * AvianFluquit (Ping timeout: 240 seconds)
21:47:46  * AvianFlujoined
21:54:20  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
21:55:34  * bnoordhuisjoined
22:04:30  * piscisaureus_quit (Read error: Connection reset by peer)
22:05:20  * piscisaureus_joined
22:08:33  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/pull/294 <- one for you
22:15:20  * `3rdEdenquit (Quit: Zzzz)
22:15:24  * sh1mmerquit (Quit: sh1mmer)
22:16:10  * sh1mmerjoined
22:25:23  * igorzi_joined
22:26:36  <igorzi_>bnoordhuis: de78922 screwed something up?
22:26:59  <bnoordhuis>igorzi_: on unix - the loop now hangs
22:27:08  <bnoordhuis>but don't worry about it, i'll figure it out
22:27:20  <igorzi_>bnoordhuis: you mean even without isolates?
22:27:39  <bnoordhuis>yes
22:28:07  <igorzi_>bnoordhuis: crap.. it didn't occur to me that codepath will also be taken when not creating isolates
22:28:45  <bnoordhuis>don't feel too bad, it's extra incentive to fix the refcounting bugs
22:29:07  <piscisaureus_>bnoordhuis: 294 lgtm, will land monday
22:29:43  <igorzi_>btw, i'll be at nodesummit next week, so i don't know how much work i'll be able to get done
22:30:13  <piscisaureus_>too bad i am not at nodesummit :-(
22:30:45  <igorzi_>piscisaureus_: would have been cool for you to come, but it's a little further for you :)
22:31:04  <piscisaureus_>hehe
22:31:07  <piscisaureus_>yeah
22:31:19  <piscisaureus_>we should meet up some day igorzi_
22:31:34  <igorzi_>piscisaureus_: yep
22:36:44  <piscisaureus_>and bnoordhuis you should spend some time with your family :-)
22:36:48  <igorzi_>bnoordhuis: https://gist.github.com/1654301 ?
22:37:06  <bnoordhuis>piscisaureus_: i did today, they're all asleep now :)
22:37:46  <mmalecki>not going to get up anymore. but bnoordhuis had enormous fun.
22:37:57  * mikealquit (Quit: Leaving.)
22:38:59  <bnoordhuis>igorzi_: yes, seems to work
22:39:11  <bnoordhuis>mmalecki: i think i'm hearing a whooshing sound...
22:39:20  <mmalecki>*badum tss*
22:39:27  <mmalecki>bnoordhuis: that sound ^ ?
22:39:51  <bnoordhuis>more like
22:39:55  <bnoordhuis> * <- joke
22:39:58  <bnoordhuis> o <- me
22:44:42  <piscisaureus_>bnoordhuis: btw are you guys going to fix the problem that child processes can't be spawned by isolates?
22:45:46  <bnoordhuis>piscisaureus_: i don't know how (yet)
22:46:07  <CIA-115>node: Igor Zinkovsky master * r6d00c08 / src/node_isolate.cc : only ref non-default isolate loops - http://git.io/xIQ8jQ
22:46:53  * mikealjoined
22:48:24  * igorzi_quit (Quit: Page closed)
22:48:57  <piscisaureus_>bnoordhuis: keep a list of loops, deliver all signals to all loops?
22:49:05  <piscisaureus_>bnoordhuis: If p
22:49:08  <piscisaureus_>er
22:49:35  <piscisaureus_>if pthread locks are not signal safe then we can use a simple spin lock
22:51:43  <bnoordhuis>well, maybe - we'd have to hack up libev pretty bad though
22:52:36  <piscisaureus_>bnoordhuis: or - just don't use ev_child and ev_signal and roll it your own
22:54:23  <bnoordhuis>piscisaureus_: the problem is that signal handlers are stateless
22:54:43  <piscisaureus_>bnoordhuis: so?
22:55:00  <bnoordhuis>piscisaureus_: so you don't know what event loop to ping
22:55:29  <piscisaureus_>bnoordhuis: oh - you would just wake up all event loops I think
22:55:42  <bnoordhuis>if you deliver it to all event loops, you still have to figure what loop should actually respond
22:55:57  <piscisaureus_>bnoordhuis: the loop itself can figure that out
22:56:21  <piscisaureus_>bnoordhuis: in libev a signal that arrives also does not so much besides waking up the event loop
22:56:41  <bnoordhuis>well... yes. having all loops check all their processes is not the peak of efficiency though
22:56:43  <piscisaureus_>libev then just scans all the watchers and determines if they match
22:56:47  <bnoordhuis>but i suppose it's workable
22:57:03  <piscisaureus_>bnoordhuis: I am sure there are more efficient solutions for it
22:57:30  <bnoordhuis>maybe
22:57:34  <piscisaureus_>bnoordhuis: but you should be aware that libev is also not very efficient
22:57:44  <bnoordhuis>the standard advice unix newbies get when they ask about threads + processes is "don't"
22:57:51  <bnoordhuis>yeah, i know
22:58:37  <piscisaureus_>bnoordhuis: that is a bad thing btw
22:58:51  <piscisaureus_>bnoordhuis: it shows how badly unix actually sucks
22:59:27  <bnoordhuis>well, some parts anyway
22:59:46  <piscisaureus_>let's write a new os ben
22:59:59  * mikealquit (Quit: Leaving.)
23:00:02  * travis-cijoined
23:00:02  <travis-ci>[travis-ci] joyent/node#295 (master - 6d00c08 : Igor Zinkovsky): The build is still failing.
23:00:02  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/e10ed09...6d00c08
23:00:02  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/555141
23:00:02  * travis-cipart
23:00:02  <piscisaureus_>where *really* everything is a file descriptor
23:00:12  * mikealjoined
23:00:30  <bnoordhuis>piscisaureus_: linux is heading in that direction
23:00:45  <piscisaureus_>bnoordhuis: process ids should also be a file descriptor
23:00:54  <piscisaureus_>bnoordhuis: so you can just put an FD in epoll
23:00:58  <piscisaureus_>er, a pid
23:01:09  <piscisaureus_>(problem is obviously that PIDs are global)
23:01:29  <bnoordhuis>not even that is true anymore on linux :)
23:01:38  <bnoordhuis>you can namespace pids
23:02:05  <piscisaureus_>bnoordhuis: anyway you should be able to put PIDs in epoll
23:03:04  <piscisaureus_>semaphores and mutexes should also be FDs
23:03:11  <bnoordhuis>hmm, time for a new syscall - processfd()
23:03:19  <bnoordhuis>oh, that already exists - eventfd()
23:03:30  <piscisaureus_>bnoordhuis: finish epoll_ctlv first
23:03:36  <bnoordhuis>hah yeah
23:03:52  <bnoordhuis>it works actually, just never submitted it
23:05:12  <piscisaureus_>bnoordhuis: google for epoll_ctlv btw
23:05:15  * orlandovftwquit (Ping timeout: 252 seconds)
23:06:08  <bnoordhuis>piscisaureus_: userver?
23:06:16  <piscisaureus_>yeah, what's that?
23:06:56  <bnoordhuis>something very old
23:07:31  <mmalecki>http://userver.uwaterloo.ca/
23:08:28  <bnoordhuis>hah, my epoll-bench repo is on the first page if you search for epoll_ctlv
23:09:00  <piscisaureus_>bnoordhuis: yeah but your patch is nowhere to be found
23:11:11  <bnoordhuis>so hp already wrote a similar patch in 2004
23:11:13  <bnoordhuis>great minds!
23:12:23  <piscisaureus_>bnoordhuis: so it was rejected?
23:12:59  <bnoordhuis>piscisaureus_: no, apparently they never submitted it
23:13:09  <bnoordhuis>but they did write a paper on it: http://kernel.org/doc/ols/2004/ols2004v1-pages-215-226.pdf
23:13:39  <bnoordhuis>it didn't seem to improve performance on their benchmarks compared to other solutions
23:14:45  <bnoordhuis>maybe we should just bite the bullet and switch to edge-triggered i/o
23:15:19  <piscisaureus_>bnoordhuis: are they saying that epollet performs equally well?
23:16:53  <bnoordhuis>piscisaureus_: not sure, the benchmark results are not presented all that clearly
23:18:21  <piscisaureus_>bnoordhuis: I want to work on epollet... sounds fun
23:18:35  <bnoordhuis>go ahead, i'm not stopping you :)
23:18:41  <piscisaureus_>at least I can up my linux skill a little
23:20:12  <bnoordhuis>on a side note, i would like to use recvmmsg and sendmmsg
23:20:25  <bnoordhuis>lets you receive from and send to multiple fds in a single syscall
23:20:42  <bnoordhuis>but that doesn't fit too well with the libev/libuv model of course
23:21:44  <piscisaureus_>bnoordhuis: how does that not fit with libuv?
23:22:28  <bnoordhuis>piscisaureus_: maybe for sendmmsg
23:22:47  <bnoordhuis>but not recvmmsg since every fd has its own callback
23:22:52  <piscisaureus_>bnoordhuis: so?
23:23:19  <piscisaureus_>bnoordhuis: why not call recvmmsg w/ multiple fds and then dispatch multiple callbacks?
23:23:34  <piscisaureus_>bnoordhuis: I don't see how this is a misfit?
23:23:41  <piscisaureus_>s/?/!/
23:23:45  <bnoordhuis>piscisaureus_: you know how libev works, right?
23:23:51  <piscisaureus_>bnoordhuis: yes
23:23:58  <bnoordhuis>it polls, then invokes a callback for each live fd
23:24:09  <piscisaureus_>bnoordhuis: llibev is holding us back
23:24:22  <bnoordhuis>sometimes yes
23:27:12  * mikealquit (Quit: Leaving.)
23:27:33  <piscisaureus_>bnoordhuis: it could be interesting to do a linux-only backend for libuv that does not use libev
23:27:42  <piscisaureus_>but uses all the facny features that we can think of
23:27:46  <piscisaureus_>and see how it performs
23:28:02  <bnoordhuis>hmm, that might be an interesting side project
23:29:06  <piscisaureus_>bnoordhuis: although I think it could be beneficial refactor a l
23:29:23  <piscisaureus_>libuv a little bit and share more core
23:29:26  <piscisaureus_>*code
23:29:45  <piscisaureus_>(and I still can't get used to the positioning of the enter key on a mac keyboard)
23:30:01  <bnoordhuis>fucking mac keyboards, i hate 'em
23:30:40  * mikealjoined
23:31:23  <piscisaureus_>anyway I am outta here
23:31:57  <bnoordhuis>say hi to the misses from me
23:32:43  <piscisaureus_>bnoordhuis: say BOOOO to the kid
23:32:54  <piscisaureus_>(wait until she wakes up)
23:32:55  <bnoordhuis>she'll just laugh but i will
23:33:17  <piscisaureus_>kk. ttyl
23:33:21  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
23:36:59  * igorziquit (Ping timeout: 258 seconds)
23:41:18  * mikealquit (Quit: Leaving.)
23:46:31  <mmalecki>uhm, yeah, you guys ever thought about separating https://github.com/joyent/libuv/blob/master/test/test-fs.c into few files?
23:46:36  <mmalecki>like in node?
23:51:24  * mikealjoined
23:56:42  * mralephquit (Quit: Leaving.)