01:03:54  * piscisaureus_1joined
01:04:24  * piscisaureus_quit (Read error: Connection reset by peer)
01:25:01  * piscisaureus_joined
01:25:06  * piscisaureus_1quit (Read error: Connection reset by peer)
01:27:15  * piscisaureus_quit (Read error: Connection reset by peer)
01:27:16  * piscisaureus_1joined
01:31:11  <ryah>piscisaureus_1: yt?
01:32:46  <ryah>https://gist.github.com/1353813 <-- igorzi what do you think about this
01:33:01  * piscisaureus_joined
01:33:07  * piscisaureus_1quit (Read error: Connection reset by peer)
01:33:29  <ryah>piscisaureus_: what do you think about this https://gist.github.com/1353813
01:35:11  <piscisaureus_>heh
01:35:15  <piscisaureus_>it's a reverse macro
01:35:17  <piscisaureus_>but I like the idea
01:37:08  <piscisaureus_>ryah: I assume you will also do a shared uv_strerror with this?
01:37:36  <ryah>yeah - i'll do that now..
01:37:49  <piscisaureus_>it looks good
01:37:57  <piscisaureus_>it's a smart trick :-)
01:38:48  * ericktquit (Quit: erickt)
01:41:34  * piscisaureus_quit (Read error: Connection reset by peer)
01:41:38  * piscisaureus_joined
01:47:39  <CIA-95>libuv: Ryan Dahl master * rfd2b04d / (4 files in 4 dirs): Alternative errno strategy - http://git.io/SCGxrQ
01:49:55  <ryah>hopefully that doesn't break the win build
01:50:31  * ryahpulls on win7 with bated breath
01:52:50  <ryah>yey. works
01:53:37  * piscisaureus_quit (Read error: Connection reset by peer)
01:53:41  * piscisaureus_1joined
01:53:50  <piscisaureus_1>babysteps towards removing struct uv_err_s
01:54:11  <ryah>i dont find the uv_err_s so bad
01:54:30  <ryah>at least now we have static strerror strings on windows
01:54:48  <ryah>we should attempt to remove some of these error codes
01:54:50  <ryah>if possible
01:55:03  <piscisaureus_1>I don't care much about static errno strings, what we did seemed to work fine
01:55:06  <ryah>like ENOPROTOOPT
01:55:23  <piscisaureus_1>But it is good that we now actually can return an accurate description
01:55:49  <piscisaureus_1>even when the error was created with uv__set_artificial_error, or when it was mapped from a crt errno
01:55:55  * brsonquit (Quit: leaving)
01:56:06  <piscisaureus_1>some of them an go
01:56:09  <piscisaureus_1>not much though
01:56:58  <piscisaureus_1>why do we coalesce all getaddrinfo errors into EADDRINFO
01:57:35  <piscisaureus_1>oh hmm, we don't
01:57:45  <piscisaureus_1>but we also have EADDRINFO… weird
02:02:25  * mralephjoined
02:04:44  <piscisaureus_1>mraleph
02:07:15  <mraleph>piscisaureus_1
02:07:23  <CIA-95>libuv: Ryan Dahl master * r6d5ba42 / include/uv.h : Remove unnecessary errno - http://git.io/u9aycg
02:07:25  <CIA-95>libuv: Ryan Dahl master * r808bb8e / (src/unix/error.c src/uv-common.c src/win/error.c): Shared uv_strerror - http://git.io/Jdcjpw
02:07:40  <piscisaureus_1>mraleph: what do you think if W16? Does it make any sense?
02:08:43  <mraleph>w16?
02:08:49  <mraleph>ah
02:08:56  <mraleph>transactional memory thingy
02:09:06  <piscisaureus_1>yeah
02:09:09  <piscisaureus_1>https://github.com/sheremetyev/w16
02:09:33  <mraleph>well as soon as it runs with all optimizations turned on I can start thinking about it
02:10:14  <piscisaureus_1>my gut feeling says that automatic parallelization cannot work
02:10:33  <piscisaureus_1>but since this dude is apparently smart enough to hack on v8
02:10:46  <rmustacc>It's great until you have stuff with side effects that you can't take back.
02:11:30  <piscisaureus_1>yeah well
02:12:04  <piscisaureus_1>I guess v8 could detect that someone is trying to make an "unsafe" call into c-land
02:12:15  <piscisaureus_1>and then bail out of the parallelization
02:12:43  <rmustacc>Right, but the majority of the node APIs all fall into that...
02:13:18  <piscisaureus_1>that's true
02:13:44  <piscisaureus_1>probably for node it is not going to work
02:14:00  <piscisaureus_1>but I still find it amazing that he gets something done in the first place
02:15:22  <mraleph>it sounds more complicated then it really is.
02:15:27  * piscisaureus_1quit (Read error: Connection reset by peer)
02:15:29  * piscisaureus_joined
02:18:33  * dapquit (Quit: Leaving.)
02:18:33  <piscisaureus_>rmustacc: I also kind of think that when you're strict about async i/o it doesn't really matter
02:19:11  <piscisaureus_>rmustacc: you need to record the intent to do something, but only actually do it after you're sure you can commit your transactions
02:21:01  <piscisaureus_>reading is also safe as long as you don't throw away your read buffer
02:22:07  <ryah>it would be interesting to see a benchmark with a webserver
02:22:30  <ryah>one doing some calculations
02:22:37  <piscisaureus_>I think it would be pretty difficult to get that going
02:23:00  <piscisaureus_>but it certainly would be interesting
02:23:36  <piscisaureus_>but now google is going to hire this guy and put it in node.dart
02:23:41  <ryah>until i see something like that show signifigant improvement over kernel load balancing - i'm not wasting any thought on STM stuf
02:24:39  <piscisaureus_>ryah: !
02:24:53  <piscisaureus_>ryah: obviously you'll want to explore this for RyOS
02:25:18  <piscisaureus_>since kernel-level load balancing is a passed station
02:26:37  <ryah>non-blocking light weight processes is the way to concurrency heaven
02:28:40  <ryah>c1000k is solvable with that technique
02:29:02  <ryah>;)
02:29:26  <piscisaureus_>is C100k already solved?
02:29:38  <rmustacc>piscisaureus_: Right, but that means you can't take errors there into account for your transactions.
02:30:00  <ryah>piscisaureus_: yes
02:30:01  <rmustacc>Reading is never necessairly safe, because there could very well be side effects to reading.
02:30:10  <ryah>piscisaureus_: well - kind of
02:30:29  <piscisaureus_>rmustacc: actually I meant receiving data from a socket (since that's all we care about)
02:31:01  <ryah>c100k is possible with a few nodes and some tuning
02:31:03  <rmustacc>Well, there are still side effects there. There's limits to how much you can be willing to keep in userland for example.
02:31:31  <rmustacc>But the act of reading from a socket definitely has side effects.
02:31:40  <piscisaureus_>rmustacc: sure… but that does not matter much
02:31:44  <piscisaureus_>we're not the pope
02:32:24  <rmustacc>Then you'll just get wonky stuff from your tcp window size / congestion.
02:32:29  <piscisaureus_>but you don't want to throw away data because if one "thread"s actions get discarded then you don't want to lose the data you read form a socket
02:32:36  <piscisaureus_>nah
02:32:42  <piscisaureus_>it's just an extra layer of buffering
02:32:54  <rmustacc>Right, I'd never advocate throwing out data. Just makes it trickier.
02:32:57  <piscisaureus_>just make sure you don't cache infinite amounts of data
02:32:58  <rmustacc>Well, how much data do you buffer?
02:33:11  <piscisaureus_>prolly 64k or so
02:33:24  <piscisaureus_>maybe a little more, depending on the number of sockets you have open
02:34:12  <rmustacc>But then again, why do you need STM?
02:34:20  <piscisaureus_>I don't need it
02:34:37  <piscisaureus_>I was just wondering if w16 makes any sense :-)
02:35:00  <rmustacc>Right.
02:35:19  <piscisaureus_>then I was thinking about if it would be usable at all in a side-effect rich environment like node
02:35:35  <piscisaureus_>rmustacc: that's all. sorry to bother you
02:35:52  <rmustacc>Nah, you're not bothering me.
02:36:10  <rmustacc>It's a curious thing to think about. That's why I brought up those questions.
02:40:09  * dapjoined
02:47:56  <ryah>piscisaureus_: no way to tell without some benchmarks
02:48:05  <ryah>but very doubtful :)
02:49:19  <piscisaureus_>yep. not going to happen anytime soon
02:49:37  <piscisaureus_>but I need to have it in my os
02:49:48  <piscisaureus_>since BeOS > RyOS
02:50:28  <rmustacc>Especially since BeOS already exists.
02:51:20  <piscisaureus_>So far I am #winning :p
02:51:35  <ryah>the STM stuff is really bullshit. people need to just design proper multicore applications
02:51:56  <ryah>we know how to do that - so why not just do that?
02:52:44  <piscisaureus_>It's no fun
02:52:51  <piscisaureus_>there's no complication
02:53:25  <ryah>except that no one has actually presented users with a decent way of doing it
02:54:01  <ryah>i think there are enough unknowns to make it complex
02:54:10  <ryah>no need to investigate magic
02:54:11  * mralephquit (Quit: Leaving.)
02:55:09  <ryah>STM supporters think it's intractable to actually design distributed programs - and thus need trickery to accomplish it
02:56:17  <ryah>but we know it's quite possible. small units. message passing.
02:56:28  <piscisaureus_>erlang
02:56:52  <ryah>yes, erlang is the right model but bad implementation
02:57:22  <ryah>maybe not the right model - but on the right track
02:57:29  * dapquit (Quit: Leaving.)
02:58:40  <ryah>the one thing that bothers me about non-blocking processes is the TCP flow control
02:59:02  <ryah>it's hard to get right. it requires a lot of user interaction
03:00:23  <piscisaureus_>ryah: the problematic part being, how to back off when the write buffer is full?
03:00:30  <ryah>yeah
03:00:42  <piscisaureus_>you need to build a graph
03:00:48  <ryah>if you block you just block :)
03:00:56  <ryah>the flow control is automatic
03:01:07  <ryah>it's rather nice
03:06:43  <piscisaureus_>have you built a linux kernel that can handle 1M threads already?
03:09:43  * isaacsquit (Quit: isaacs)
03:11:30  <piscisaureus_>you know what. me sleepy. bye
03:11:32  * piscisaureus_quit (Quit: Leaving.)
03:29:16  * ericktjoined
05:57:14  * ericktquit (Quit: erickt)
05:57:41  * mikealjoined
06:02:12  * DrPizzaquit (Read error: Operation timed out)
06:02:31  * DrPizzajoined
06:03:54  * mikealquit (Quit: Leaving.)
06:06:27  * mikealjoined
06:22:39  * isaacsjoined
06:33:04  * isaacsquit (Quit: isaacs)
08:24:53  * kuebkjoined
09:11:17  * mralephjoined
09:59:07  * mralephquit (Quit: Leaving.)
10:25:02  * bnoordhuisjoined
11:05:36  * piscisaureus_joined
11:11:03  * piscisaureus_quit (Quit: Leaving.)
11:12:22  * piscisaureus_joined
11:12:28  * piscisaureus_quit (Client Quit)
11:14:03  * piscisaureusjoined
11:19:47  * igorziquit (Ping timeout: 265 seconds)
11:48:40  * piscisaureusquit (Ping timeout: 255 seconds)
12:28:25  <CIA-95>node: Ben Noordhuis master * r8dd4fcb / src/fs_event_wrap.cc :
12:28:25  <CIA-95>node: fs: don't close uninitialized fs.watch handle
12:28:25  <CIA-95>node: Makes uv_close() assert because the uv_fs_event_t struct contains garbage. - http://git.io/6bNUXA
13:03:02  * piscisaureusjoined
14:21:52  <CIA-95>libuv: Ben Noordhuis master * r4889644 / include/uv.h : Fix warning: comma at end of enumerator list - http://git.io/4eK8xw
14:21:53  <CIA-95>libuv: Ben Noordhuis master * r61ef8cc / src/unix/freebsd.c : freebsd: remove unused variables - http://git.io/0klFyQ
15:02:20  * wankdankerjoined
15:17:12  * CoverSlidejoined
15:26:56  <CIA-95>libuv: Ben Noordhuis master * r04dfd46 / src/unix/error.c : unix: remove unused uv__translate_lib_error() function - http://git.io/feP7IQ
15:48:42  <bnoordhuis>sigh, getaddrinfo() on sunos returning EAI_MEMORY
15:49:44  <piscisaureus>rofl
16:10:30  * isaacsjoined
16:14:08  * kuebkpart
16:40:52  <CIA-95>libuv: Ben Noordhuis master * r26806e2 / src/unix/core.c :
16:40:52  <CIA-95>libuv: sunos: add getaddrinfo() compatibility hack
16:40:52  <CIA-95>libuv: getaddrinfo() returns EAI_MEMORY if strlen(hostname) >= MAXHOSTNAMELEN - http://git.io/73Ai6Q
16:41:55  <CIA-95>node: Ben Noordhuis master * re34a2c1 / (10 files in 5 dirs): uv: upgrade to 26806e2 - http://git.io/FYJ2bw
16:43:24  <rmustacc>bnoordhuis: Why distinguish between the different EAI_MEMORY cases?
16:44:03  <bnoordhuis>rmustacc: because it needs to be reported as something else thanks to some node quirk
16:44:17  <rmustacc>bnoordhuis: Ah, okay.
16:45:52  * ericktjoined
16:55:02  <CIA-95>node: Ryan Dahl v0.4 * r6bf0310 / (10 files in 4 dirs): Upgrade V8 to - http://git.io/5Nkbfg
16:59:38  <ryah>bnoordhuis: i want to try to remove as many errnos as possible
17:00:03  <ryah>bnoordhuis: there are some that can be combined i think
17:00:06  <bnoordhuis>i applaud that effort
17:00:47  <ryah>e.g. ENOTSOCK and ENOTSUP ?
17:01:05  <bnoordhuis>that's not the same thing
17:01:06  <ryah>EPROTONOSUPPORT <-- questionable if that would ever arrise
17:03:49  <ryah>bnoordhuis: also - let's maintain errno value even as we delete and combine them
17:04:00  <ryah>bnoordhuis: just letting you know my intentions :)
17:04:19  <bnoordhuis>ryah: cool, sounds like a plan
17:04:34  <bnoordhuis>there are a couple that should never happen
17:04:39  <bnoordhuis>and if they do, it's a libuv bug
17:04:47  <bnoordhuis>EDESTADDRREQ
17:05:00  <ryah>yes, for example
17:05:04  <bnoordhuis>EISCONN <- we should prevent that from happening
17:05:17  <piscisaureus>EPROTONOSUPPORT -> no ipv6 stack?
17:05:18  <ryah>EAGAIN is questionable too
17:05:39  <piscisaureus>or do we get EEAFNOSUPPORT
17:05:48  <piscisaureus>maybe we can just turn all that into ENOSYS
17:06:12  <piscisaureus>EGAIN is returned when libuv returns an empty buffer
17:06:23  <piscisaureus>maybe also when we call uv_accept when there is no pending connection
17:08:29  <ryah>oh yeah
17:12:28  * dapjoined
17:13:37  <ryah>piscisaureus: https://github.com/joyent/node/issues/2065
17:20:28  * kuebk^joined
17:36:31  <piscisaureus>ryah: hmm I don' really feel like setting up some shitty eclipse project :-/
17:37:26  <ryah>piscisaureus: maybe ben can do it :)
17:37:46  <piscisaureus>haha
17:37:54  <ryah>bnoordhuis: https://github.com/joyent/node/issues/2065
17:38:13  <bnoordhuis>urgh
17:38:32  <bnoordhuis>haven't had eclipse open for weeks, i'm using vim these days
17:38:47  <piscisaureus>do you have eclipse on windows?
17:38:52  <bnoordhuis>no
17:39:07  <piscisaureus>bnoordhuis: what eclipse distro should I download btw?
17:39:31  <bnoordhuis>piscisaureus: the c/c++ developer one
17:39:44  <bnoordhuis>and maybe add the js support later on
17:44:04  <bnoordhuis>[00:53|% 100|+ 288|- 3]: Done <- sunos, not too bad
17:44:31  <bnoordhuis>[01:54|% 100|+ 284|- 7]: Done <- freebsd
17:45:10  <ryah>pstack on sunos is going to support js frames
17:45:13  <ryah>:D
17:45:26  <bnoordhuis>yay, good news
17:45:57  <bnoordhuis>https://github.com/joyent/node/issues/2061 <- i wasn't able to reproduce with 32 or 64 bit builds
17:46:15  <ryah>bnoordhuis: me neither
17:46:30  <ryah>bnoordhuis: i have yet to go through the assembly to determine if the stat offset is different
17:46:47  <ryah>broken:
17:46:48  <ryah>0x0000000100256f9e <uv_fs_stat+302>: mov -0x10(%rbp),%rax
17:46:48  <ryah>0x0000000100256fa2 <uv_fs_stat+306>: mov $0x48,%rcx
17:46:48  <ryah>0x0000000100256fac <uv_fs_stat+316>: add %rcx,%rax
17:46:48  <ryah>0x0000000100256faf <uv_fs_stat+319>: mov -0x30(%rbp),%rcx
17:46:51  <ryah>0x0000000100256fb3 <uv_fs_stat+323>: mov %rcx,%rdi
17:46:53  <ryah>0x0000000100256fb6 <uv_fs_stat+326>: mov %rax,%rsi
17:46:56  <ryah>0x0000000100256fb9 <uv_fs_stat+329>: callq 0x100285a00 <dyld_stub_stat$INODE64>
17:46:59  <ryah>working:
17:47:02  <ryah>0x0000000100304f03 <uv_fs_stat+238>: mov -0x20(%rbp),%rsi
17:47:04  <ryah>0x0000000100304f07 <uv_fs_stat+242>: add $0x48,%rsi
17:47:07  <ryah>0x0000000100304f0b <uv_fs_stat+246>: mov -0x10(%rbp),%rdi
17:47:09  <ryah>0x0000000100304f0f <uv_fs_stat+250>: callq 0x1003281e4 <dyld_stub_stat$INODE64>
17:48:07  * igorzijoined
17:49:20  <bnoordhuis>the broken one is 16 bytes larger?
17:49:52  <igorzi>ryah bnoordhuis piscisaureus: https://github.com/joyent/node/issues/2065 seems to be similar to https://github.com/joyent/node/issues/1961
17:50:42  <igorzi>i can take a look at https://github.com/joyent/node/issues/2065 (i already have eclipse)
17:51:00  <bnoordhuis>looks similar yes
17:51:34  <ryah>igorzi: please do!
17:51:58  <igorzi>ryah: ok.. i'll investigate it
18:10:28  * brsonjoined
18:13:31  * igorziquit (Ping timeout: 265 seconds)
18:22:16  <piscisaureus>I like how eclipse is a zip file
18:24:45  <ryah>yeah, what's wrong with zip files?
18:24:56  <ryah>what's the purpose of the MSI?
18:25:13  * piscisaureuse-mails Bill Gates
18:26:18  <indutny>:)
18:26:40  <indutny>I like how Chrome is a dmg file
18:26:53  <indutny>what's so wrong about installing apps in one similar way
18:27:10  <indutny>packet manager will be better than msi and dmg, of course
18:30:26  <piscisaureus>indutny: http://coapp.org/
18:31:30  * igorzijoined
18:31:36  <indutny>piscisaureus: http://downloads.coapp.org/repository/activedevelopment.html
18:31:37  <indutny>:)
18:31:53  <piscisaureus>indutny: I was just pinging the maintainer about that
18:33:52  <igorzi>ryah piscisaureus bnoordhuis: i won't be able to make the call today
18:33:58  <ryah>igorzi: ok
18:34:19  <piscisaureus>indutny: coapp.org/feed
18:34:46  <ryah>What is a .dmg file anyway?
18:34:53  <ryah>it's somehow a disk image?
18:34:55  <piscisaureus>disk image
18:35:04  <piscisaureus>I think it's more like a zip file
18:37:09  <ryah>are there any 32bit apple boxes out there?
18:37:29  <ryah>x86 i should say
18:37:49  <indutny>piscisaureus: oh, node.js is available on coapp
18:38:02  <piscisaureus>yep
18:38:08  <piscisaureus>although I never tried it
18:39:00  * AvianFluquit (Remote host closed the connection)
18:40:20  <ryah>im going to do binaries for osx in v0.6.1
18:40:28  <ryah>objections?
18:40:41  <piscisaureus>ryah: no
18:40:50  <piscisaureus>ryah: but are you sure they run on all os x versions?
18:41:41  <ryah>nope
18:42:33  <ryah>http://tinyclouds.org/nodejs-v0.6.0-26-g0fa3cf9.dmg
18:42:37  <ryah>^-- can you try this
18:42:53  <piscisaureus>probably
18:44:03  * piscisaureus_joined
18:44:12  * piscisaureusquit (Read error: Connection reset by peer)
18:45:12  <piscisaureus_>ryah: but where will it install to?
18:45:31  <ryah> /usr/local/nodejs
18:46:10  <indutny>em
18:46:17  <indutny>do you think anyone need it?
18:46:32  <indutny>having node as homebrew package is much better
18:46:38  <piscisaureus_>ryah: it works
18:46:41  <ryah>many people don't have xcode
18:46:43  <piscisaureus_>but I am on lion
18:46:43  * indutnybuilds and installs node himself
18:46:46  <ryah>piscisaureus_: do you have lion?
18:46:46  <indutny>aah
18:46:53  <indutny>xcode
18:46:56  <piscisaureus_>I think you have lion too right?
18:46:59  <ryah>no
18:47:04  <piscisaureus_>Ok
18:47:08  <ryah>i have 10.6.8
18:47:10  <piscisaureus_>I will try to run tests
18:47:14  <piscisaureus_>with it
18:47:27  <ryah>at least it runs on two computers :)
18:49:05  <piscisaureus_>test-buffer fails
18:49:55  <ryah>hm
18:50:28  <ryah>is there a point is distributing a .dmg ? isn't .pkg sufficent?
18:50:39  <piscisaureus_>heh
18:50:44  <piscisaureus_>probably not
18:51:18  <piscisaureus_>aren't these dmg's just so people can drag the pkg somewhere and then OMG it works
18:51:59  <ryah>i think we can just distribute the .pkg
18:52:52  <ryah>piscisaureus_: any idea why test-buffer.js fails?
18:53:09  <piscisaureus_>I think I made a mistake actually
18:53:42  <ryah> /usr/local/bin/node ~/projects/node/test/simple/test-buffer.js
18:53:50  <ryah>% echo $?
18:53:51  <ryah>0
18:53:59  <piscisaureus_>piscisaureus3:node piscisaureus$ git checkout g0fa3cf9
18:54:00  <piscisaureus_>error: pathspec 'g0fa3cf9' did not match any file(s) known to git.
18:54:24  <piscisaureus_>ryah: my tests were outdated
18:56:36  <piscisaureus_>[02:11|% 100|+ 315|- 3]: Done
18:56:44  <piscisaureus_>Test set from master
18:56:56  <piscisaureus_>ryah: ^
18:57:34  <ryah>ok
18:57:45  <piscisaureus_>I guess it works just fine
19:00:15  <bnoordhuis>call?
19:02:58  <piscisaureus_>I assume
19:03:08  <bnoordhuis>ryah: ^
19:03:08  <piscisaureus_>Igor won't be on the call
19:03:42  <ryah>yep one sec
19:05:16  <CIA-95>libuv: Ben Noordhuis master * r224584c / (3 files in 2 dirs): sunos: check that event ports supports fs watching - http://git.io/wxeykg
19:11:19  <CIA-95>node: Ben Noordhuis master * r0757c73 / (3 files in 2 dirs): uv: upgrade to 224584c - http://git.io/8Y6knw
19:13:43  * piscisaureus_quit (Quit: Leaving.)
19:16:26  * piscisaureusjoined
19:18:38  <piscisaureus>ahh, back into my old and beloved Microsoft® Windows™
19:19:23  <ryah>question marks intentional?
19:19:49  <piscisaureus>They were supposed to read (r) and TM
19:20:34  <piscisaureus>I assume irssi doesn't support unicode
19:21:32  <bnoordhuis>xchat however does
19:22:14  <piscisaureus>whatever I use on mac does too
19:22:29  <piscisaureus>although it once made me enter my password in #node.js
19:22:37  <piscisaureus>by suddenly switching focus
19:22:54  <bnoordhuis>i don't understand why benchmark/io.js uses 50% cpu...
19:23:08  <bnoordhuis>the thread overhead can't be that massive, can it?
19:23:10  <piscisaureus>because it mallocs
19:23:15  <piscisaureus>and yes the thread overhead
19:23:35  <piscisaureus>well maybe not because it mallocs
19:24:16  <bnoordhuis>i'm going to profile it, i want to understand
19:25:24  <piscisaureus>bnoordhuis: the real question is, why doesnt it use 100% cpu
19:25:36  <piscisaureus>the benchmark is not actually using the disk
19:26:38  <piscisaureus>bnoordhuis: also, https://github.com/joyent/node/issues/2020
19:27:44  <piscisaureus>io.js perfomance on window is pretty pathetic btw
19:27:46  <piscisaureus>8 mb/s
19:27:50  <piscisaureus>I should profile it
19:28:42  <bnoordhuis>yeah, i've seen #2020
19:31:40  * AvianFlujoined
19:32:51  <piscisaureus>hmm I was still on my domains branch
19:35:07  <piscisaureus>hmm without domains it's still only 24mb/s
19:40:38  <piscisaureus>Spends most of the time in thread synchronisation
19:40:43  <piscisaureus>I bet I can make it better
19:54:24  <bnoordhuis>Wrote 1048576000 bytes in -0.731630s using 8192 byte buffers: -1366.811093mB/s <- heh
19:55:02  <bnoordhuis>that's why you don't use doubles for timestamps
20:09:36  <piscisaureus>OMG
20:10:20  <piscisaureus>Look closely at the java source code at https://github.com/joyent/node/issues/2065
20:10:42  <rmustacc>Hahaha
20:10:59  <rmustacc>outputGobbler gets the inputStream
20:11:19  <piscisaureus>rmustacc: \o/ you made it through the first round!
20:11:49  <piscisaureus>But
20:11:51  <piscisaureus>"On Mac this works perfectly."
20:11:59  <piscisaureus>How the fuck is that even possible
20:12:44  <piscisaureus>on mac, do fd 0 and fd 1 refer to the same stream?
20:15:31  <CIA-95>node: Ben Noordhuis master * r78ca555 / benchmark/io.c :
20:15:31  <CIA-95>node: bench: optimize io.c benchmark
20:15:31  <CIA-95>node: Use static buffers. Most clock ticks were spent in malloc() and free() instead
20:15:31  <CIA-95>node: of read() and write().
20:15:31  <CIA-95>node: Fix measurements. Really fast runs would result in bogus results like:
20:15:31  <CIA-95>node: Wrote 1048576000 bytes in -0.731630s using 8192 byte buffers: -1366.811093mB/s - http://git.io/tTrvRg
20:24:32  * igorzi_joined
20:27:43  <igorzi_>piscisaureu: you looking at https://github.com/joyent/node/issues/2065 ?
20:29:06  <piscisaureus>yeha
20:34:12  * brsonquit (Ping timeout: 240 seconds)
20:34:25  * brsonjoined
20:35:16  <bnoordhuis>ryah: https://github.com/joyent/node/pull/1934 <- seems simple to fix by doing uv_unref() in uv_tty_init() but is it the proper solution?
20:36:32  * mralephjoined
20:36:42  <piscisaureus>igorzi_: actually, there is a problem with stdio
20:36:56  <piscisaureus>igorzi: libuv thinks the pipe is overlapped w/o iocp
20:37:06  <piscisaureus>igorzi_: but I think it should do threaded writes
20:40:33  * AvianFlu_joined
20:40:49  * AvianFluquit (Read error: Connection reset by peer)
20:40:57  * AvianFlu_changed nick to AvianFlu
20:41:51  <igorzi_>piscisaureus: hmm, yeah the only time it should be overlapped is with ipc=1
20:42:12  <piscisaureus>igorzi: well there's this test that tests for SYNCHRONOUS_IO_NONALERT etc
20:42:16  <piscisaureus>maybe the problem is there
20:42:30  <igorzi_>piscisaureus: hmm
20:43:24  <piscisaureus>igorzi_: hmm. let me try to figure it out
20:45:11  <igorzi_>piscisaureus: maybe we should just get rid of that test, and assum non-overlapped (unless ipc=1)
20:45:16  <igorzi_>*assume
20:52:55  <igorzi_>ryah: https://github.com/igorzi/node/commit/bdc221b975d1d8999ceefb81cf04d4b9c0e29a42
20:52:57  <igorzi_>ryah: ^-- this adds version, etc to node.exe
20:53:09  <igorzi_>ryah: can you fill in "LegalCopyright" in node.rc? and verify all other fields?
20:54:08  <ryah>igorzi_: why two msi directories?
20:54:40  <igorzi_>ryah: there should be just one.. i just moved tools/msi to tools/msvs/msi
20:54:45  <ryah>tools/msvs/msi/msi/getnodeversion.py ?
20:54:59  <ryah>https://github.com/igorzi/node/blob/bdc221b975d1d8999ceefb81cf04d4b9c0e29a42/tools/msvs/msi/msi/getnodeversion.py
20:55:34  <igorzi_>ryah: ahh ok, that's wrong.. i'll fix it
21:06:35  <igorzi_>ryah: https://github.com/igorzi/node/commit/31710f32b884847735938eb0d50dc1c3553217cd
21:11:22  <piscisaureus>rmustacc: actually the java code wasn't wrong in the way we though
21:11:49  <piscisaureus>rmustacc: it is still wrong, because they should've used StreamGobbler.start() instead of .run()
21:14:16  <piscisaureus>igorzi_: I made a mistake about that flag as well. Somehow the debugger pointed to the wrong line.
21:14:23  <ryah>igorzi_: what should LegalCopyright contain?
21:14:38  <piscisaureus>Maybe because I was running a release build that was a little too optimized
21:14:43  <ryah>presumably "Copyright Joyent, Inc. and other Node contributors."
21:14:47  <ryah>?
21:16:40  <piscisaureus>ryah: LegalCopyright Copyright notices that apply to the file. This should include the full text of all notices, legal symbols, copyright dates, and so on. This string is optional.
21:17:45  <ryah>where does it appear?
21:17:59  <igorzi_>from what i've seen it's usually a 1-liner (for example, notepad.exe is "Microsoft Corp, all rights reserved", notepad++.exe is "Copyleft 1998-2006 by Don HO")
21:18:13  <ryah>ok
21:18:22  <igorzi_>ryah: right click on node.exe, Properties->Details
21:19:52  <igorzi_>piscisaureus: but is it doing non-overlapped or overlapped io?
21:20:01  <piscisaureus>igorzi_: non-overlapped
21:20:41  <ryah>igorzi_: this commit fixes https://github.com/joyent/node/issues/2059 ?
21:20:55  <piscisaureus>igorzi: I was confused by the fact that it break'ed inside the branch for overlapped i/o
21:20:59  <igorzi_>ryah: yep
21:21:18  <piscisaureus>igorzi_: but that seems to be a debugger error
21:22:33  <CIA-95>node: Igor Zinkovsky master * r09329e7 / (12 files in 4 dirs):
21:22:33  <CIA-95>node: Add node.rc with a version resource
21:22:33  <CIA-95>node: Fixes #2059 - http://git.io/tgLylQ
21:23:59  <piscisaureus>ryah: on mac, does node start the repl when stdio is redirected to a pipe?
21:24:15  <piscisaureus>https://github.com/joyent/node/issues/2065 seems to suggest that
21:24:30  <rmustacc>piscisaureus: Ah, okay.
21:32:30  <ryah>piscisaureus: ?
21:32:39  * igorziquit (Ping timeout: 265 seconds)
21:33:03  <piscisaureus>ryah: ok so this dude says he writes 2+2 to a node process
21:33:07  <piscisaureus>and then gets something back
21:33:16  <piscisaureus>which only works when the repl is started
21:33:20  <ryah>[email protected]:~/projects/node% cat > x.js
21:33:20  <ryah>console.log('hello world')
21:33:20  <ryah>[email protected]:~/projects/node% node x.js|cat
21:33:20  <ryah>hello world
21:33:20  <ryah>[email protected]:~/projects/node%
21:33:46  <piscisaureus>ryah: ok, how is that for: `echo 1+1 | node` ?
21:34:23  <ryah>[email protected]:~/projects/node% echo 'console.log(1+1)' | node
21:34:23  <ryah>2
21:34:24  <ryah>[email protected]:~/projects/node%
21:34:28  <piscisaureus>aha
21:34:32  <piscisaureus>so it starts the repl
21:34:45  <ryah>O_o
21:34:52  <piscisaureus>not on windows
21:35:02  <piscisaureus>D:\node3\Release>echo 2+2 | node
21:35:02  <piscisaureus>D:\node3\Release>
21:35:15  <ryah>2+2 doesn't do anythign
21:35:22  <ryah>you must console log
21:35:40  <piscisaureus>that works
21:35:58  <piscisaureus>ryah: well
21:36:00  <piscisaureus>D:\node3\Release>node
21:36:00  <piscisaureus>> 2+2
21:36:00  <piscisaureus>4
21:36:00  <piscisaureus>>
21:36:11  <piscisaureus>that does work
21:36:48  <ryah>.pkg files are more horrible than previous imagined
21:50:48  <igorzi_>making stdout.destroy a no-op broke https://github.com/joyent/node/blob/master/test/simple/test-tty-stdout-end.js
21:51:03  <igorzi_>ryah piscisaureus: --^
21:52:21  <ryah>igorzi_: test passes for me
21:52:21  <igorzi_>maybe this indicates that people do this in their apps?
21:53:33  <ryah>% ./node test/simple/test-tty-stdout-end.js
21:53:33  <ryah>Trace: stdout closed
21:53:33  <ryah> at WriteStream.<anonymous> (/Users/ryan/projects/node/test/simple/test-tty-stdout-end.js:29:11)
21:53:36  <ryah> at WriteStream.emit (events.js:67:17)
21:53:39  <ryah> at Array.0 (net.js:300:10)
21:53:41  <ryah> at EventEmitter._tickCallback (node.js:192:40)
21:54:20  <ryah>hm
21:54:31  <igorzi_>ryah: i wonder how.. we have this code: "stdout.end = stdout.destroy = stdout.destroySoon = function() { };"
21:55:00  <ryah>yeah.. unclear
21:55:17  <ryah>where is that code?
21:55:18  <piscisaureus>ryah: no
21:55:28  <piscisaureus>does that also work when redirected?
21:55:30  <CIA-95>libuv: Frank Denis master * r9322dd1 / include/uv.h : Use (void) for a function taking no arguments - fix gcc -Wstrict-prototypes - http://git.io/k_PVgw
21:56:21  <igorzi_>https://github.com/joyent/node/blob/master/src/node.js#L281
21:57:16  <ryah>sorry i think i hadn't recompiled node for a while
21:57:19  <ryah>it's broken now
21:58:18  * bnoordhuisbids everyone a good night
21:58:24  <ryah>bnoordhuis: night
21:58:33  <piscisaureus>bnoordhuis: so early. night
21:58:41  <bnoordhuis>piscisaureus: you should too
21:58:47  <igorzi_>bnoordhuis: night
21:58:50  <piscisaureus>I have to go home first
21:59:17  <igorzi_>ryah: do we get rid of the test? or only make stderr non-destroyable?
21:59:41  <ryah>igorzi_: let me read up on the history...
22:00:38  * bnoordhuisquit (Read error: Operation timed out)
22:00:44  <indutny>newest v8 is so slow on my projects
22:00:46  <ryah>it comes from https://github.com/joyent/node/commit/0a51a6d3ac0818244ab4d73a72a541d3e8b65110
22:01:18  <piscisaureus>ryah: the reason was that .end would do shutdown()
22:01:19  <indutny>mraleph: even is slower on things I'm working on
22:01:28  <ryah>oh yeah
22:01:30  <piscisaureus>ryah: which would do ENOTSOCK
22:01:39  <igorzi_>so, this means that people have "process.stdout.end()" in their code
22:01:40  <indutny>mraleph: 3.1.8 is much faster
22:01:42  <igorzi_>?
22:02:38  <mraleph>indutny: is that still that autogenerated thingy?
22:02:43  <ryah>igorzi_: no - i think it was just to make sure we weren't calling shutdown on ttys
22:02:55  <indutny>mraleph: yes
22:03:06  <piscisaureus>igorzi_: it means that at some point someone tried it :-)
22:03:07  <indutny>mraleph: I optimized code
22:03:16  <ryah>http://markmail.org/message/y2fgxjhpksv4zzpb
22:03:20  <indutny>mraleph: it generates much less now, but still 2-3 times slower
22:03:35  <mraleph>indutny: try reverting r7283 and recompiling
22:03:51  <mraleph>indutny: I wonder if that gives the speed back.
22:03:58  <ryah>igorzi_: i think we should disable this test
22:03:58  <indutny>mraleph: ok
22:04:01  <piscisaureus>svn is so nice
22:04:17  <piscisaureus>you should just change it to check that it does what you want
22:04:35  <piscisaureus>process.stdout.end();
22:04:35  <piscisaureus>process.stdout.write("yep, it still works")
22:05:54  <indutny>mraleph: I think it still will be slow
22:06:04  <indutny>mraleph: as I can guess from commit's message: http://code.google.com/p/v8/source/detail?r=7283
22:06:14  <piscisaureus>igorzi, ryah: although, what about:
22:06:14  <piscisaureus>process.stdout.end("this is written to the console") ] :-)
22:06:25  <indutny>mraleph: because previous version of autogenerated code wasn't using functions at all
22:06:27  <ryah>piscisaureus: where?
22:06:40  <piscisaureus>ryah: that should work, right?
22:06:48  <ryah>piscisaureus: *shrug*
22:07:13  <ryah>stdout.end = function() { throw new Error("WHY ARE YOU CLOSING STDOUT??") }
22:07:27  <piscisaureus>because of Stream.pipe
22:08:00  <mraleph>indutny: there is a object literal there containing some methods. I clearly remember that.
22:08:17  <piscisaureus>stdout.end = function() { "Wtf, don't close stdout. And if you are piping something to stdout, use the { end: false
22:08:19  <piscisaureus>} option
22:08:25  <indutny>mraleph: yep, but that's only in new version
22:08:32  <indutny>mraleph: old version was using one big function
22:08:43  <indutny>mraleph: and still was 2-3 times slower on newest v8
22:08:51  <mraleph>indutny: lets just try and see, did you revert it?
22:09:10  <indutny>mraleph: building it right now
22:09:10  <mraleph>indutny: on some test case that you sent me I actually helped a lot if I remember correctly.
22:09:25  <indutny>mraleph: kk, let me benchmark :)
22:09:45  <indutny>mraleph: hm, probably that's because I'm exporting function?
22:09:52  <indutny>mraleph: `exports.apply`
22:10:04  <indutny>mraleph: exports is an object literal, definitely
22:12:40  <mraleph>indutny: no, it can't be exports. it's created only once so r7283 actually is good for it.
22:13:13  <mraleph>indutny: there should be some other literal that is created inside the function -> so it is new everytime and bigbadaboom map sharing is borked.
22:13:51  <mraleph>i think it was ctx or something.
22:15:10  <indutny>mraleph: ah, got it
22:15:21  <mraleph>so does it help?
22:15:21  <indutny>mraleph: I thought you're talking about "_c.$%num"
22:15:27  <igorzi_>ryah piscisaureus: do we want to throw for stderr.end as well? probably would be good so people know that they shouldn't do that
22:15:44  <indutny>oh, some errors after merge
22:16:06  <indutny>mraleph: sorry, I'm going to pass out. will try tomorrow, thank you!
22:16:06  <mraleph>yeah it might be that it is not a clean merge.
22:16:12  <mraleph>indutny: ok.
22:16:26  <mraleph>instead of reverting you can just checkout the revision before that one
22:17:27  <piscisaureus>http://memegenerator.net/instance/11343446
22:17:31  <piscisaureus>igorzi_: I guess
22:25:58  <igorzi_>piscisaureus: maybe we can put something into Stream.pipe() that would detect if the target stream is process.stdout? and not ever call end() on it?
22:26:17  <piscisaureus>igorzi_: yeah that also works
22:26:28  <piscisaureus>process.stdout._istdio = true
22:27:12  <igorzi_>piscisaureus: k
22:27:54  <piscisaureus>igorzi_: then you have to add the test to stream.pipe obviously :-)
22:29:46  <igorzi_>piscisaureus: there's already a test that does that implicitly (which is how we found this).. or do you think we should have a dedicated test just for this?
22:32:12  <piscisaureus>nah, I think it's fine
22:52:26  <igorzi_>piscisaureus ryah: https://gist.github.com/1356530
22:54:02  <piscisaureus>igorzi_: +1
22:55:54  <CIA-95>node: Igor Zinkovsky master * r13324bf / (lib/stream.js src/node.js test/simple/test-tty-stdout-end.js): throw from stdout.end and stderr.end - http://git.io/ijlTvw
23:27:07  <piscisaureus>ryah: Moving domains to the binding layer is not very difficult
23:27:26  <piscisaureus>the only difficult stuff is timers and nextTick
23:27:40  <piscisaureus>and I am not happy with the add'l complexity that is needed there
23:30:45  <piscisaureus>ryah: bnoordhuis: https://github.com/paddybyers/node/issues/16