00:00:34  <mraleph>isaacs: it might be related to the fact that JS source can be passed as utf-8 string. (e.g. see comment number #4 on issue 761)
00:00:55  <isaacs>yes, i don't quite understand comment #4. http://code.google.com/p/v8/issues/detail?id=761#c4
00:01:53  <piscisaureus_>I don't understand comment 5:
00:02:13  <piscisaureus_>V8 won't not support characters outside the Basic Multilingual Plane.
00:02:17  <piscisaureus_>emphasis mine :-p
00:02:49  <isaacs>also, this: " The pre-parser stores indices into the string for later use, so the number of codepoints in the two representations MUST be the same."
00:03:20  <piscisaureus_>isaacs: well, that's what he means :-)
00:03:25  <isaacs>this seems like an unnecessary constraint. can't the pre-parser's index be updated?
00:03:34  <piscisaureus_>isaacs: whether that so is not actually a non sequitur I don't know
00:04:17  <isaacs>right, but it seems like v8 is deciding to not support the most relevant character encoding in the world, because of an implementation detail. maybe i'm missing something.
00:06:42  <mraleph>"A conforming implementation of this International standard shall interpret characters in conformance with the Unicode Standard, Version 3.0 or later and ISO/IEC 10646-1 with either UCS-2 or UTF-16 as the adopted encoding form, implementation level 3. If the adopted ISO/IEC 10646-1 subset is not otherwise specified, it is presumed to be the BMP subset, collection 300."
00:09:14  <isaacs>mraleph: we're not talking about the API that v8 presents to javascript programs, though, we're talking about Utf8Value and Utf8Write, which are not part of the JS api anyway.
00:09:29  <isaacs>mraleph: my complaint is about the API that v8 is presenting to C++ programs, not to JS programs.
00:10:45  <isaacs>i don't think that the ES5 spec really covers that.
00:10:51  <DrPizza>o wow
00:10:57  <DrPizza>soit really is UCS2
00:11:01  <DrPizza>that sucks
00:11:31  <mraleph>as for C++ API (which is not part of standard): I suppose it could encode/decode utf8 outside of BMP <-> surrogate pairs correctly. but it would put additional complexity that can be kept outside of V8.
00:12:12  <mraleph>for example WebKit handles it in the bindings layer (through external string resource).
00:12:17  <isaacs>right
00:12:54  <DrPizza>oh wow
00:12:59  <DrPizza>so _JavaScript_ sucks?
00:13:02  <DrPizza>so you can't like
00:13:06  <isaacs>it's looking like we might have to do that. but when chrome and node are both implementing string encoding/decoding because the v8 api is not delivering what they need, then isn't that an indicator that the v8 api itself is kind of broken there?
00:13:10  <DrPizza>use JS to safely manipulate a non-BMP page?
00:13:20  <isaacs>i mean, why not just not have utf8 methods *at all* in v8, then?
00:14:27  <DrPizza>it seems kind of strange for each application to have to have its own utf-16 <-> utf-8 encoder
00:14:45  <mraleph>my guess would be that utf-8 -> ucs-2 convertion that replaces stuff outside of BMP with surogate pairs is specified somewhere as standard way to handle this stuff.
00:14:55  <mraleph>but I know little about this.
00:15:04  <mraleph>I will ask Lasse about it tomorrow.
00:15:18  <DrPizza>utf-8 -> ucs2 is a non-safe conversion
00:15:44  <piscisaureus_>DrPizza: ucs2 is a fixed-string encoding that does not support characters outside the BMP
00:15:50  <DrPizza>yes
00:15:51  <piscisaureus_>DrPizza: er, fixed-length
00:15:56  <DrPizza>which is why you can't convert utf-8 to ucs-2
00:15:56  <isaacs>DrPizza: well, the defacto "standard" here is to present the JS program with 2 ucs2 chars representing the surrogate-pair values.
00:16:21  <isaacs>DrPizza: so, the unicode-tiger UTF-8 would show in your JS program as the string "\uD83D\uDC05", length=2
00:16:22  <DrPizza>isaacs: and just trust that nothing will ever cause the surrogate pair to be cleaved in two?
00:16:32  <isaacs>DrPizza: no, don't trust. be VERY VERY CAREFUL
00:16:34  <DrPizza>ugh
00:16:36  <piscisaureus_>DrPizza: we can't assume that.
00:16:36  <isaacs>DrPizza: yeah.
00:16:43  <piscisaureus_>DrPizza: but it is as good as it gets
00:17:00  <DrPizza>it's a common problem
00:17:02  <DrPizza>but it's horrible every time
00:17:11  <isaacs>if v8 could give us that 2-char string from the 4 utf8 bytes, then that'd be fine.
00:17:14  <DrPizza>length in codepoints != length in "characters"
00:17:29  <isaacs>DrPizza: there's a discussion in es-discuss right now about this issue.
00:17:40  <piscisaureus_>DrPizza: you should be aware that the other alternatives from an implementation perspective are to use 3 bytes per character (ugh) or to use variable-length strings (slow for many operations, e.g. indexing)
00:17:59  <DrPizza>utf-32 as your internal representation
00:18:00  <isaacs>actually, i don't care very much about indexing.
00:18:06  <DrPizza>fixed-length, randomly accessible
00:18:14  <piscisaureus_>DrPizza: 4 bytes per character, even more ugh
00:18:17  <isaacs>and, *any* fixed-length encoding is going to hit problems *eventually*
00:18:27  <isaacs>length=2, whatever. just don't cleave it.
00:18:31  <DrPizza>isaacs: no, unicode has promised to never use more than ca. 21 bit
00:18:40  <isaacs>DrPizza: really? even when the aliens come?
00:18:44  <DrPizza>yup
00:18:46  <piscisaureus_>isaacs: yep
00:18:53  <isaacs>DrPizza: whoa. i thought it was future-looking.
00:18:58  <piscisaureus_>although, iirc that was only per unicode 4
00:19:03  <mraleph>aliens will not come as long as we have javascript
00:19:10  <isaacs>that's going to suck for the people in 10 thousand years.
00:19:13  <DrPizza>piscisaureus_: 3-byte is more compact, but processors hate it
00:19:14  <piscisaureus_>isaacs: the reason for limiting to 21 bit actually was UTF16
00:19:35  <DrPizza>right, UTF-16 gives you approx 21 usable bits
00:19:39  <DrPizza>(not exactly)
00:20:09  <mraleph>in any case… I'll try to figure out why api does what it does.
00:20:19  <mraleph>see you
00:20:27  <piscisaureus_>When UTF16 conceived they decided that they would never define any code point that UTF16 can't encode
00:20:32  <piscisaureus_>mraleph: see ya
00:20:38  <isaacs>but anyway... what we really need is a way to take a bunch of utf8 bytes, turn it into a js string (ucs, surrogates, whatever), then back into the same utf8 bytes.
00:20:43  <isaacs>mraleph: thanks for listening
00:21:09  <DrPizza>utf8 <-> utf16 isn't too hard
00:21:15  <piscisaureus_>it's easy even
00:21:19  <DrPizza>utf-16 is really a hokey encoding
00:21:38  <isaacs>utf8 is the correct encoding.
00:21:41  <isaacs>i think we know this now.
00:21:47  <DrPizza>utf8 is pretty horrible too
00:21:50  <DrPizza>utf32 is the best encoding
00:21:54  <piscisaureus_>utf8++
00:21:54  <kohai>utf8 has 1 beer
00:21:59  <DrPizza>utf8 is a unix atrocity
00:22:03  <isaacs>we need to deal with ucs2 in js, because of historical accidents that can't be fixed easily.
00:22:08  * mralephquit (Quit: Leaving.)
00:22:20  <isaacs>utf8++
00:22:21  <kohai>utf8 has 2 beers
00:22:29  <DrPizza>so using utf-16 and pretending it's ucs2 is the only real option
00:22:46  <DrPizza>and then just hope that v8 won't cleave surrogate pairs
00:22:51  <DrPizza>so that you can always roundtrip
00:23:08  * txdvquit (Ping timeout: 248 seconds)
00:23:29  <isaacs>DrPizza: that's what people have been doing on the browser forever, yes.
00:23:33  <piscisaureus_>DrPizza: it is up to the user to not cleave surrogate pairs
00:23:46  <piscisaureus_>DrPizza: as far as v8 is concerned, it are 2 characters
00:23:50  <isaacs>DrPizza: in practice, it's not quite as terrible as it sounds.
00:23:53  <DrPizza>isaacs: how does that work with e.g. regexps?
00:23:57  <isaacs>DrPizza: hahahaha
00:23:59  <isaacs>no
00:24:01  <DrPizza>does it have appropriate ranges etc.?
00:24:02  <DrPizza>heh
00:24:06  <isaacs>i mean, it does.
00:24:11  <isaacs>but you have to deal with them as 2 chars.
00:24:24  <DrPizza>or character classes; :alnunm: or :digit: or whatever
00:24:34  <isaacs>i'm assured by brendan eich that TC-39 will fight over this the next time the get together to fight.
00:24:38  <DrPizza>heh
00:24:39  <piscisaureus_>DrPizza: it won't work with character classes
00:24:43  <DrPizza>do you know which way they're leaning?
00:25:04  <DrPizza>seems crazy in this day and age to not demand that javascript have proper unicode support
00:25:15  <isaacs>DrPizza: brendan's latest to the mailing list suggested a Big Red Switch (ie, VM-level cli flag, <meta> tag in html, etc.)
00:25:16  <piscisaureus_>In TC39 there is never a "they" leaning anywhere.
00:25:29  <isaacs>DrPizza: yes, it does seem crazy. that's why we're demanding it.
00:25:53  <piscisaureus_>We will get further behing node native and luvit :-(
00:25:53  <isaacs>DrPizza: it's particularly problematic when you have a string in a "unicode-proper" context, that gets shared with a unicode-backward context.
00:26:15  <DrPizza>node.native looks pretty funky
00:26:17  <DrPizza>but heh
00:26:25  <DrPizza>writing utf-8/16/32 codecvts is pretty easy
00:26:26  <isaacs>piscisaureus_: let's just throw a JSON.parse/stringify benchmark that uses non-BMP chars.
00:26:39  <isaacs>piscisaureus_: then we'll win (i mean, not today, since we'll fail the test immediately due to this issue)
00:26:42  <piscisaureus_>isaacs: you seen felixes benchmark?
00:27:10  <piscisaureus_>isaacs: VM guys are only human and they deal with the same computer crap as us
00:27:18  <isaacs>piscisaureus_: yeah, wasn't it showing that it hurts just to treat it as a string?
00:27:49  <piscisaureus_>isaacs: it showed that whenever an utf8 character appears encoding/decoding slows down by 500%
00:28:08  <piscisaureus_>isaacs: buffer->string decoding, that is
00:28:45  * pfox___quit (Ping timeout: 245 seconds)
00:28:48  <piscisaureus_>isaacs: it's the pain you feel when you have to deal with non-fixed-length strings
00:29:09  <DrPizza>this is why we have utf-32 :p
00:29:13  <DrPizza>memory is cheap anyway!
00:29:20  <isaacs>yikes
00:30:07  <piscisaureus_>I don't think 3-byte encoding is that bad actually, at least not on x86
00:30:20  <piscisaureus_>it's difficult on architectures that allow only aligned memory access
00:30:32  <DrPizza>piscisaureus_: yeah
00:30:39  <isaacs>this whole issue is just so freaking painful.
00:30:45  <isaacs>man.
00:31:08  <DrPizza>isaacs: yup, it blows
00:31:12  <DrPizza>it's kind of annoying
00:31:20  <DrPizza>java, win32, javascript all tried to be forwardlooking
00:31:22  <DrPizza>by using UCS2
00:31:30  <DrPizza>and then they got trolled by unicode
00:31:34  <isaacs>yeah
00:31:39  <piscisaureus_>hehe, yes exactly
00:31:44  <DrPizza>deciding "oh gosh, there is a country called china, ucs2 won't be enough after all. who knew?"
00:31:46  <isaacs>in a way, lua's approach is kind of reasonable.
00:31:52  <isaacs>"string? you mean char*?"
00:32:20  <isaacs>at least it's not as bad as erlang.
00:32:20  <DrPizza>isaacs: yeah that's great if you want people to ruin your codepoints
00:32:26  <piscisaureus_>isaacs: that's the same as saying that php's way is reasonable
00:32:26  <isaacs>ISO-8859-1 or nuthin!
00:32:28  <DrPizza>what does erlang do?
00:32:30  <DrPizza>hahaha
00:32:32  <DrPizza>srsly?
00:32:35  <isaacs>DrPizza: yes.
00:32:41  <DrPizza>wow
00:32:47  <isaacs>you can have an ISO-8859-1, or you can have byte arrays.
00:32:52  <piscisaureus_>isaacs: but let me tell you, in php it's way more painful than it is in js
00:32:52  <isaacs>there is no unicode support.
00:32:59  <isaacs>piscisaureus_: oh, that's not true.
00:33:18  <isaacs>piscisaureus_: you just use the mb_* functions for everything, or turn on multibyte support in compilation so that they're the default anyway
00:33:23  <DrPizza>what does php do?
00:33:30  <isaacs>i mean, in php, you've already given up speed anyway.
00:33:35  <piscisaureus_>hehe
00:33:50  <isaacs>no, seriously. 100 requests per second is acceptable in that world.
00:33:51  <piscisaureus_>isaacs: yeah the mb_ cruft is probably not as bad.
00:33:54  <isaacs>you just throw more machines at it.
00:34:15  <mmalecki>or compile to native code like fb does
00:34:15  <DrPizza>no, you rewrite PHP to produce C++
00:34:18  * isaacshas done async IO in PHP using AsyncMultiCurl to localhost:8080
00:34:19  <DrPizza>^
00:34:22  <mmalecki>haha
00:34:32  <isaacs>i quit the php game before hiphop existed.
00:34:39  <piscisaureus_>me too
00:34:42  <isaacs>but yeah, writing native modules is how you do everything speed-intensive
00:35:08  <isaacs>it's a real testament ot js and v8 that in node, you first bind to an external lib, then rewrite in JS when you get annoyed with it.
00:35:27  <isaacs>in php, you first write in php, then rewrite in C++ all the parts that are too unbearablly slow
00:36:01  <mmalecki>which can end up in rewriting everything
00:36:28  <piscisaureus_>which is amazing considering how awful the php api is
00:36:31  <piscisaureus_>TSRMLS_CC, anyone?
00:36:51  <isaacs>T_PAAMAYIM_NEKUDOTAYIM
00:37:02  <benvie>yeah didn't facebook end up completely redoing php or something to that effect?
00:37:12  <DrPizza>benvie: facebook's setup is insane
00:37:12  <piscisaureus_>missing semicolon
00:37:16  <mmalecki>benvie: yeah, they did. hiphop php or something
00:37:37  <mmalecki>but I was quite impressed by it, actually
00:37:59  <mmalecki>like, deploying > 1 G binary to cluster of machines using bittorrent? that's pimpin'
00:38:02  <benvie>because they had invested in this whole set of people who were most comfortable developing in php. Can't really just fire a few hundred devs
00:38:49  <piscisaureus_>isaacs: @felixge: Benchmarking some parsing stuff. Receiving data: ~600 MB / sec. Casting to ASCII: 300 MB / sec. Utf8: 60 MB / sec. #nodejs #v8
00:38:50  <mmalecki>benvie: yeah, but they do a lot of python and (so I've heard) node.js as well
00:38:58  <piscisaureus_>isaacs: https://t.co/3Tf2VqZ9
00:39:13  <mmalecki>benvie: at least I got an e-mail because of python contributions
00:39:17  <isaacs>a, right
00:39:23  <benvie>well yeah in the long term they can migrate. And especially nowadays with continuous integration and changing out things bit by bit
00:39:30  <benvie>ha
00:39:52  <benvie>I know they had some node stuff going on, was it them that had something with chat using node?
00:40:48  * igorziquit (Ping timeout: 245 seconds)
00:40:50  <mmalecki>benvie: yeah, I think I've heard about chat as well
00:41:37  * mikealquit (Quit: Leaving.)
00:43:44  * mikealjoined
00:46:51  <piscisaureus_>isaacs: I'm outta here. Catch up with you tomorrow about this charset issue.
00:46:54  <piscisaureus_>Bye all
00:46:58  <isaacs>g'nite
00:47:15  <piscisaureus_>isaacs: don't forget the call tomorrow :-)
00:47:26  <isaacs>yes!
00:47:28  <isaacs>thanks for the reminder
00:47:44  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
00:54:36  * benviequit
00:58:41  * brsonquit (Quit: leaving)
00:59:14  * hij1nxquit (Quit: hij1nx)
01:00:26  * hij1nxjoined
01:00:29  * hij1nxquit (Client Quit)
01:04:17  * TooTallNatejoined
01:20:46  * pfox___joined
01:25:33  * Ariajoined
01:34:12  * pfox___quit (Ping timeout: 252 seconds)
01:34:48  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
01:41:26  * TooTallNatejoined
01:46:05  * pfox___joined
01:50:11  * orlandovftwquit (Ping timeout: 255 seconds)
02:00:23  * xaqquit (Remote host closed the connection)
02:18:59  * pfox___quit (Ping timeout: 256 seconds)
02:32:01  * mralephjoined
02:38:22  * mralephquit (Quit: Leaving.)
02:48:33  * sh1mmer_joined
02:50:25  * sh1mmerquit (Ping timeout: 240 seconds)
02:50:25  * sh1mmer_changed nick to sh1mmer
03:03:17  * xaqjoined
03:09:19  * orlandovftwjoined
03:30:44  * mikealquit (Quit: Leaving.)
03:31:19  * mmaleckichanged nick to mmalecki[zzz]
03:34:26  * orlandovftwquit (Ping timeout: 252 seconds)
03:39:34  * dshaw_joined
03:43:41  * mikealjoined
03:46:45  * isaacsquit (Remote host closed the connection)
03:55:00  * mjr_joined
03:57:31  * isaacsjoined
04:02:44  * mikealquit (Quit: Leaving.)
04:02:59  * isaacsquit (Remote host closed the connection)
04:07:47  * hij1nxjoined
04:14:38  * hij1nxquit (Read error: Connection reset by peer)
04:21:40  * xaqquit (Remote host closed the connection)
04:24:57  * xaqjoined
04:30:47  * Ariaquit (Remote host closed the connection)
04:40:18  * dshaw_quit (Quit: Leaving.)
04:44:05  * mikealjoined
05:04:13  * mikealquit (Quit: Leaving.)
05:07:37  * hij1nxjoined
05:19:27  * mikealjoined
05:28:19  * orlandovftwjoined
05:47:11  * isaacsjoined
05:51:46  * isaacsquit (Ping timeout: 245 seconds)
05:55:08  * AvianFluquit (Quit: Leaving)
06:01:50  * indutny_iz_slpngchanged nick to indutny
06:01:54  <indutny>morning
06:02:34  * hij1nxquit (Quit: hij1nx)
06:25:52  * mikealquit (Quit: Leaving.)
06:30:59  * paddybyersquit (Quit: paddybyers)
06:31:42  * paddybyersjoined
06:32:03  * mikealjoined
06:36:55  * mikealquit (Client Quit)
06:39:05  * mikealjoined
06:39:45  * mikealquit (Client Quit)
06:46:12  * dshaw_joined
07:03:46  * TooTallNatequit (Quit: Leaving...)
07:18:11  * paddybyersquit (Quit: paddybyers)
07:29:23  * paddybyersjoined
07:30:08  * mikealjoined
07:39:29  * TooTallNatejoined
07:40:17  * TooTallNatequit (Client Quit)
07:54:35  * sh1mmerquit (Quit: sh1mmer)
08:00:53  * mikealquit (Quit: Leaving.)
08:04:39  * mralephjoined
08:05:24  * dshaw_quit (Quit: Leaving.)
08:18:47  * xaqquit (Remote host closed the connection)
08:39:04  * xaqjoined
08:39:12  * mralephquit (Quit: Leaving.)
09:04:16  * paddybyers_joined
09:07:17  * paddybyersquit (Ping timeout: 240 seconds)
09:07:18  * paddybyers_changed nick to paddybyers
09:09:58  * xaqquit (Remote host closed the connection)
09:14:53  * saghulquit (Quit: saghul)
09:15:39  * saghuljoined
09:19:35  * mikealjoined
10:08:03  * paddybyersquit (Read error: Connection reset by peer)
10:14:47  * benviejoined
10:16:03  * orlandovftwquit (Ping timeout: 240 seconds)
10:44:19  * mjr_quit (Quit: mjr_)
11:18:37  * mmalecki[zzz]changed nick to mmalecki
11:27:42  * txdvjoined
11:35:54  * paddybyersjoined
11:44:04  * bnoordhuisjoined
12:33:30  <CIA-99>libuv: Ben Noordhuis master * re504719 / src/unix/linux.c :
12:33:30  <CIA-99>libuv: linux: fix signedness issue in uv_exepath()
12:33:30  <CIA-99>libuv: readlink() returns -1 on error. The <= 0 check failed to catch that because the
12:33:30  <CIA-99>libuv: return value was implicitly cast to size_t, which is unsigned. - http://git.io/D2Q6Sg
13:03:53  <bnoordhuis>ircretary: tell piscisaureus_ https://github.com/bnoordhuis/node/commit/04387ae <- review
13:13:58  <CIA-99>node: Tomasz Buchert master * rc6a04ce / (5 files in 4 dirs):
13:13:58  <CIA-99>node: crypto: add function getDiffieHellman()
13:13:58  <CIA-99>node: Returns a well known, predefined RFC group. - http://git.io/Mp6RqQ
13:14:23  * pfox___joined
13:19:26  * pfox___quit (Remote host closed the connection)
13:36:24  * pfox___joined
13:37:11  <bnoordhuis>pfox___: how's the libuv port coming along?
13:40:51  <pfox___>bnoordhuis: good, thanks for asking
13:40:59  <pfox___>just solved a malloc/free bug that'd been dogging me
13:41:18  <bnoordhuis>pfox___: in libuv or your bindings?
13:41:19  <pfox___>going to wrap up async and timer support as a bare minimum, then do a pull request in the next hour or so
13:41:30  <pfox___>just to get the design out there and talk about integration. the core patterns are in place.
13:41:36  <pfox___>bnoordhuis: the latter
13:41:52  <bnoordhuis>pfew. a bug in our code, inconceivable!
13:42:26  <bnoordhuis>i saw a thread on the rust ML about parsing libuv structs
13:42:31  <bnoordhuis>anything we can do to help with that?
13:42:43  <pfox___>well, it's an interesting issue
13:42:57  <pfox___>rust gives us decent tools to work with C, beyond the FFI obv
13:43:14  <pfox___>the ability to map rust records that match c structs is powerful, as brson's c->rust email illlustrated
13:43:35  <pfox___>my implementation actually hews towards doing more stuff in the c/c++ layer
13:44:25  <bnoordhuis>what if you had functions that returned a malloc'd pointer?
13:44:39  <bnoordhuis>e.g. uv_tcp_t *uv_tcp_new()
13:44:47  <pfox___>you could return an unsafe pointer to it
13:45:27  <bnoordhuis>but would it help with writing bindings?
13:45:55  <bnoordhuis>you won't have to match the exact layout of the libuv struct anymore
13:46:10  <pfox___>how's that?
13:46:54  <bnoordhuis>well, i'm assuming that the big hurdle is matching how a uv_tcp_t or uv_pipe_t is laid out in memory
13:47:09  <bnoordhuis>and if the layout ever changes, your bindings will subtly break
13:47:27  <pfox___>yeah. my personal greivance is mapping UV_HANDLE_PRIVATE_FIELDS
13:47:34  <pfox___>i was the person on the list who brought that up
13:47:39  <bnoordhuis>exactly
13:47:49  <pfox___>but, honestly, we take a direct dep on your API.. so we'll probably end up biting the bullet
13:48:00  <pfox___>im not a core team member, and if one of them wants that sort approach, im fine with it, really
13:48:08  <pfox___>working c/c++ brings its own share of hassles.
13:49:18  <pfox___>anyways. the work ive done so far hasn't (at all) gone down that road. but it'll probably be refactored very shortly to take that approach.
13:49:34  <pfox___>it'll be one less layer of callbacks, at least
13:50:19  <pfox___>and hopefully do away with some explicit opportunities for footgunning on rust malloc/free stuff in c/c++
13:50:30  <bnoordhuis>good
13:54:30  <indutny>bnoordhuis: hey man
13:54:36  <bnoordhuis>indutny: ho man
13:54:47  <indutny>bnoordhuis: one guy is proposing using fsevents in libuv
13:54:51  <indutny>bnoordhuis: instead of kqueue
13:54:57  <indutny>bnoordhuis: on osx
13:55:09  <bnoordhuis>indutny: yes?
13:55:15  <indutny>bnoordhuis: what do you think? https://github.com/ariko/NodeJS-FSEvents/blob/master/nodefsevents.cc
13:55:40  <bnoordhuis>indutny: i think it's a private repo...
13:56:07  <indutny>bnoordhuis: I think I'm dubm
13:56:09  <indutny>bnoordhuis: https://github.com/arikon/NodeJS-FSEvents/blob/master/nodefsevents.cc
13:56:12  <indutny>s/dubm/dumb
13:56:30  <bnoordhuis>that link works :)
13:56:37  <indutny>bnoordhuis: yeah
13:57:23  <bnoordhuis>i suppose my main beef with fsevents is that it won't let you watch individual files, only whole directories
13:57:36  <pfox___>quick q: i don't need to do a uv_close() on handle if uv_run() has already returned, do I?
13:57:39  <bnoordhuis>and that it won't work on old versions of os x but that's less important
13:57:46  <pfox___>for example, if i did uv_unref() so that the handle wasn't counted
13:57:56  <bnoordhuis>pfox___: well... yes and no
13:58:13  <pfox___>ok, bigger q: is uv_close() safe after uv_run() returns?
13:58:16  <bnoordhuis>if you don't uv_close(), you might leak file descriptors or memory
13:58:20  <bnoordhuis>yes, it is
13:58:24  <pfox___>ok. cool.
13:58:29  <bnoordhuis>however, your callback may not run
13:59:04  <pfox___>granted.
13:59:54  <indutny>bnoordhuis: yeah, but we're watching dirs in node
14:00:02  <pfox___>well its an async handler that i use to buffer requests from rust into libuv
14:00:05  <bnoordhuis>indutny: not exclusively
14:00:09  <indutny>bnoordhuis: so some sort of polyfilling may work
14:00:10  <pfox___>so im cleaning up after uv_run() returns..
14:00:30  <pfox___>and this includes wrapping up the handle.. so im going to uv_close() it with a stub callback that does nothing
14:00:43  <indutny>bnoordhuis: what if we'll use fsevents for dirs and kqueue for files
14:00:45  <pfox___>and free() it immediately. dangerous?
14:01:05  <indutny>bnoordhuis: that should be simple to check
14:01:15  <bnoordhuis>pfox___: free it after uv_close() returns? technically, that's dangerous yes
14:01:42  <bnoordhuis>pfox___: maybe we should fix it so that the close callback is guaranteed to run, even if the event loop is not running
14:01:55  <bnoordhuis>indutny: think 'race conditions'
14:02:16  <pfox___>bnoordhuis: cool, thanks
14:02:24  <pfox___>do you need a ticket for that?
14:05:48  <indutny>bnoordhuis: ohoh
14:05:56  <indutny>bnoordhuis: BSD style exlocks then :D
14:06:00  <indutny>bnoordhuis: heh, got it
14:06:15  <bnoordhuis>pfox___: yes please
14:12:06  <pfox___>hm. yeah. i just verified that a uv_close() cb registered, post-uv_run(), doesn't get processed
14:14:00  * piscisaureus_joined
14:19:09  <CIA-99>node: Andreas Madsen master * rfeff9bb / doc/api/net.markdown :
14:19:09  <CIA-99>node: docs: remove setSecure() from net module docs
14:19:09  <CIA-99>node: socket.setSecure() was removed in v0.3 and there are no deprecated warning in
14:19:09  <CIA-99>node: code it should be removed from the documentation in 0.7 - http://git.io/TWb1eQ
14:20:00  <bnoordhuis>indutny: https://github.com/joyent/node/issues/2784 <- what are your thoughts on that?
14:20:17  <pfox___>piscisaureus_: i don't know if i want to re-run uv_run() just to process a close callback
14:20:50  <pfox___>that seems kind of.. i don't know. no.
14:21:27  <piscisaureus_>pfox___: well, it is *probably* safe to free that memory just like that, if you are not going to run the loop again.
14:21:42  <pfox___>yeah, we talked about it in here a bit.
14:22:05  <pfox___>just before you showed up
14:22:12  <piscisaureus_>pfox___: but I don't know how hot that code path is going to be, but uv_run is pretty cheap
14:22:34  <piscisaureus_>pfox___: basically it just dispatches callbacks :-)
14:28:50  <bnoordhuis>piscisaureus_: the alternative is that we check in uv_run() if the loop is alive
14:28:59  <bnoordhuis>if not, run the close callback immediately
14:29:14  <bnoordhuis>ps, check your notes
14:29:24  <piscisaureus_>bnoordhuis: ps check your own notes
14:29:31  <bnoordhuis>i don't have any
14:29:47  <bnoordhuis>oh, now i do
14:29:55  <piscisaureus_>bnoordhuis: so if we could immediately call the close callback then the close callback wouldn't be necessary
14:30:22  <piscisaureus_>bnoordhuis: that's the problem - on windows at least we may need to process some events first before freeing that memory is safe.
14:30:38  <piscisaureus_>bnoordhuis: so the only thing we could do is make uv_close call uv_run implicitly :-)
14:30:46  <bnoordhuis>piscisaureus_: ah okay... hmm
14:31:40  <bnoordhuis>piscisaureus_: re url-safe base64 decoding - yes, someone reported an issue (that he subsequently solved himself)
14:31:52  <bnoordhuis>but it's trivial to add so why not?
14:32:00  <piscisaureus_>yeah ok
14:32:08  <bnoordhuis>someone else asked for url-safe base64 *encoding* but i shot that down for now
14:32:48  <piscisaureus_>bnoordhuis: pfox___: after the refcount refactor uv_close *itself* will ref the loop so after the loop exits you should just uv_close all the handles left.
14:32:57  <piscisaureus_>and then call uv_run()
14:34:06  <bnoordhuis>we should finish that sometime...
14:34:13  * travis-cijoined
14:34:13  <travis-ci>[travis-ci] joyent/node#468 (master - feff9bb : Andreas Madsen): The build is still failing.
14:34:13  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/c6a04ce...feff9bb
14:34:13  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/714084
14:34:13  * travis-cipart
14:34:19  <CIA-99>node: Ben Noordhuis master * rb9127eb / (src/node_buffer.cc test/simple/test-buffer.js): buffer: support decoding of URL-safe base64 - http://git.io/THHsdA
14:34:58  <piscisaureus_>we could even uv_loop_cleanup that implicitly closes all handles with an noop callback. Actually I think I suggested this a couple of times
14:36:02  <piscisaureus_>bnoordhuis: I don't think we really need serial ports in libuv, right.
14:36:14  <piscisaureus_>bnoordhuis: although it would be nice if people could write an "extension" for that/
14:36:17  <bnoordhuis>piscisaureus_: i already closed that issue :)
14:36:47  <bnoordhuis>that reminds me
14:36:49  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/pull/316
14:36:54  <indutny>bnoordhuis: hm...
14:37:30  <bnoordhuis>and you should probably merge this -> https://github.com/joyent/libuv/issues/307
14:38:03  <piscisaureus_>bnoordhuis: 307 was merged 2 weeks ago I think
14:38:14  <indutny>bnoordhuis: lets remove doc :D
14:38:46  <indutny>bnoordhuis: I'll do that for you
14:38:53  * einarosquit (Ping timeout: 260 seconds)
14:39:07  <bnoordhuis>piscisaureus_: then https://github.com/joyent/libuv/issues/305 can be closed?
14:39:16  <piscisaureus_>bnoordhuis: yup, just did
14:39:19  <bnoordhuis>cool
14:39:22  <piscisaureus_>bnoordhuis: I forgot about that one
14:39:25  <bnoordhuis>indutny: what docs?
14:40:36  <piscisaureus_>pfox___: would uv_close_all(loop) make you happy?
14:41:23  <bnoordhuis>indutny: oh wait, i know what you mean
14:41:39  <pfox___>im pretty happy, as is
14:41:53  <indutny>bnoordhuis: yeah
14:41:54  <pfox___>i filed the ticket after talking with bnoordhuis . checking to see if your hack/fix in the ticket works
14:42:06  <indutny>bnoordhuis: one minute
14:42:10  <piscisaureus_>pfox___: right. good.
14:43:25  <pfox___>something cleaner would probably be a good idea, though.
14:43:33  <pfox___>but, hey. it's your library/API. i'm just living in it.
14:44:13  <pfox___>and libuv barfs all over itself when i do as the ticket suggested
14:48:15  <piscisaureus_>pfox___: really?
14:48:19  <piscisaureus_>pfox___: what happens?
14:48:26  <indutny>bnoordhuis: https://github.com/indutny/node/commit/75e0e68219e87514eec8163b97cc48645eff8be7
14:49:03  * travis-cijoined
14:49:03  <travis-ci>[travis-ci] joyent/node#469 (master - b9127eb : Ben Noordhuis): The build is still failing.
14:49:03  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/feff9bb...b9127eb
14:49:03  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/714127
14:49:03  * travis-cipart
14:50:16  <indutny>bnoordhuis: s/once/when
14:51:06  <bnoordhuis>indutny: yup, lgtm
14:51:26  <indutny>pushing
14:51:32  <indutny>bnoordhuis: should it land in 0.6.0 too?
14:51:33  <CIA-99>node: Fedor Indutny master * r080ffb8 / doc/api/net.markdown :
14:51:33  <CIA-99>node: docs: remove server.pause
14:51:33  <CIA-99>node: This functionality was removed when libuv landed in node. It is useless
14:51:33  <CIA-99>node: and can be easily implemented in user-land. - http://git.io/g0tL8A
14:51:42  <pfox___>piscisaureus_: https://gist.github.com/1876920
14:52:02  <bnoordhuis>indutny: yes
14:52:53  <piscisaureus_>bnoordhuis: https://gist.github.com/1876920 -> I am pretty sure that that works on windows, and it should work on unix too. Why does this happen?
14:53:15  <CIA-99>node: Fedor Indutny v0.6 * rc6019b8 / doc/api/net.markdown :
14:53:15  <CIA-99>node: docs: remove server.pause
14:53:15  <CIA-99>node: This functionality was removed when libuv landed in node. It is useless
14:53:15  <CIA-99>node: and can be easily implemented in user-land. - http://git.io/T4jixA
14:53:16  <pfox___>this is on linux
14:53:31  <indutny>bnoordhuis: cherry-picked
14:53:45  <piscisaureus_>indutny: how can that be implemented in userland?
14:53:47  * AndreasMadsenjoined
14:54:07  <indutny>piscisaureus_: by hacking :D
14:54:10  <indutny>piscisaureus_: haha
14:54:28  <piscisaureus_>indutny: I think adding libuv functionality for that in the long run would be beneficial
14:54:36  <indutny>piscisaureus_: probably
14:54:38  <piscisaureus_>indutny: for now, this is fine, since nobody seems to care
14:55:01  <indutny>bnoordhuis: I talked to that guy again
14:55:28  <indutny>bnoordhuis: reading about FSEvents now. but basically his idea was to listen via kqueue and fsevents at the same time
14:55:48  <indutny>bnoordhuis: fs.watch is emitting `undefined` for directory changes on osx
14:55:57  <indutny>bnoordhuis: on other platform it's emitting filename
14:56:07  <bnoordhuis>piscisaureus_: https://gist.github.com/1876920 <- should work in theory...
14:56:26  <piscisaureus_>bnoordhuis: well, pfox___ says it doesnt
14:57:37  <pfox___>yes. there is much spew.
14:57:37  <bnoordhuis>piscisaureus_: could be a bug either in libuv or rust
15:03:46  <bnoordhuis>gdb still gets confused easily when you're trying to debug multiple processes with multiple threads each...
15:03:51  <AndreasMadsen>indutny: care to put thought intro this: https://github.com/joyent/node/pull/2772#issuecomment-4076276
15:07:34  <indutny>AndreasMadsen: done
15:08:47  <mmalecki>wat https://github.com/joyent/node/wiki
15:10:18  <bnoordhuis>hm
15:11:25  <indutny>great
15:12:05  <mmalecki>oh, it can be reverted.
15:12:05  <bnoordhuis>why isn't there a revert button?
15:12:08  <mmalecki>I'll do that
15:12:33  <mmalecki>fixed
15:12:38  <mmalecki>bnoordhuis: there is, https://github.com/joyent/node/wiki/Home/_compare/38374b9%5E...38374b9
15:12:56  <mmalecki>but don't click it now :)
15:20:49  <AndreasMadsen>bnoordhuis: are this going to be in v0.7 -> https://github.com/joyent/node/pull/2695
15:31:22  * xaqjoined
15:36:24  * piscisaureus_quit (Ping timeout: 252 seconds)
15:37:15  * isaacsjoined
15:47:25  * piscisaureus_joined
15:47:35  * piscisaureus_quit (Read error: Connection reset by peer)
15:48:08  * piscisaureus_joined
15:55:27  * AvianFlujoined
15:59:16  <bnoordhuis>isaacs: http://groups.google.com/group/nodejs/browse_thread/thread/290d73e6510fc532
16:00:08  <bnoordhuis>AndreasMadsen: hm, i don't really want to move that back into c++ land
16:00:10  <tjfontaine>ya, I remember the commit that changed the default to ia32
16:01:13  <isaacs>bnoordhuis: yeah, it was a mistake to release 0.6 binaries as 64bit, since there was no way to run them on 32bit archs
16:01:33  <isaacs>really, i think we need to just build fat binaries
16:01:50  <tjfontaine>I've been considering working up a scriptable way to lipo into a universal, but I think the effort is better spent on getting universal into gyp
16:02:12  <bnoordhuis>how hard can it be?
16:02:18  <AndreasMadsen>bnoordhuis: then what about just having getErrnoCode and getErrnoMessage in c++ land and move errnoException to require(util)
16:02:38  <tjfontaine>bnoordhuis: if you want to make it yourself it's as simple as building twice, and merging with lipo
16:02:41  <mmalecki>there's a pull request for second part of ^, iirc
16:03:11  <bnoordhuis>tjfontaine: should be easy to set up
16:03:14  * piscisaureus_quit (Read error: Connection reset by peer)
16:03:37  * piscisaureus_joined
16:04:13  <bnoordhuis>AndreasMadsen: error reporting is due for rework anyway
16:04:33  <bnoordhuis>in libuv that is
16:05:46  <piscisaureus_>libuv has a big backlog
16:06:18  <AndreasMadsen>bnoordhuis: oh yes you talked about that. But there was something about that would be a too big change for node v0.7.
16:06:56  <bnoordhuis>AndreasMadsen: it's too big for v0.6 but it'd be okay for v0.7, that's what bleeding edges are for
16:09:31  <bnoordhuis>damn, there are over 100 open pull requests...
16:10:38  <AndreasMadsen>bnoordhuis: did you first see that now :o - some of them are really old from v0.4.2 I believe.
16:11:29  <AndreasMadsen>oh found it: bnoordhuis says "Agreed. We could (and probably should) copy the Linux kernel convention here: return >=0 on succes, -ERRNUM on error."
16:12:44  <AndreasMadsen>sure we can have functions to return an errno but there person how made this -> https://github.com/joyent/node/blob/master/lib/net.js#L386 was crazy
16:13:15  <AndreasMadsen>s/there/the
16:15:46  <bnoordhuis>it's true, that guy was right crazy
16:22:43  <AndreasMadsen>issacs: did you get time to review that cluster patch -> https://github.com/joyent/node/pull/2740
16:23:20  <AndreasMadsen>I'm just trying to get my pull requests closed, one way or another.
16:25:46  <indutny>yeah, finally parser and scope analyzer are working :D
16:25:53  <bnoordhuis>isaacs, piscisaureus_: do we take patches for the assert module?
16:26:07  <piscisaureus_>bnoordhuis: not really. Which one is it?
16:26:14  <bnoordhuis>piscisaureus_: https://github.com/joyent/node/pull/2097
16:26:15  <piscisaureus_>bnoordhuis: the assert module implements the commonjs spec.
16:26:53  <bnoordhuis>piscisaureus_: that PR changes deepEqual() errors into something more readable
16:27:12  <bnoordhuis>a good thing in itself but i half-think that assert should be frozen now
16:27:20  <bnoordhuis>any change will probably break something somewhere
16:27:33  <AndreasMadsen>another assert PR just so you know: https://github.com/joyent/node/pull/2444
16:27:52  <mmalecki>my assert module PR got accepted recently
16:28:27  <bnoordhuis>mmalecki: because it allowed me to type less :)
16:28:41  <piscisaureus_>bnoordhuis: I like 2444 more
16:28:48  <mmalecki>bnoordhuis: hah :). but my second assert module PR got accepted as well!
16:29:13  <bnoordhuis>piscisaureus_: i could live with #2444
16:29:53  <piscisaureus_>bnoordhuis: the only thing is, shouldn't 2444 just use console.trace()
16:29:54  <piscisaureus_>?
16:29:55  <AndreasMadsen>bnoordhuis++ for closing all this pull requests
16:29:56  <kohai>bnoordhuis has 9 beers
16:30:26  <AndreasMadsen>s/this/these/
16:31:30  <bnoordhuis>piscisaureus_: where/when?
16:31:45  <bnoordhuis>hmm, #2444 won't work with -e
16:38:39  <isaacs>assert = frozen.
16:38:57  <isaacs>closed 2740 and 2444
16:39:08  <isaacs>they are both nice ideas, but not worth touching that code.
16:40:10  <isaacs>it's a bit like util.inspect. what we have is good enough. any changes are just distractions.
16:41:15  <mmalecki>5 arguments is not good enough :)
16:41:41  <mmalecki>util.inspect need options argument instead
16:41:54  * mikealquit (Quit: Leaving.)
16:42:45  * mikealjoined
16:44:12  <isaacs>for the time being, there are other things that need work.
16:44:34  <isaacs>making asserts prettier is < making http cleaner, making tests pass, etc.
16:45:16  * creationixjoined
16:46:09  * stephankjoined
16:47:02  * joclekchanged nick to jce
16:48:51  * isaacsquit (Ping timeout: 245 seconds)
16:49:17  * isaacsjoined
16:49:50  * mikealquit (Quit: Leaving.)
16:51:17  * xaqquit (Remote host closed the connection)
16:52:01  <AvianFlu>piscisaureus_, what happens to a child process' stdio streams if I set these flags? Will they stay open? https://github.com/AvianFlu/libuv/commit/a00d5100e5ad9f355a605cbe088143b0e9274b79
16:52:32  <AvianFlu>it sort of looks like they get closed... but it's been a really long time since I did windows code-reading
16:52:47  <AvianFlu>and I don't actually have a windows build environment atm
16:54:04  * sh1mmerjoined
17:02:21  * AndreasMadsenquit (Read error: Connection reset by peer)
17:02:57  * piscisaureus_quit (Ping timeout: 245 seconds)
17:03:04  * AndreasMadsenjoined
17:03:05  * piscisaureus_joined
17:04:03  * brsonjoined
17:06:04  <bnoordhuis>isaacs: https://github.com/joyent/node/issues/2795#issuecomment-4078908 <- i merged a patch this afternoon :)
17:07:15  <isaacs>haha, nice :)
17:07:37  <isaacs>oh, lol, i pulled but haven't rebuilt
17:07:49  <isaacs>i was like, "the code seems like it should work, but it doesn't work...?"
17:08:04  * mikealjoined
17:09:14  * brsonquit (Ping timeout: 276 seconds)
17:09:56  <isaacs>bnoordhuis: thanks
17:10:00  * creationixquit (Ping timeout: 245 seconds)
17:15:22  * creationixjoined
17:16:36  <bnoordhuis>my pleasure
17:19:13  * xaqjoined
17:20:40  * brsonjoined
17:27:24  <mmalecki>would it be possible to perform linting *after* actual tests?
17:27:58  * orlandovftwjoined
17:31:23  <indutny>http://stackoverflow.com/questions/7568471/pass-nothing-from-javascript-to-vbscript-in-ie9
17:31:29  <indutny>mmalecki: ^ that's just beautiful
17:31:42  <indutny>I think I'll write vbuvit
17:31:59  <mmalecki>indutny: haha, yeah, definitely!
17:32:09  <mmalecki>put some enterprise in libuv!
17:32:49  * xaqquit (Remote host closed the connection)
17:33:02  <piscisaureus_>rofl
17:33:12  <piscisaureus_>did you see the update? Update
17:33:13  <piscisaureus_>Quitted job. Found a better one.
17:34:01  <mmalecki>pretty sure I'd do the same
17:37:57  * dapjoined
17:43:42  * orlandov1twjoined
17:46:27  * orlandovftwquit (Ping timeout: 252 seconds)
17:57:33  <isaacs>yep. that's how i got out of the vb game
17:58:24  <indutny>I always was curious on ACM contests, how do people implement any solution on VB
17:58:37  <mmalecki>isaacs: so, can we run linting after test suite?
17:58:39  <indutny>then I seen that they just do nothing
17:58:44  <isaacs>mmalecki: howcome?
17:59:01  <mmalecki>isaacs: just move these 2 lines around
17:59:13  <isaacs>mmalecki: yes, i understand the request. but what's the justification for it?
17:59:14  <mmalecki>isaacs: first run the test suite, then the linter
17:59:18  <isaacs>why?
17:59:36  <indutny>to save time
17:59:40  <indutny>and stdout
17:59:41  <indutny>:D
17:59:42  <mmalecki>isaacs: when I prototype something I don't really care about linter, but if that's the requirement, I'll be happy to run it before pushing
18:00:03  <indutny>mmalecki: tools/test.py then
18:00:06  <indutny>mmalecki: that's what I do
18:00:16  <isaacs>mmalecki: then just run the few tests you care about explicitly
18:00:23  <isaacs>make && ./node test/simple/test-my-thing.js
18:00:59  <mmalecki>isaacs: it's never that simple, I managed to break tls test by doing changes in http :)
18:01:17  <isaacs>i don't really have a problem switching the two lines.
18:01:21  <mmalecki>but yeah, well, tools/test.py is probably a good point
18:01:41  <isaacs>the thing is, `make test` has to pass to accept the pull req anyhow
18:02:07  <isaacs>the best way to prevent divergence in js code style is to make lint a requirement for a test passing.
18:02:35  <mmalecki>it'll be a requirement, just executed later. it's only about usability ;)
18:02:51  <mmalecki>oh man, cli usability
18:03:00  <isaacs>it'd maybe be reasonable to have something like `make test-no-lint` and then have `make test` depend on that, and then lint src/ and lib/
18:03:01  <mmalecki>I'm totally writing an article about that
18:03:06  <isaacs>yeah, i get it.
18:03:18  <isaacs>you wanna sling some crappy code around poking around at approaches and stuff.
18:03:18  <mmalecki>sounds good!
18:03:24  <mmalecki>yeah :)
18:03:25  <isaacs>actually, scratch that.
18:03:27  * igorzijoined
18:03:30  <isaacs>do it simpler, just flip the order.
18:05:19  * isaacsquit (Remote host closed the connection)
18:06:55  * einaros-joined
18:07:44  * brsonquit (Ping timeout: 276 seconds)
18:10:14  <einaros->has anyone else noticed anything weird with the prebuilt osx version of 0.6.11? the native extensions of ws fails with shared library errors, but when node is built from source everything runs just fine
18:12:39  * einaros-quit (Quit: Leaving.)
18:13:02  * einaros-joined
18:26:41  <igorzi>piscisaureus_: yt?
18:26:48  <piscisaureus_>igorzi: yes
18:26:54  <igorzi>http://groups.google.com/group/nodejs/browse_thread/thread/ffd00d5213175428
18:27:00  <igorzi>--^ non-ifs lsps
18:27:01  <piscisaureus_>igorzi: it seems that this dude on the mailing list has some funky LSPs yes
18:27:06  <igorzi>yep
18:27:24  <igorzi>i'm going to send him node.exe with my patch, and ask him to try it
18:27:38  <piscisaureus_>igorzi: how do you know that these are non-LSP
18:27:53  <igorzi>Service Flags: 0x66
18:28:08  <piscisaureus_>igorzi: what is the LSP bit?
18:28:35  <igorzi>XP1_IFS_HANDLES flag (0x20000)
18:29:02  <igorzi>piscisaureus_: did you get a chance to review the patch?
18:29:25  <piscisaureus_>igorzi: oh IDM_LAYERED_MSAFD is not lsp either
18:29:36  <piscisaureus_>igorzi: yes, but I find this approach rather blunt :-)
18:30:11  <igorzi>piscisaureus_: i'm following what MSDN for SetFileCompletionNotificationModes recommends http://msdn.microsoft.com/en-us/library/windows/desktop/aa365538(v=vs.85).aspx
18:30:13  <piscisaureus_>igorzi: basically you enum all protocols and if you find one non-ifs lsp in there you kill it
18:30:26  <igorzi>piscisaureus_: yes
18:30:52  * TooTallNatejoined
18:31:13  <piscisaureus_>igorzi: it would be better to just create an ip4 socket, and then look up the service flag for the lsp
18:31:27  <piscisaureus_>igorzi: because people may have weird drivers that aren't used for tcp
18:31:36  * paddybyersquit (Quit: paddybyers)
18:31:58  <igorzi>piscisaureus_: gtg.. let's discuss on the call
18:32:17  <piscisaureus_>igorzi: sure
18:37:42  * mikealquit (Quit: Leaving.)
18:43:31  * isaacsjoined
18:52:27  <isaacs>mmalecki, bnoordhuis: Yeah, i'm going to add a `test-nolint` target. gjslint is too slow.
18:52:45  <mmalecki>isaacs: ++
18:52:45  <kohai>isaacs has 7 beers
18:52:52  <isaacs>bnoordhuis: would that address https://github.com/joyent/node/commit/96338432e2b76ee294b7e9e8ee56164288a56a08#commitcomment-985435?
18:58:20  <mmalecki>there's some potential in this linter
18:58:25  <mmalecki>http://code.google.com/p/closure-linter/source/browse/trunk/closure_linter/checker.py?r=2#79
18:58:46  <mmalecki>you could fork here, I guess
18:59:28  <isaacs>mmalecki: i don't get why we'd want to do that.
19:00:01  <mmalecki>isaacs: I don't either, just random musings about making it faster :)
19:00:09  <isaacs>oh
19:02:35  * igorzi_joined
19:03:18  * igorziquit (Ping timeout: 245 seconds)
19:03:21  <piscisaureus_>bnoordhuis: call?
19:03:47  <piscisaureus_>bnoordhuis: call!
19:08:30  * mikealjoined
19:12:35  * travis-cijoined
19:12:35  <travis-ci>[travis-ci] joyent/node#472 (v0.6 - c6019b8 : Fedor Indutny): The build passed.
19:12:35  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/96a137a...c6019b8
19:12:35  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/716018
19:12:35  * travis-cipart
19:13:15  * `3rdEdenjoined
19:13:42  * travis-cijoined
19:13:42  <travis-ci>[travis-ci] joyent/node#470 (master - 080ffb8 : Fedor Indutny): The build is still failing.
19:13:42  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/b9127eb...080ffb8
19:13:42  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/715578
19:13:42  * travis-cipart
19:13:57  * travis-cijoined
19:13:57  <travis-ci>[travis-ci] joyent/node#471 (master - c6a04ce : Tomasz Buchert): The build is still failing.
19:13:57  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/19133ca...c6a04ce
19:13:57  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/715593
19:13:57  * travis-cipart
19:20:55  * mikealquit (Quit: Leaving.)
19:22:22  * mjr_joined
19:26:31  * mikealjoined
19:32:36  * orlandovftwjoined
19:33:03  * orlandov1twquit (Read error: Connection reset by peer)
19:34:44  * mikealquit (Quit: Leaving.)
19:39:18  * `3rdEdenquit (Quit: Leaving...)
19:42:41  * orlandovftwquit (Ping timeout: 252 seconds)
19:48:40  * paddybyersjoined
19:48:47  * `3rdEdenjoined
19:58:16  * einaros-quit (Quit: Leaving.)
20:03:57  * `3rdEdenquit (Quit: Linkinus - http://linkinus.com)
20:04:17  <CIA-99>node: isaacs master * rbae4018 / Makefile : Run jslint after tests, not before - http://git.io/xdW2mA
20:04:17  <CIA-99>node: isaacs master * r3817b12 / AUTHORS : Add Håvard Stranden to AUTHORS file - http://git.io/oudPHQ
20:04:45  <CIA-99>node: isaacs v0.6 * r186960f / AUTHORS : Add Håvard Stranden to AUTHORS file - http://git.io/VLoK7Q
20:05:33  * txdvquit (Ping timeout: 260 seconds)
20:13:46  * travis-cijoined
20:13:46  <travis-ci>[travis-ci] joyent/node#474 (v0.6 - 186960f : isaacs): The build was broken.
20:13:46  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/c6019b8...186960f
20:13:46  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/716535
20:13:46  * travis-cipart
20:17:39  * mralephjoined
20:21:57  * travis-cijoined
20:21:57  <travis-ci>[travis-ci] joyent/node#473 (master - 3817b12 : isaacs): The build is still failing.
20:21:57  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/080ffb8...3817b12
20:21:57  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/716529
20:21:57  * travis-cipart
20:29:24  * einaros-joined
20:32:55  * orlandovftwjoined
20:33:14  * orlandovftwquit (Client Quit)
20:33:28  * orlandovftwjoined
20:46:20  <einaros->isaacs: did you precompile 0.6.11 for osx as x86?
20:47:23  <tjfontaine>ia32, yes
20:48:47  <einaros->no modules with native extensions appear to be working with the prebuilt 0.6.11
20:48:50  <einaros->works just fine with 0.6.10
20:49:20  <einaros->compiling said extensions for i386/x86 .. works
20:49:32  <tjfontaine>yes, because node isn't currently a universal binary
20:50:49  <einaros->was the arch changed from 0.6.10 to 0.6.11?
20:52:28  <tjfontaine>the arch was defined from .10 to .11
20:52:52  <tjfontaine>previously it was determined based on environment of the person making the release
20:56:27  <einaros->wouldn't have hurt to put that in the changelog, I suppose
20:57:29  * brsonjoined
20:57:55  <tjfontaine>einaros-: commit in question https://github.com/joyent/node/commit/4672872ddde70e079670d2a12079cb303ef41dbb
20:58:26  <einaros->yeah, thanks, saw that now
21:00:40  <einaros->I suppose I can update the build scripts shipped with my native stuff to detect the node binary arch
21:01:13  <tjfontaine>there was conversation today about doing a manual universal binary, but I haven't seen a follow up discussion as yet
21:01:47  <einaros->I'd be surprised if not more modules see a rush of issue reports based on this
21:02:04  <einaros->e.g. node-canvas
21:30:23  * AndreasMadsenquit (Remote host closed the connection)
21:31:15  <isaacs>einaros-: it's actually somewhat surprising that we didn't get more alarms about it becoming x64 in the first place.
21:37:10  * paddybyersquit (Ping timeout: 260 seconds)
21:44:14  * brsonquit (Ping timeout: 272 seconds)
21:44:21  <einaros->isaacs: wild guess: x64 is the most common
21:44:29  <isaacs>yeah, probably
21:44:37  * indutnychanged nick to indutny_sleeping
21:44:53  <isaacs>we should probably just revert that commit and go back to pushing a x64 pkg
21:44:59  * brsonjoined
21:44:59  <isaacs>or better yet, a universal binary
21:45:09  <einaros->https://github.com/einaros/ws/commit/81ea80a1382cfada27f63c7eadd2c3bfadbf40a3#L3R19
21:45:18  <einaros->well that dirty hack fixes ws, presumably
21:45:44  <einaros->good grief
21:45:44  <isaacs>ok
21:45:49  <isaacs>yeah, good grief indeed.
21:47:23  <TooTallNate>einaros-: but now that'll only work on Apple :p
21:47:28  <TooTallNate>-arch is an apple-ism
21:48:06  <einaros->travis reminded me of the very same :p
21:48:13  <TooTallNate>haha
21:48:25  <TooTallNate>einaros-: any why don't you have a bindings.gyp file yet :p
21:48:32  <TooTallNate>s/any/and
21:49:36  <einaros->I was holding all updates until after websocket extensions was fully implemented
21:49:43  <einaros->and that's a major piece of work
21:49:57  <einaros->but now this thing comes along, and I have to jimmy-rig something
21:53:36  <CIA-99>node: Brian White master * r5e3ca98 / lib/querystring.js : Make QueryString.parse() even faster - http://git.io/rYt4Fg
22:02:51  * paddybyersjoined
22:03:15  <DrPizza>wow, ecmascript's unicode rules are even stupider than previously imagined
22:03:15  <DrPizza>http://mathiasbynens.be/notes/javascript-identifiers
22:05:53  * einaros-quit (Quit: Leaving.)
22:08:16  * travis-cijoined
22:08:16  <travis-ci>[travis-ci] joyent/node#475 (master - 5e3ca98 : Brian White): The build is still failing.
22:08:16  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/3817b12...5e3ca98
22:08:16  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/717172
22:08:16  * travis-cipart
22:17:04  <mraleph>isaacs: I talked to Lasse about utf8 decoding into surrogate pairs. There are no real show stoppers for doing it inside V8. There is a concern that it would complicate direct parsing from utf8 string (positions mismatch) and there are some questions about semantics of identifiers composed of characters from outside BMP. (currently they are just rejected).
22:17:33  <isaacs>mraleph: that's pretty awesome news.
22:19:20  <isaacs>mraleph: piscisaureus_ is looking into doing some of this stuff for node's use, somewhat like how webkit approaches it.
22:19:28  <isaacs>s/webkit/chrome/
22:20:14  <mraleph>isaacs: I think tl;dr version is that we probably can accept a patch doing that but I don't think it's nowhere on our plate of things to do in foreseeable future.
22:20:43  <mraleph>isaacs: it might be a good thing to discuss if we will have another call.
22:21:04  <piscisaureus_>mraleph: well, rejecting non-bmp characters in identifiers, who cares?
22:21:17  <mraleph>isaacs: (though I would prefer we use something better than phone-freaking-conference this time… e.g. Hangouts ;-) )
22:21:30  <isaacs>mraleph: i don't think it's unreasonable for us (node) to send a patch for this. it's good to know that it wouldn't be rejected outright for some architectural decision.
22:21:54  <isaacs>also, we really only care about it for strings, not necessarily identifiers.
22:21:59  <mraleph>piscisaureus_: I think standard cares, somehow.
22:22:23  <mraleph>isaacs: once you create a string you can eval it… and here it begins :-)
22:22:40  <piscisaureus_>Although "var ✇ = 42" is kinda awesome
22:22:50  <isaacs>mraleph: i mean, var foo = "<unicode>" has to work. var f<unicode>o = "string" doesn't have to.
22:22:58  <piscisaureus_>what isaacs said
22:23:23  <isaacs>mraleph: becasue you have to be able to take utf8 off a socket, write to a file, then read from that file later, and get the right js string.
22:23:37  <isaacs>(among other things)
22:23:51  * pfox___quit (Ping timeout: 245 seconds)
22:24:06  <isaacs>the "right js string" can be multiple \u#### chars, and the length can refer to uint16s rather than "characters", of course.
22:24:14  <mraleph>isaacs: yeah, if I groked correctly what Lasse was saying to me (he spend in parser and encodings more time than I ever did) that how it already works when V8 is inside webkit.
22:24:16  <isaacs>as long as it gets utf8-encoded properly on the way back out.
22:24:54  <isaacs>mraleph: i thought that webkit just owns all the en/decoding of strings, and always speaks to v8 in ucs2?
22:25:14  <isaacs>which would probably make sense, since they have to support *everything* to be able to show web pages anyhow.
22:25:17  <mraleph>isaacs: length will always be in 2byte ucs-2 characters (surogate pair counts as two); we can't change that part.
22:25:23  <isaacs>right
22:25:30  <isaacs>that's for tc-39 to figure out :)
22:25:39  <mraleph>yes it always speaks in ucs2
22:25:42  <isaacs>but while they're planning the future, we live in the present.
22:26:23  <mraleph>what I meant is that inside string literals we accept surogate pairs just fine, but if surogate pair is inside identifier name it will be rejected even if it forms a valid identifier character
22:26:30  <mraleph>if transcoded to utf8
22:26:34  <isaacs>mraleph: yeah, i don't care about that.
22:26:42  <isaacs>mraleph: js never should have allowed non-ascii in var names.
22:26:58  <DrPizza>don't agree
22:27:09  * isaacschauvinist
22:27:24  <DrPizza>dotless I, in particular, is a real boon for developers
22:27:36  <DrPizza>because Il1 aren't ambiguous enough
22:27:54  <DrPizza>upper case dotless I (thanks Turkey!) adds a whole extra dimension of being a dick
22:28:26  <isaacs>var � = "TOTALLY BADASS TIGER"
22:28:49  <isaacs>that can throw, i don't care.
22:28:58  <DrPizza>fascist. :(
22:29:07  <isaacs>but global["�"] = "TOTALLY BADASS TIGER" should work
22:29:22  <piscisaureus_>mraleph: OT, in node parseInt("08") === 0
22:29:35  <isaacs>piscisaureus_: that's correct.
22:29:41  <isaacs>piscisaureus_: spec-dictated.
22:29:44  <piscisaureus_>isaacs: huh no
22:29:54  <DrPizza>JS does octal?
22:29:55  <DrPizza>ugh
22:30:03  <piscisaureus_>oh wait
22:30:04  <isaacs>it starts with a 0, therefor it's an octal. 8 is not a valid octal digit, so it takes the first string of octal digits = "0"
22:30:04  <piscisaureus_>yes
22:30:11  <piscisaureus_>isaacs: ah
22:30:16  <isaacs>mraleph: your double-negative is confusing me "but I don't think it's nowhere on our plate of things to do in foreseeable future."
22:30:18  <piscisaureus_>sorry I'm an idiot
22:30:24  <mraleph>so I would put this stuff on our agenda and discuss it during call (if we have one). I think it should be fine if e.g. Bert does a patch like that. But I would like to hear what Erik&Daniel think about it, cause this is not one of V8 parts that I feel like passing ultimate judgement about ;-)
22:30:31  <isaacs>mraleph: that means "it is possibly on our plate" or "it is not on our plate"
22:30:34  <isaacs>?
22:30:40  <mraleph>s/nowhere/anywhere/
22:30:49  <mraleph>russian habits
22:30:51  <isaacs>gotcha, thanks. that's how i read it the first time :)
22:30:59  <mraleph>thats how I typed it
22:31:11  <mraleph>I think IRC replaced it with wrong word :-)
22:31:21  <isaacs>hahah
22:32:06  <isaacs>whoever does this patch, i'm guessing that matt ranney will send them a bottle of scotch.
22:32:21  <isaacs>mjr_: ^
22:35:56  * mralephopens emacs
22:42:32  <isaacs>if mjr_ doesn't, I will
22:46:35  * bnoordhuisquit (Ping timeout: 276 seconds)
22:49:59  * brsonquit (Read error: Connection reset by peer)
22:50:05  * brsonjoined
22:56:24  * pfox___joined
23:07:25  * mikealjoined
23:08:25  <mmalecki>did I hear "bottle of scotch for a patch"?
23:08:33  <mmalecki>link to the ticket?
23:09:39  <piscisaureus_>does that include shipping overseas?
23:10:08  <mmalecki>well, they promised, so it should!
23:15:32  * indexzerojoined
23:18:58  <isaacs>piscisaureus_: hey
23:19:00  <isaacs>$ ./node -e process.stdin
23:19:07  <isaacs>piscisaureus_: why does that block forever? does it need to?
23:19:17  <isaacs>piscisaureus_: it seems that we don't pause stdin in the process.stdin getter.
23:19:32  * stephankquit (Quit: *Poof!*)
23:19:49  <isaacs>piscisaureus_: this means that any program that touches it, even if they don't stdin.resume() or process.openStdin(), will hang.
23:20:02  <piscisaureus_>isaacs: no the issue us that we don't unref()
23:20:13  <isaacs>piscisaureus_: we unref on pause()
23:20:41  <piscisaureus_>isaacs: yes - but in libuv everything starts paused
23:20:52  <isaacs>piscisaureus_: ok.
23:21:04  <piscisaureus_>isaacs: so we don't pause it, we just never start it in the first place
23:21:12  <piscisaureus_>isaacs: which means it doesn't get unref()ed
23:21:21  <isaacs>i see.
23:21:22  <piscisaureus_>isaacs: you can fix it if you care
23:21:42  <isaacs>yeah, it's breaking some random stuff. the fix seems easy, but i wanted to sanity check it first.
23:22:04  <piscisaureus_>isaacs: in libuv-0.8 the reference counting mechanism is going to be overhauled and this will all be a lot easier and cleaner
23:22:12  <isaacs>\o/
23:22:18  * tjfontaineexcited
23:22:23  <isaacs>in the meantime: https://gist.github.com/1879756
23:22:37  <piscisaureus_>isaacs: ben and I know exactly what we are going to do but we didn't get started
23:22:45  <isaacs>i guess i ought to make that comment more accurate.
23:22:59  <isaacs>awesome.
23:23:01  <piscisaureus_>isaacs: that's probably fine. Does it work?
23:23:05  <isaacs>yeah
23:23:07  <isaacs>seems to.
23:23:22  <isaacs>doesn't break any tests. i'm going to add one to verify that simply doing `process.stdin` doesn't timeout.
23:23:31  <piscisaureus_>:-)
23:23:46  <piscisaureus_>igorzi_: apparently the non-ifs patch didn't help the guy
23:24:11  <piscisaureus_>which does not mean we shouldn't land the patch
23:25:44  <piscisaureus_>https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/431433_10150671184306368_636986367_11568777_480910422_n.jpg
23:29:47  <isaacs>piscisaureus_: https://github.com/isaacs/node/commit/27d8b059fa214c56de6dc359ebdb8c05ad6b9f99 <-- review, plz?
23:30:37  <piscisaureus_>isaacs: lgtm. Also good for 0.6.
23:30:42  <isaacs>yes, agreed.
23:31:38  <CIA-99>node: isaacs master * r27d8b05 / (src/node.js test/simple/test-stdin-hang.js):
23:31:38  <CIA-99>node: Pause process.stdin in stdin getter
23:31:38  <CIA-99>node: Otherwise, it'll be ref'ed, and keep the process hanging. - http://git.io/2QQUqQ
23:32:26  <CIA-99>node: isaacs v0.6 * r634b4de / (src/node.js test/simple/test-stdin-hang.js):
23:32:26  <CIA-99>node: Pause process.stdin in stdin getter
23:32:26  <CIA-99>node: Otherwise, it'll be ref'ed, and keep the process hanging. - http://git.io/_1e6OQ
23:34:45  * sh1mmerquit (Quit: sh1mmer)
23:39:47  <mjr_>To fix the unicode thing, I will commit to one bottle of scotch or liquor of your choice that costs no more than $200.
23:40:35  * travis-cijoined
23:40:35  <travis-ci>[travis-ci] joyent/node#477 (v0.6 - 634b4de : isaacs): The build was fixed.
23:40:35  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/186960f...634b4de
23:40:35  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/717773
23:40:35  * travis-cipart
23:41:19  * isaacswondering how high up we can push this bounty...
23:41:26  <isaacs>mjr_: you've got investors, right?
23:41:30  <isaacs>;)
23:41:43  <mjr_>I'd pay for it with my own money, just for the community goodwill.
23:41:45  * isaacsshould start a kickstarter
23:42:02  <mjr_>And hope to share a glass with the committer.
23:42:32  <isaacs>if JSTeam could raise that much money to help feed people, *imagine* how much we could raise to be able to put totally badass tigers in our js programs.
23:43:44  * piscisaureus_starts up emacs
23:44:54  * mmaleckistarts up vim
23:44:57  <mjr_>I may have to go to Denmark to have a drink with mraleph if he fixes it.
23:45:13  <piscisaureus_>mraleph is totally going to loose :-)
23:45:27  <piscisaureus_>have you ever been to amsterdam, mjr_?
23:45:40  <mjr_>nope, but it sounds like I might do so soon.
23:47:18  * travis-cijoined
23:47:18  <travis-ci>[travis-ci] joyent/node#476 (master - 27d8b05 : isaacs): The build is still failing.
23:47:18  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/5e3ca98...27d8b05
23:47:18  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/717766
23:47:18  * travis-cipart
23:48:09  <mraleph>wait a sec my emacs finishes loading any moment now
23:49:53  <mmalecki>mraleph: that can take some time tho. did it boot the X Server already?
23:50:09  <mraleph>http://www.geekherocomic.com/comics-highres/2009-02-02-emacs-vs-vim.png
23:50:38  <mmalecki>hah, I love this comic. too bad it's discontinued :(
23:51:09  <mraleph>yeah
23:53:03  <isaacs>piscisaureus_: anything outstanding you want to see in 0.7.5?
23:53:10  <piscisaureus_>isaacs: nope
23:53:48  <piscisaureus_>isaacs: I am generally willing to go the extra mile to get a bugfix in a stable branch
23:53:55  <piscisaureus_>isaacs: but for 7.x not so much atm
23:54:12  <isaacs>kewl. it looks like bnoordhuis already merged or closed most of the issues i cared about. just need to review andreasmadsen's latest cluster updates.