00:00:23  <ryah>i've started to think that v8/c calls are a lot like syscalls
00:01:01  <bnoordhuis>expensive?
00:01:42  <ryah>that - but also that the world changes quite dramatically on either side
00:02:11  <bnoordhuis>that's a statement that needs some explaining
00:02:54  <ryah>different sets of assumptions - on either side of the boundary
00:03:19  * piscisaureus_joined
00:12:23  <bnoordhuis>okay, off to bed
00:12:42  <bnoordhuis>it's my girlfriend's birthday today and i've got to be fit in the morning
00:12:46  <bnoordhuis>sleep tight all
00:13:08  * bnoordhuisquit (Quit: Leaving)
00:13:52  * piscisaureus__joined
00:17:26  * piscisaureusquit (Ping timeout: 260 seconds)
01:11:22  <piscisaureus__>omg
01:12:18  <piscisaureus__>https://github.com/joyent/node/blob/master/deps/uv/src/win/stream.c#L96 <-- boom!
01:12:25  <piscisaureus__>ryah --^ that's it
01:13:09  * piscisaureus__changed nick to piscisaureus
01:19:13  * Bradleymeckjoined
01:21:03  <ryah>piscisaureus: ouch
01:22:31  * erickt_joined
01:34:39  <erickt>ryah: ping? I've updated my pull request to just be the bug fixes: https://github.com/joyent/libuv/pull/200
01:43:52  <CIA-53>libuv: Bert Belder master * r1d3b880 / test/benchmark-sizes.c : Add uv_tty_t size to benchmark-sizes - http://git.io/ur7nZA
01:43:52  <CIA-53>libuv: Bert Belder master * r14cdc80 / src/win/stream.c : win tty: Fix typo - http://git.io/lO8CyA
01:45:00  <indutny>I got a problem :P
01:45:16  <indutny>after ./node debug benchmark/http_simple.js
01:45:34  <indutny>everything I'm typing in terminal gets invisible
01:45:48  <indutny>piscisaureus: yt?
01:46:17  <piscisaureus>I'm here
01:47:34  <indutny>piscisaureus: that's odd
01:47:51  <indutny>piscisaureus: it was working before libuv's tty commits
01:48:12  <indutny>piscisaureus: can stdin be not released properly?
01:48:29  <piscisaureus>yes
01:48:33  <piscisaureus>that's likely :-)
01:49:00  <indutny>:)
01:49:16  <indutny>should I do process.stdin.pause() somewhere/
01:49:18  <indutny>?
01:49:46  <piscisaureus>ummm
01:49:47  <piscisaureus>no?
01:51:02  <indutny>looks like node.js was returning everything back automatically
01:51:05  <indutny>and it isn't
01:51:13  <indutny>that sounds like breaking API change
01:52:54  <piscisaureus>I don't really understand what's wrong
01:53:11  <indutny>piscisaureus: try it your self
01:53:21  <indutny>piscisaureus: `./node debug lib/fs.js`
01:53:25  <indutny>and then exit terminal
01:53:30  <piscisaureus>indutny: i'm not running mac atm
01:53:32  <indutny>sorry, not terminal repl
01:53:38  <indutny>I'm on ubuntu
01:53:48  <indutny>after closing repl
01:53:51  <indutny>you won't be able to type anything
01:54:03  <indutny>actually, you won't see anything that you type
01:56:40  <piscisaureus>no problem on windows :-)
01:56:46  <indutny>piscisaureus: haha :)
01:56:48  <indutny>piscisaureus: great
01:56:59  <indutny>piscisaureus: we've something not working on linux, but working in windows
01:57:00  <indutny>:P
01:57:20  <indutny>piscisaureus: are colors working on win, btw?
01:57:23  <piscisaureus>yes
01:57:27  <piscisaureus>they're on now too
01:57:36  <indutny>cool!
01:57:53  <indutny>anyway, can you please take a look at this problem
01:58:06  <indutny>I tried doing process.stdin.pause()
01:58:12  <indutny>but that isn't helping
01:59:12  <indutny>even turning off colors won't help
01:59:31  <rmustacc>The problem is that the uv tty code changes your underlying tty, but doesn't seem to rever it on exit, at least by quick inspection of the tty code.
01:59:41  <piscisaureus>indutny: http://twitpic.com/6rnnum
01:59:46  <rmustacc>You can reset your terminal back to a sane setting after it gets the mode changed by a simple reset.
02:00:06  <indutny>rmustacc: so is problem in setRawMode?
02:00:17  <piscisaureus>just enter console.log('\x1b[m');
02:00:28  <rmustacc>src/unix/tty.c +41
02:00:34  * brsonquit (Ping timeout: 258 seconds)
02:00:41  <rmustacc>You'll note that there is code that saves the original termios settings with a comment to restore on exit.
02:01:04  <rmustacc>That variable isn't a global, it's a function local.
02:01:25  <indutny>piscisaureus: rmustacc is right
02:01:26  <rmustacc>So, it's possible it's changing somewhere else.
02:01:55  <piscisaureus>it's weird to change mode to invisible though
02:01:55  <ryah>yes, i think we're not restoring the mode correctly
02:02:13  <indutny>ryah: fixed https://github.com/joyent/node/pull/1779
02:02:42  <rmustacc>piscisaureus: We probably changed the mode somewhere to turn off echo.
02:02:56  <piscisaureus>ah
02:03:08  <piscisaureus>yes probably in uv_tty_set_mode
02:03:26  <rmustacc>Yup.
02:03:42  <rmustacc>But, I don't know if there's an obvious uv_tty_fini that sets it back.
02:04:08  <piscisaureus>rmustacc: no -
02:04:33  <piscisaureus>uv_tty_set_mode(handle, 0) should do that, but ryah didn't implement that yet
02:04:35  <rmustacc>But tty control isn't something I'm really familiar with.
02:04:53  <rmustacc>Ah, gotcha. Okay.
02:05:10  <rmustacc>Well there you go indutny, there's the answer to your problem.
02:05:15  <piscisaureus>actually we were planning to define flags or symbolic constants for different modes
02:05:22  <piscisaureus>but we haven't gotten around
02:05:22  <indutny>:)
02:05:26  <indutny>gtg right now
02:05:32  <indutny>if you won't fix it before I'll get back
02:05:36  <indutny>I'll take a look at it
02:05:39  <indutny>thanks anyway
02:06:02  <piscisaureus>I am totally unfamiliar with unix terminals so I am not going to fix it
02:06:06  <ryah>erickt: looks good. thanks.
02:06:28  <CIA-53>libuv: Erick Tryzelaar master * refa720d / src/win/udp.c : (log message trimmed)
02:06:29  <CIA-53>libuv: win: Removing uv_udp_connect6
02:06:29  <CIA-53>libuv: This function isn't exposed or used internally. Nor
02:06:29  <CIA-53>libuv: is there a windows implementation for IPv4, or
02:06:29  <CIA-53>libuv: unix implementation for IPv4 or IPv6.
02:06:29  <CIA-53>libuv: However, sockets do support UDP connections (which
02:06:30  <CIA-53>libuv: just let you use send/recv instead of
02:06:30  <CIA-53>libuv: Erick Tryzelaar master * r17d4686 / src/win/udp.c : win: Actually exit if uv_udp_bind only wants IPv6. - http://git.io/MltzTA
02:06:31  <CIA-53>libuv: Erick Tryzelaar master * rc260a39 / (src/unix/tcp.c src/win/tcp.c): unix,win: Check connect receives right socket type - http://git.io/M6GjFQ
02:06:31  <CIA-53>libuv: Erick Tryzelaar master * r1d7e61f / (src/unix/tcp.c src/unix/udp.c src/win/tcp.c src/win/udp.c): unix,win: Check bind receives right socket type - http://git.io/q5_Tbw
02:06:32  <CIA-53>libuv: Erick Tryzelaar master * r23796d2 / (35 files in 4 dirs):
02:06:32  <CIA-53>libuv: Fixes #76. Unify OS error reporting
02:06:33  <CIA-53>libuv: As a nice fringe benefit, this also shaves a word
02:06:33  <CIA-53>libuv: off of a windows TCP handle by replacing "uv_err_t
02:06:36  <CIA-53>libuv: bind_error" with "int bind_error". - http://git.io/-UX6Dw
02:06:44  <erickt>ryah: great!
02:08:11  <piscisaureus>uv__set_artificial_error <-- not great atm
02:08:31  <piscisaureus>results in errors like ENOTFOUND The operation succeeded
02:08:37  <piscisaureus>(on windows)
02:08:53  <piscisaureus>because we have no strerror for uv error codes
02:10:08  <ryah>piscisaureus: sorry, i should have had you review
02:10:17  <ryah>piscisaureus: can we modify this somehow?
02:10:48  <erickt>The uv__set_artificial_error is just replicating behavior from before
02:10:56  <piscisaureus>that's true
02:11:25  <piscisaureus>If we can just add a list of error destcriptions for all uv errors
02:11:38  <piscisaureus>then we can always call strerror when the error is UV_UNKNOWN
02:11:39  <ryah>yeah...
02:11:55  <piscisaureus>I bet we can just extract the strings from some OS
02:12:09  <piscisaureus>should be a bsd-licensed os?
02:12:12  <ryah>sure
02:15:06  <piscisaureus>It's weird - terminals are stupid, but I'm super happy that this finally works
02:15:23  <ryah>me too!
02:15:46  <ryah>http://fxr.watson.org/fxr/source/gen/errlst.c?v=FREEBSD-LIBC
02:15:53  <piscisaureus>btw - console writes are now fully synchronous on windows
02:16:01  <piscisaureus>but we could offload that to thread pool
02:16:15  <ryah>no - i want to change unix to make console writes sync on unix too
02:16:26  <ryah>we hit too many problems with non-blocking tty
02:16:39  <rmustacc>You just solved my mdb problem ryah. Thank you.
02:16:51  <ryah>it also fucks up dtrace
02:17:03  <ryah>(at least on osx)
02:17:04  <rmustacc>Hmm, really?
02:17:18  <rmustacc>If you do dtrace -c?
02:17:23  <ryah>that's my theory anyway - yeah
02:19:03  <rmustacc>So stdout is blocking if isatty()?
02:20:06  <ryah>rmustacc: node switches it to be non-blocking
02:20:41  <ryah>but yeah, that's what it will be
02:21:45  <ryah>piscisaureus: erickt is interested in doing the merging of our stream classes
02:21:57  <piscisaureus>nice
02:22:47  <piscisaureus>ryah: he's very ambitious - this is not easy I think
02:22:54  <piscisaureus>we have to make small steps
02:22:58  <ryah>yes
02:23:04  <ryah>i think he's aware of that
02:23:28  <piscisaureus>okay, then it's fine
02:23:48  <piscisaureus>it's probably not too hard to stuff everything into an union
02:24:36  <piscisaureus>but once we get there I'm gonna want more
02:24:46  <piscisaureus>http://www.youtube.com/watch?v=IfmBSfeXDsc
02:25:22  <piscisaureus>ryah: eventually I also want to use a vtable to have people define their own handle
02:25:29  <piscisaureus>types
02:25:53  <ryah>piscisaureus: i want to define our external functions in uv-common.c
02:26:04  <ryah>share the implementation of, say, uv_close()
02:26:12  <ryah>between unix and windows
02:26:54  <ryah>we'd do this by having each platform expose a interface struct (i prefer that to 'vtable') for each stream type
02:27:09  <Bradleymeck>not sure this is the place but do we have a wiki page for building stuff on windows, installing gyp is painful. and id like to write a bit
02:27:24  <ryah>Bradleymeck: gyp comes with node
02:27:42  <ryah>Bradleymeck: you should be able to just run "vcbuild.bat" in the root directory
02:27:55  <ryah>if you have msvs
02:28:30  <Bradleymeck>i had some gyp error message a while ago then i installed gyp manually and it worked. oh well, lost the console that had the error
02:29:45  <piscisaureus>ryah: I'm not sure that i completely understand what your idea is
02:30:16  <rmustacc>Each platform defines a struct of function pointers?
02:30:25  <ryah>yes
02:30:35  <piscisaureus>i am afraid that this may not work
02:31:00  <piscisaureus>because platforms have different models => different demands
02:31:26  <piscisaureus>I do a lot of work in functions like uv_process_tty_read_req etc
02:31:38  <ryah>but i'd like to share some of the error/param checking
02:31:42  <piscisaureus>but on unix a read req doesn't even exist
02:31:43  <piscisaureus>oh
02:31:49  <ryah>obviously we'll hand off control early to the platforms
02:31:59  <piscisaureus>well I guess we could indeed share the entry points
02:32:09  <ryah>for example uv_close() has a big switch on handle->type in it
02:32:13  <ryah>that could be shared
02:32:40  <piscisaureus>ah, yeah that makes sense
02:32:43  <ryah>shared entry points would be easier for keeping ref counts, etc
02:33:11  <piscisaureus>ryah: except that dereferencing happens just before the close callback
02:33:27  <piscisaureus>which is made from uv_xxx_endgame on windows
02:34:13  <piscisaureus>... which I think should change btw :-)
02:36:57  <piscisaureus>ryah: actually, let us get fd sharing in place first.
02:37:23  <ryah>yeah, definitely
02:37:27  <piscisaureus>ryah: then we'll have full overview of all the stuff we need to do
02:37:54  <piscisaureus>so maybe we can find some common patterns
02:38:32  <piscisaureus>ryah: actually, what we should also get straight is multiplicity
02:38:38  <piscisaureus>right now it's only half-implemented
02:38:43  <piscisaureus>(on windows at least)
02:39:12  <piscisaureus>but if we're serious about it then we'll need a way to let the user clean up a loop and all associated reqs etc
02:41:11  <ryah>indutny: on master, im getting
02:41:12  <ryah>% ./node test/simple/test-debugger-repl.js
02:41:12  <ryah>AssertionError: "debug> debug> debug> debug> \bbreak in node.js:149" == "debug> debug> debug> debug> \bbreak in node.js:150"
02:42:00  <ryah>presumably because the line numbers have changed :)
02:42:20  <ryah>indutny: maybe we should have some regex in there?
02:45:46  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
02:51:37  * Bradleymeckquit (Ping timeout: 256 seconds)
04:01:55  * piscisaureusquit (Read error: Operation timed out)
04:10:59  * isaacsjoined
04:30:57  * isaacsquit (Quit: isaacs)
06:30:14  * dmkbotquit (Remote host closed the connection)
06:30:19  * dmkbotjoined
06:35:32  * dmkbotquit (Remote host closed the connection)
06:35:36  * dmkbotjoined
06:37:37  * dmkbotquit (Remote host closed the connection)
06:37:41  * dmkbot1joined
07:48:34  * mralephjoined
08:44:26  * mralephquit (Quit: Leaving.)
08:48:17  * Bradleymeckjoined
08:52:37  * Bradleymeckquit (Ping timeout: 252 seconds)
08:56:46  <indutny>ryah: yep, just thought about that
08:56:49  <indutny>while I was afk :D
09:41:18  <indutny>anyone around?
11:17:10  * mikealjoined
11:49:02  * mikealquit (Quit: Leaving.)
11:49:56  * mikealjoined
11:52:36  * mikealquit (Client Quit)
12:55:16  * Bradleymeckjoined
13:09:20  * mikealjoined
13:17:08  * Bradleymeckquit (Quit: Leaving)
14:20:44  * mikealquit (Quit: Leaving.)
14:47:54  * ericktquit (Remote host closed the connection)
14:47:54  * erickt_changed nick to erickt
14:48:01  * erickt_joined
14:58:18  * bnoordhuisjoined
15:02:36  * Bradleymeckjoined
15:02:44  * piscisaureusjoined
15:11:06  * Bradleymeckquit (Quit: Leaving)
15:13:05  * mikealjoined
15:24:02  <indutny>good morning
15:24:03  <indutny>everyone
15:24:04  <indutny>https://github.com/indutny/libuv/commit/4268e8d9aee436fd379c0069a5539617fdeb9a64
15:24:10  <indutny>tested on linux
15:24:16  <indutny>going to test on win and mac soon
15:31:34  <rmustacc>indutny: Is there a reason it's actually a float there?
15:31:59  <rmustacc>Well, double.
15:32:17  <rmustacc>As opposed to say an integer type, when it appears on most systems it is actually not a double.
15:38:10  <indutny>rmustacc: I just ported node.js platform stuff :)
15:38:41  <rmustacc>Haha, well maybe that should be changed?
15:39:18  <rmustacc>Unless there actually is fp involved, but I would have guessed that most of these are just second counts.
15:39:52  <indutny>rmustacc: take a look at linux implementation
15:40:08  <indutny>https://github.com/indutny/libuv/commit/4268e8d9aee436fd379c0069a5539617fdeb9a64#L7R77
15:40:26  <indutny>it's double here
15:40:29  <rmustacc>That's just busted.
15:40:36  <rmustacc>tv_sec is never a double.
15:40:41  <rmustacc>Not from clock get_time.
15:40:48  <rmustacc>*clock_gettime
15:40:58  <rmustacc>That's probably a long and someone cast it to a double.
15:41:26  <rmustacc>Okay, good, I'm not crazy.
15:41:29  <rmustacc> struct timespec {
15:41:30  <rmustacc> time_t tv_sec; /* seconds */
15:41:30  <rmustacc> long tv_nsec; /* nanoseconds */
15:41:30  <rmustacc> };
15:42:10  <rmustacc>OSes hate syscalls with floating point. They try to avoid it whenever they can so they don't have to clobber the fp regs, etc.
15:42:51  <indutny>heh
15:42:54  <indutny>ok
15:42:58  <indutny>thanks for a tip
15:43:03  <indutny>I'll update it later
15:43:05  * ericktquit (Quit: erickt)
15:43:05  * erickt_changed nick to erickt
15:43:11  <rmustacc>But, I'd probably check with someone else just to make sure.
15:43:48  <rmustacc>It probably only started off as a double because of v8 numbers.
15:43:56  <rmustacc>But we'd rather v8 lose the percision than libuv, imho.
15:44:38  <indutny>yep, but better ask someone else too
15:57:16  <rmustacc>Back in a bit.
17:03:48  * indexzerojoined
17:12:12  <ryah>https://github.com/joyent/node/issues/1786 <-- any ideas about this?
17:15:23  * erickt_joined
17:16:04  <indutny>can it be stated ?
17:17:30  <indutny>error message is odd, though
17:21:27  * mikealquit (Quit: Leaving.)
17:36:21  <piscisaureus>re 1786 - it's probably because uv stat strips the trailing slash from a filename
17:36:55  <piscisaureus>because before we were seeing the opposite problem, e.g.
17:36:55  <piscisaureus>stat(c:\windows\) -> fails, stat(c:\windows) -> ok
17:43:34  <igorzi>oh, bummer
17:47:55  <ryah>is that a CRT problem or a windows behavior in general?
17:51:11  <igorzi>ryah: i think it's a CRT problem.. we have some code in libuv that strips the trailing slash. we need to make that smarter.
17:54:25  <ryah>do we need to get off the CRT at some point?
17:54:28  <ryah>is it bad?
17:59:06  <igorzi>i haven't had many problems with CRT, but for file i/o - yes we should get off CRT at some point
18:00:43  <piscisaureus>ryah: igorzi: bnoordhuis: call?
18:00:49  <piscisaureus>I am leaving in exactly 10 minutes
18:00:55  <piscisaureus>can also do it 1 hr later if you want
18:01:31  <ryah>yes
18:02:23  <piscisaureus>8 minutes left
18:07:36  * luxigojoined
18:07:51  <luxigo>ryah: hi
18:08:28  <luxigo>i read libuv was intended to abstract libev but it seems it doesnt implement ev_async stuff yet
18:09:03  * indexzeroquit (Quit: indexzero)
18:09:11  <luxigo>i didnt dig it deeply though..
18:10:10  <ryah>luxigo: uv_async
18:10:19  <indutny>ryah++
18:10:26  <indutny>:)
18:10:56  <ryah>luxigo: https://github.com/joyent/libuv/blob/03d0c57ea216abd611286ff1e58d4e344a459f76/include/uv.h#L717-730
18:12:20  <luxigo>thanks i try with it
18:16:21  <indutny>ryah: going to create pull request for regexp debugger testing
18:17:36  * brsonjoined
18:18:17  <indutny>ryah: https://github.com/joyent/node/pull/1788/files
18:23:57  <indutny>https://github.com/joyent/libuv/commit/23796d208c1309270ee09ff566d00859cdf2e35b breaks windows build
18:25:14  <igorzi>i'm fixing that now
18:26:10  <indutny>igorzi: cool
18:26:12  <indutny>just FYI
18:26:47  <igorzi>indutny: yep, thanks
18:26:48  <indutny>tested https://github.com/indutny/libuv/commit/4268e8d9aee436fd379c0069a5539617fdeb9a64 on windows - works
18:29:29  <ryah>indutny: nice
18:29:33  <indutny>can somebody review it and cherry pick?
18:29:45  <indutny>ryah: are you talking about debugger or libuv?
18:29:52  <ryah>indutny: uv_get_uptime
18:30:00  <indutny>ryah: ah, cool. thanks
18:31:03  <indutny>piscisaureus: yt? vt100 works quite strange on windows
18:31:08  <indutny>a lot of '???????????' stuff
18:31:14  <indutny>probably unicode?
18:31:17  <indutny>dunno
18:31:25  <indutny>because for each typed char I got two displayed
18:31:37  <indutny>ah, sorry
18:31:38  <indutny>nope
18:31:39  <indutny>1 to 1
18:40:19  <CIA-53>node: Fedor Indutny master * r542156a / test/simple/test-debugger-repl.js :
18:40:19  <CIA-53>node: debugger: use regexps in repl test
18:40:20  <CIA-53>node: Fixes #1788 - http://git.io/18fOQQ
18:42:04  <CIA-53>node: Fedor Indutny master * r1b8b097 / (lib/_debugger.js test/simple/test-debugger-client.js):
18:42:04  <CIA-53>node: debugger: refactor, no more res.success checks
18:42:04  <CIA-53>node: Fixes #1779. - http://git.io/rpkh_A
18:42:10  <ryah>indutny: thanks
18:46:22  <indutny>ryah: np
18:46:37  <indutny>ryah: I can't create method with that signature `double uv_uptime(void)`
18:46:55  <indutny>`double uv_uptime(uv_loop_t* loop, int adjusted)`
18:46:57  <indutny>or
18:47:03  <indutny>`double uv_uptime(int adjusted)`
18:47:59  <indutny>only of this two
18:48:16  <ryah>indutny: just remove the adjusted - we can make the time relative in the binding
18:48:16  <indutny>only one*
18:48:28  <indutny>ryah: heh
18:48:28  <indutny>ok
18:48:29  <ryah>indutny: and no loop argument either
18:48:29  <indutny>:)
18:48:36  <indutny>uv_default_loop()
18:48:47  <indutny>ah
18:48:48  <ryah>indutny: return value in miliseconds, correct?
18:48:51  <indutny>we don't need it
18:48:55  <indutny>ryah: yep
18:48:58  <ryah>k
18:49:23  <ryah>indutny: comment about the unit of the return value in the header
18:49:29  <indutny>ok
18:51:36  <indutny>ryah: problem is that it won't return any value related to uptime on windows
18:51:54  <indutny>actually, for windows it will be system's uptime
18:52:53  <CIA-53>libuv: Igor Zinkovsky master * re7a53ae / (11 files in 4 dirs): fix windows build - http://git.io/_V7sYQ
18:54:04  <indutny>ryah: oh sorry, uptime is in seconds
19:01:31  <indutny>ryah: https://github.com/indutny/libuv/commits/feature-platform-utils
19:01:50  <indutny>https://github.com/indutny/libuv/compare/master...feature-platform-utils
19:02:38  <indutny>I'll check it on mac and win
19:02:44  <indutny>but I can't check it on others
19:06:16  <indutny>oh, looks like I removed 10.6 VM some time ago...
19:11:07  <indutny>windows - pass
19:18:17  * mralephjoined
19:21:29  <ryah>indutny: please make it in MS
19:21:43  <indutny>ryah: MS ?
19:21:49  <ryah>one sec..
19:22:03  <indutny>ryah: it's compiling and uptime tests is passing on win332
19:22:06  <indutny>s/332/32
19:22:11  <ryah>(2^64) milliseconds = 584 554 531 years
19:22:16  <ryah>yeah - that should be enough
19:22:20  <indutny>hahahaha
19:22:20  <indutny>:)
19:22:39  <indutny>ryah: GetTIckCount has some limitations
19:22:50  <ryah>indutny: just multiply by 1000
19:22:57  <indutny>ryah: Therefore, the time will wrap around to zero if the system is run continuously for 49.7 days.
19:23:21  <ryah>nice
19:23:42  <indutny>http://msdn.microsoft.com/en-us/library/windows/desktop/ms724411(v=VS.85).aspx
19:23:42  <ryah>surely there is a way to measure uptime in windows
19:24:09  <indutny>ryah: are you sure?
19:24:22  <indutny>because I'm not :)
19:25:22  <ryah>GetTickCount64?
19:25:45  <ryah>if they have it
19:25:47  <indutny>ryah: http://msdn.microsoft.com/en-us/library/ms683223(v=VS.85).aspx
19:26:19  <indutny>looks like that is what we are searching fr
19:26:21  <ryah>indutny: i'll leave it up to you to figure out. got to get back to work..
19:26:27  <indutny>haha :)
19:26:28  <indutny>ok
19:26:50  <indutny>ryah: one question: how can I output debugging info from c tests?
19:29:46  <ryah>indutny: ./test/run-tests mytest mytest
19:29:54  <ryah>indutny: ./test/run-tests --list
19:29:59  <ryah>indutny: ./test/run-tests mytest
19:31:04  <piscisaureus>indutny: GetTickCount64 is vista-only, we can't use that
19:31:10  <indutny>piscisaureus: k
19:31:16  <indutny>what about GetProcessTime?
19:31:29  <indutny>>= 2000
19:31:34  <indutny>is that ok for us?
19:31:39  <indutny>or should we support NT and below?
19:31:41  <indutny>:)
19:31:42  <piscisaureus>indutny - why don't you just record uv_now() when the application starts
19:31:51  <piscisaureus>uv_now is in msec and it's 64-bit
19:32:09  <indutny>hm.....
19:32:16  <piscisaureus>indutny: if you don't want to be tied to a loop you can use uv_hrtime()
19:32:17  <indutny>so set up start_time on uv_loop_s
19:32:40  <indutny>and the uv_now() - uv_default_loop()->start_time
19:32:47  <piscisaureus>indutny: yes
19:32:54  <indutny>haha
19:33:00  <indutny>interesting
19:33:26  <indutny>k, I'll do it tomorrow
19:33:33  <indutny>2:30 am here
19:33:37  <indutny>thanks everyone
19:33:39  <indutny>have a nice day
19:33:40  <indutny>ttyl
19:33:44  <piscisaureus>later
19:34:43  <luxigo>ryah: it works :-) thanks a lot
19:35:08  <ryah>luxigo: sweet
19:35:36  <luxigo>i can return to my lexicon mpx g2 patch editor :-)
19:36:35  <luxigo>i need preorders to work full time on it... but without a working win32 version it would have been difficult :-)
19:46:51  <CIA-53>libuv: Igor Zinkovsky master * r4fb120f / (src/win/fs.c test/test-fs.c test/test-list.h): windows: fix error reporting for uv_fs_ functions - http://git.io/IFiDCA
19:48:20  <piscisaureus>igorzi++
19:48:20  * ryahpounds his head on the desk
19:50:07  <piscisaureus>ryah: ?
19:51:34  <ryah>glib/dbus bullshit
20:05:34  * isaacsjoined
20:17:40  <piscisaureus>bnoordhuis: bio?
20:18:04  <bnoordhuis>piscisaureus: haven't had the time yet, birthday party
20:18:26  <piscisaureus>bnoordhuis: ok. make sure you get it to me tomorrow, I'll be gone by friday
20:18:41  * luxigofinish a good 2003 spanish wine bottle after dinner
20:20:40  <piscisaureus>bnoordhuis: but go have fun now :-)
20:20:55  <isaacs>https://skitch.com/isaacschlueter/fhar4/win32-npm-install-dnode
20:21:18  <piscisaureus>nice :-)
20:21:25  <piscisaureus>isaacs++
20:22:59  <igorzi>isaacs: nice!
20:23:30  <isaacs>unfortunately, it still doesn't work with npm itself, since i have symlinks in my package, and tar.exe blows up
20:25:18  <piscisaureus>there's not much you can do about that
20:25:21  <piscisaureus>unfortunately
20:25:44  <piscisaureus>I've been looking for a tar version that doesn't blow when it sees a symlink (that was back in april) but couldn't find one
20:26:30  <piscisaureus>cygwin's tar may be the only exception but you really dont want to use that
20:28:11  <isaacs>ugh... yeah.
20:28:34  <piscisaureus>I think we could just create a tar.exe ourselves :-)
20:28:40  <isaacs>there are args in tar -c to resolve symlinks, but not in tar -x
20:28:47  <isaacs>piscisaureus: well, that's sort of my plan
20:28:50  <isaacs>doing tar in js, that is
20:29:02  <piscisaureus>I like that
20:29:28  <piscisaureus>but we could also just find the source code of some tar.exe and strip the symlink extraction
20:30:07  <piscisaureus>like unxutils tar or something
20:30:22  <isaacs>personally i like bsdtar the bet.
20:30:23  <isaacs>*best
20:30:41  <isaacs>not for any technical reason, just becasue its license is the best.
20:36:59  <piscisaureus>./configure
20:36:59  <piscisaureus>checking whether we are using the GNU Fortran 77 compiler... no
20:37:04  <piscisaureus>yeah... sure :-/
20:43:35  <ryah>oh man. switching back to my old linux laptop thinkpad T30
20:43:37  <ryah>feels so nice
20:44:49  <ryah>got some sweet music on here too The Dream - Love vs Money
20:45:28  <piscisaureus>Thou Art Gone Up On High
20:53:49  <isaacs>i'm sort of half-thinking that maybe on win32, i should just accept tar -x exiting on 1, and try to soldier on.
20:54:25  <bnoordhuis>ryah's switching back to linux and i'm buying a macbook
20:54:29  <bnoordhuis>what's the world coming to?
20:54:43  <piscisaureus>You should buy a desktop pc with windows
20:54:46  <piscisaureus>then i'll move to mac
20:55:11  <piscisaureus>Then I will do kqueue hell and you can figure out iocp
20:55:20  <bnoordhuis>hah, sounds like fun
20:55:33  <bnoordhuis>just like watching train wrecks is fun
20:55:44  <piscisaureus>all we like sheep have gone astray
20:55:50  <ryah>the train wreck is the dbus bullshit im looking into right now
20:56:12  <bnoordhuis>what's the issue?
20:57:19  <ryah>joyent customer thing..
20:58:32  <bnoordhuis>ah... don't think i can help you with that
20:58:39  <CIA-53>libuv: Igor Zinkovsky master * rc9ae7a6 / (src/win/fs.c test/test-fs.c): windows: don't strip the trailing slash from filename if it follows a device name - http://git.io/u98oAA
20:58:39  <bnoordhuis>http://news.ycombinator.com/item?id=3049376 <- kind of interesting
21:01:59  <ryah>"i have a project to finish"
21:02:42  <piscisaureus>by the time you finish this you'll be craving for a 9-5 job :-)
21:03:02  <piscisaureus>(but I may be misjudging you)
21:04:45  <bnoordhuis>they should have an option "don't care to build the next facebook or farmville"
21:07:19  <ryah>you're misjudging me :)
21:15:03  <luxigo>"I had a bottle to finish" ...
21:33:49  * ryahbangs head against desk
21:35:33  <bnoordhuis>i hope ryah's desk is solid oak or he'll break it one day
21:37:25  <piscisaureus>Lift Up Your Heads
21:37:44  <rmustacc>bnoordhuis: I'd be more worried about ryah than the desk
21:38:24  <bnoordhuis>rmustacc: you know what a good desk costs these days?
21:39:49  <piscisaureus>Thou shalt break them with a rod of iron
21:42:46  <ryah>http://tinyclouds.org/desk.jpg
21:42:55  <ryah>you can see a little blood spot
21:43:18  <ryah>that is what dbus causes
21:43:39  <bnoordhuis>heh
21:43:47  <bnoordhuis>but... no 27" screen?
21:44:11  <piscisaureus>the desk looks very solid though
21:53:33  <ryah>okay. the dbus pain is over
21:53:46  <piscisaureus>The Trumpet Shall Sound
21:57:53  * isaacsquit (Read error: Connection reset by peer)
21:58:24  * isaacsjoined
22:04:11  * isaacsquit (Ping timeout: 255 seconds)
22:05:49  * isaacsjoined
22:21:31  <ryah>bnoordhuis: any news on the http-parser binding?
22:21:56  <bnoordhuis>ryah: slowly progressing, so far i'm seeing a fairly stable 30% speedup
22:22:17  <ryah>:P~
22:24:08  <ryah>i just realize that somehow we need to know that this pipe passed to uv_spawn for IPC is going to be duplex..
22:24:17  <ryah>currently we're using pipe(2)...
22:26:31  <ryah>uv_pipe_init() might need a flag...
22:26:47  <ryah>on windows are are the stdio pipes already duplex?
22:27:07  * isaacsquit (Ping timeout: 252 seconds)
22:29:18  <piscisaureus>ryah: not always - they're duplex is optional
22:29:30  <piscisaureus>ryah: we're currently creating half-duplex pipes for child stdio
22:29:32  <ryah>piscisaureus: how do you set that option?
22:30:01  <piscisaureus>ryah: http://msdn.microsoft.com/en-us/library/aa365150%28v=vs.85%29.aspx
22:30:08  <piscisaureus>see PIPE_ACCESS_DUPLEX etc
22:31:27  <ryah>i see.
22:32:01  <ryah>i guess i can just use a socketpair...
22:36:29  <piscisaureus>ryah: it's a bit weird to have duplex stdin
22:36:45  <ryah>piscisaureus: yeah
22:37:01  <piscisaureus>ryah: maybe stdout should also be sendfd
22:37:09  <piscisaureus>for the opposite direction
22:37:12  <ryah>meh
22:37:21  <ryah>it's just a fd
22:37:44  <ryah>it's okay if its duplex
22:37:49  <piscisaureus>so are we going to have people do
22:37:49  <piscisaureus>process.stdin.write("foo", 22) ?
22:38:09  <ryah>no - we'll wrap it up
22:38:38  <ryah>process.parent.send({ foo: 'bar' })
22:39:19  <ryah>i forget what api i used for child_process.fork
22:39:22  <ryah>but we'll use that.
22:45:12  <ryah>piscisaureus: in unix if you start a program on tty - a normal program from a shell - stdout and stdin are duplex
22:45:26  <ryah>they're just dup'd - they refer to the same device
22:48:11  <piscisaureus>ah - ok
22:49:19  <ryah>i wonder if socketpair() is somehow less efficent than pipe()
22:53:53  * isaacsjoined
22:54:40  <bnoordhuis>ryah: doesn't make a difference on linux
22:55:13  <bnoordhuis>the code paths are not identical but but close
23:03:14  <DrPizza>I would kill myself if I had to work at that desk
23:05:03  <DrPizza>http://www.flickr.com/photos/drpizza/5498447838/in/photostream/lightbox/
23:05:30  <DrPizza>cats are essential elements of any working environment
23:05:37  <ryah>http://search.cpan.org/dist/AnyEvent/lib/AnyEvent/Impl/Glib.pm <- funny
23:10:16  <ryah>DrPizza: it's important to have a shitty environment to work at
23:10:24  <ryah>then you don't get annoyed going to other places
23:10:36  <ryah>i avoid large screens
23:10:42  <DrPizza>lol
23:10:53  <DrPizza>huge screens are weirdly annoying to use
23:10:57  <DrPizza>but up to about 24" is good ime
23:11:41  <DrPizza>with 27" and 30" I find them just tiring to look around
23:11:50  <ryah>i also avoid dvorak and editor customizing for the same reason
23:12:10  <ryah>a cat might be nice though
23:12:38  * bnoordhuis<3 his 27" screen
23:12:53  <bnoordhuis>i had two 27" screens at first
23:13:14  <piscisaureus>I don't like cats
23:13:22  <bnoordhuis>but that's too much screen estate
23:13:23  <DrPizza>piscisaureus: :(
23:13:26  <DrPizza>there is somethign wrong with you
23:13:40  <bnoordhuis>plus you get a sore neck from looking at one then the other the whole day
23:15:27  <ryah>small screens mean you get better with your editor
23:28:31  <igorzi>ryah: piscisaureus: so how about adding a flag to uv_process_options_t to indicate that the child process will be libuv?
23:28:52  * mralephquit (Quit: Leaving.)
23:29:00  <ryah>igorzi: yeah, that'd work for me
23:29:14  <ryah>igorzi: what are you going to do differently in that case?
23:30:03  <igorzi>1. set the magic env. variable for the child process. 2. use the framing protocol
23:30:30  <igorzi>(for stdin pipe)
23:32:05  <piscisaureus>igorzi: I assume you can also pass the flag to use framing to uv_pipe_init
23:32:10  <piscisaureus>?
23:32:25  <piscisaureus>I'm okay with adding a flag to uv_spawn -
23:32:33  <piscisaureus>but then we're making the api very inflexible
23:33:01  <igorzi>piscisaureus: yes, if we do that then we'll have to set 2 flags.. a single flag to uv_spawn will take care of both things
23:34:16  <piscisaureus>igorzi: 2 flags?
23:34:44  <piscisaureus>igorzi: I kind of like to keep setting the env var out of libuv
23:34:49  <piscisaureus>but hmm
23:35:09  <piscisaureus>since we want to get there fast I am okay with everything :-)
23:35:40  <igorzi>piscisaureus: i was thinking that uv_spawn sets the env. var based on some flag that's passed to it
23:36:03  <igorzi>piscisaureus: and also reuses the same flag to mark stdin pipe to use the protocol
23:36:28  <igorzi>this way the env. var is not leaked out of libuv
23:37:10  <piscisaureus>igorzi: I think node is also going to set an env var for this
23:37:31  <piscisaureus>igorzi: since it needs to tell the other node it's parent is node
23:38:01  <piscisaureus>if you're going to do this in libuv we need to add this to uv-unix too
23:38:19  <piscisaureus>but again, if it helps to get there fast, by all means do it
23:38:40  <piscisaureus>ryah: ^
23:39:01  <igorzi>piscisaureus ryah: you want to skype?
23:39:35  <piscisaureus>I'm okay with skyping but where's ryah?
23:40:22  <piscisaureus>it's best to have ryan on the call too - let's wait for a few minutes
23:41:15  <igorzi>piscisaureus: k
23:41:36  <piscisaureus>last activity on #node.js was 8 minutes ago. He can't be far :-)
23:48:56  <ryah> oh sorry
23:49:02  <ryah>yeah i can skype
23:49:04  <ryah>one sec
23:51:22  <ryah>im on
23:51:54  <piscisaureus>igorzi: still here?
23:52:04  <igorzi>yep
23:52:54  <piscisaureus>shit skype crashed
23:53:11  <piscisaureus>we're really taking turns
23:53:17  <igorzi>me too :)