00:12:39  * paddybyersquit (Quit: paddybyers)
00:21:53  * mralephquit (Quit: Leaving.)
00:31:09  <bnoordhuis>igorzi: i am now
00:33:18  <igorzi>bnoordhuis: how does prepare and check work in libev? do you get a callback between every event? or between batch of events?
00:34:41  <bnoordhuis>igorzi: yes (more or less)
00:35:37  <bnoordhuis>prepare watchers run before every epoll_wait/kqueue/port_getn syscall, check watchers run afterwards
00:36:19  <bnoordhuis>those syscalls can return multiple events so the correct thing to say is that prepare and check runs before and after every batch
00:36:30  <igorzi>ok thanks
00:37:16  <bnoordhuis>it's also possible for the syscall to time out if no events happened within in a certain time frame
00:37:32  <bnoordhuis>the watchers still run in that case
00:39:07  * CoverSlidequit (Read error: Connection reset by peer)
00:50:46  <igorzi>bnoordhuis: i was thinking of going through the code and making sure that all callbacks are invoked with MakeCallback
00:50:52  <igorzi>bnoordhuis: i think we were going to do this at some point
00:51:12  <igorzi>bnoordhuis: do you think it's worth the time?
01:00:23  * perezdjoined
01:20:16  <bnoordhuis>igorzi: where/when don't we use MakeCallback?
01:22:33  * bnoordhuisshould be off to bed
01:22:39  * bnoordhuis*is* off to bed
01:26:58  * bnoordhuisquit (Ping timeout: 244 seconds)
01:33:17  * AvianFluquit (Ping timeout: 244 seconds)
01:34:54  * AvianFlujoined
02:01:11  * mikealquit (Quit: Leaving.)
02:04:55  * mikealjoined
02:07:16  * mikealquit (Client Quit)
02:19:25  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
02:23:58  * mikealjoined
02:34:43  * brsonquit (Quit: leaving)
03:00:09  * txdv_quit (Ping timeout: 260 seconds)
03:03:16  * perezdquit (Quit: perezd)
03:03:46  * Ariajoined
04:33:13  * dshaw_joined
05:01:01  * isaacsquit (Remote host closed the connection)
05:03:01  * Ariaquit (Remote host closed the connection)
05:23:37  * mikealquit (Quit: Leaving.)
05:27:09  * mikealjoined
06:17:18  * mikealquit (Quit: Leaving.)
08:02:31  * paddybyersjoined
08:03:50  * mralephjoined
08:04:48  * rendarjoined
08:38:55  * mikealjoined
08:48:14  * paddybyersquit (Quit: paddybyers)
08:51:11  * benviequit
09:04:11  * paddybyersjoined
09:14:37  * benviejoined
09:18:54  * mikealquit (Quit: Leaving.)
09:23:54  * rendarquit
09:25:40  * rendarjoined
09:30:03  * dshaw_quit (Quit: Leaving.)
09:46:02  * mikealjoined
10:17:27  * paddybyersquit (Quit: paddybyers)
10:23:33  * piscisaureus_joined
10:41:15  * piscisaureus_quit (Ping timeout: 252 seconds)
10:44:40  * mralephquit (Read error: Connection reset by peer)
10:44:45  * mralephjoined
11:24:43  * AndreasMadsenjoined
11:34:35  <rendar>in uv/src/win/fs.c there is something i can't understand, the function fs__read (and fs__write as well) allocate on the stack an OVERLAPPED structure, but that OVERLAPPED structure shouldn't live until the asynch request complete, so shouldn't live in the stack of fs__read which returns immediately (in the case of an asynch. read) causing the driver which completes the i/o request having a
11:34:35  <rendar>pointer to a structure on the stack...but maybe i'm wrong...i want just to point this out :)
11:41:23  * mmalecki[zzz]changed nick to mmalecki
12:18:44  * paddybyersjoined
13:09:27  * paddybyersquit (Quit: paddybyers)
14:21:24  * AndreasMadsenquit (Remote host closed the connection)
14:48:11  * kuebkjoined
14:48:15  * kuebkquit (Client Quit)
15:03:37  * mikeal1joined
15:03:38  * mikealquit (Read error: Connection reset by peer)
15:33:35  * isaacsjoined
15:34:59  * isaacsquit (Remote host closed the connection)
16:34:52  * paddybyersjoined
16:41:10  * bnoordhuisjoined
16:56:06  * isaacsjoined
17:00:34  * isaacsquit (Remote host closed the connection)
17:08:45  <CIA-99>node: Shigeki Ohtsu master * rb6595c4 / configure : build: remove unused import from configure script - http://git.io/NuJzoQ
17:08:45  <CIA-99>node: Shigeki Ohtsu master * rd6f0ecc / configure : build: fix gcc version check - http://git.io/YAcpeQ
17:18:52  * Ariajoined
17:22:27  * travis-cijoined
17:22:27  <travis-ci>[travis-ci] joyent/node#539 (master - d6f0ecc : Shigeki Ohtsu): The build is still failing.
17:22:27  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/78db187...d6f0ecc
17:22:27  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/787149
17:22:27  * travis-cipart
17:24:46  <CIA-99>node: ssuda master * r578ba76 / (lib/util.js test/simple/test-util-format.js): util: fix util.format() formatting of %% - http://git.io/fOnbMw
17:27:12  * felixgejoined
17:27:12  * felixgequit (Changing host)
17:27:12  * felixgejoined
17:29:59  <indutny>hey people
17:30:09  <indutny>check out this https://github.com/indutny/dotlang
17:32:39  <creationix>indutny, bind it to libuv!
17:32:55  <indutny>haha
17:32:59  <indutny>creationix: have you seen TODO?
17:33:16  <indutny>creationix: I'll do that once it'll support C++ bindings
17:33:19  <creationix>right, there is binding API yet
17:33:32  <creationix>my new hobby is bindings libuv to as many vms as possible
17:33:38  <indutny>haha :)
17:33:45  <creationix>it's actually quite fun and I learn a lot about various languages
17:34:10  <indutny>yeah
17:34:15  <mmalecki>creationix: ook, maybe?
17:34:23  <creationix>of course, now I'm tempted to make my own vm
17:34:24  <indutny>I think dotlang may become very fast eventually
17:34:40  <creationix>after working with lua, I've come to appreciate small vms
17:34:42  <indutny>it's very simple
17:34:52  <creationix>a subset of js would make for a really nice vm
17:34:59  <indutny>creationix: that's what I thought :D
17:35:09  <creationix>dotlang is close to that
17:35:52  <indutny>no prototype junk and minimum amount of features
17:35:59  <creationix>oh I see, this if your language
17:36:00  <indutny>so less things to check in JIT
17:37:16  <creationix>so the function syntax isn't ambiguous?
17:37:26  <creationix>I don't see any semicolons
17:37:32  <indutny>creationix: yeah, no semicolons
17:37:33  <creationix>or does whitespace/newlines matter
17:37:42  <indutny>creationix: whitespace no, newline -yes
17:37:56  <indutny>I'll mention that in readme, one sec
17:38:20  <creationix>what about allowing object keys to be any value
17:38:33  <creationix>all you need is a way to convert any value to a unique hash quickly
17:39:16  * travis-cijoined
17:39:16  <travis-ci>[travis-ci] joyent/node#540 (master - 578ba76 : ssuda): The build is still failing.
17:39:16  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/d6f0ecc...578ba76
17:39:16  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/787181
17:39:16  * travis-cipart
17:39:27  <creationix>of course, that would make it harder to build a dot->js compiler
17:39:41  <indutny>creationix: hm... that reminds me java
17:39:51  <creationix>I was thinking more lua
17:39:56  <creationix>but the feature is really nice
17:39:59  <creationix>I wish js had it
17:40:08  <indutny>that's very simple to implement
17:40:34  <creationix>indutny, no booleans?
17:40:38  <indutny>ooh
17:40:43  <indutny>there're booleans
17:40:47  <indutny>but no boolean operations so far :D
17:40:58  <indutny>forgot to mention that
17:41:09  <creationix> then what does == return?
17:41:26  <indutny>true or false
17:41:31  <creationix>or do you mean no "and" "or" "not"
17:41:33  <indutny>but now it's simply not implemented
17:41:49  <indutny>just not implemented
17:42:56  <creationix>mmm, yummy and small
17:43:10  <creationix>"make ARCH=x64 -j8 test" takes 7.2 seconds on my workstation
17:43:46  <creationix>just make without the test is 1.7 seconds
17:43:53  <indutny>yeah :D
17:44:21  <indutny>that's because there're no linking with make all
17:44:28  <indutny>I think
17:44:31  <creationix>I see, it's just the .a file
17:44:38  <creationix>and each test builds it's own binary
17:44:54  <creationix>so is your target to make it embedded only
17:45:13  <creationix>(meaning not include a standard library or I/O)
17:45:23  <indutny>creationix: yeah
17:45:28  <creationix>because that's perfect for when I'm making little node forks
17:45:37  <indutny>creationix: probably some basic module system
17:45:44  * mikeal1quit (Quit: Leaving.)
17:45:48  <creationix>well, modules require I/O
17:45:52  <indutny>creationix: but now I want to finish all language's features
17:46:00  <creationix>and at that point you've already decided a lot for people
17:46:09  <creationix>you could have a reference platform based on libuv
17:46:16  <indutny>creationix: hm.. you're right
17:46:48  <creationix>tell you what, when it's ready for C bindings, I'll write libuv bindings
17:46:52  <indutny>hahaha
17:46:56  <creationix>but keep it C, not C++ if possible
17:46:58  <indutny>creationix: thank you, that would be nice
17:47:05  <indutny>it's already C++
17:47:09  <indutny>sorry
17:47:17  <creationix>right, but the bindings don't have to be
17:47:19  <creationix>sm is like that
17:47:22  <creationix>(spidermonkey)
17:47:30  <indutny>that's possible
17:47:36  <indutny>I'll put that in TODO
17:48:07  <creationix>and you can always hit me up with language design questions if you have any
17:48:16  <creationix>I've helped design a few and learned many
17:48:23  <indutny>creationix: cool! will do
17:48:31  * Ariaquit (Remote host closed the connection)
17:50:48  * philipsquit (Excess Flood)
17:50:57  <creationix>indutny, so can I ask about variable scoping?
17:51:00  * paddybyersquit (Quit: paddybyers)
17:51:15  <creationix>I have been wanting to write a vm that runs in the browser, this language looks simple enough
17:52:48  * philipsjoined
17:52:52  <indutny>creationix: yes?
17:53:10  <creationix>ok, is there a concept like "this" in js?
17:53:35  <creationix>and I see your "Expr block" looks somewhat like "with"
17:53:46  <creationix>s/in js/from js/
17:53:49  <indutny>creationix: not really, it's just a sugar, and I probably remove it
17:54:03  <indutny>creationix: this may appear eventually, if I'll decide to implement classes
17:54:21  <indutny>creationix: at the moment, dot to javascript is like C to C++
17:54:29  <creationix>less sugar is good
17:54:33  <creationix>at first atleast
17:54:49  <creationix>so functions are first-class and higher-order right?
17:54:55  <creationix>including lexical closures?
17:55:34  <creationix>hmm, but I see the "scope" keyword is needed to pull in a closure variable
17:55:40  <indutny>creationix: yes
17:56:01  <indutny>creationix: functions are first class and can be used as objects (not implemented yet)
17:56:25  <creationix>and arrays are objects too?
17:56:30  <indutny>creationix: that's for now
17:56:35  <indutny>creationix: but they're objects
17:56:41  <indutny>creationix: like in javascript
17:56:54  <creationix>is there a type system other than this?
17:56:57  <indutny>creationix: but now they're actually the same as { 0: 1, 1: 2, length: 2}
17:57:01  <creationix>is an array a "subclass" of object
17:57:04  <indutny>creationix: no
17:57:12  <indutny>creationix: no inheritance
17:57:32  <indutny>creationix: so they're hardcoded "subclasses"
17:57:35  <creationix>and no methods either
17:57:48  <indutny>methods are possible, as properties
17:57:49  <creationix>a = "hello" ; a.length ?
17:57:59  <indutny>that'll work
17:58:08  <creationix>a.substr(2, 3)
17:58:10  <indutny>or probably
17:58:14  <indutny>strlen("hello")
17:58:22  <creationix>right, in C there are no methods
17:58:23  <creationix>just functions
17:58:27  <creationix>lua too technically
17:58:29  <indutny>yeah
17:58:34  <creationix>but there is sugar after the fact
17:58:36  <indutny>but "123".length may work
17:58:58  <indutny>how is that thing organized in lua
17:59:01  <indutny>?
17:59:14  <creationix>without sugar, there are no methods at all
17:59:18  <creationix>not even on strings
17:59:31  <creationix>and the convention is to pass in the instance as the first argument
17:59:59  <indutny>yes, that's it C
18:00:06  <indutny>errr: "that's it, C"
18:00:06  <creationix>so Array.prototype.push(other) in js would be Table.insert(instance, other)
18:00:22  <indutny>yeah, I like that
18:00:28  <creationix>and there is optional sugar
18:00:41  <creationix>supposing a is a table
18:00:54  <creationix>a.insert = function (self, other) ... end
18:01:06  <creationix>and you call it as either a.insert(a, other) or a:insert(other)
18:01:21  <creationix>the same sugar works for defining it too
18:01:35  <indutny>hm.. how will it work with different instances?
18:01:36  <creationix>function Table:insert(other) ... end
18:01:53  <creationix>it works much like "this" in js, except it's explicit
18:01:58  <creationix>and the vm doesn't know about it
18:02:03  <creationix>just syntax transforms
18:02:25  <indutny>hm... looks good
18:02:28  <creationix>https://github.com/luvit/luvit/blob/master/examples/http-server.lua
18:02:36  <creationix>node's hello world in lua
18:02:52  <creationix>I would recommend keeping the vm dirt simple and then optionally adding syntax sugar after the fact
18:03:02  <creationix>or let others do it with first-class support for pre-processors
18:03:07  <creationix>sourcemap or something like that
18:03:25  <creationix>then things like coffeescript and moonscript can be first-class parts of the community
18:03:47  <indutny>yeah, language should be as simple as possible for compiler
18:03:56  <indutny>that'll open a door for a great optimizations
18:04:03  <creationix>right
18:04:17  <creationix>and it will keep you sane
18:04:58  <creationix>I would even go so far as to draw a line between the core vm and nicities like array.push
18:05:14  <creationix>anything that can be implemented in script, leave out of core
18:05:51  <creationix>just my suggestion, that's what I would do if I was making a vm
18:06:02  <indutny>creationix: agree with you
18:06:06  <indutny>that's how I designed it
18:06:11  <creationix>then you or someone else can add a standard library and some else can add syntax sugar
18:06:44  <creationix>and if the core is ported to the browser then all the sugar and standard library can be used as is on the new vm
18:07:50  <creationix>still, for it to be actually useful, there will need to be I/O like that libuv provides (and the browser version will use the dom)
18:08:04  <creationix>but that too can be outside the vm core
18:08:28  <indutny>here I think that ecmascript does it the right way
18:08:28  <creationix>even in C, you have to #include "stdio.h"
18:08:42  <indutny>it should be easily embeddable into various environments
18:08:57  <creationix>yeah, but I think js is too bloated
18:09:10  <creationix>especially things like the Date object and a regular expression library
18:09:25  <creationix>those are libraries, not part of the language imho
18:09:45  <indutny>not only that
18:09:53  <indutny>prototypes of primitives and etc
18:10:05  <indutny>who needs a Number class?
18:10:09  <creationix>yeah, js is huge compared to lua in that regard
18:10:21  <creationix>and even lua comes with a small standard library, but it's not required
18:10:34  <indutny>it's just like a demo-bindings to me :)
18:10:55  <indutny>so if someone will want to test it before embedding, one will just use default ones
18:11:18  <creationix>indutny, ok, I think I'll write a vm for the browser
18:11:27  <creationix>how stable is your syntax and semantics?
18:11:41  <indutny>creationix: not stable at all
18:11:47  <indutny>creationix: but I like your ideas
18:11:56  <indutny>creationix: don't you mind being a contributor of this project?
18:12:09  <creationix>sure, but my C++ skills are quite lacking
18:12:15  <creationix>I can't help much on that front
18:12:48  <indutny>creationix: that's not so important, at this stage - language design becomes to matter more than implementation
18:13:05  <creationix>we should make a #dotlang channel
18:32:39  * xaqjoined
18:55:01  <rendar>in uv/src/win/fs.c there is something i can't understand: in fs__read(), the OVERLAPPED structure is in the stack, but shoulnd't it be alloc'd in memory since when the fs__read() finishes, the kernel driver may still have a pointer to that OVERLAPPED structure until it finishes the i/o request? maybe i'm wrong
19:05:45  * indutnychanged nick to indutny_away
19:26:04  * isaacsjoined
19:31:09  * indutny_awaychanged nick to indutny
19:36:07  * perezdjoined
20:02:12  * pquernaquit (Ping timeout: 265 seconds)
20:03:25  * rphillipsquit (Ping timeout: 240 seconds)
20:06:46  * rphillipsjoined
20:09:42  * pquernajoined
20:21:40  * isaacsquit (Remote host closed the connection)
20:37:25  * indutnychanged nick to indutny_sleeping
20:40:58  * perezd_joined
20:41:08  * philipsquit (Excess Flood)
20:41:48  * perezdquit (Read error: Connection reset by peer)
20:41:49  * perezd_changed nick to perezd
20:42:48  * philipsjoined
20:43:56  * mikealjoined
20:44:46  * piscisaureus_joined
20:47:16  * mralephquit (Quit: Leaving.)
20:47:17  * TooTallNatejoined
20:50:27  * piscisaureus_quit (Ping timeout: 245 seconds)
21:02:09  * xaqquit (Remote host closed the connection)
21:03:18  * xaqjoined
21:06:30  <TooTallNate>any windows guys online?
21:06:49  * xaqquit (Remote host closed the connection)
21:12:34  * xaqjoined
21:29:11  * xaqquit (Remote host closed the connection)
21:51:32  * paddybyersjoined
21:56:34  * paddybyersquit (Quit: paddybyers)
22:01:02  * toothrquit (Ping timeout: 240 seconds)
22:02:39  * brsonjoined
22:06:58  * chrisinajarpart
22:07:19  * isaacsjoined
22:23:37  * \toothrotjoined
22:30:02  * \toothrotquit (Ping timeout: 240 seconds)
22:32:04  * brsonquit (Ping timeout: 272 seconds)
22:32:37  * brsonjoined
22:36:37  * toothrjoined
22:36:37  <CIA-99>node: Igor Zinkovsky master * r61be684 / (2 files): disable fs.watchFile tests on windows - http://git.io/cebsnQ
22:41:24  * toothrquit (Ping timeout: 252 seconds)
22:41:46  <isaacs>igorzi, bnoordhuis: can i get a lgtm? https://github.com/isaacs/node/commit/master
22:43:37  <bnoordhuis>isaacs: lgtm
22:43:46  <isaacs>thanks
22:43:54  <isaacs>how do you feel about tests that hvae to be run as root?
22:44:07  <isaacs>that's what it would take to prevent problems with chown
22:44:46  <bnoordhuis>i don't know, they won't work on the buildbots
22:45:06  <igorzi>bnoordhuis: i that MakeCallback wasn't used in node_file.cc and node_http_parser.cc.. i assume there are more
22:45:21  <CIA-99>node: isaacs master * r4053c01 / src/node_file.cc :
22:45:21  <CIA-99>node: First arg to fs.fchown is an int, not a string
22:45:21  <CIA-99>node: Bug introduced by 26bfb6bea45348d6aaa213b4ee38ac002c429394
22:45:21  <CIA-99>node: Fix isaacs/npm#2225 - http://git.io/k38E7A
22:45:37  * toothrjoined
22:45:50  <bnoordhuis>igorzi: oh, that's right
22:45:57  <bnoordhuis>i suppose it's a good thing
22:46:05  <bnoordhuis>but MakeCallback should be optimized, it's pretty slow now
22:46:39  <igorzi>bnoordhuis: how?
22:46:50  <bnoordhuis>i was afraid you were going to ask that :)
22:46:56  <igorzi>:)
22:47:17  <bnoordhuis>i suppose the most obvious optimization is to cache the String object
22:48:21  <bnoordhuis>the property lookup is expensive too but i can't think of a foolproof way to fix that
22:48:32  <igorzi>i see
22:48:47  <igorzi>bnoordhuis: but overall it would be good if all c++->javascript callbacks would go through the same code-path, wouldn't it?
22:49:21  <bnoordhuis>igorzi: yes
22:51:04  * travis-cijoined
22:51:04  <travis-ci>[travis-ci] joyent/node#541 (master - 61be684 : Igor Zinkovsky): The build is still failing.
22:51:04  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/578ba76...61be684
22:51:04  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/788589
22:51:04  * travis-cipart
22:52:53  <bnoordhuis>igorzi: btw, https://github.com/joyent/node/pull/2861/files
22:53:13  <bnoordhuis>someone implemented pfx support
22:53:35  <bnoordhuis>the patch lgtm in general, maybe not exactly how i would've done it but it's good enough
22:56:50  <bnoordhuis>igorzi: i suppose that the main issue is that it doesn't support pfx files with multiple keys/certs
22:56:56  <bnoordhuis>but i don't know how common those are
22:59:12  <igorzi>bnoordhuis: hmm.. does it support a file with 1 key + 1 cert?
22:59:16  <bnoordhuis>yes
22:59:58  * travis-cijoined
22:59:58  <travis-ci>[travis-ci] joyent/node#542 (master - 4053c01 : isaacs): The build is still failing.
22:59:58  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/61be684...4053c01
22:59:58  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/788649
22:59:58  * travis-cipart
23:00:01  <igorzi>bnoordhuis: ok.. i think that's the most common case. i also don't know how common it is to have more than 1 key/cert. i'll find out
23:01:15  <bnoordhuis>okay
23:01:24  <bnoordhuis>i can land it for now and patch it up later if need be
23:06:11  <igorzi>bnoordhuis: what about cert chains? would that work?
23:09:00  <bnoordhuis>igorzi: yes, everything in the CA chain is added
23:18:32  * toothrquit (Ping timeout: 240 seconds)
23:30:34  * TooTallNatequit (Quit: Leaving...)
23:31:03  * TooTallNatejoined
23:33:53  * perezd_joined
23:35:03  * perezdquit (Ping timeout: 252 seconds)
23:35:04  * perezd_changed nick to perezd
23:53:23  <isaacs>bnoordhuis: fs.watchFile: deprecated in favor of fs.watch. yay or nay?
23:55:45  * TooTallNatequit (Quit: Leaving...)
23:55:56  <bnoordhuis>isaacs: well... fs.watch() is not reliable on nfs mounts...
23:56:24  <bnoordhuis>so maybe 'deprecated unless'
23:57:59  * perezd_joined
23:58:12  * perezdquit (Ping timeout: 260 seconds)
23:58:58  * perezd_changed nick to perezd