00:29:53  * ericktquit (Quit: erickt)
00:39:21  * mikealjoined
00:47:47  * mikealquit (Quit: Leaving.)
01:06:23  * bnoordhuisquit (Ping timeout: 248 seconds)
01:13:14  * mikealjoined
01:20:37  <ryah>hello
01:20:47  <pquerna>hi
01:21:10  <ryah>hi
01:22:32  <ryah>isaacs: why don't you just have the npm docs on a website and when people do 'npm help' link them to it
01:22:50  <ryah>then you dont have to increase our tarball by 250%
01:30:34  * mikealquit (Quit: Leaving.)
01:37:00  <piscisaureus_>#2190 drives me mad
01:41:35  <piscisaureus_>ryah: how can it possibly be 250% increase
01:43:03  <piscisaureus_>ryah: isaacs' commit adds only 25K lines, with 80 chars / line that should be at most 2 MB
01:44:19  * brsonquit (Ping timeout: 244 seconds)
01:45:45  <isaacs>ryah: it's not a 250% increase.
01:45:54  <isaacs>ryah: something else happened between 0.6.3 and master
01:46:25  <piscisaureus_>isaacs: master or v0.6
01:47:40  <isaacs>ryah: but, the reason why the docs are bundled is because a) otherwise the docs on the website are not in sync with the docs and b) i prefer man pages to html docs
01:48:43  <isaacs>piscisaureus_: sorry, v0.6, you're right, not master
01:48:59  <piscisaureus_>https://github.com/joyent/node/compare/v0.6.3...v0.6
01:49:08  <piscisaureus_>not so much has changed
01:49:23  <isaacs>the favicon, maybe?
01:49:51  <piscisaureus_>https://github.com/joyent/node/blob/fc0a4c2781b4b579d247a24393dada7f92663abe/doc/logos/node-favicon.png
01:52:42  <isaacs>actually, i'm not seeing any major change from git-archive: https://gist.github.com/1398763
01:52:50  <isaacs>there's something in git that isn't in the release?
01:53:58  <piscisaureus_>isaacs: maybe you have to set another compression level?
01:54:13  * mikealjoined
01:54:56  <piscisaureus_>I also get this: candle.exe : error CNDL0103: The system cannot find the file '..\..\..\npm.wxs'
01:54:56  <piscisaureus_> with type 'Source'. [D:\node3\tools\msvs\msi\nodemsi.wixproj]
01:55:29  <piscisaureus_>is npm.wxs something secret that's kept well hidden behind joyent's firewall?
01:57:02  <piscisaureus_>gah it can't find heat.exe
01:57:03  <piscisaureus_>meh
01:58:15  <isaacs>piscisaureus_: running with gzip -9 has no significant effect
01:58:32  <isaacs>only shaves off about 200k, not 15M
01:59:16  <piscisaureus_>isaacs: try `make dist`
01:59:27  <piscisaureus_>I think it deletes the logos etc from the tarball
02:00:32  <isaacs>ahh, that could be it
02:01:12  <piscisaureus_>isaacs: btw, the msi grows with 223kb
02:01:16  <piscisaureus_>i think that is acceptable
02:01:52  <isaacs>ok, yeah, it's fine
02:01:53  <isaacs>$ ls -laF | grep tar
02:01:53  <isaacs>-rw-r--r-- 1 isaacs staff 10048085 Nov 27 18:01 node-v0.6.3.tar.gz
02:01:53  <isaacs>-rw-r--r-- 1 isaacs staff 10199499 Nov 27 18:00 node-v0.6.4.tar.gz
02:02:01  <isaacs>adds 250k. nothing serious.
02:02:17  <isaacs>by the way, maybe we should have a --no-npm configure option?
02:02:25  <piscisaureus_>yeah
02:02:34  <isaacs>or --without-npm
02:02:39  <isaacs>whatever the custom is for ./configure scripts
02:02:46  <piscisaureus_>well `make install` needs to support that
02:02:48  <isaacs>maybe --with-npm=/path/to/npm
02:03:00  <isaacs>yeah, but make install is just a wscript, it can read the ./configure'd stuff, right?
02:03:08  <piscisaureus_>probably
02:03:40  <piscisaureus_>maybe we should have `make install-node` and `make install-npm`
02:04:08  <piscisaureus_>but you know better what the custom is than me
02:05:30  <isaacs>sure, i mean, that'd be fine, but those would have to be deps of `make install`
02:05:35  <isaacs>./configure && make && sudo make install
02:05:42  <piscisaureus_>yeah
02:05:44  <isaacs>that needs to work, and needs to be a sensible default
02:06:03  <piscisaureus_>that was exactly what I was thinking
02:11:00  * mikealquit (Quit: Leaving.)
02:40:42  * mikealjoined
03:01:06  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
03:26:56  <ryah>yo
03:28:18  <ryah>oops sorry isaacs. my bad
03:33:22  <isaacs>np
03:39:51  * ericktjoined
04:15:25  * AvianFlujoined
04:29:24  * isaacsquit (Quit: isaacs)
04:33:25  * isaacsjoined
04:33:51  * isaacsquit (Client Quit)
04:37:20  * ericktquit (Quit: erickt)
05:05:43  * mikealquit (Quit: Leaving.)
05:11:44  * mikealjoined
05:29:12  * mikealquit (Quit: Leaving.)
05:31:51  * ericktjoined
05:40:40  * ericktquit (Quit: erickt)
06:24:19  * mikealjoined
06:32:16  * luxigo_quit (Remote host closed the connection)
07:29:51  * paddybyersjoined
07:39:32  * felixgejoined
07:39:32  * felixgequit (Changing host)
07:39:32  * felixgejoined
08:22:13  * kuebkjoined
08:29:18  * paddybyers_joined
08:31:49  * paddybyersquit (Ping timeout: 240 seconds)
08:31:49  * paddybyers_changed nick to paddybyers
09:44:37  * piscisaureus_joined
11:12:14  * felixgequit (Quit: felixge)
11:15:34  * piscisaureus_quit (Ping timeout: 260 seconds)
11:18:13  * bnoordhuisjoined
11:22:15  * piscisaureus_joined
11:37:26  * luxigojoined
12:14:08  * felixgejoined
13:40:16  * DrPizza_quit (K-Lined)
14:53:54  <piscisaureus_>bnoordhuis: do signed tarballs exist?
14:55:06  <bnoordhuis>piscisaureus_: no, but you can generate fingerprints and checksums for them, of course
14:55:58  <piscisaureus_>bnoordhuis: so I can close https://github.com/joyent/node/issues/1671
14:56:00  <piscisaureus_>?
14:56:22  <bnoordhuis>the .exe is signed nowadays? if so, yes
14:56:26  <piscisaureus_>yes
14:56:48  <piscisaureus_>ryah says there"probably signing the tarballs too."
14:56:58  <bnoordhuis>yeah, you can't
14:57:11  <bnoordhuis>a md5/sha1 checksum or gpg signature is the best you can do
14:57:28  <piscisaureus_>ok
14:57:47  <piscisaureus_>bnoordhuis: also - https://github.com/joyent/node/pull/1796
14:57:59  <piscisaureus_>bnoordhuis: the implementation is generally ok, do you think we should get it into libuv?
14:58:03  <piscisaureus_>uv_signal?
14:58:46  <piscisaureus_>bnoordhuis: I think you may want to redo the unix version in a similar fashion to prepare for isolates
15:00:11  <bnoordhuis>piscisaureus_: hum, i suppose
15:00:34  <bnoordhuis>we don't handle in libuv right now and that's mostly a good thing, i think
15:00:38  <bnoordhuis>*handle signals
15:00:49  <piscisaureus_>bnoordhuis: why?
15:01:53  <bnoordhuis>piscisaureus_: because you almost always interfere with the host program
15:02:10  <piscisaureus_>bnoordhuis: but node is still using ev_signal right?
15:02:47  <bnoordhuis>piscisaureus_: i think so
15:02:54  <piscisaureus_>bnoordhuis: I'm sure
15:03:05  <bnoordhuis>SignalWatcher does yes
15:03:08  <piscisaureus_>bnoordhuis: let me call you (nonskype)
15:03:22  <bnoordhuis>i think the battery of my phone is almost dead
15:15:15  <bnoordhuis>yep, battery's dead
15:15:18  <piscisaureus_>bnoordhuis: you're dead
15:15:31  <bnoordhuis>okay, what i was saying
15:15:40  <bnoordhuis>SIGINT and SIGTERM don't have to be exposed directly
15:15:59  <bnoordhuis>we can have process emit some event, think process.on('terminate', cb)
15:16:17  <piscisaureus_>bnoordhuis: what about sighup?
15:16:29  <bnoordhuis>hmm, do people use that?
15:16:34  <piscisaureus_>I don't know
15:16:51  <bnoordhuis>well, we could catch it and emit it as process.on('restart', cb) or something
15:17:14  <piscisaureus_>bnoordhuis: is that what it means
15:17:32  <bnoordhuis>piscisaureus_: no, but that's how most daemons respond to it
15:18:00  <bnoordhuis>kind of odd, come to think of it - i wonder how that came to be
15:18:42  <piscisaureus_>bnoordhuis: skype now
15:18:48  <piscisaureus_>bnoordhuis: i'll ues my phone
15:18:57  <piscisaureus_>for reduced office noise
15:19:34  <piscisaureus_>bnoordhuis i will call you
15:34:46  <piscisaureus_>sigterm, sigint, sighup, sigbreak
15:34:52  <piscisaureus_>sigwinch
15:48:46  <CIA-95>node: Ben Noordhuis v0.6 * ra5c51b4 / (doc/template.html tools/doctool/doctool.js): docs: add rel="canonical" link to latest API docs - http://git.io/Gq3ojA
16:08:11  * CoverSlidequit (Ping timeout: 244 seconds)
16:13:01  <bnoordhuis>piscisaureus_: http://cloud9ide.posterous.com/vim-mode-for-advanced-editing-in-cloud9-ide <- that's pretty neat
16:15:03  * ericktjoined
16:15:55  * isaacsjoined
16:16:46  <piscisaureus_>yes sergi is pretty proud about that
16:17:12  <piscisaureus_>but it seems to not work right on firefox / window
16:17:13  <piscisaureus_>s
16:20:20  * dapjoined
16:22:37  * kuebkpart
17:34:51  * CoverSlidejoined
17:40:35  <ryah>hey guys im out of the office this week
17:40:55  <ryah>i'll be back saturday
17:45:35  <isaacs>ryah: oh, ok, thanks :)
17:45:48  <isaacs>was wondering where your scrum was :)
17:48:11  <piscisaureus_>ryah: can we release another node this week?
17:48:21  <piscisaureus_>ryah: or you will run in trouble with msft
17:48:27  <piscisaureus_>because 0.6.3 is not good
17:48:42  <piscisaureus_>ryah: does isaac know how to sign the msi?
17:48:48  <isaacs>i do not know
17:48:59  <ryah>no - i don't think we can do it this week
17:49:08  <piscisaureus_>i guess if igor builds it we can get a msft-signed msi
17:49:11  <ryah>i can do it on saturday
17:49:18  <piscisaureus_>ryah: then reply to claudios email
17:50:24  <ryah>bnoordhuis: you here?
18:00:11  <ryah>piscisaureus_: im sending ben instructions on how to build the signed msi
18:00:38  <ryah>he's in charge of doing the v0.6.4 release
18:00:41  * felixgequit (Quit: felixge)
18:00:45  <piscisaureus_>ryah: ok kewl
18:03:29  <ryah>sorry forgot about claudio's email
18:03:43  <ryah>hopefully ben can get this out in the next day or two
18:04:03  <ryah>alright - im going camping. later :)
18:07:26  * rmustaccjoined
18:15:03  * igorzijoined
18:15:24  * brsonjoined
18:16:58  * AvianFluquit (Quit: Leaving)
18:17:14  <igorzi>ryah bnoordhuis piscisaureus_: can we move the call 1 hour later today?
18:28:02  * pieternjoined
18:29:04  <piscisaureus_>igorzi: I'm fine with that
18:29:12  <piscisaureus_>igorzi: ryah won't be on the call
18:29:42  <piscisaureus_>igorzi: can you review https://gist.github.com/38095e87e6df011bcf58
18:32:50  <igorzi>piscisaureus_: lgtm
18:34:06  <piscisaureus_>igorzi: this solves the loop starvation issue
18:34:44  <igorzi>piscisaureus_: cool.. are we going to have an early release for it?
18:34:56  <piscisaureus_>igorzi: would be good
18:35:03  <piscisaureus_>igorzi: i also want some npm issues fixed
18:35:08  <piscisaureus_>I think that's gonna be fine then
18:35:15  * isaacsquit (Quit: isaacs)
18:37:19  <CIA-95>libuv: Bert Belder v0.6 * rfce9065 / (src/win/core.c src/win/req.c): Windows: avoid the loop starvation bug. Closes GH-154 - http://git.io/DExgqQ
18:51:02  <bnoordhuis>igorzi: sure
18:54:12  <bnoordhuis>piscisaureus_: does it make a difference if i compile the release build of node on xp or windows 7?
18:54:26  <bnoordhuis>(asking for this week's release)
18:59:04  <piscisaureus_>bnoordhuis: if you use the same compiler, no
19:01:47  <bnoordhuis>piscisaureus_: msvc 2k10 express?
19:02:08  <piscisaureus_>bnoordhuis: should be okay
19:02:19  <bnoordhuis>cool
19:02:23  <piscisaureus_>bnoordhuis: if you want I can get you superplus or whatever
19:02:32  <bnoordhuis>piscisaureus_: superplus?
19:02:43  <piscisaureus_>bnoordhuis: or ultra-enterprise
19:02:54  <piscisaureus_>or: with microsoft(tm) plus(r)
19:02:57  <piscisaureus_>whatever
19:03:01  <piscisaureus_>the most expensive one
19:03:17  <bnoordhuis>piscisaureus_: oh, i would like enterprise++ industrial grade gold edition
19:03:22  <piscisaureus_>yeah that
19:03:26  <piscisaureus_>superplus nitro edition
19:10:10  <bnoordhuis>piscisaureus_: i suppose that won't hurt
19:11:25  <piscisaureus_>bnoordhuis: get the insteller off skype
19:11:41  <bnoordhuis>is it... legal?
19:11:55  <piscisaureus_>bnoordhuis: yeah kind of
19:12:02  <bnoordhuis>"kind of"
19:12:10  <piscisaureus_>bnoordhuis: I can also get you an msdn ultimate subscription if you want to
19:12:22  <piscisaureus_>then you can get it legally yourself
19:12:24  <bnoordhuis>does that means i can downloadz all msdn softwarez?
19:12:28  <piscisaureus_>yes
19:12:34  <bnoordhuis>oh cool, i'd like that
19:12:37  * DrPizzajoined
19:12:37  <bnoordhuis>who's sponsoring that?
19:12:43  * DrPizzaquit (Excess Flood)
19:12:50  <piscisaureus_>bnoordhuis: what you then have to do is join #coapp
19:13:02  <bnoordhuis>what's #coapp?
19:13:10  <piscisaureus_>bnoordhuis: oh garrett is not there
19:13:35  <piscisaureus_>bnoordhuis: garrett gives away free msdn subscriptions to OSS authors
19:13:39  * DrPizzajoined
19:13:44  * DrPizzaquit (Excess Flood)
19:13:55  <bnoordhuis>piscisaureus_: i like him already
19:14:03  * isaacsjoined
19:14:18  <piscisaureus_>let me email him
19:14:22  * DrPizzajoined
19:14:22  * AvianFlujoined
19:14:25  <bnoordhuis>cool, thanks
19:14:28  * DrPizzaquit (Excess Flood)
19:15:23  * DrPizzajoined
19:18:08  * mikealquit (Quit: Leaving.)
19:27:44  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/issues/263#issuecomment-2905555 <- wat is hier wijsheid?
19:30:49  * DrPizzaquit (Remote host closed the connection)
19:34:16  <bnoordhuis>piscisaureus_: i think it's a matter of wrapping the SRWLOCK stuff in #ifdef guards?
19:34:18  * mikealjoined
19:40:07  <piscisaureus_>bnoordhuis: no just define _WIN32_WINNT to 0x0600
19:40:31  <piscisaureus_>bnoordhuis: but I am not sure while GetQueuedCompletionStatusEx works then, because that also requires 0x600
19:40:40  <isaacs>so, what time is the call? now? did i miss it?
19:40:48  <bnoordhuis>isaacs: in 20 minutes
19:41:01  <isaacs>ok, cool.
19:41:10  <isaacs>i think my skype name may have changed. i'm isaacschlueter, not isaac.schlueter
19:41:25  <isaacs>also: skype's download user experience flow is *profoundly* bad
19:41:26  <bnoordhuis>piscisaureus_: won't bumping _WIN32_WINNT break mingw + windows xp?
19:41:51  <bnoordhuis>isaacs: there is a lot of things profoundly bad with skype :)
19:42:55  <piscisaureus_>bnoordhuis: let's discuss at the call
19:43:12  <bnoordhuis>piscisaureus_: how profoundly bad skype is? okay
19:46:02  <CIA-95>node: Thomas Shinnick v0.6 * reba1f7b / lib/child_process.js : child_process: fix order of args to errnoException() - http://git.io/S5PQiA
19:53:19  <CIA-95>node: Roman Shtylman v0.6 * r1c62e80 / doc/api/addons.markdown :
19:53:19  <CIA-95>node: doc: add note about NODE_MODULE module_name requirement
19:53:19  <CIA-95>node: module_name needs to match the final binary name - http://git.io/C-A4VQ
20:00:21  <piscisaureus_>call?
20:00:37  <igorzi>yep
20:01:01  <piscisaureus_>bnoordhuis: call
20:04:04  <bnoordhuis>piscisaureus_: i'm there
20:04:19  <piscisaureus_>bnoordhuis: I know. I hard you :-)
20:04:32  <bnoordhuis>ieeuw
20:05:05  <piscisaureus_>heard
20:07:49  <piscisaureus_>isaacs: https://github.com/isaacs/npm/issues/1783
20:12:23  <bnoordhuis>https://github.com/joyent/node/issues?labels=windows&milestone=12&page=1&state=open
20:12:29  <bnoordhuis>https://github.com/joyent/node/issues?&milestone=12&page=1&state=open
20:12:33  <bnoordhuis>https://github.com/joyent/node/issues?milestone=12&page=1&state=open
20:14:21  * mralephjoined
20:18:38  <piscisaureus_>bnoordhuis: https://github.com/joyent/node/issues/2189
20:23:25  <bnoordhuis>piscisaureus_: https://github.com/joyent/node/pull/1652 <- did we ever merge this?
20:23:41  <piscisaureus_>bnoordhuis: no
20:26:25  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/issues/263 <- we forgot about this one
20:26:38  <piscisaureus_>oh
20:26:52  <piscisaureus_>bnoordhuis: get online :-)
20:26:55  <bnoordhuis>i am
20:27:05  <bnoordhuis>oh wait, skype crashed
20:27:17  <piscisaureus_>get ur ass online
20:30:42  * felixgejoined
20:30:42  * felixgequit (Changing host)
20:30:42  * felixgejoined
20:35:16  * mralephquit (Quit: Leaving.)
20:38:24  * piscisaureus_quit (Ping timeout: 245 seconds)
20:56:48  * mikealquit (Quit: Leaving.)
20:59:26  * brsonquit (Ping timeout: 255 seconds)
21:14:18  * piscisaureus_joined
21:22:27  <isaacs>bnoordhuis: any idea why constants.O_SYMLINK wouldn't be set on a linux machine?
21:22:49  <bnoordhuis>isaacs: because O_SYMLINK is a bsd-ism
21:22:57  <isaacs>ahk. ok
21:23:04  <isaacs>how do you open symbolic links on linux?
21:23:27  <bnoordhuis>isaacs: you mean to find out where the symlink points to?
21:23:44  <isaacs>no, i mean, get a file descriptor for it, so you can call futimes or fchmod or fchown on it
21:24:56  <bnoordhuis>isaacs: hmm, i don't know
21:25:39  <bnoordhuis>isaacs: well, you can use futimesat()
21:25:59  <isaacs>ahhhh....
21:26:00  <isaacs>O_NOFOLLOW
21:26:10  <bnoordhuis>no, that makes the open() call fail
21:26:25  <isaacs>oh, wait, no, that's the opposite :)
21:26:48  <bnoordhuis>you know, i don't know about futimes
21:27:12  <bnoordhuis>but fchmodat() and fchownat() with AT_SYMLINK_NOFOLLOW will let you update the link itself
21:27:32  <isaacs>right…. but… how do i open the symlink without opening the *target* of the symilnk?
21:27:39  <isaacs>also, this is in JS :)
21:28:02  <bnoordhuis>oh, like that - you know, i really think you can't
21:28:14  <bnoordhuis>afaik open() always dereferences the symlink
21:28:16  <isaacs>jeez, seriously?
21:28:46  * bnoordhuischecks the kernel source
21:30:54  <rmustacc>Yes, open has to dereference the symbolic link. It's returning you a file descriptor to a vnode.
21:32:12  <isaacs>rmustacc: any idea how to work around this? is it the same on solaris?
21:32:13  <bnoordhuis>yeah, that's what the linux kernel does
21:33:17  <isaacs>is there any way to get a file descriptor to the symbolic link itself?
21:33:31  <rmustacc>No, generally not.
21:33:45  <isaacs>hrm… ok...
21:33:51  <rmustacc>What are you trying to do exactly?
21:34:09  <isaacs>rmustacc: i'm trying to set the atime and mtime of a symbolic link.
21:34:31  <isaacs>lutimes isn't in eio, because it's not supported across platforms
21:34:50  <isaacs>so, i though, naively, that i could just open it with O_SYMLINK, and do an futimes on the fd
21:36:21  <rmustacc>Can you actually set those properties universally on symlinks?
21:36:42  <isaacs>well, i guess not.
21:38:04  <isaacs>maybe i'll just have to detect that.
21:38:16  * kuebk^joined
21:38:29  <rmustacc>Hmm, that feels like it should be doable.
21:39:07  <isaacs>i'll just make lutimes a no-op if O_SYMLINK isn't found, then
21:39:17  <isaacs>because i think that's what's raising the invalid arguments error.
21:40:07  <rmustacc>isaacs: utimensat(2)?
21:40:25  <bnoordhuis>isaacs: i committed a patch a couple of days that skips fs.lutimes() if constants.O_SYMLINK doesn't exist
21:40:34  <isaacs>bnoordhuis: k, great.
21:40:42  <isaacs>bnoordhuis: wait, what do you mean "skips"?
21:40:52  <isaacs>bnoordhuis: makes it a no-op, or undefined?
21:40:55  <rmustacc>isaacs: That function has a flag which does what you want.
21:41:00  <rmustacc>It's in POSIX 2008
21:41:10  <bnoordhuis>isaacs: undefined
21:41:13  <isaacs>rmustacc: but that's not exposed in node
21:41:14  <rmustacc>I know illumos/Linux has it.
21:41:26  <rmustacc>isaacs: Well, it could be perhaps.
21:41:44  <isaacs>rmustacc: right, but i mean, i'll have to work around this issue no matter what.
21:41:53  <rmustacc>Right.
21:42:04  <bnoordhuis>isaacs: err wait, that was in a test - never mind
21:42:20  <isaacs>if we implement lutimes in libuv using open(path, O_SYMLINK) on bsd, or utimensat(path, flags) on other unixes, then great.
21:42:31  <isaacs>but i need to make this work for 0.6.4
21:42:37  <isaacs>(pref. sooner)
21:42:58  <bnoordhuis>rmustacc: when did illumos get utimensat()? that old machine i work on doesn't have it
21:44:09  <rmustacc>bnoordhuis: The old machine you're running on isn't illumos.
21:44:21  <rmustacc>That's OpenSolaris 121.
21:44:31  <bnoordhuis>rmustacc: that's explains a lot...
21:44:34  <rmustacc>So Solaris added support for all those sometime between 121 and 147.
21:44:35  <bnoordhuis>*that
21:45:08  <rmustacc>We just don't have man pages for all the posix 2008 functions.
21:47:13  <rmustacc>And if you find something like that that you think we should have, but we don't, let me know.
21:48:38  <bnoordhuis>rmustacc: cool, will do
21:55:25  <isaacs>bnoordhuis: ok, so… prior to 0.6.3, lutimes was missing, then in 0.6.3, it's broken if constants.O_SYMLINK isn't defined, yes?
21:57:42  <bnoordhuis>isaacs: do you mean lchmod?
21:58:02  <isaacs>bnoordhuis: um… sure, that too, i guess?
21:58:07  <isaacs>i thought it was lutimes that does the open
21:58:14  <isaacs>or did that not land in core?
21:58:38  <bnoordhuis>isaacs: i don't think so
21:58:49  <isaacs>oh, i see… awesome, so, lchmod is only there if you have O_SYMLINK
21:58:52  <isaacs>otherwise it's missing
21:58:52  <bnoordhuis>yes
21:58:53  <isaacs>that's grea.t
22:15:16  * brsonjoined
22:39:32  * felixgequit (Quit: felixge)
22:45:18  <piscisaureus_>bnoordhuis: igorzi: there is a russian user that complains that when he calls child_process.exec('dir') the output is garbled. Windows doesn't output utf8 - it outputs stuff in the current code page. How can we solve that?
22:45:48  <piscisaureus_>I was thinking, maybe we can add a binding to MultiByteToWideChar and support "oem" encoding on windows
22:46:08  <piscisaureus_>that just converts / interprets whatever the active codepage on windows is
22:46:11  <piscisaureus_>thoughts?
22:47:26  <piscisaureus_>Because I can't make windows output stuff in utf8 reliably
22:47:47  <piscisaureus_>utf16 is supported but only for commands built into cmd.exe
22:48:04  <piscisaureus_>but many command line programs will still use whatever the active code page is
22:48:41  <bnoordhuis>piscisaureus_: can you find out what the current code page is?
22:49:58  <piscisaureus_>bnoordhuis: yes, GetCP(0
22:50:07  <piscisaureus_>er, GetCP()
22:50:53  <piscisaureus_>bnoordhuis: but MultiByteToWideChar also takes the option CP_ACP which just means "current code page"
22:51:24  <bnoordhuis>piscisaureus_: in that case can't you filter all output from the child process through MultiByteToWideChar?
22:51:51  <piscisaureus_>bnoordhuis: yes, but child processes could also just output utf8
22:51:58  <piscisaureus_>bnoordhuis: for example, if it is node
22:52:30  <bnoordhuis>piscisaureus_: right, i see what you mean
22:52:46  <bnoordhuis>a process either writes in the current code page or utf-8 and you don't know which
22:52:57  <piscisaureus_>bnoordhuis: exactly
22:53:19  <piscisaureus_>bnoordhuis: command line tools that come with windows usually write "current code page"
22:53:36  <piscisaureus_>bnoordhuis: cmd.exe itself is an exception, it can also output in utf16
22:53:52  <bnoordhuis>piscisaureus_: maybe we should have a win32 module
22:54:04  <bnoordhuis>this is not something that belongs in libuv
22:54:30  <piscisaureus_>bnoordhuis: I'm talking about node
22:54:49  <bnoordhuis>piscisaureus_: good
22:54:49  <piscisaureus_>(besides we're not very picky about what we put in libuv - but that's really beside the point)
22:55:06  <bnoordhuis>piscisaureus_: we'll strip it clean some day >:(
22:55:08  <piscisaureus_>bnoordhuis: but maybe we should have pluggable character encodings
22:55:24  <bnoordhuis>down that road lies madness
22:55:33  <piscisaureus_>really?
22:55:35  <bnoordhuis>this is the voice of experience speaking
22:56:17  <piscisaureus_>bnoordhuis: yeah character encodings sucks
22:56:38  <piscisaureus_>bnoordhuis: but it is important for correctly interacting with the OS
22:57:14  <bnoordhuis>piscisaureus_: what do you have in mind?
22:57:24  <piscisaureus_>bnoordhuis: mostly child processes and stdout
22:57:32  <bnoordhuis>go on
22:58:05  <piscisaureus_>I'm not following... I just described the child process issue
22:58:40  <piscisaureus_>and for stdout... people may not want to use utf8 when they redirect stuff to a file
22:59:01  <piscisaureus_>it depends obviously
22:59:14  <piscisaureus_>utf8 should be the default for everything
22:59:38  <bnoordhuis>okay, but what are you proposing to add?
22:59:50  <piscisaureus_>bnoordhuis: 'oem' encoding
22:59:59  <piscisaureus_>or, whatever you could call it
23:00:01  <bnoordhuis>piscisaureus_: how and where?
23:00:14  <piscisaureus_>hmm
23:02:10  <piscisaureus_>bnoordhuis: Buffer::New
23:02:31  <bnoordhuis>noooooo
23:02:56  <bnoordhuis>buffers shouldn't know about platform-specific encodings
23:03:51  <piscisaureus_>bnoordhuis: I just want this to work: process.exec('dir', {encoding:'oem'}, function(err, stdout, stderr) { ...
23:04:01  <piscisaureus_>s/process/child_process/
23:04:25  <bnoordhuis>piscisaureus_: so handle it in the child_process module
23:05:59  * sh1mmerjoined
23:06:08  <bnoordhuis>piscisaureus_: i say this with a reason
23:06:12  <piscisaureus_>bnoordhuis: but it's so backwards ... we'll end up recoding data twice
23:06:33  <piscisaureus_>bnoordhuis: oemcp ... utf8 ... ucs2_or_whatever_v8_ises
23:06:33  <bnoordhuis>handling it in the buffer code won't work for encodings like iso-2022-jp
23:06:50  <piscisaureus_>bnoordhuis: why?
23:07:02  <piscisaureus_>bnoordhuis: but anyway, I would just bind MultiByteToWideChar
23:07:09  * luxigoquit (Ping timeout: 245 seconds)
23:07:10  <bnoordhuis>it's a stateful encoding
23:07:33  <piscisaureus_>bnoordhuis: yeah, so ...? utf8 is also stateful
23:07:41  <piscisaureus_>we handle that in node
23:07:51  <bnoordhuis>utf-8 is not stateful
23:08:25  * luxigojoined
23:08:36  <piscisaureus_>yes it is... if your buffer ends with a partial utf8 character node will correctly resume it when it gets the rest
23:08:50  <piscisaureus_>that's the whole point of having setEncoding
23:09:27  <bnoordhuis>piscisaureus_: http://www.debian.org/doc/manuals/intro-i18n/ch-coding.en.html#s-stateful
23:10:18  <piscisaureus_>bnoordhuis: ok it doesn't matter, it's semantics
23:10:36  <piscisaureus_>utf8 requires us to keep state between encodings, and so does shift-jist
23:10:40  <piscisaureus_>*shift-jis
23:11:03  <bnoordhuis>believe me, it's not that simple
23:11:04  <igorzi>piscisaureus_: i might be missing the problem, but what about doing something like stdout.setEncoding('oem')
23:11:17  <piscisaureus_>igorzi: that's what I would like to do
23:11:33  <piscisaureus_>igorzi: but we also need it the other way around
23:12:07  <piscisaureus_>igorzi: for process.exec('dir', {encoding:'oem'}, function (er, stdout, stderr) { ...
23:12:29  <piscisaureus_>igorzi: we need stdout to be a string that actually has in there what 'dir' intended to output
23:14:10  <piscisaureus_>bnoordhuis: ok, we have to hack string_decoder
23:14:37  <igorzi>piscisaureus_: wouldn't that just do child.stdout.setEncoding('oem') internally?
23:14:48  <piscisaureus_>igorzi: yup
23:15:22  <igorzi>piscisaureus_: and 'oem' would only have a meaning on windows, right?
23:15:44  <piscisaureus_>igorzi: yeah, I suppose it should just be equivalent to utf8 on all modern unices
23:15:57  <piscisaureus_>unless we find an unix version that also uses different code pages
23:16:05  <piscisaureus_>I suppose unices used to do that too
23:17:21  <piscisaureus_>bnoordhuis: how does node-iconv deal with it?
23:18:31  <bnoordhuis>piscisaureus_: with what?
23:19:08  <piscisaureus_>bnoordhuis: how does it deal with stateful encodings and buffers that end with partial characters? Also, does it plug into string_decoder
23:19:10  <piscisaureus_>?
23:20:30  <bnoordhuis>piscisaureus_: it doesn't, it's the user's responsibility to reassemble chunks into a single buffer
23:20:40  <piscisaureus_>aah,meh
23:21:47  <piscisaureus_>bnoordhuis: I kind of think we string_decoder should be a factory for bindings
23:22:06  <piscisaureus_>(and we should have a string_encoder)
23:23:09  <bnoordhuis>piscisaureus_: maybe, let's discuss it tomorrow
23:24:32  <piscisaureus_>bnoordhuis: u wanna go to bed?
23:26:14  <bnoordhuis>piscisaureus_: not quite yet - but i don't want to do any deep thinking any more :)
23:26:48  <bnoordhuis>this thread-ifying of node is making my brains melt
23:27:14  <piscisaureus_>bnoordhuis: thinking about it, not supporting charsets is kind of bad for a networking tool... what if you want to download some website and it uses iso-1234-a ?
23:27:19  <piscisaureus_>#losing
23:27:23  <piscisaureus_>bnoordhuis: but ok
23:27:28  <piscisaureus_>bnoordhuis: what do you need help with
23:27:41  <piscisaureus_>bnoordhuis: my brains are still pretty icey
23:28:01  <bnoordhuis>piscisaureus_: nothing really, it's just going over the source and turning all statics and globals into thread locals
23:28:32  <piscisaureus_>bnoordhuis: are threadlocals going to be faster/slower than keeping a struct w/ state?
23:29:38  <bnoordhuis>piscisaureus_: slower-ish maybe
23:29:46  * kuebk^quit
23:30:03  <bnoordhuis>but that would be due to less locality of reference
23:30:29  <bnoordhuis>stuffing everything in one humongous struct didn't look all that appealing though
23:31:01  * mikealjoined
23:33:30  <piscisaureus_>bnoordhuis: will we have the option to disable threading at compile time?
23:33:59  <bnoordhuis>piscisaureus_: i suppose we could disable thread local storage
23:34:36  <bnoordhuis>but all statics/globals/etc will still go through one more pointer indirection
23:34:36  <piscisaureus_>well I suppose that maybe it will all just be fine
23:34:49  <piscisaureus_>bnoordhuis: huh, how?
23:35:08  <bnoordhuis>thread locals have to be either primitive types or pointers
23:35:19  <bnoordhuis>not complex objects like, oh i don't know, Persistent<String>
23:35:27  <piscisaureus_>bnoordhuis: ah ok
23:36:01  <piscisaureus_>bnoordhuis: but I suppose the compiler will happily remove the extra indirection\
23:36:25  <bnoordhuis>piscisaureus_: one can hope
23:36:38  <bnoordhuis>but in reality, no
23:36:41  * piscisaureus_changed nick to one
23:36:43  * onehopes
23:36:45  <bnoordhuis>heh
23:36:46  * onechanged nick to piscisaurues
23:36:57  <bnoordhuis>^ typo
23:37:30  <piscisaurues>bnoordhuis: ?
23:37:35  <piscisaurues>taipo?
23:37:41  <bnoordhuis>piscisaurUEs
23:37:59  * piscisaurueschanged nick to piscisaureus
23:38:02  <piscisaureus>thnxm
23:39:38  <bnoordhuis>piscisaureus: npm8
23:40:06  <piscisaureus>the m was actually a type
23:40:12  <piscisaureus>typo
23:40:16  <piscisaureus></3 mac keyboards
23:40:18  <bnoordhuis>i thought som
23:41:14  <bnoordhuis>but re tls: on most systems it's implemented as a movq [tls_base+thread_id], %rax
23:41:41  <bnoordhuis>so yeah, i don't think there's no escaping that extra indirection
23:42:05  <bnoordhuis>-don't
23:42:27  <piscisaureus>bnoordhuis: but how does a thread know it's id?
23:42:54  <piscisaureus>and does that mean there's a maximum to the number of threads?
23:43:32  <piscisaureus>oh wait the scheduler probably just sets it somewhere in the address space
23:43:52  <bnoordhuis>piscisaureus: yes
23:44:17  <piscisaureus>bleh
23:44:30  <bnoordhuis>i'm open to suggestions
23:44:38  <bnoordhuis>i've been playing with macro magic
23:44:47  <bnoordhuis>but that doesn't improve code readability
23:44:53  <piscisaureus>hehe
23:46:12  <piscisaureus>bnoordhuis: I don't understand why the scheduler can't just remap a part of the address space
23:46:27  <piscisaureus>so you have "lightweight" processes with default-shared memory
23:46:31  <piscisaureus>and some
23:46:38  <piscisaureus>thread-local memory
23:47:09  <bnoordhuis>yeah, that would be nice
23:49:26  <piscisaureus>bnoordhuis: but compiled addons need to get some sort of thread index
23:49:31  <piscisaureus>bnoordhuis: or struct
23:49:48  <piscisaureus>bnoordhuis: because on windows dl()ed DLLs cant use __declspec(thread)
23:50:06  <bnoordhuis>piscisaureus: no? windows--
23:57:02  <CIA-95>node: Ben Noordhuis isolates * r62944f8 / (18 files in 7 dirs): uv: upgrade to ef811b1 - http://git.io/sQewEA
23:57:03  <CIA-95>node: Ben Noordhuis isolates * r828ebb7 / (18 files in 2 dirs): isolates: isolate-ify the main loop - http://git.io/GEAglg
23:57:04  <CIA-95>node: Ben Noordhuis isolates * r60c0f91 / (4 files): isolates: add atexit() functionality for isolates - http://git.io/ioGM4g
23:57:04  <CIA-95>node: Ben Noordhuis isolates * rb573532 / (src/node.cc src/node_isolate.cc): isolates: add _newIsolate() and _joinIsolate() to process object - http://git.io/5qJ-6w
23:57:04  <CIA-95>node: Ben Noordhuis isolates * r386178e / (4 files): WIP - http://git.io/ikSqvg
23:57:17  <bnoordhuis>piscisaureus: ^ that's the kind of code you get
23:58:03  <piscisaureus>bnoordhuis: what happens if you don't turn Persistent<String> into Persistent<String>*
23:58:15  <piscisaureus>bnoordhuis: these are just pointers I think
23:58:34  <bnoordhuis>piscisaureus: try it, it won't compile
23:59:00  <piscisaureus>bnoordhuis: then why does
23:59:01  <piscisaureus>+static __thread uv_check_t gc_check;
23:59:04  <piscisaureus>work?
23:59:08  <piscisaureus>that's not a pointer
23:59:12  <bnoordhuis>because a struct is a primitive type