00:02:17  <ryah>https://gist.github.com/1212821
00:19:00  <CIA-52>node: isaacs master * r8b6277a / (4 files in 4 dirs): Update uv to 3c00d87b4239a6b8358e2085f806170c3eca10cf - http://git.io/OG7P8w
00:19:01  <CIA-52>node: isaacs master * r190abca / test/simple/test-mkdir-rmdir.js :
00:19:01  <CIA-52>node: mkdir EEXIST test
00:19:01  <CIA-52>node: Fixed on uv 3c00d87b4239a6b8358e2085f806170c3eca10cf - http://git.io/0Ym8SA
00:19:23  * brsonquit (Ping timeout: 260 seconds)
00:34:28  * brsonjoined
00:35:24  * piscisaureus_quit (Read error: Connection reset by peer)
00:38:53  * piscisaureusjoined
00:39:16  * piscisaureusquit (Client Quit)
00:48:29  * piscisaureusjoined
01:07:01  * brsonquit (Ping timeout: 240 seconds)
01:13:04  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
01:14:41  <bnoordhuis>ryah: word of advice please
01:15:04  <bnoordhuis>https://github.com/joyent/libuv/blob/master/src/unix/stream.c#L676-693 <- on error, the write request is left in the write queue
01:15:14  <bnoordhuis>https://github.com/joyent/node/blob/master/src/stream_wrap.cc#L242-250 <- but here it is deleted
01:15:41  <ryah>bnoordhuis: hit 'y' in github to expand the URLs before you post
01:15:48  <ryah>then they'll be presevred in the logs
01:16:25  <bnoordhuis>oh, for posterity's sake: https://github.com/joyent/libuv/blob/3c00d87b4239a6b8358e2085f806170c3eca10cf/src/unix/stream.c#L676-693 and https://github.com/joyent/node/blob/190abcac9debb2f4c729af32f88703d26026a049/src/stream_wrap.cc#L242-250
01:16:58  <bnoordhuis>anyway, suggestions on what do do here?
01:17:24  <bnoordhuis>don't push the request on the queue or defer the error event?
01:17:36  <bnoordhuis>i *think* it should be the latter
01:17:43  <ryah>bnoordhuis: defer the error
01:18:05  <ryah>delete req_wrap just deletes the wrapper
01:18:11  <ryah>the req still lives
01:18:19  <bnoordhuis>yes, that's the cause of that pesky double free bug btw
01:19:16  <CIA-52>node: Ryan Dahl master * r0aad61e / (4 files in 3 dirs):
01:19:16  <CIA-52>node: Use net_uv instead of net_legacy for stdio
01:19:16  <CIA-52>node: Also temporary hack to prevent process.stdout from keeping event loop alive
01:19:16  <CIA-52>node: by calling uv_unref on process.stdout initialization. - http://git.io/vavheA
01:19:17  <CIA-52>node: Ryan Dahl master * r0928f0f / (src/node.js test/simple/test-module-load-list.js):
01:19:17  <CIA-52>node: Fix test-module-load-list
01:19:18  <CIA-52>node: and lazy load modules for process.stdout
01:19:18  <CIA-52>node: This probably breaks test-module-load-list on windows, but it hopefully is
01:19:19  <CIA-52>node: an easy fix to replace "_posix" bindings with "_win32". - http://git.io/AZ6EVA
01:20:49  <ryah>im going to remove this
01:20:49  <ryah>https://github.com/joyent/node/blob/0928f0f290c50b72c4f51988b2bd65fd373f24d7/lib/util.js#L368-375
01:20:59  <ryah>unless someone is against it
01:21:13  <ryah>it's causing us to load 'readline' always
01:21:26  <ryah>which is stupid
01:21:40  <ryah>i dont think anyone needs this functionality - or?
01:23:14  <bnoordhuis>i bet you it's going to break at least one test case
01:25:51  <ryah>nope - it was okay
01:25:55  <CIA-52>node: Ryan Dahl master * r8c87250 / (lib/util.js test/simple/test-module-load-list.js):
01:25:55  <CIA-52>node: Do not load readline from util.inspect
01:25:55  <CIA-52>node: This causes all modules using console.log() to load readline which seems
01:25:55  <CIA-52>node: unnecessary. - http://git.io/WOTuvA
01:26:13  * graydonquit (Quit: Leaving.)
01:26:32  <ryah>so - we're finally free of io_watcher
01:26:36  <ryah>for basic usage
01:30:03  * rmustaccpart
01:38:50  <bnoordhuis>okay, i think i've got a handle on that double-free bug
01:38:58  <bnoordhuis>nasty bugger, that one
01:39:23  <bnoordhuis>i'll put up a patch for review tomorrow but for now i'm off to bed
01:39:28  <bnoordhuis>sleep tight people
01:39:37  <ryah>night
01:39:57  * bnoordhuisquit (Quit: Leaving)
02:11:54  * isaacsquit (Quit: isaacs)
02:42:33  <CIA-52>node: Ryan Dahl master * rcb6b9eb / (node.gyp src/node_stdio_win32.cc): Fix windows build - http://git.io/RnG4ew
03:08:56  * ericktjoined
04:25:27  * isaacsjoined
04:25:48  * isaacsquit (Client Quit)
04:43:47  * isaacsjoined
06:59:40  * mralephjoined
07:40:18  <dmkbot>joyent/libuv: piscisaureus: Specify error handling for uv_write and uv_connect - https://github.com/joyent/libuv/issues/185
07:40:52  * mralephquit (Quit: Leaving.)
07:45:18  <dmkbot>joyent/node: isaacs: https custom CA cert not honored - https://github.com/joyent/node/issues/1690
07:59:22  * isaacsquit (Quit: isaacs)
08:00:18  <dmkbot>joyent/node: isaacs: https custom CA cert not honored - https://github.com/joyent/node/issues/1690
09:39:01  * DrPizzaquit (Excess Flood)
09:43:09  * DrPizzajoined
10:05:18  <dmkbot>joyent/libuv: piscisaureus: Specify error handling for uv_write and uv_connect - https://github.com/joyent/libuv/issues/185
10:31:31  * jonaslundjoined
12:55:18  <dmkbot>joyent/node: AD7six: output a warning if attempting to stringify something that is dropped - https://github.com/joyent/node/issues/1691
13:26:29  <indutny>256 day in a year
13:30:59  * piscisaureusjoined
13:45:18  <dmkbot>joyent/node: glenjamin: Provide a standard way to mark library functions as deprecated - https://github.com/joyent/node/issues/1692
13:56:06  * dmkbot1joined
13:59:33  * dmkbotquit (Ping timeout: 260 seconds)
14:08:35  <indutny>ryah: yt?
14:08:52  <indutny>who wants to test new debugger's features? :)
14:08:58  <indutny>anybody around?
14:10:30  <indutny>heh
14:10:31  <indutny>k
14:26:03  <dmkbot1>joyent/node: glenjamin: Provide a standard way to mark library functions as deprecated - https://github.com/joyent/node/issues/1692
14:53:38  <indutny>yeah! http://code.google.com/p/v8/source/detail?r=9264
14:53:40  <indutny>great
14:54:58  * pieternjoined
14:56:02  <dmkbot1>joyent/node: bmeck: leaking references inside new contexts - https://github.com/joyent/node/issues/1469
14:58:40  <indutny>still nobody around?
15:03:53  * piscisaureus_joined
15:40:55  * isaacsjoined
15:45:43  * ericktquit (Quit: erickt)
15:49:48  * pieternquit (Quit: pietern)
15:55:08  * indutnyquit (Remote host closed the connection)
16:30:32  * indutnyjoined
16:36:03  <dmkbot1>joyent/node: aaronj1335: Environment variable for REPL startup file - https://github.com/joyent/node/issues/1693
16:36:03  <dmkbot1>joyent/node: bobrik: bug with require - https://github.com/joyent/node/issues/1694
16:39:43  * rmustaccjoined
16:41:10  <indutny>ryah: around?
16:46:02  <dmkbot1>joyent/node: aaronj1335: Environment variable for REPL startup file - https://github.com/joyent/node/issues/1693
16:51:03  <dmkbot1>joyent/node: aaronj1335: Environment variable for REPL startup file - https://github.com/joyent/node/issues/1693
16:51:03  <dmkbot1>joyent/node: isaacs: child_process customFds broken - https://github.com/joyent/node/issues/1695
16:51:29  * bnoordhuisjoined
16:56:02  <dmkbot1>joyent/node: isaacs: child_process customFds broken - https://github.com/joyent/node/issues/1695
16:56:03  <dmkbot1>joyent/node: isaacs: child_process customFds broken - https://github.com/joyent/node/issues/1695
16:58:17  * dmkbot1quit (Remote host closed the connection)
16:58:32  * dmkbotjoined
17:00:29  * dmkbotquit (Remote host closed the connection)
17:00:43  * dmkbotjoined
17:00:55  * dmkbotquit (Remote host closed the connection)
17:01:10  * dmkbotjoined
17:01:22  * dmkbotquit (Remote host closed the connection)
17:01:32  * dmkbotjoined
17:01:59  * dmkbotquit (Remote host closed the connection)
17:02:14  * dmkbotjoined
17:03:41  * dmkbotquit (Remote host closed the connection)
17:03:53  * dmkbotjoined
17:05:05  * dmkbotquit (Remote host closed the connection)
17:05:20  * dmkbotjoined
17:05:31  * dmkbotquit (Remote host closed the connection)
17:05:47  * dmkbotjoined
17:06:59  * piscisaureus_quit (Read error: Connection reset by peer)
17:07:59  * dmkbotquit (Remote host closed the connection)
17:08:13  * dmkbotjoined
17:08:24  * dmkbotquit (Remote host closed the connection)
17:08:25  * piscisaureus_joined
17:08:34  * dmkbotjoined
17:08:46  * dmkbotquit (Remote host closed the connection)
17:09:00  * dmkbotjoined
17:11:42  * dmkbotquit (Remote host closed the connection)
17:11:59  * ericktjoined
17:11:59  * dmkbotjoined
17:13:26  * dmkbotquit (Remote host closed the connection)
17:13:39  * dmkbotjoined
17:14:06  * dmkbotquit (Remote host closed the connection)
17:14:24  * dmkbotjoined
17:15:36  * dmkbotquit (Remote host closed the connection)
17:15:54  * dmkbotjoined
17:17:21  * dmkbotquit (Remote host closed the connection)
17:17:32  * dmkbotjoined
17:20:44  * dmkbotquit (Remote host closed the connection)
17:20:54  * dmkbotjoined
17:22:06  * dmkbotquit (Remote host closed the connection)
17:22:15  * dmkbotjoined
17:23:41  <bnoordhuis>dmkbot >:(
17:24:57  * dmkbotquit (Remote host closed the connection)
17:25:09  * dmkbotjoined
17:25:21  * dmkbotquit (Remote host closed the connection)
17:25:31  * dmkbotjoined
17:25:43  * dmkbotquit (Remote host closed the connection)
17:25:55  * dmkbotjoined
17:29:52  * dmkbotquit (Remote host closed the connection)
17:30:04  * dmkbotjoined
17:30:19  * graydonjoined
17:30:31  * dmkbotquit (Remote host closed the connection)
17:30:49  * dmkbotjoined
17:31:01  * dmkbotquit (Remote host closed the connection)
17:31:11  * dmkbotjoined
17:31:23  * dmkbotquit (Remote host closed the connection)
17:31:37  * dmkbotjoined
17:32:04  * dmkbotquit (Remote host closed the connection)
17:32:20  * dmkbotjoined
17:33:32  * dmkbotquit (Remote host closed the connection)
17:33:46  * dmkbotjoined
17:34:28  * dmkbotquit (Remote host closed the connection)
17:34:44  * dmkbotjoined
17:39:41  <dmkbot>joyent/node: bobrik: bug with require - https://github.com/joyent/node/issues/1694
17:39:42  <dmkbot>joyent/node: bobrik: bug with require - https://github.com/joyent/node/issues/1694
17:41:17  <indutny>bnoordhuis: heh :) it's useful sometimes
17:41:35  <indutny>but I think it's enough to notify about each issue one time a day
17:41:37  <indutny>not more
17:42:11  <ryah>https://github.com/joyent/node/issues/1697 <-- this seems important
17:42:11  <indutny>bnoordhuis: do you have a minute?
17:42:16  <ryah>indutny: yo
17:42:19  <indutny>ryah: yo :)
17:42:24  <bnoordhuis>indutny: you want ryah?
17:42:40  <indutny>bnoordhuis: yeah
17:42:57  <indutny>in a good sense
17:43:16  <indutny>ryah: check this out once you'll get some free time http://github.com/indutny/node/tree/feature-debugger
17:43:30  <indutny>It shows 5 lines of code on stepping
17:43:46  <indutny>and overwrites results of previous step if you're running it multple times
17:44:27  <indutny>ryah: sorry, brb in a 15 minutes
17:44:41  <dmkbot>joyent/node: kingkaeru: net_uv.js throws assertion error - https://github.com/joyent/node/issues/1697
17:50:26  <bnoordhuis>http://groups.google.com/group/nodejs/browse_thread/thread/c5220a5f97a4d7c0 <- do these people have nothing better to do?
17:50:48  <bnoordhuis>ryah: the msft call is on tuesday this week again, i suspect?
17:52:51  <rmustacc>bnoordhuis: I can't actually make it through that thread.
17:53:22  <bnoordhuis>rmustacc: you're not alone, i zoned out after the tenth post or so
17:53:24  <ryah>indutny: can you please rebase on master
17:54:11  <indutny>ryah: yeah
17:54:17  <indutny>just got bck
17:54:42  <ryah>bnoordhuis: yes, 5 minutes
17:54:47  * brsonjoined
17:55:02  <bnoordhuis>cool, i'll be there
17:55:08  <indutny>ryah: pushed
17:55:13  <igorzi>ryah: https://gist.github.com/1214441
17:55:24  <igorzi>stat_watcher api ---^
17:56:49  <indutny>ryah: btw, my patch was accepted. so I'll be glad if you consider upgrading v8 once they'll bump new version
17:59:41  <dmkbot>joyent/node: bobrik: bug with require - https://github.com/joyent/node/issues/1694
18:00:46  <isaacs>doc review please? https://github.com/isaacs/node/commit/dc8f4eed53bdf0280de105338523befb99aa0b0d
18:00:58  <isaacs>fixes that common "bug in require" issue that no one groks
18:01:10  <isaacs>(or at least, provides a documentation section to point them to)
18:02:29  <indutny>isaacs: lgtm
18:02:49  <indutny>actually, is node really preventing infitine loops?
18:02:55  <indutny>infinite*
18:03:04  <indutny>I thought we're just caching module.exports
18:03:31  <indutny>so with circular requires we're just returning reference to a cached object
18:04:12  <piscisaureus>ryah: bnoordhuis: igorzi: no call today?
18:04:21  <ryah>piscisaureus: yes, call
18:04:27  <piscisaureus>not working
18:04:35  <piscisaureus>the conference id is wrong she says
18:04:57  <piscisaureus>36815906 right?
18:05:00  <bnoordhuis>piscisaureus: oh, is that what she said
18:05:06  <bnoordhuis>yes, 36815906
18:06:06  <ryah>bnoordhuis: are you on the line?
18:06:06  <bnoordhuis>works now apparently
18:17:29  <igorzi>http://msdn.microsoft.com/en-us/library/aa365465(v=vs.85).aspx
18:23:10  <ryah>https://github.com/joyent/node/issues/1695
18:30:58  <bnoordhuis>ffs, line broke up
18:35:15  <CIA-52>node: isaacs master * rdc8f4ee / doc/api/modules.markdown : Fix #1694 Document require() cycles - http://git.io/Yy6yTA
18:36:10  * piscisaureus_quit (Ping timeout: 258 seconds)
18:36:14  <igorzi>ryah: .net has a nice api for watching directories - http://msdn.microsoft.com/en-us/library/x7t1d0ky.aspx (which is built on ReadDirectoryChangesW). it has changed,created,deleted,renamed events. do you think having something like that would be useful?
18:39:41  <dmkbot>joyent/node: kingkaeru: net_uv.js throws assertion error - https://github.com/joyent/node/issues/1697
18:39:42  <dmkbot>joyent/node: kingkaeru: net_uv.js throws assertion error - https://github.com/joyent/node/issues/1697
18:40:03  <rmustacc>igorzi: Does the file system watcher tell you what changed?
18:40:56  <igorzi>rmustacc: yes
18:44:41  <dmkbot>joyent/node: thejh: add a safer (and slower, and worse) runInNewContext (see #1469) - https://github.com/joyent/node/issues/1696
18:48:42  <rmustacc>igorzi: So then can it lose actions?
18:48:59  <rmustacc>i.e. if I have a directory, telling me what changed inside of it is problematic.
18:49:26  <rmustacc>It either means you're going to miss events or you're susceptible to being a vector for losing memoryl.
18:49:41  <dmkbot>joyent/node: thejh: add a safer (and slower, and worse) runInNewContext (see #1469) - https://github.com/joyent/node/issues/1696
18:50:24  <igorzi>rmustacc: do you mean that it would be too noisy if you only wanted to watch a single file in a directory? or?
18:50:25  <rmustacc>At least, that's why other systems went with a design to not tell you what inside a directory has changed, just that it has changed.
18:51:05  <rmustacc>igorzi: So say I watch directory foo. You can either tell me that foo has changed in some way or you can try to tell me what inside foo has changed, like I created bar.
18:52:01  <bnoordhuis>rmustacc: inotify?
18:52:05  <igorzi>rmustacc: Why is it problematic to tell you what changed?
18:52:08  <bnoordhuis>it tells you what file changed in a directory
18:52:18  <rmustacc>bnoordhuis: Right, but inotify also can drop events.
18:52:20  <bnoordhuis>and it's race-y as hell :)
18:52:42  <rmustacc>igorzi: Well, either your kernel buffers all of them (memory exhaustion) or it tells you it dropped it.
18:53:15  <rmustacc>Different systems have taken different options. I was curious which way Windows had gone.
18:53:37  <rmustacc>I'd looked at what all the different Unix ones did.
18:54:41  <dmkbot>joyent/node: thejh: add a safer (and slower, and worse) runInNewContext (see #1469) - https://github.com/joyent/node/issues/1696
18:54:46  <igorzi>rmustacc: yes, on windows i think you get dropped events once the buffer fills up
18:54:52  * brsonquit (Quit: leaving)
18:55:22  * piscisaureus_joined
18:56:17  <rmustacc>A sane cross-platform abstraction probably would just notify you that something changed at a coard level, but wouldn't tell you what changed (race conditions and all
18:56:52  <piscisaureus>igorzi: I don't think on windows it get's dropped. It just reports only 1 change, then you have to call ReadDirectoryChangesW again
18:57:40  <indutny>ryah: I'm going to be offline soon, please ping me if you'll have a chance to look at it today, I'll read any feedback tomorrow morning (5-6 hours later)
18:58:56  <igorzi>from MSDN: When you first call ReadDirectoryChangesW, the system allocates a buffer to store change information. This buffer is associated with the directory handle until it is closed and its size does not change during its lifetime. Directory changes that occur between calls to this function are added to the buffer and then returned with the next call. If the buffer overflows, the entire contents of the buffer are discarded and the lpB
18:59:47  <piscisaureus>igorzi: oh that is very nice!
19:00:14  <piscisaureus>igorzi: it will not likely overflow due to many events firing and it is not racey
19:00:36  <rmustacc>Well, the user application is still racey.
19:00:45  <piscisaureus>rmustacc: how?
19:01:00  <rmustacc>You tell me it changed, I start processing something on that file and it changes again.
19:01:17  <rmustacc>i.e. you tell me that you created a file foo inside a directory.
19:01:28  <rmustacc>By the time I try to go read it it's deleted.
19:01:39  <piscisaureus>rmustacc: sure, that can happen
19:01:52  <isaacs>rmustacc: i think it's fair to say that the application just needs to deal with that race.
19:01:57  <piscisaureus>yes
19:02:04  <piscisaureus>that race occurs very often
19:02:08  <rmustacc>isaacs: Yup. I agree. At that point what's the value of having the name then?
19:02:22  <isaacs>rmustacc: becuase most of the time, that doesn't happen.
19:02:39  <isaacs>rmustacc: i mean, you have to change a file, and then delete it, in very rapid succession
19:02:55  <isaacs>for a lot of apps, that's not likely to ever happen
19:03:08  <piscisaureus>also, you could call stat yourself
19:03:16  <piscisaureus>but you'd still have the race
19:03:16  <isaacs>the 90+% case here is module reloading in development
19:03:19  <piscisaureus>just 1 extra syscall
19:03:36  <isaacs>piscisaureus: you could try to open the file, then stat the fd
19:03:41  <isaacs>fstat
19:03:45  * piscisaureus_quit (Ping timeout: 260 seconds)
19:03:55  <isaacs>if the open fails, it's gone
19:04:38  <isaacs>but, for hot module reloading, or knowing when to rsync static files to a server, you're just responding to a user editing something.
19:04:42  <rmustacc>Well, the larger problem we have for a cross-platform API is that other systems don't give you that information.
19:05:06  <isaacs>that's a very slow operation (human-bound)
19:05:12  <isaacs>oh, yeah, so, that IS an issue, then :)
19:05:32  <isaacs>it's most important to make it work similarly across all platforms we support.
19:05:38  <rmustacc>For example, it isn't present with the kqueue / event ports because of the buffering problem which loses event.
19:05:42  <rmustacc>*events
19:06:49  * piscisaureus_joined
19:08:06  <igorzi>btw, I wasn't suggesting this be a cross-platform api.. just showing what api windows has for this. maybe we can come up with something better than stat in a thread
19:08:44  <rmustacc>Oh yeah, I know. Just mentioning the trickiness there.
19:08:54  <rmustacc>I think we definitely can do better than stat in a thread.
19:09:19  <rmustacc>I started looking into it on the Unix side, but my day job pressed my attention elsewhere.
19:10:20  <rmustacc>You can definitely use all the tooling. And pretty much you can do directory change using the nice APIs by telling the user that the directory changed.
19:11:45  <rmustacc>igorzi: I can dig up my notes on the unix side if that'd help.
19:12:12  <igorzi>rmustacc: yeah, that would be really nice.
19:12:50  <rmustacc>I don't think I have them at the office so I'll have to look when I get home.
19:13:42  <rmustacc>But I had done a comparison of the inotify/kqueue/event ports stuff and found the least common but hopefully still useful denominator.
19:20:59  * felixgejoined
19:32:55  * piscisaureus_quit (Ping timeout: 260 seconds)
19:34:22  * igorziquit (Ping timeout: 252 seconds)
19:42:16  * brsonjoined
19:46:38  * brsonquit (Ping timeout: 260 seconds)
19:46:56  * mralephjoined
19:51:23  * piscisaureus__joined
19:59:53  * felixgequit (Quit: felixge)
20:09:41  <dmkbot>joyent/node: thejh: add a safer (and slower, and worse) runInNewContext (see #1469) - https://github.com/joyent/node/issues/1696
20:14:41  <dmkbot>joyent/node: glenjamin: Provide a standard way to mark library functions as deprecated - https://github.com/joyent/node/issues/1692
20:14:42  <dmkbot>joyent/node: nponeccop: https.get hangs with mtgox.com - https://github.com/joyent/node/issues/1302
20:19:41  <dmkbot>joyent/node: AD7six: output a warning if attempting to stringify something that is dropped - https://github.com/joyent/node/issues/1691
20:30:22  * piscisaureus__quit (Quit: ~ Trillian Astra - www.trillian.im ~)
20:32:30  * felixge_joined
20:32:30  * felixge_quit (Changing host)
20:32:30  * felixge_joined
20:44:41  <dmkbot>joyent/node: dscape: Parse Error on http.get in 0.4.11 - https://github.com/joyent/node/issues/1569
20:48:56  * igorzijoined
21:10:00  * felixge_quit (Quit: felixge_)
21:17:46  <isaacs>so, i wrote a test that uses every available combination of compression level, window bits, compression strategy, file type, and memory level, in paralle
21:17:46  <ryah>igorzi, rmustacc: oh yeah, we should definitely look at the API rmustacc preposed
21:17:57  <isaacs>i think it might be a bit excessive.
21:18:30  * felixgejoined
21:18:30  * felixgequit (Changing host)
21:18:30  * felixgejoined
21:18:43  <isaacs>i wonder how long it'll take to finish..
21:19:01  <ryah>*proposed.
21:19:05  <ryah>my spelling is really bad today
21:21:35  * felixge_joined
21:21:35  * felixge_quit (Changing host)
21:21:35  * felixge_joined
21:22:55  * felixgequit (Ping timeout: 258 seconds)
21:23:39  * felixgejoined
21:23:39  * felixgequit (Changing host)
21:23:39  * felixgejoined
21:24:36  <igorzi>ryah: do you want to wait on that? or do we wait and do stat in the thread for 0.5.7?
21:24:41  <dmkbot>joyent/node: AD7six: output a warning if attempting to stringify something that is dropped - https://github.com/joyent/node/issues/1691
21:24:52  <rmustacc>I wouldn't wait.
21:25:18  <ryah>no - i just want to see what API rmustacc thought was appropriate for inotify
21:25:22  <ryah>(and others)
21:25:27  <ryah>it seemed pretty good
21:25:31  <ryah>just a sec.. still searching for it
21:25:59  * felixge_quit (Ping timeout: 258 seconds)
21:26:51  <ryah>rmustacc: hm - i can't find that...
21:27:00  <rmustacc>Uh, I'd have to find it.
21:36:51  * piscisaureus_joined
21:37:32  * piscisaureus_part
21:39:26  * piscisaureus_joined
21:41:33  <piscisaureus_>does anyone here use xcode with gyp/libuv? does that work?
21:43:59  <ryah>piscisaureus_: i've done it - it kind of works
21:52:19  <ryah>meh - so many meetings today
21:53:16  <ryah>igorzi: is it easier for you to work with ReadDirectoryChangesW or do the stat polling? (or about the same?)
21:54:41  <dmkbot>joyent/node: AD7six: output a warning if attempting to stringify something that is dropped - https://github.com/joyent/node/issues/1691
21:54:59  <igorzi>ryah: probably about the same.. does libev do stat polling on a thread? or on main thread with timers?
21:55:08  <ryah>igorzi: on the main thread
21:55:14  <ryah>igorzi: which is really crappy
21:55:51  <ryah>http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_stat_code_is_a_synchronous_oper
21:56:03  <igorzi>ryah: yeah, if we do stat polling, we should put all stats (if there are more than one) into the same thread (not do stat per thread)
21:57:18  <ryah>igorzi: give me a little bit - i want to read about inotify for a bit
21:57:28  <ryah>im kind of of the opinion that we should just tackle the hard problem now
21:58:19  <igorzi>ryah: k
21:59:24  <ryah>ReadDirectoryChangesW is a pretty ideal interface
21:59:35  <ryah>i think windows wins on this one
22:00:10  <igorzi>yeah, and .net wrapper around it is pretty good too - http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
22:03:27  <bnoordhuis>igorzi: Assertion failed in test/test-fs.c on line 393: r == 0
22:03:43  <igorzi>bnoordhuis: yep, i'm fixing it.. should be done later today
22:03:53  <bnoordhuis>cool, thanks
22:08:24  <isaacs>what is an acceptable amount of time for a single test/simple test to take?
22:09:08  <bnoordhuis>isaacs: 5-10 seconds
22:09:15  <isaacs>ok, great
22:10:33  <ryah>well..
22:10:43  <ryah>5-10 seconds is really too long
22:10:45  <graydon>10msec
22:10:46  <ryah>100ms
22:10:51  <isaacs>yikes.. ok
22:10:54  <graydon>:)
22:11:07  <ryah>graydon is an order of magnatude more demanding than i
22:11:40  <isaacs>i suppose that most of these test combo's are actually testing zlib, rather than my binding, and as far as ic an tell, zlib works
22:11:52  <graydon>I pick 10ms as an answer for any "how long" question in computers, because it's around the perceptual threshold :)
22:11:59  <graydon>hardly precise
22:12:03  <DrPizza>igorzi: oh please do readirectorychangesw
22:12:18  <DrPizza>it's much more awesome
22:12:46  <ryah>DrPizza: we'll definitely do it eventually - the question is just if we can mimic that on linux
22:13:12  <ryah>(without dedicating 2 weeks of development to it)
22:18:19  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
22:18:19  * piscisaureus_changed nick to piscisaureus
22:18:27  * felixgequit (Quit: felixge)
22:23:19  * felixgejoined
22:23:23  <ryah>inotify sucks
22:23:31  <ryah>what an awful interface
22:23:35  <ryah>http://webcache.googleusercontent.com/search?q=cache:R9XHw60recoJ:www.kernel.org/doc/man-pages/online/pages/man7/inotify.7.html+inotify+man+page&cd=4&hl=en&ct=clnk&gl=us
22:24:44  <bnoordhuis>an improvement on dnotify though
22:25:02  <bnoordhuis>and hey, now we have fanotify
22:25:52  <ryah>never heard of either of those
22:26:34  <ryah>i kind of hate operating systems
22:26:53  <ryah>they just exist to make our lives difficult, don't they?
22:27:11  <bnoordhuis>oh i don't know
22:27:17  <rmustacc>ryah: Yup. I've been adding some #ifdef ANNOY_RYAH
22:27:25  <bnoordhuis>writing to i/o ports to spin up your floppy drive wasn't all that either
22:29:42  <ryah>how about condensing the fs events into two events: RENAME, ATTRIBUTE_CHANGE
22:29:48  <ryah>you watch a directory (no subdirectories)
22:29:56  <ryah>get rename and attribute_change events
22:30:11  <ryah>delete = rename
22:30:37  <ryah>create = rename too
22:30:37  <ryah>:)
22:31:19  <bnoordhuis>so what does open or truncate do?
22:31:37  <ryah>void (*uv_dir_event_cb)(uv_dir_event_t*, char* filename, int events);
22:31:57  <ryah>truncate = ATTRIBUTE_CHANGE
22:32:13  * mralephquit (Quit: Leaving.)
22:32:28  <ryah>open = no event (unless create)
22:33:36  * piscisaureusopen != change to a file
22:33:44  <bnoordhuis>piscisaureus: atime
22:33:46  * piscisaureusbut it may be an attribute change (a time)
22:33:59  <ryah>oh yeah - we have that
22:34:00  <ryah>FILE_NOTIFY_CHANGE_LAST_ACCESS
22:34:08  <ryah>so i guess ATTRIBUTE_CHANGE
22:34:20  <bnoordhuis>what if the monitored directory is deleted? renamed?
22:34:21  * brsonjoined
22:34:44  <bnoordhuis>or moved, of course
22:35:30  * piscisaureusthis is not supported by the windows interface
22:35:43  <ryah>file == ".", event = RENAME
22:35:48  <bnoordhuis>piscisaureus: you're communicating through /me statements now? :)
22:35:55  * piscisaureusReadDirectoryChanges tracks only the contents of the directory, not the directory itself
22:35:58  * piscisaureusmeh
22:36:01  * piscisaureusI hate mac
22:36:09  * piscisaureusLet me boot windows
22:36:18  * piscisaureusquit (Quit: piscisaureus)
22:36:45  <bnoordhuis>but, but... a mac... it just works!
22:36:53  <bnoordhuis>did steve jobs lie to me?
22:37:07  <ryah>someone needs to take that mac away from bert
22:37:29  <bnoordhuis>before people get hurt
22:38:03  * piscisaureusjoined
22:38:14  <piscisaureus>It's a windows system
22:38:18  <piscisaureus>I know this
22:38:30  <bnoordhuis>classic
22:39:23  <piscisaureus>anyway... watching the directory itself doesn't work with ReadDirectoryChangesW
22:39:34  <ryah>then i guess we won't support that
22:39:38  <piscisaureus>so if the directory gets renamed the behavior is undefined
22:40:11  <piscisaureus>does inotify/kqueue support observing entire trees?
22:40:29  <bnoordhuis>no
22:42:35  <piscisaureus>I really don't understand how people link mac os x to usability
22:42:50  <ryah>piscisaureus: also don't try to understand
22:42:57  <piscisaureus>I like the hardware though (yes bnoordhuis I know that's what she said)
22:43:22  <ryah>yes - so i think ATTR_CHANGE and RENAME
22:43:35  <ryah>no subtrees, no self monitoring
22:43:59  <piscisaureus>do we support monitoring individual files?
22:44:15  <piscisaureus>like, what node does now?
22:44:36  <ryah>we'll just watch the containing directory and filter
22:45:21  <piscisaureus>that's fine - if all operating systems can do full-dir watching
22:45:41  <piscisaureus>if at any point we have to emulate directory watching by watching files this becomes very backwards
22:45:50  <bnoordhuis>that sucks for big busy directories like /tmp
22:45:53  <bnoordhuis>ryah: ^
22:46:04  <piscisaureus>true
22:46:30  <piscisaureus>maybe we can do this watch-container-and-filter only on windows
22:46:46  <piscisaureus>and use native support for it on os-es that have native support
22:47:11  <bnoordhuis>yes, better
22:48:07  <ryah>sure..
22:54:27  <piscisaureus>ok I guess we're there
22:54:30  <piscisaureus>:-)
22:54:54  <piscisaureus>it's 1am so time to check out
22:55:04  <piscisaureus>goodbye
22:55:16  <igorzi>later piscisaureus
22:56:25  <piscisaureus>oh igorzi you promised me the login details of your test setup
22:57:07  <piscisaureus>can you send them to me so I can try this prefork thing tomorrow?
22:57:19  <igorzi>yeah, it's on the way.. the last client machine works now, so you'll have 1 server and 3 clients
22:57:26  <piscisaureus>nice
23:00:59  <ryah>igorzi: https://gist.github.com/3ae08fa0c5161c275025
23:02:03  * piscisaureusquit (Ping timeout: 260 seconds)
23:03:01  <ryah>rmustacc: ---^
23:03:25  <igorzi>ryah: do we need persistent arg? or node will just do uv_unref()?
23:03:47  <ryah>igorzi: persistent will be implemented at the binding layer with uv_unref
23:04:17  <ryah>and uv_close() works on uv_fs_event_t as usual for uv_handle_t
23:04:50  <ryah>the user will be required to stat it
23:07:08  <igorzi>lgtm.. how will node's js api look like?
23:08:54  <ryah>require('fs').watchFile2('/tmp', function(file, event) { ... })
23:09:38  <ryah>maybe just "watch"
23:09:45  <ryah>require('fs').watch('/tmp', function(file, event) { ... })
23:10:14  <igorzi>event is a string?
23:10:37  <ryah>yeah
23:10:53  <igorzi>cool.. i'll start on windows impl
23:11:52  <rmustacc>ryah: You can probably get a few more events there.
23:12:06  <rmustacc>I have notes on the set that you can get on all platforms if you want.
23:12:39  <ryah>rmustacc: yeah - i want to look at that
23:13:51  <ryah>var h = require('fs').watch('/tmp', function(file, event) { ... }); h.close();
23:14:00  <ryah>^-- we should return the wrapped handle
23:14:16  <rmustacc>ryah: Will you be in tomorrow?
23:14:31  <rmustacc>I'll make sure to bring my notes so we can compare.
23:14:46  <ryah>rmustacc: yeah
23:15:09  <rmustacc>But yeah, that looks reasonable as it is.
23:15:39  <rmustacc>Something you may want to optionally consider is having the function rval determine if you retrigger the event or not.
23:15:54  <rmustacc>I'm not sure if that's actually what you want or not though.
23:16:14  <ryah>hm - like if i want to ignore further events from a certain file?
23:17:45  <rmustacc>Well, let's not worry about that for now.
23:17:53  <rmustacc>I'm not convinced that we want that.
23:18:10  <rmustacc>Or I have a good use case. But I haven't thought about this stuff for a while.
23:19:22  <ryah>igorzi: iisnode isn't using the StdIOWrap, right?
23:19:37  <igorzi>ryah: no
23:28:11  * felixgequit (Quit: felixge)
23:50:11  <CIA-52>libuv: Ben Noordhuis master * rd70c760 / src/unix/stream.c : unix: fix write queue double init - http://git.io/j6Aylw
23:50:12  <CIA-52>libuv: Ben Noordhuis master * r21936eb / src/unix/stream.c : unix: remove unnecessary variable - http://git.io/jhai2g
23:50:12  <CIA-52>libuv: Ben Noordhuis master * r066dc6b / src/unix/stream.c : unix: fix argument check / write request init order - http://git.io/pgZ-ww