00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:07:44  * avalanche123quit (Remote host closed the connection)
00:07:57  * avalanche123joined
00:12:17  * avalanche123quit (Remote host closed the connection)
00:26:44  * piscisaureusquit (Read error: Connection reset by peer)
00:27:27  * piscisaureusjoined
00:30:02  * reqsharkquit (Ping timeout: 252 seconds)
00:43:12  * thlorenz_joined
00:47:19  * thlorenz_quit (Ping timeout: 245 seconds)
01:32:47  * a3fquit (Read error: Connection reset by peer)
01:36:22  * Fishrock123quit (Quit: Leaving...)
01:40:35  * Ralithquit (Ping timeout: 244 seconds)
01:43:59  * thlorenz_joined
01:48:12  * stagasjoined
01:48:14  * thlorenz_quit (Ping timeout: 246 seconds)
01:49:20  * reqsharkjoined
02:00:38  * brsonquit (Ping timeout: 272 seconds)
02:19:15  * Ralithjoined
02:27:09  <MI6>joyent/node: Julien Gilli refs/tags/jenkins-accept-pull-request-temp * 5872199 : tests: fix race in test-http-curl-chunk-problem - http://git.io/xTY8
02:27:42  <MI6>joyent/node: Julien Gilli refs/tags/jenkins-accept-commit-temp * 12dec40 : tests: fix race in test-http-curl-chunk-problem (+1 more commits) - http://git.io/xTYu
02:29:04  * kellabytejoined
02:29:15  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
02:33:05  * jgiquit (Quit: jgi)
02:44:44  * thlorenz_joined
02:49:11  * thlorenz_quit (Ping timeout: 246 seconds)
03:12:51  * avalanche123joined
03:17:08  * avalanche123quit (Ping timeout: 246 seconds)
03:24:56  * Left_Turnquit (Remote host closed the connection)
03:34:03  * a3fjoined
03:38:50  * avalanche123joined
03:45:35  * thlorenz_joined
03:50:09  * avalanche123quit (Remote host closed the connection)
03:50:17  * thlorenz_quit (Ping timeout: 265 seconds)
03:52:44  * stagasquit (Ping timeout: 245 seconds)
04:11:31  * avalanche123joined
04:19:50  * avalanche123quit (Remote host closed the connection)
04:20:00  * avalanche123joined
04:46:21  * toothrotquit (Ping timeout: 250 seconds)
04:46:24  * thlorenz_joined
04:50:43  * thlorenz_quit (Ping timeout: 244 seconds)
05:02:03  * avalanche123quit (Remote host closed the connection)
05:34:16  * kellabytequit (Quit: Connection closed for inactivity)
05:34:19  * AvianFluquit (Remote host closed the connection)
05:35:03  * AvianFlujoined
05:47:10  * thlorenz_joined
05:48:50  * kkaeferquit (Quit: Quit.)
05:51:22  * thlorenz_quit (Ping timeout: 240 seconds)
06:11:29  * crispyzealquit (Ping timeout: 245 seconds)
06:12:27  * crispyzealjoined
06:15:04  * a3fquit (Ping timeout: 252 seconds)
06:28:08  * SergeiRNDjoined
06:28:20  * SergeiRNDquit (Client Quit)
06:28:33  * SergeiRNDjoined
06:33:29  * AvianFluquit (Remote host closed the connection)
06:47:58  * thlorenz_joined
06:50:30  * avalanche123joined
06:51:22  * rmgquit (Remote host closed the connection)
06:52:27  * thlorenz_quit (Ping timeout: 250 seconds)
06:54:43  * avalanche123quit (Ping timeout: 244 seconds)
07:08:04  * SergeiRNDquit (Quit: Leaving.)
07:13:19  * qard_quit (Remote host closed the connection)
07:48:47  * thlorenz_joined
07:50:20  * octetclo1quit (Ping timeout: 264 seconds)
07:52:08  * rmgjoined
07:52:52  * thlorenz_quit (Ping timeout: 240 seconds)
07:57:27  * rmgquit (Ping timeout: 250 seconds)
08:03:36  * bajtosjoined
08:29:22  * SergeiRNDjoined
08:49:39  * thlorenz_joined
08:54:02  * thlorenz_quit (Ping timeout: 245 seconds)
08:54:52  * crispyzealquit (Ping timeout: 240 seconds)
09:00:11  * crispyzealjoined
09:23:33  * stagasjoined
09:25:58  * kkaeferjoined
09:34:27  * crispyzealquit (Quit: zzz)
09:50:24  * thlorenz_joined
09:54:52  * thlorenz_quit (Ping timeout: 240 seconds)
10:01:18  * crispyzealjoined
10:03:07  * crispyzealquit (Client Quit)
10:11:02  * crispyzealjoined
10:12:24  * Left_Turnjoined
10:28:02  * chris_99joined
10:32:12  * crispyzealquit (Quit: zzz)
10:33:11  * crispyzealjoined
10:35:03  * crispyzealquit (Client Quit)
10:35:56  * kellabytejoined
10:36:02  * crispyzealjoined
10:37:27  * crispyzealquit (Client Quit)
10:38:29  * crispyzealjoined
10:40:03  * crispyzealquit (Client Quit)
10:41:06  * crispyzealjoined
10:42:45  * crispyzealquit (Client Quit)
10:43:44  * crispyzealjoined
10:47:14  * crispyzealquit (Client Quit)
10:51:09  * a3fjoined
10:51:17  * thlorenz_joined
10:55:22  * SergeiRNDquit (Quit: Leaving.)
10:55:45  * thlorenz_quit (Ping timeout: 256 seconds)
11:00:16  <txdv>saghul: what are you going to do on this weekend?
11:00:39  <txdv>maybe if you have some time we could make a hackaton on uv_read?
11:01:59  * stagasquit (Ping timeout: 256 seconds)
11:02:36  * bajtosquit (Quit: bajtos)
11:02:37  <saghul>txdv: I don't think I'll have the time, sorry :-S
11:03:08  <saghul>feel free to work on it if you like, we can play with the git history later
11:03:47  <saghul>txdv: I'll ping you if I do find the time, nevertheless. And thanks!
11:03:58  * Mark__joined
11:04:32  <txdv>ok
11:05:54  <Mark__>hi there, can anyone tell me if libuv can be compiled for iOS? I don't see anything in the docs, but just thought I'd check in case there's some unofficial support, cheers
11:07:37  * crispyzealjoined
11:09:52  * crispyzealquit (Client Quit)
11:10:53  * crispyzealjoined
11:13:29  <txdv>never compiled it for iOS
11:13:36  <txdv>if you send me an iPhone ill make it compile
11:13:43  <saghul>Mark__: it is supported AFAIK, but you'll need to find how to tell GYP to do it
11:13:49  <saghul>txdv: xD
11:13:52  <Mark__>:-)
11:14:04  <Mark__>I don't have an iPhone either, but I'll steal one from work and send it to you
11:14:40  <Mark__>I did notice some ios related stuff in the repo so figured it might be possible
11:14:43  <Mark__>just not 100% legit
11:14:46  <Mark__>(yet)
11:14:51  <Mark__>but I'll have a poke around, thanks
11:14:52  <saghul>Mark__: we have checks in the code for libuv to work with iOS, but I haven't compiled it myself
11:15:19  <Mark__>cool, thanks saghul
11:15:41  <txdv>Mark__: Andrius Bentkus, Germany, NRW, Aachen 52074, Hainbuchenstrasse 1
11:15:51  <Mark__>haha, I'll get right on that ;-)
11:16:20  <txdv>Pack in also a beer known in your region
11:16:42  <Mark__>I'd put in a black isle organic blonde
11:17:12  <Mark__>or maybe a brewdog punk ipa
11:18:10  <txdv>so you are from scottland
11:18:15  * crispyzealquit (Quit: zzz)
11:20:08  <Mark__>indeed :-)
11:20:19  <Mark__>right, gonna poke around and try to get this building, thanks guys
11:20:29  <txdv>Mark__: I also think that I need a mac book
11:25:02  * crispyzealjoined
11:30:28  * rmgjoined
11:32:55  * crispyzealquit (Quit: zzz)
11:34:51  * rmgquit (Ping timeout: 256 seconds)
11:36:02  * SergeiRNDjoined
11:36:30  <txdv>saghul: C# has an IDispose pattern, where you can use syntactic sugar like using (var tcp = new Tcp()) { tcp.DoSomething(); } // object is closed after that block
11:36:41  <txdv>kinda like RAII
11:36:50  <txdv>my question is, should I call shutdown or close at the end
11:37:23  <txdv>its like RAII in C++ if you ever done that, python would be probably __del__
11:37:57  <txdv>but you have to explicitly write the using, otherwise it won't be called ... unless it is garbage collected and that never happens for tcp objects .. unless the remote closes it
11:40:59  <saghul>I'd say close
11:41:19  <saghul>if the user doesn't use the handle just close it abruptly
11:41:41  <saghul>if he is interested in waiting for writes to finish he can call shutdown himself, IMHO
11:42:14  * seishunjoined
11:46:15  * bajtosjoined
11:46:40  * bajtosquit (Client Quit)
11:47:03  <txdv>Yeah but if I call using (var tcp = new Tcp()) { tcp.Shutdown(); } the close will happen before the shutdown is done
11:47:34  <txdv>so I have to make it that Close() waits if Shutdown() is called before
11:48:07  <txdv>In my bindings Shutdown calls Close in the end
11:48:27  <txdv>Because writing tcp.Shutdown(tcp.Close) looks bad imo
11:52:03  * thlorenz_joined
11:53:08  * rendarjoined
11:56:32  * thlorenz_quit (Ping timeout: 246 seconds)
11:58:14  * AlexisMochajoined
12:44:16  * kellabytequit (Quit: Connection closed for inactivity)
12:52:52  * thlorenz_joined
12:57:26  * thlorenz_quit (Ping timeout: 256 seconds)
13:15:48  * saghul_joined
13:16:05  * rmgjoined
13:16:46  * kellabytejoined
13:20:40  * saghul_quit (Ping timeout: 256 seconds)
13:20:42  * rmgquit (Ping timeout: 245 seconds)
13:23:32  * toothrotjoined
13:34:01  * toothrotquit (Ping timeout: 264 seconds)
13:37:30  * bajtosjoined
13:43:14  * crispyzealjoined
13:44:37  * crispyzealquit (Client Quit)
13:48:17  * bajtosquit (Quit: bajtos)
13:53:40  * thlorenz_joined
13:58:10  * thlorenz_quit (Ping timeout: 252 seconds)
14:02:45  * AvianFlujoined
14:10:04  * saghul_joined
14:21:33  * lance|afkchanged nick to lanceball
14:39:11  * SergeiRND1joined
14:39:39  * johnhaley81joined
14:40:14  <johnhaley81>Hey guys! I'm getting a weird error in libuv that I was hoping to get some help with.
14:40:44  * SergeiRNDquit (Ping timeout: 246 seconds)
14:41:27  <johnhaley81>I'm queueing up some work using `uv_queue_work` and sometimes when that happens it's throwing an exception in Windows.
14:48:50  * Fishrock123joined
14:52:03  * johnhaley81quit (Quit: Page closed)
14:52:41  * johnhaley81joined
14:53:16  <saghul>johnhaley81: what kind of exception?
14:53:48  <johnhaley81>The thread 0x1e9c has exited with code 0 (0x0). First-chance exception at 0x00C5DDF4 in node.exe: 0xC0000005: Access violation writing location 0x7365252C. Unhandled exception at 0x00C5DDF4 in node.exe: 0xC0000005: Access violation writing location 0x7365252C. The program '[2444] node.exe' has exited with code 0 (0x0). The program '[7744] node.exe' has exited with code 0 (0x0). The program '[388] node.exe' has exited with code 0 (
14:53:58  <johnhaley81>I'm trying to write up a gist.
14:54:06  <johnhaley81>This is in node 0.10.36
14:54:17  <saghul>is this your own module?
14:54:23  <johnhaley81>Yes
14:54:29  * thlorenz_joined
14:54:37  <saghul>if so, can you gist the most relevant part which calls uv_queue_work?
14:55:34  <johnhaley81>https://gist.github.com/johnhaley81/8a08813d071a39d5b3a3
14:58:53  * thlorenz_quit (Ping timeout: 246 seconds)
15:03:50  <johnhaley81>saghul: does it makes sense what's going on?
15:05:48  * SergeiRND1quit (Quit: Leaving.)
15:12:26  <saghul>johnhaley81: are you on a different thread there?
15:12:53  <saghul>are you calling uv_queue_work from a thread other than the loop thread, that is?
15:13:38  <johnhaley81>Correct.
15:14:01  <saghul>well, that's not correct :-) uv_queue_work is *not* thread safe
15:14:09  <johnhaley81>Mmhmm
15:14:18  <txdv>LOOK
15:14:23  <saghul>if you want to run something from another thread on the loop thread look at using an async handle
15:14:24  <txdv>the change i made to the doc!
15:14:43  <txdv>states that!
15:14:49  <saghul>txdv: indeed!
15:15:09  <saghul>johnhaley81: see http://docs.libuv.org/en/v1.x/threadpool.html and http://docs.libuv.org/en/v1.x/async.html
15:15:19  <johnhaley81>This only fails on windows :(
15:15:29  <johnhaley81>But probably because windows handles threads weirdly.
15:15:37  <johnhaley81>And even then it's random.
15:15:56  <txdv>Also I see now that it says Note: Note that
15:16:01  <txdv>Stupid me
15:16:05  <johnhaley81>Are these methods available in node 0.10.36?
15:17:01  <johnhaley81>I'm going to go try this out. Thanks so much @saghul.
15:18:33  <txdv>Hey, I wrote that note and you thank him?
15:18:34  <txdv>:(
15:18:49  <rendar>guys, how libuv maps a fd to a uv_handle_t?
15:19:09  <txdv>it saves the fd somewhere in the struct?
15:19:26  <rendar>txdv, read better, fd->uv_handle_t not uv_handle_t->fd :)
15:20:24  <txdv>you have an fd and want to get a uv_handle?
15:20:38  <johnhaley81>oh haha
15:20:44  <johnhaley81>Thanks as well @txdv :)
15:21:15  <saghul>rendar: that's not possible
15:21:29  <saghul>windows doesn't even use fds
15:21:30  <johnhaley81>saghul pointed me in the right direction to your docs :P
15:22:36  <rendar>saghul, no, i mean how libuv does that internally? does it use the user-pointer epoll/kqueue etc let you to specify?
15:22:41  <txdv>Well they are not *my* docs, they contain a note that *I* made
15:23:21  <txdv>iit doesnt do fd to handle mapping
15:23:47  <saghul>rendar: no, it uses an array which uses the fd as an index and the uv__io_t internal handle as the value
15:23:55  <rendar>txdv, so how can lib map an fd i/o alert it gets from epoll, to the user specified callback?!
15:24:00  <saghul>and public handles embed uv__io_t handles
15:24:06  <rendar>saghul, i see, like libev, then
15:24:40  <rendar>saghul, why this approach has been used, and not the user pointer has been chosen?
15:25:09  <saghul>I can't tell, I didn't write that code
15:25:15  <rendar>i see
15:25:24  <johnhaley81>How old is that note @txdv?
15:25:28  <txdv>rendar the thing that you pass to epoll can be tight together with a pointer of your choosing
15:25:57  <rendar>txdv, i already know that, i was just wondering if libuv uses that pointer or not
15:26:25  <saghul>rendar: it doesn't
15:26:38  <rendar>ok
15:26:44  <saghul>here is where it fetches the uv__io_t thing from the array: https://github.com/libuv/libuv/blob/v1.x/src/unix/linux-core.c#L281
15:27:04  <saghul>johnhaley81: 2 days
15:27:26  <saghul>but I thought everyone would read our docs together with the morning newspaper
15:27:55  * saghul_quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
15:28:42  <johnhaley81>haha ok cool. I wrote that like 6 months ago and I never saw the thing about thread-safety :)
15:28:43  * reqsharkquit (Quit: Be back later ...)
15:29:02  <txdv>Ohhhh, now my change is suddently not good enough
15:29:30  <saghul>johnhaley81: well, libuv has never been thread safe, so it was still wrong :-P
15:30:18  <johnhaley81>And now I'm trying to make it right :)
15:30:42  <saghul>YES!
15:30:48  <txdv>what is the node module you are working on?
15:31:23  <johnhaley81>https://github.com/nodegit/nodegit
15:32:43  <txdv>o god poor soul
15:32:51  <txdv>i wont make fun of you anymore
15:33:35  <txdv>isn't there like a pure js implementation of git out
15:33:45  <txdv>someone used kickstart to fund that actually
15:33:57  <johnhaley81>Yep
15:33:57  <johnhaley81>https://github.com/creationix/js-git
15:34:13  <johnhaley81>But it's abandon-ware :(
15:34:25  <johnhaley81>Plus, libgit2 is super fast.
15:34:55  <txdv>what
15:35:00  <txdv>he got like 50k for that project
15:35:07  <johnhaley81>Yeah
15:37:21  <txdv>creationix: you abandoned js-git/
15:38:39  <creationix>adandonded?
15:38:44  <creationix>more like paused
15:38:48  <creationix>I had to get a real job to feed my family
15:39:15  <creationix>besides, js-git isn’t meant to compete with libgit2, it’s for browser environments where js is the *only* option
15:39:27  <creationix>though I am currently porting js-git to lua as part of my luvit work
15:39:45  <johnhaley81>Real jobs :(
15:39:58  <txdv>you are writing a git lib in pure lua?
15:40:20  <txdv>creationix: why dont you just use libgit2
15:40:46  <txdv>i mean you ported libuv also to uv to get stuff running faster than implementation all the event loops
15:40:49  <creationix>I want something more flexible
15:41:30  <txdv>creationix: what specifically?
15:41:47  <creationix>luvit’s new package manager uses a git compatable database, but there are no commits
15:42:02  <creationix>git and libgit assume a more traditional workflow
15:42:10  <creationix>plus binary addons are still a pain
15:42:26  <txdv>it has an object database
15:42:38  <txdv>well I can't say much
15:42:49  <txdv>I haven't touched it in a long time
15:42:51  <txdv>was just curious
15:43:14  <creationix>mostly because I don’t know libgit2, that probably would have been a good idea if it’s flexible enough at the low-level
15:43:27  <txdv>i think it is
15:43:33  <creationix>packfile reading was “fun” https://github.com/creationix/rye/blob/master/libs/git-fs.lua
15:44:04  <creationix>it’s pure c89 with no dependencies it says, that sounds easy to embed
15:44:35  <creationix>though I’m not a fan of lgpl2, at least it
15:44:39  <creationix>it’s not normal gpl
15:44:42  <txdv>bindings are mit
15:44:46  <txdv>it says that specifically
15:45:08  <creationix>what about static embedding?
15:45:18  <txdv>I dont remember
15:45:35  <creationix>that would be a stopper for me if I can’t statically include in my mit or apache app
15:46:11  <txdv>well i asked the question for you on #libgit2
15:46:25  <txdv>i remember that libuvsharp could be made MIT because bindings
15:46:29  <txdv>can be non gpl
15:46:39  <txdv>but in c# you can't create static binary blobs
15:46:47  <txdv>well you can with the new shiny stuff i guess
15:47:09  <txdv>GPLv2 with Linking Exception.
15:47:22  <txdv>static linking, dynamic linking
15:47:32  <txdv>technically it sounds that they are ok with any kind of linking
15:49:15  <txdv>7:45 < txdv> do static bindings need to be gpl?
15:49:15  <txdv>17:47 < tbranyen> txdv: libgit2 is under GPL2 with linking exception. This means you can link to and use the library from any program, proprietary or open source; paid or gratis.
15:49:18  <txdv>17:47 < txdv> even with static linking?
15:49:21  <txdv>17:47 < txdv> into one binary blob?
15:49:23  <txdv>17:48 < tbranyen> txdv: visual studio does it, github's native clients do it, atom editor does it, so yeah
15:49:26  <txdv>creationix: the only thing you need to consider is that
15:49:33  <txdv>the underlying IO is all blocking
15:49:41  <txdv>there are no libuv async interfaces
15:49:52  <txdv>basically you will end up executing all the stuff in libus thread pool
15:50:03  <txdv>which might be suboptimal for your needs
15:52:24  * saghul_joined
15:55:19  * thlorenz_joined
15:55:36  * bajtosjoined
15:58:15  * davijoined
15:58:15  * daviquit (Changing host)
15:58:15  * davijoined
15:59:49  * thlorenz_quit (Ping timeout: 264 seconds)
16:00:23  <creationix>txdv: true, but fs operations run on the libuv threadpool anyway
16:00:59  <txdv>not the network related once
16:01:25  <txdv>you can pull push repos
16:02:01  <creationix>that’s the hard to implement part though
16:02:13  <creationix>I’ve got the disk interaction down pretty good (except for pack-file creation)
16:05:37  * rmgjoined
16:05:54  * daviquit (Remote host closed the connection)
16:06:18  <txdv>will you need network interaction creationix ?
16:06:41  <creationix>for luvit’s package manager it’s all custom network protocol
16:06:43  * rmgquit (Remote host closed the connection)
16:06:51  * rmgjoined
16:06:55  <creationix>but for my rye project I need to be able to fetch from git repos
16:07:05  <txdv>rye?
16:07:23  <creationix>a publishing platform based on git
16:07:28  <creationix>lua port of wheaty
16:07:38  <creationix>https://github.com/creationix/wheaty https://github.com/creationix/rye
16:14:05  <txdv>why the sudden move from js to lua
16:15:38  <creationix>I wouldn’t call it sudden, I’ve been working on lua and js at the same time for years, but recently I got a full-time job working with lua
16:15:53  <creationix>I even gave a lua presentation at nodeconf a few years back
16:19:02  <txdv>a lua presentation at a node conf
16:19:55  * reqsharkjoined
16:20:02  <creationix>https://github.com/creationix/nodeconf2012
16:20:42  * reqsharkquit (Remote host closed the connection)
16:21:08  * reqsharkjoined
16:21:20  <txdv>that template
16:21:42  <txdv>also node has a few things more than just libuv
16:21:59  <txdv>which you state in the next slide
16:21:59  <txdv>;D
16:22:57  <creationix>oh trust me I know, I’ve spend the last few months full-time re-implementing luvit
16:23:13  <creationix>opensll is no end of segfaults and double-free errrors
16:23:16  <creationix>*openssl
16:23:31  <creationix>libuv was pretty simple though, the new luv bindings only took me two weeks for libuv 1.x
16:23:33  <rendar>creationix, Rackspace?
16:23:43  <creationix>rendar: yep, what about?
16:24:06  <txdv>i guess he wanted to ask you if you work there
16:24:07  <rendar>creationix, nothing, i remember we just discussed about it! i wonder why they want Lua instead of Js
16:24:16  <creationix>memory
16:24:21  <txdv>start up time
16:24:21  <creationix>v8 is a memory hog
16:24:28  <rendar>i see!
16:24:29  * rmg_joined
16:24:35  <creationix>the cloud monitoring agent runs inside customer’s VMs
16:24:41  <txdv>v8 trades speed for memory
16:24:47  * rmgquit (Read error: Connection reset by peer)
16:24:51  <pquerna>luajit trades... huh.
16:24:53  <creationix>yes, but luajit is just as fast
16:25:02  <creationix>well, in different areas
16:25:03  * davijoined
16:25:07  <pquerna>yes.
16:25:13  <pquerna>luajit doesn't GC 'well'
16:25:26  <creationix>tracing jit vs inline caches
16:25:43  <creationix>I wonder when the new gc will ever be done, seems Mike got slowed down
16:26:30  <creationix>pquerna: did you see duktape? It’s slow being a bytecode interpreter, but it’s refcounted making gc pauses minimal and is super low overhead
16:26:36  <creationix>and ES5 + coroutines
16:28:07  * rmg_quit (Read error: Connection reset by peer)
16:28:18  * rmgjoined
16:28:24  <txdv>who is mike?
16:29:10  <pquerna>creationix: yeah, i saw it.
16:29:13  * johnhaley81quit (Quit: Page closed)
16:29:23  <creationix>txdv: Mike Pall is the creator of LuaJIT
16:29:35  <txdv>just another super person
16:29:35  <creationix>single man can make a jit engine that rivals Google’s V8 team
16:29:50  <creationix>to be fair, lua is a simpler language
16:29:59  <txdv>when i look at these people
16:30:10  <txdv>i feel like a complete failure
16:30:15  <creationix>it inspires me
16:30:28  <txdv>Yeah that is what i wanted to say
16:30:32  <creationix>;)
16:30:40  <txdv>that is a nice way to describe it
16:30:47  <txdv>ok im heading home
16:30:51  <txdv>cya in 30minutes
16:31:02  <creationix>laterz
16:49:16  * avalanche123joined
16:52:07  * SergeiRNDjoined
16:52:16  * SergeiRNDquit (Client Quit)
16:52:32  * SergeiRNDjoined
16:56:04  * thlorenz_joined
16:56:24  * jgijoined
16:56:46  * piscisaureusjoined
17:00:22  * thlorenz_quit (Ping timeout: 240 seconds)
17:02:01  <MI6>joyent/node: Saúl Ibarra Corretgé refs/tags/jenkins-accept-pull-request-temp * c3d7294 : deps: update libuv to 0.10.36 - http://git.io/xtse
17:13:47  <jgi>saghul: tjfontaine started the CI for the upgrade to libuv 0.10.36
17:13:51  <jgi>tjfontaine: thanks :)
17:14:16  * kellabytequit (Quit: Connection closed for inactivity)
17:16:13  * lanceballchanged nick to lance|afk
17:18:16  <MI6>joyent/node: Michael Dawson v0.12 * 3e40e12 : test: make destroyed-socket-write2.js more robust - http://git.io/xtWW
17:24:13  <saghul>jgi: thanks!
17:25:31  <jgi>saghul: I don’t know if you saw my comment, but when I looked at the node-accept-pull-request jenkins job, it wasn’t clear that it was still running, so I started a node-review job with your changes here: http://jenkins.nodejs.org/job/node-review-julien/31/default/
17:26:23  <saghul>jgi: I see, but it looks completed though no tests were ran?
17:27:01  <jgi>saghul: you mean the node-accept-pull-request one or http://jenkins.nodejs.org/job/node-review-julien/31/default/?
17:27:22  <saghul>this one: http://jenkins.nodejs.org/job/node-review-julien/31/default/
17:28:57  <jgi>saghul: tests are running here: http://jenkins.nodejs.org/job/node-review-unix-julien/ and here: http://jenkins.nodejs.org/job/node-review-windows-julien/
17:29:06  <jgi>saghul: Jenkins’ UI is perfectible :)
17:29:24  <saghul>oh, thanks!
17:30:13  <jgi>saghul: you’re welcome, I’ll keep an eye on that, please ping me here if you need anything
17:31:06  <saghul>np, I
17:31:30  <saghul>i'm about to sign off, so please update the issue if hell breaks loose :-)
17:32:13  * Ralithquit (Ping timeout: 255 seconds)
17:32:30  <jgi>saghul: alright thank you!
17:32:35  <jgi>saghul: and have a great week-end :)
17:32:43  <saghul>likewise!
17:33:06  <jgi>cjihrig: ping
17:33:52  <cjihrig>jgi: hi
17:34:31  <jgi>cjihrig: re https://github.com/joyent/node/pull/9268, “if (options.port !== undefined && parseInt(options.port, 10) !== port)” seems a bit too confusing for me, do you mind if I try to come up with a solution that is a bit simpler to read/understand and ping you back?
17:35:07  <jgi>cjihrig: to be clear, what’s confusing to me is that we compare the output of two operations that have many edge cases
17:35:32  <jgi>cjihrig: what do you think?
17:36:38  <cjihrig>jgi: i think a comment would be enough to explain. if you want to work on something else, feel free. the validation should allow for undefined, numbers, and numeric strings
17:37:03  <jgi>cjihrig: ok, I’ll try something real quick, thanks!
17:39:28  * saghul_quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
17:39:43  * papajuansjoined
17:39:59  * bajtosquit (Quit: bajtos)
17:41:20  * papajuanspart
17:42:32  * octetclo1joined
17:43:45  * rmgquit (Ping timeout: 256 seconds)
17:44:36  * kellabytejoined
17:45:28  * rmgjoined
17:46:23  * Mark__quit (Quit: Page closed)
17:53:23  * brsonjoined
17:56:55  * thlorenz_joined
17:57:13  * FROGGS[mobile]joined
18:01:45  * thlorenz_quit (Ping timeout: 264 seconds)
18:08:38  * crispyzealjoined
18:22:26  * qardquit (Remote host closed the connection)
18:25:30  * qardjoined
18:27:55  * bajtosjoined
18:30:43  * lance|afkchanged nick to lanceball
18:40:38  * crispyzealquit (Quit: bye)
18:57:45  * thlorenz_joined
19:02:11  * thlorenz_quit (Ping timeout: 244 seconds)
19:07:35  * johnhaley81joined
19:18:02  <johnhaley81>@saghul I'm trying to implement `uv_async_init` on the main loop but I'm running into some issues with it.
19:18:08  <johnhaley81>Do you have anymore time that I can steal?
19:18:26  <tjfontaine>jgi, cjihrig: I prefer checks that make it very clear what's being tested for, so at least people who come back later at the code can quickly understand how it was meant to work -- that being said if we want to use JS coercion like that we definitely want it well documented
19:18:47  <johnhaley81>I have a gist of what's going on here: https://gist.github.com/johnhaley81/24686896ea2fed936ac3
19:19:47  <johnhaley81>After these are called node dies after a few more loops.
19:20:10  * Ralithjoined
19:20:35  <johnhaley81>`uv_async_init` is being run on the main thread and `uv_async_send` is being run outside of the main thread.
19:21:18  <cjihrig>tjfontaine: i'd much rather not support numeric strings, but at this point we have to
19:22:27  <jgi>tjfontaine, cjihrig: I agree. Coming up with something robust and flexible is tricky. For instance the actual code supports hexadecimal strings, but using parseInt with a radix of 10 does not.
19:22:44  <jgi>s/actual/current/
19:22:51  <jgi>french getting in the way
19:23:25  * saghul_joined
19:25:44  <johnhaley81>Hey @saghul_ did you see my previous messages?
19:34:26  <jgi>tjfontaine: updated libuv upgrade PR with https://github.com/joyent/node/pull/9274#issuecomment-76457053
19:35:01  <tjfontaine>jgi: which matches my response
19:35:08  <jgi>tjfontaine: yep :)
19:35:12  <tjfontaine>:)
19:35:47  <jgi>tjfontaine: just wanted to confirm your thoughts
19:36:10  <tjfontaine>nod
19:36:30  <tjfontaine>the test is not the greatest
19:36:49  <tjfontaine>as you can see my finger prints on it
19:44:51  * saghul_quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
19:46:00  * daviquit (Ping timeout: 256 seconds)
19:50:09  <robertkowalski>good afternoon!
19:53:50  <txdv>johnhaley81: doesnt nan have like a primitive which wraps libuvs async?
19:54:00  <txdv>last time i helped someone with some bindings i think he mentioned that
19:54:08  <jgi>robertkowalski: hey!
19:56:03  <johnhaley81>https://github.com/rvagg/nan/search?utf8=%E2%9C%93&q=uv_async_init
19:56:04  <johnhaley81>:(
19:58:00  <txdv>heh
19:58:03  <txdv>i must be stupid
19:58:17  <txdv>why is rvagg not hanging around in this channel
19:58:27  <txdv>so many node people asking about libuv
19:58:35  * thlorenz_joined
19:59:11  * dan336joined
19:59:12  <johnhaley81>Yeah, we're a strange bunch :)
20:00:31  * toothrotjoined
20:00:50  * saghul_joined
20:01:19  <tjfontaine>txdv: I believe it handles uv_queue_work but not the async thread work
20:02:27  <txdv>yes it does
20:02:43  <txdv>his problem is initiating async
20:02:50  <johnhaley81>For sure it handles uv_queue_work
20:02:54  <tjfontaine>johnhaley81: who is making your thread for you?
20:03:01  <johnhaley81>Yeah, I'm using uv_async_init
20:03:02  <johnhaley81>I am
20:03:20  <tjfontaine>I don't see a uv_thread mechanism here
20:03:27  <johnhaley81>https://gist.github.com/johnhaley81/24686896ea2fed936ac3
20:03:34  * thlorenz_quit (Ping timeout: 256 seconds)
20:03:43  <johnhaley81>Ohhh ok I see
20:03:51  <johnhaley81>No, it's being run on the node main loop thread
20:04:00  * dan336part
20:04:12  <tjfontaine>lets roll back for a second, what are you trying to do, and how did you arrive at needing uv_async_t
20:04:17  <johnhaley81>lol ok cool
20:04:47  <johnhaley81>So we're wrapping libgit2 for use in node (nodegit project which I'm pretty sure that you started way back when)
20:05:11  <johnhaley81>libgit2 has these callbacks that are triggered from C that I need to actually call JS functions
20:05:16  <txdv>it uses blocking function calls so he needs to put them into the threadpool
20:06:19  <txdv>wait, it has callbacks?
20:06:54  <johnhaley81>Yeah, we're calling the libgit2 function from JS where I set up all of the required data (e.g. the `uv_sync_t`, persist the JS callback and attach it via a `void *` payload on the libgit2 struct)
20:07:00  <johnhaley81>Yeah libgit2 has some callbacks
20:07:24  <johnhaley81>https://libgit2.github.com/libgit2/#HEAD/type/git_remote_callbacks
20:07:37  <johnhaley81>So in this case I'm using the `transfer_progress` callback
20:07:38  <tjfontaine>is libgit doing these ops synchronously or on a threadpool?
20:08:35  <johnhaley81>They are doing this synchronously.
20:08:50  <tjfontaine>and you are trying to make them behave asynchronously?
20:08:55  <johnhaley81>Correct
20:09:18  <tjfontaine>do you control the progress in teh cb about when it's ok for it to continue on?
20:09:22  <johnhaley81>https://gist.github.com/johnhaley81/24686896ea2fed936ac3#file-status-cc-L109-L113
20:09:24  * dan336joined
20:09:24  <johnhaley81>Yes
20:09:40  <johnhaley81>That `baton->done` is set in our main loop thread
20:10:48  <tjfontaine>you actually want something more like: https://github.com/joyent/v8plus/blob/master/v8plus_csup.c#L172-L182
20:11:06  <tjfontaine>LeftWing can provide more insight around the concepts
20:12:52  <johnhaley81>That does sound like what I'm looking for.
20:13:01  <johnhaley81>Any examples on how to use that?
20:13:04  <tjfontaine>though he may be at lunch right now
20:13:31  <tjfontaine>johnhaley81: he also was working to add it as a generic support mechanism for libuv
20:14:54  <tjfontaine>johnhaley81: in short, uv_queue_work would run the whole thing on the thread and report when it's done, and uv_async_send just says "hey work happened, wake up!" and neither necessarily match what it is you're looking to provide
20:15:20  <tjfontaine>johnhaley81: really though, I think it makes slightly more sense to expose the libgit2 interface more directly, and let the JS consumer control iteration themselves
20:15:37  <tjfontaine>ok, I need to step away for a bit, I'll be back.
20:16:36  * bajtosquit (Quit: bajtos)
20:16:58  <johnhaley81>@tjfontaine the user does have access to the libgit2 interface. They set it by passing in a function which is then called via the above method.
20:18:08  <johnhaley81>Yeah I need a way to execute a js callback to which I have a pointer to on the main loop from outside of that loop.
20:24:08  * dan336quit (Read error: No route to host)
20:24:16  * kellabytequit (Quit: Connection closed for inactivity)
20:24:25  * dan336joined
20:26:58  <robertkowalski>tjfontaine: i submitted the changes to git-apply-pr i proposed last week
20:32:01  <jgi>tjfontaine, cjihrig: https://github.com/joyent/node/pull/9268/files#r25536400
20:33:38  * saghul_quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
20:41:25  * johnhaley81quit (Ping timeout: 246 seconds)
20:44:00  * maxkorpjoined
20:47:03  * tbranyenjoined
20:49:35  * maxkorpquit (Quit: ZNC - 1.6.0 - http://znc.in)
20:50:45  * maxkorpjoined
20:52:41  * maxkorpquit (Client Quit)
20:53:52  * maxkorpjoined
20:56:28  * johnhaley81joined
20:59:26  * thlorenz_joined
21:03:47  * thlorenz_quit (Ping timeout: 250 seconds)
21:09:11  * avalanche123quit (Remote host closed the connection)
21:11:23  * johnhaley81quit (Quit: Page closed)
21:11:28  * avalanche123joined
21:12:02  * johnhaley81joined
21:19:11  <txdv>saghul: can you retweet my call to add libuv related projects to the wiki page?
21:19:20  <txdv>i think you have a better reach
21:19:35  <jgi>tjfontaine, cjihrig: that might be better: https://gist.github.com/misterdjules/741cb578638b18f139ef
21:20:13  <cjihrig>jgi: i think this works
21:20:15  <cjihrig>if (options.port !== undefined && parseFloat(options.port) !== port)
21:22:37  <jgi>cjihrig: it could work (I haven’t tried it), but I would like to find a form that is explicit enough to be easy to understand
21:22:55  <cjihrig>it doesn't work on hex strings…
21:24:45  <jgi>cjihrig: going for lunch
21:25:01  <jgi>cjihrig: I’ll check back when I’m back
21:25:02  * pilper4ahovjoined
21:25:40  <jgi>cjihrig: thank you for your patience and sorry it’s taking so long to merge an apparently small change
21:26:21  <cjihrig>jgi: no problem. and yea this is turning into quite the headache
21:29:26  * avalanche123quit (Remote host closed the connection)
21:32:05  * SergeiRNDquit (Quit: Leaving.)
21:43:22  * johnhaley81quit (Ping timeout: 246 seconds)
21:50:04  * kellabytejoined
21:51:33  * johnhaley81joined
22:00:14  * thlorenz_joined
22:04:10  * rmgquit (Read error: Connection reset by peer)
22:04:34  * thlorenz_quit (Ping timeout: 244 seconds)
22:04:54  * rmgjoined
22:06:38  * rmgquit (Read error: Connection reset by peer)
22:07:02  * rmgjoined
22:10:29  * rendarquit (Quit: Leaving)
22:18:44  * avalanche123joined
22:22:31  * wolfeidauquit (Remote host closed the connection)
22:23:28  * rmgquit (Read error: Connection reset by peer)
22:24:14  * rmgjoined
22:34:34  * avalanche123quit (Remote host closed the connection)
22:45:33  * seishunquit (Ping timeout: 264 seconds)
22:48:35  * dan336quit (Read error: No route to host)
22:48:48  * dan336joined
22:51:08  * Fishrock123quit (Read error: Connection reset by peer)
22:51:35  * Fishrock123joined
22:54:14  * johnhaley81quit (Quit: Page closed)
22:56:02  <jgi>cjihrig: updated my gist to use unary +: https://gist.github.com/misterdjules/7e4f25997b3805792aac
22:56:41  <jgi>cjihrig: which does not support strings representing negative hexadecimal numbers, but works for all other use cases
22:57:02  <jgi>cjihrig: given that we don’t want to support them anyway, that could work
22:58:45  <cjihrig>jgi: did you see my latest comment
22:58:52  <jgi>cjihrig: let me checkj
22:59:17  <jgi>cjihrig: ah no, hadn’t seen that, reading
23:01:02  * thlorenz_joined
23:01:33  <jgi>cjihrig: that seems like a good solution!
23:02:00  <cjihrig>jgi: do you want to add it to util as well?
23:02:57  <jgi>cjihrig: I’m not sure, since it doesn’t support negative hexadecimal numbers, so it would be specific to this use case in my opinion
23:03:14  <jgi>or we could have a ‘isNonNegativeNumeric'
23:05:09  <cjihrig>jgi: ok. i have to run for now. i'll update the PR, but not add it to util
23:05:51  <jgi>cjihrig: also, we wouldn’t add anything to util in v0.12, but we could in master
23:06:02  * thlorenz_quit (Ping timeout: 272 seconds)
23:06:41  <jgi>cjihrig: ok sounds good
23:10:59  <jgi>cjihrig: updated my gist, FWIW: https://gist.github.com/misterdjules/7e4f25997b3805792aac
23:15:46  * wolfeidaujoined
23:24:52  * octetclo1quit (Ping timeout: 245 seconds)
23:28:10  <Domenic>Given that epoll/etc. notifies you when a socket is (probably) readable, is there any way to tell how many bytes are readable, without using read/recv? Or do you just preallocate something that you think will probably work, and then pass that in, maybe realloc()ing away any leftover bytes?
23:28:56  <jgi>robertkowalski: “Rocko Artischocko oh oh oh oh!” :)
23:29:04  <jgi>robertkowalski: made my day!
23:33:39  * benjamingrjoined
23:35:11  * avalanche123joined
23:38:45  <MI6>joyent/node: Julien Gilli refs/tags/jenkins-accept-pull-request-temp * 7eaeddb : tests: fix race in test-http-curl-chunk-problem (+1 more commits) - http://git.io/xY8E
23:39:27  * avalanche123quit (Ping timeout: 245 seconds)
23:46:40  <MI6>joyent/node: Julien Gilli refs/tags/jenkins-accept-commit-temp * ca744e4 : tests: fix race in test-http-curl-chunk-problem (+1 more commits) - http://git.io/xYBH
23:48:55  * brsonquit (Quit: leaving)
23:57:22  * Fishrock123quit (Quit: Leaving...)