00:00:02  * ircretaryquit (Remote host closed the connection)
00:00:03  <trevnorris>so, what, user creates a generator, and at some point they run gen.next(), which yields at an async operation. at which point would completely block until the async operation is complete.
00:00:12  * ircretaryjoined
00:00:43  <txdv>generators dont block
00:00:48  * mikealquit (Quit: Leaving.)
00:00:51  <piscisaureus>trevnorris: this is magic that co does for you. but there's no blocking.
00:00:54  * avalanche123quit (Ping timeout: 255 seconds)
00:01:05  * mikealjoined
00:01:16  <trevnorris>wtf. if I run .next() and the async operation isn't complete then what's going to be returned?
00:01:28  <piscisaureus>trevnorris: you're not running .next()
00:01:49  <trevnorris>piscisaureus: write me a simple script that shows this in usage.
00:02:37  <piscisaureus>trevnorris: https://github.com/visionmedia/co/blob/master/examples
00:03:29  <trevnorris>and how would I not call .next() w/ a generator?
00:03:33  <trevnorris>it's part of the spec: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators
00:04:01  * mikealquit (Client Quit)
00:04:49  * mrvisserjoined
00:04:54  <trevnorris>so take https://github.com/visionmedia/co/blob/master/examples/array.js
00:05:08  <trevnorris>line 17
00:05:27  <piscisaureus>trevnorris: yes, what's up with that?
00:06:05  <trevnorris>you're telling me that V8 will do the escape analysis to determine what it can and cannot run based on when variables become available?
00:06:41  <piscisaureus>trevnorris: v8 will suspend the generator when it sees a yield statement, until the async operation is complete
00:06:54  <piscisaureus>trevnorris: the co() function does magic to make this happen.
00:07:01  <piscisaureus>trevnorris: you are not calling .next() yourself
00:07:22  <trevnorris>there's no magic. there's fluff and abstraction.
00:07:26  <piscisaureus>trevnorris: of course, you can also use generators the way they're supposed to be used, in which case you would have to .next() them
00:07:41  * yunongjoined
00:07:51  * yunong_quit (Ping timeout: 248 seconds)
00:08:32  <piscisaureus>trevnorris: but then yield just means yield and not "awayt"
00:08:35  <piscisaureus>*await
00:09:31  <txdv>piscisaureus: take also a look at https://github.com/bjouhier/galaxy
00:09:35  * mrvisserquit (Ping timeout: 252 seconds)
00:09:59  <trevnorris>back to the example, you're telling me that it will always log a, b, c in proper order, or that it will simply log them in the order in which they complete?
00:10:08  <piscisaureus>txdv: yes I know about that. There's also gen-run by tim caswell which does more or less the same.
00:10:12  <trevnorris>specifically https://github.com/visionmedia/co/blob/master/examples/array.js#L20-L22
00:10:24  <piscisaureus>trevnorris: it will be in the correct order.
00:10:34  <trevnorris>so it blocks.
00:10:39  <piscisaureus>trevnorris: no
00:10:43  <piscisaureus>trevnorris: it only blocks that function
00:10:50  <trevnorris>yes, that's what I mean
00:10:54  <txdv>trevnorris: the magic happens at the at the yield keyword
00:11:05  <trevnorris>it block the execution scope in which it's contained.
00:11:09  <piscisaureus>trevnorris: yes
00:11:14  <piscisaureus>trevnorris: but that's good
00:11:15  <trevnorris>txdv: aren't you supposed to be asleep. :P
00:11:47  <txdv>im waiting for your review
00:12:06  <trevnorris>so, first, if I place a yield in the global most execution scope it will block everything until it completes.
00:12:17  <txdv>the conversation got very interesting, so i didnt go to sleep
00:12:22  <trevnorris>heh
00:12:26  <piscisaureus>trevnorris: nope. It will just block the global execution scope
00:12:35  <piscisaureus>trevnorris: but it won't block other async stuff
00:12:47  <txdv>because i see a person who understands async/await tring to explain the concept of it to someone who hasnt been exposed to it
00:12:50  <piscisaureus>trevnorris: so, example:
00:13:20  <piscisaureus>fs.createReadStream('stuff').pipe(process.stdout);
00:13:20  <piscisaureus>yield fs.stat('something else');
00:13:47  <piscisaureus>trevnorris: ^-- the piping will continue even if the execution is halted on 'yield fs.stat'
00:14:13  <trevnorris>piscisaureus: so you're saying that in the following example, the timeout will still execute before the file is completely read? https://gist.github.com/trevnorris/e8f086981e7ad8650651
00:14:24  <piscisaureus>trevnorris: yup
00:15:16  <piscisaureus>trevnorris: you can also think of it as an implicit CPS transform
00:15:45  <piscisaureus>trevnorris: so 'yield foo(); bar()' becomes 'foo(function() { bar() })'
00:16:07  <piscisaureus>(assuming that foo follows the callback-last pattern)
00:16:38  <trevnorris>here's another: https://gist.github.com/trevnorris/e8f086981e7ad8650651
00:16:59  <trevnorris>so again, it'll bock at the getData() call until the data has returned, right?
00:17:00  <piscisaureus>trevnorris: it's not yeild but yield :)
00:17:07  <trevnorris>:P
00:17:11  <piscisaureus>trevnorris: but in that case it doesn't work because getData() is not a generator function
00:17:15  <piscisaureus>so you can't yield
00:17:29  <trevnorris>there, updated
00:17:54  <piscisaureus>trevnorris: not exactly but you can do what you are trying there
00:18:12  <trevnorris>yeah, i know my semantics are shit, but you get the idea.
00:18:25  <piscisaureus>trevnorris: yes that is possible
00:18:32  <txdv>trevnorris: just play around with co and galaxy
00:18:43  <txdv>you will understand much more if you investigate it yourself
00:18:58  <piscisaureus>trevnorris: you have to understand that right not the situation is a bit complicated and you have to wrap the generator. There's a proposal to fix that though.
00:19:08  <trevnorris>i'm still working on actually making code fast. not abstract.
00:19:17  <trevnorris>so, probably won't be touching those any time soon.
00:19:41  <piscisaureus>trevnorris: http://www.joezimjs.com/javascript/synchronizing-asynchronous-javascript-es7/
00:20:14  <trevnorris>txdv: it's the same type of reason why I had you pass length in the request object. so you could hoist the function and create better v8 optimizations.
00:20:44  <trevnorris>it's going to be a long time before v8 takes the time to optimize es6/7
00:21:31  <trevnorris>txdv: your PR looks good. i'll merge it after dinner. thanks for the fix.
00:23:05  <txdv>trevnorris: its ecma, v8 is going to support it
00:23:09  <trevnorris>it's so ironic. you have people pushing for standards like asm.js and ParallelArrays to make JS fast, then you have a group pushing for generators/promises/etc. that just add fluff and abstraction.
00:23:18  <trevnorris>txdv: supporting it and making it fast are very different things.
00:23:38  * rosskquit
00:24:03  <txdv>every time you see a callback you know it is going to be limited by IO
00:24:34  <txdv>and these people are tring to use generators to make the code look better
00:25:14  <txdv>we are talking about JS here
00:25:24  <trevnorris>seriously? going to take that argument? I'm trying to help write a library that can handle at minimum thousands of connections/sec. not some jQuery-ish lib that makes an occasional call to the server.
00:25:25  <txdv>you shouldn't be that concerned about speed
00:25:43  <trevnorris>I shouldn't be concerned about speed? really, honestly?
00:26:32  <trevnorris>I've written JS scripts that can come within 10% of fully optimized C code performing I/O. but it's definitely not w/ crap abstractions like this.
00:27:00  <txdv>show me that script
00:27:21  <trevnorris>txdv: https://gist.github.com/trevnorris/10448236
00:27:40  <trevnorris>super stupid, but simple case.
00:28:06  <trevnorris>here's one for routing data: https://github.com/trevnorris/psycho-proxy
00:28:19  <trevnorris>i got lazy, but it approaches performance of nginx
00:29:33  * a_lequit (Remote host closed the connection)
00:30:06  <trevnorris>dinner time
00:30:08  * trevnorris&
00:30:08  <LOUDBOT>MY TEACHERS WOULD NOT HAVE BEEN INTO THAT. ALL AT ONCE MAYBE, BUT NOT INDIVIDUALLY. I THINK I CREEP THEM OUT A LITTLE.
00:31:58  * zz_karupachanged nick to karupa
00:37:08  * txdvquit (Quit: Lost terminal)
00:51:56  * yunong_joined
00:52:20  * yunongquit (Read error: Connection reset by peer)
00:54:41  * bradleymeckquit (Ping timeout: 252 seconds)
01:02:56  * kazuponjoined
01:05:37  * mrvisserjoined
01:10:12  * mrvisserquit (Ping timeout: 255 seconds)
01:28:50  * janjongboomjoined
01:32:17  * kazuponquit (Remote host closed the connection)
01:32:52  * kazuponjoined
01:37:43  * kazuponquit (Ping timeout: 272 seconds)
01:40:43  * kazuponjoined
01:43:23  * EhevuTovjoined
01:48:08  * yunong_quit (Ping timeout: 244 seconds)
01:48:39  * Ralithquit (Ping timeout: 244 seconds)
01:50:13  * janjongboomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:52:21  * kazupon_joined
01:52:30  * EhevuTovquit (Quit: This computer has gone to sleep)
01:55:39  * kazuponquit (Ping timeout: 255 seconds)
02:02:31  * thlorenzjoined
02:06:23  * kazuponjoined
02:06:32  * mrvisserjoined
02:08:32  * janjongboomjoined
02:10:03  * kazupon_quit (Ping timeout: 240 seconds)
02:10:51  * janjongboomquit (Client Quit)
02:10:52  * kazuponquit (Ping timeout: 244 seconds)
02:11:17  * mrvisserquit (Ping timeout: 272 seconds)
02:14:32  * kazuponjoined
02:20:30  * Ralithjoined
02:44:42  * bradleymeckjoined
03:07:20  * mrvisserjoined
03:09:23  * avalanche123joined
03:11:46  * janjongboomjoined
03:11:49  <trevnorris>isaacs / tjfontaine: ping
03:12:05  * mrvisserquit (Ping timeout: 272 seconds)
03:12:49  * EhevuTovjoined
03:18:40  * piscisaureus&
03:18:41  <LOUDBOT>SLOW DOWN BRO, DONT GET STRESSED
03:19:58  * TooTallNatequit (Quit: Computer has gone to sleep.)
03:22:04  * avalanche123quit (Remote host closed the connection)
03:26:15  * kazuponquit (Ping timeout: 248 seconds)
03:26:56  * avalanch_joined
03:27:37  * a_lejoined
03:34:33  * toothrotquit (Ping timeout: 240 seconds)
03:41:51  * brsonquit (Ping timeout: 272 seconds)
03:52:57  * avalanch_quit (Remote host closed the connection)
03:53:28  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
04:01:19  <MI6>joyent/node: Andrius Bentkus master * a382c9a : udp: make it possible to receive empty udp packets - http://git.io/e369Ww
04:02:57  <MI6>joyent/node: Trevor Norris master * 803c3f0 : lint: fix indentation - http://git.io/W8rRfA
04:07:52  * mrvisserjoined
04:08:19  * guybrushquit (Excess Flood)
04:08:32  * kazuponjoined
04:08:51  * guybrushjoined
04:10:18  * avalanche123joined
04:12:06  * mrvisserquit (Ping timeout: 248 seconds)
04:30:51  * thlorenzquit (Remote host closed the connection)
04:31:27  * thlorenzjoined
04:31:39  * avalanche123quit (Remote host closed the connection)
04:35:32  * thlorenzquit (Ping timeout: 244 seconds)
04:41:11  * kazuponquit (Remote host closed the connection)
04:41:47  <Ralith>Does joyent have a HTTP request construction lib?
04:43:06  * seishunjoined
04:54:39  * avalanche123joined
04:58:12  * kazuponjoined
05:08:38  * mrvisserjoined
05:13:26  * mrvisserquit (Ping timeout: 248 seconds)
05:32:46  * seishunquit (Ping timeout: 264 seconds)
05:46:09  * mikealjoined
05:52:06  * mikealquit (Quit: Leaving.)
05:52:28  * a_lequit (Remote host closed the connection)
06:00:23  * TooTallNatejoined
06:04:26  * thlorenzjoined
06:07:30  * mikealjoined
06:09:22  * mrvisserjoined
06:13:43  * mrvisserquit (Ping timeout: 248 seconds)
06:20:26  * TooTallNatequit (Quit: Computer has gone to sleep.)
06:41:12  * bradleymeckquit (Quit: bradleymeck)
06:48:17  * yunongjoined
07:06:59  * yunongquit (Remote host closed the connection)
07:07:34  * yunongjoined
07:08:10  * avalanche123quit (Remote host closed the connection)
07:08:10  * EhevuTovquit (Ping timeout: 264 seconds)
07:08:36  * avalanche123joined
07:10:09  * mrvisserjoined
07:10:43  * yunongquit (Remote host closed the connection)
07:11:16  * rendarjoined
07:11:18  * yunongjoined
07:12:35  * yunong_joined
07:13:13  * yunongquit (Read error: Connection reset by peer)
07:13:23  * avalanche123quit (Ping timeout: 272 seconds)
07:14:01  * saghul_joined
07:15:04  * mrvisserquit (Ping timeout: 260 seconds)
07:24:57  * yunong_quit (Remote host closed the connection)
07:25:30  * yunongjoined
07:30:22  * yunongquit (Ping timeout: 264 seconds)
07:56:03  * yunongjoined
08:00:36  * yunongquit (Ping timeout: 255 seconds)
08:04:27  * hzjoined
08:11:00  * mrvisserjoined
08:15:02  * seishunjoined
08:15:27  * mrvisserquit (Ping timeout: 255 seconds)
08:17:40  * yunongjoined
08:18:08  * seishunquit (Read error: Connection reset by peer)
08:18:55  * seishunjoined
08:19:47  * yunong_joined
08:22:14  * yunongquit (Ping timeout: 248 seconds)
08:24:57  * yunong_quit (Ping timeout: 272 seconds)
08:33:22  * inolen1quit (Ping timeout: 264 seconds)
08:47:08  * txdvjoined
08:47:23  * seishunquit (Read error: Connection reset by peer)
08:51:24  * thlorenzquit (Remote host closed the connection)
08:51:56  * thlorenzjoined
08:56:03  * thlorenzquit (Ping timeout: 240 seconds)
09:02:55  <txdv>saghul: https://github.com/joyent/libuv/issues/667
09:04:30  <txdv>i think this is the next target i will work on
09:06:15  <txdv>Is XP still supported?
09:11:44  * mrvisserjoined
09:14:59  <saghul>txdv: yep, > SP2
09:16:12  * mrvisserquit (Ping timeout: 255 seconds)
09:16:48  <txdv>xD
09:18:07  <saghul>txdv: I still have a shitty laptop with XP around!
09:18:20  <indutny>saghul: https://twitter.com/ermouth/status/484548790066876417/photo/1
09:18:21  <indutny>:)
09:18:27  <saghul>one day we can just break support for it and see what happens
09:18:31  <txdv>have you ran the test suite of libuv lately?
09:18:38  <saghul>if no ope complains we are done
09:18:48  <saghul>not on XP, I run it mainly on 7
09:18:53  <saghul>*no one
09:19:27  <saghul>indutny: oh!
09:19:30  <indutny>haha
09:19:31  <txdv>stronk logo
09:19:43  <indutny>this is the first thing that I have so far
09:19:44  * yunongjoined
09:20:20  <saghul>it needs more velociraptors
09:21:29  <txdv>the colored version looks imo like shit
09:21:34  <txdv>but the white black version is super awesome
09:21:37  <saghul>or unicorns
09:22:02  <txdv>Ill tatoo that on my ass
09:22:21  <saghul>too node-ish for my taste
09:22:28  * janjongboomquit (Ping timeout: 260 seconds)
09:22:32  <txdv>waht is node-ish about it?
09:22:40  <saghul>the hexagon shape
09:22:44  <indutny>yeah
09:22:55  <indutny>I'd rather not have it hexagonal
09:22:56  <txdv>i dont want to be the smart ass
09:23:03  <txdv>but that is not a perfect hexagon
09:23:15  <indutny>who said that it is?
09:23:29  <txdv>I thought about the logo yesterday when indutny twittered about it
09:23:30  <saghul>txdv: I know, actually that's the first thing I didn't like about it xD
09:23:48  <indutny>I'm going to submit 99designs thing
09:23:53  <txdv>and I tried to come up with a symbol which could represent an event queue
09:23:55  <indutny>probably this or next week
09:24:04  <indutny>if anyone is willing to donate some money for it :)
09:24:06  <indutny>it'd be super cool
09:24:09  <indutny>we could split it
09:24:31  <indutny>its not that much, but it may raise a questions from my wife :)
09:24:32  <indutny>haha
09:24:33  <indutny>299 USD
09:24:33  * yunongquit (Ping timeout: 240 seconds)
09:24:34  <LOUDBOT>I SEE THROUGH YOUR WEB OF DECEPTION, ALIAI
09:24:49  <indutny>thanks LOUDBOT
09:26:12  * janjongboomjoined
09:26:31  <saghul>indutny: count me in
09:26:38  <indutny>ok, great!
09:26:47  <indutny>anyone else? ;)
09:26:57  * saghulgoes back to work for a while
09:27:38  <txdv>LOUDBOT knows whats going on here
09:27:51  <txdv>you are going to buy a ton of vodka for that 300$
09:28:05  <indutny>haha
09:28:12  <indutny>actually, if we are going to split it
09:28:15  <txdv>and then pay committers for good features with vodka bottles
09:28:17  <indutny>I'd rather send some money to you saghul
09:28:29  <indutny>I'm not sure if I can receive money on paypal in Russia
09:29:47  * daviddiasjoined
09:30:16  <indutny>hm...
09:30:22  <indutny>it seems that they started accepting money
09:30:22  <indutny>ok
09:30:33  * janjongboomquit (Ping timeout: 240 seconds)
09:30:52  <txdv>probably it also started to send all transaction history directly to putin
09:31:15  <indutny>I don't care if Putin will know about libuv logo
09:31:23  <txdv>I do
09:31:27  <indutny>this is not criminal in any sense :)
09:31:32  <txdv>I want him to know that there is this awesome event queue lib
09:33:26  <txdv>brb restarting
09:34:54  * janjongboomjoined
09:38:55  * petka_joined
09:42:03  <txdv>hm
09:42:07  <txdv>just started smartos
09:42:10  <txdv>it just says GRUB
09:42:16  <txdv>i have no idea what that thing is or does
09:44:39  * rmgquit (Remote host closed the connection)
09:49:10  * kazuponquit (Ping timeout: 248 seconds)
09:50:05  <indutny>hahaha
09:50:19  <indutny>don't you know what GRUB is?
09:52:05  * daviddiasquit (Remote host closed the connection)
09:55:00  <txdv>yeah
09:55:09  <txdv>i know
09:55:20  <txdv>but it doesn't do anything
09:55:31  <indutny>well
09:55:48  <indutny>SmartOS has the most unpleasant installation experience IMHO
09:55:51  <indutny>if you are not joyent
09:56:23  <mmalecki>well, SmartOS isn't really a desktop thing
09:56:38  <mmalecki>and I'd argue otherwise indutny. PXE or pendrive are both fairly easy
09:56:38  <txdv>I need to run the test suite on that shit
09:56:57  <mmalecki>txdv: might be easier to just get a joyent box or run smartos on virtualbox
09:56:57  <txdv>because my glorious patch and the test for it fails on smartos
09:57:10  <txdv>mmalecki: im running smartos on virtualbox
09:57:20  <indutny>you may have networking problems here
09:57:23  <indutny>if they haven't fixed it
09:57:32  * daviddiasjoined
09:57:34  <indutny>at least it wasn't working a year ago :)
09:57:42  <mmalecki>it mostly works with NAT
09:57:57  <txdv>smartos
09:58:03  <txdv>not so smart
09:58:05  <mmalecki>and then there are ways to make it work with bridged adapters
09:58:09  <txdv>xoxo
09:58:18  <txdv>dudes i cant get passed grub
09:58:21  <mmalecki>it's the perfect data center OS txdv
09:59:03  <txdv>my data center consists of an old phenom I
10:05:29  <txdv>how can i connect through the console
10:05:31  <txdv>if im just using nat
10:05:32  <txdv>:/
10:08:02  <txdv>i'm bewildered by that OS
10:08:13  <txdv>the only thing i need is to compile and run libuv to test
10:08:19  <txdv>can anyone give me a fast guide?
10:12:23  * mrvisserjoined
10:14:09  <saghul>txdv: I haven't tried, but wasn't there a preinstalled VMWare image?
10:14:22  <saghul>maybe just converting the thing to VirtualBox format it works?
10:15:09  * rmgjoined
10:17:23  * kazuponjoined
10:17:41  * mrvisserquit (Ping timeout: 272 seconds)
10:18:29  * daviddiasquit (Remote host closed the connection)
10:18:39  * yunongjoined
10:21:42  * rmgquit (Ping timeout: 248 seconds)
10:22:03  * daviddiasjoined
10:23:29  * thlorenzjoined
10:23:46  * yunongquit (Ping timeout: 264 seconds)
10:24:23  * daviddiasquit (Remote host closed the connection)
10:24:49  * daviddiasjoined
10:28:34  * thlorenzquit (Ping timeout: 264 seconds)
10:42:21  * daviddiasquit (Remote host closed the connection)
10:46:43  <txdv>DTrace provides a language, 'D', for writing DTrace scripts and one-liners. The language is like C and awk
10:47:07  <txdv>C and awk
10:52:04  * txdvquit (Ping timeout: 260 seconds)
10:53:01  * janjongboomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:54:04  * mrvisserjoined
10:55:43  * daviddiasjoined
10:56:44  * tellnesquit (Ping timeout: 260 seconds)
10:57:10  * wolfeida_joined
10:57:40  * wolfeidauquit (Ping timeout: 260 seconds)
10:58:12  * tellnesjoined
10:58:32  * WalrusPony1changed nick to WallRustBunny
11:00:34  * mrvisserquit
11:06:01  * hzquit
11:06:39  <MI6>joyent/node: Ed Umansky master * df20536 : net: reset `errorEmitted` on reconnect - http://git.io/Z9Ci8g
11:18:34  * yunongjoined
11:23:33  * yunongquit (Ping timeout: 255 seconds)
11:24:56  * mrvisserjoined
11:26:54  * mrvisserquit (Remote host closed the connection)
11:33:22  * daviddiasquit (Remote host closed the connection)
11:34:48  * daviddiasjoined
11:36:41  * wolfeidaujoined
11:39:23  * wolfeida_quit (Ping timeout: 252 seconds)
11:47:53  * mrvisserjoined
11:49:20  * seishunjoined
11:51:52  * raffikijoined
11:54:13  * kazuponquit (Remote host closed the connection)
11:54:46  * kazuponjoined
11:58:47  <WallRustBunny>Could someone explain to me the logic as to why SO_REUSEADDR is enabled on unix Tcp listeners but not windows tcp listeners?
11:59:03  * kazuponquit (Ping timeout: 240 seconds)
12:01:41  * WallRustBunnypokes indutny and saghul
12:03:28  * txdv_joined
12:06:53  <indutny>hm...
12:07:43  <indutny>WallRustBunny: this sounds like a bug
12:07:53  <indutny>unless I don't know something about windows implementation of this socket option
12:08:00  <WallRustBunny>Windows does have that option
12:08:07  <WallRustBunny>so I'm really confused as to why libuv doesn't set it
12:08:17  <indutny>please open an issue
12:09:57  <WallRustBunny>https://github.com/joyent/libuv/issues/1352
12:10:01  <indutny>thank you
12:10:04  * toothrjoined
12:10:29  <WallRustBunny>indutny: The reason I ask is because I'm trying to figure out why a fast_rebind test is failing for Rust on windows when using the libuv backend
12:10:49  * karupachanged nick to zz_karupa
12:11:16  <indutny>does it pass with SO_REUSEADDR?
12:11:21  <WallRustBunny>indutny: Although its really annoying because the test only fails on very specific machines that I don't have direct access to, and inconsistently at that
12:11:32  <indutny>aah
12:11:35  <indutny>well
12:12:04  <WallRustBunny>rust can't set SO_REUSEADDR on the tcp listener that libuv uses, because libuv creates the socket and binds it in one call
12:12:22  <indutny>I meant that you could try patching libuv
12:12:29  <indutny>just to verify that this is indeed the cause
12:12:36  <indutny>I have not much to say on this topic unfortunately
12:12:40  <WallRustBunny>and I'm not even sure if its an issue with SO_REUSEADDR, because the error that is occuring is an EINVAL, and not an EADDRINUSE
12:13:50  <WallRustBunny>but it seems exactly like the kind of situation that would occur from that because it acts like a race condition and its windows specific
12:15:47  <indutny>yeah, it could be it
12:15:52  <txdv_>what machine?
12:16:02  * txdv_changed nick to txdv
12:16:30  <WallRustBunny>txdv: Specifically only the auto windows buildbots for rust
12:17:11  <WallRustBunny>Which is the most annoying place for it to occur, because thats the one place where I can't do hackish things just to see if it works
12:18:29  <WallRustBunny>and the problem only started occurring because I'm upgrading the version of libuv that rust uses
12:18:38  * yunongjoined
12:19:17  <WallRustBunny>in the diff, theres no changes to the windows tcp code aside from an ipv6 check, so I feel as if the change to the threadpool implementation might have exposed a race condition that always existed in ru st
12:22:53  * wolfeida_joined
12:23:07  * yunongquit (Ping timeout: 244 seconds)
12:24:28  * wolfeidauquit (Ping timeout: 260 seconds)
12:29:28  <indutny>hm...
12:29:44  <indutny>WallRustBunny: what is that test doing in a few words?
12:31:10  * mrvisserquit (Remote host closed the connection)
12:34:22  <indutny>except failing :)
12:34:58  <WallRustBunny>indutny: It opens a tcp listener, then in another task connects to that tcp listener, then the tcp listener closes and a new one is bound to the same address and port
12:35:11  <indutny>hm...
12:35:20  <indutny>and tasks are managed by uv_work_t?
12:35:25  <indutny>or an internal rust scheduler
12:35:36  <indutny>sorry, I have lost my touch to rust for almost one year :)
12:35:38  <WallRustBunny>I think tasks are using libuv to do work
12:35:40  <indutny>ok
12:35:55  <WallRustBunny>rust changed significantly since a year ago
12:35:59  <indutny>yeah, I know
12:36:11  <indutny>ok this is good to hear
12:36:18  <indutny>I wish saghul will soon return back and help us :)
12:36:29  <indutny>I don't have easy access to any windows machine
12:36:46  <WallRustBunny>even if you did, the issue likely wouldn't manifest itself
12:36:56  <indutny>that's now what I meant
12:37:03  <indutny>I'd like to check that REUSE_ADDR is working here
12:37:04  <indutny>and commit it
12:37:07  <indutny>because it seems harmless
12:37:17  <indutny>and should help you to verify the cause of the issue
12:37:24  <txdv>WallRustBunny: are you using the unstable version of libuv?
12:37:35  <WallRustBunny>txdv: Rust uses unstable rust, yes
12:37:36  <indutny>it is unstable only in terms of API
12:37:41  <indutny>txdv: ^
12:37:49  <WallRustBunny>erm, unstable libuv
12:38:03  <indutny>same applies to node.js
12:38:41  <WallRustBunny>rust was last on libuv from mid-april
12:40:09  <saghul>indutny: pong
12:40:21  <indutny>pang
12:40:24  <saghul>the reuse thing is probably a bug
12:40:29  <saghul>I'll take care of it
12:40:32  <indutny>thank you!
12:40:59  <WallRustBunny>Make sure you check the difference in behavior for windows and posix for SO_REUSEADDR
12:41:39  <indutny>WallRustBunny: from docs it appears to be identical
12:45:51  * mrvisserjoined
12:46:42  <txdv>so my udp change will only be merged in node in the next stable line
12:47:48  <txdv>indutny: when does the next stable line for libuv come out?
12:48:15  <txdv>will saghuls read proposal get into that thing?
12:49:10  <indutny>txdv: it really depends
12:49:14  <indutny>on node release date
12:49:19  <indutny>and I'm totally uncertain about it
12:49:34  <WallRustBunny>Okay, so I've only been smashing my head on this issue for 3 days straight. It seemed like quite a lot longer
12:49:44  <saghul>txdv: most likely not, the "requestification" will probably land after 0.12
12:49:47  <saghul>toodisruptive
12:50:21  <saghul>also, I need to write it, it just compiles on paper for now :-P
12:50:56  <txdv>you wont need to write it if I write it first
12:51:11  <indutny>haha
12:51:15  <indutny>you better be careful
12:51:22  <indutny>behind this mask of calm person
12:51:35  <indutny>may be a dangerous person
12:51:38  <indutny>jk
12:51:56  <txdv>a fight till death will determine whos patch will get into
12:52:07  <saghul>I'd appreciate if you don't start working on that
12:52:47  <txdv>still have to make uv_udp_send send immediately like windows does
12:53:07  <saghul>txdv: I have the patch written, I want to merge try send first ;-)
12:54:06  <txdv>immediate write in try_send?
12:54:26  <saghul>no, immediate write in uv_udp_send
12:54:36  <saghul>like we do in uv_write
12:54:37  <txdv>thats what i wanted to write
12:54:57  <txdv>next stable version udp is not going to be the retarded brother of tcp anymore
12:55:00  <saghul>doh
12:55:07  <saghul>yeah!
12:55:21  <saghul>did you manage to figure out what's wrong with try_send on smartos?
12:55:26  <txdv>no
12:55:29  <txdv>i just installed smartos
12:55:35  <txdv>i dont know how to run code there
12:55:36  <WallRustBunny>indutny: And all this hell I'm enduring is just to make Rust properly input and output unicode on the windows console
12:55:37  <txdv>what to do at all with it
12:56:06  <WallRustBunny>its a damn rabbit hole
12:57:23  <txdv>I recently read an article about cross platform development
12:57:31  <txdv>that it is easy
12:57:36  <txdv>if you use cross platform libs
12:57:44  <WallRustBunny>Hahahaha, very funny
12:58:14  <WallRustBunny>all of msys breaks the moment you start working with unicode on windows
12:58:19  <txdv>yeah, I wrote a comment that the people writing those libs go through hell
12:58:59  <WallRustBunny>the problem is that posix, and even standard C/C++ isn't unicode cross platform
12:59:42  <WallRustBunny>with C++ you at least have <filesystem> which lets you convert utf-8 <-> native path
12:59:49  * toothrquit (Ping timeout: 272 seconds)
12:59:51  <WallRustBunny>but otherwise, its all broken
13:00:24  <WallRustBunny>hell, you can't even print utf-16 to the console using wcout or wprintf on windows, you *have* to call the winapi methods to write to the console
13:01:10  <txdv>why did windows go for utf-16
13:01:30  <WallRustBunny>because utf-32 didn't really exist when they made the switch
13:01:48  <WallRustBunny>It was still just UCS-2 back then
13:01:57  <saghul>txdv: I'll to run it on smartos tonight / tomorrow
13:02:10  * daviddiasquit
13:02:44  <txdv>with jenkins?
13:03:48  <saghul>and or SSH-ing into the jenkins buildbot
13:18:47  * yunongjoined
13:23:03  * yunongquit (Ping timeout: 240 seconds)
13:23:41  <seishun>there is no <filesystem> in C++
13:24:31  <WallRustBunny>seishun: There is a TS for it, which msvc has already implemented
13:25:19  <seishun>yeah but it's not standard
13:25:54  * thlorenzjoined
13:25:59  <WallRustBunny>Which is why cross platform code is so depressingly hard
13:29:58  * thlorenzquit (Ping timeout: 248 seconds)
13:30:29  <WallRustBunny>the filesystem TS was approved for a DTS ballot just this june at rapperswill, so it'll at least be a standard TS soon
13:39:53  <rendar>WallRustBunny: i think the c++ standard lacked of a lot of things in the past decades, <filesystem> is one of those
13:40:16  <WallRustBunny>the C++ standard library just lacks a lot of stuff
13:40:38  <WallRustBunny>because nobody can decide on a good universal way to do something to satisfy everyone
13:41:21  <WallRustBunny>imagine if every change to rust had to go through a multi-year process of proposals and committee ballots
13:41:43  * hzjoined
13:41:55  <rendar>WallRustBunny: yeah that's just not the way to go with software
13:42:21  * euoiajoined
13:44:05  <txdv>c++ has been advancing fast lately
13:44:38  <rendar>txdv: yep but it stayed slow for decades
13:44:48  <WallRustBunny>Mostly because the c++ committee has grown so they have a really wide pipeline, so even though getting anything through still takes forever, at least they can do a lot of things at the same time
13:46:02  <txdv>and who does that job for rust?
13:48:10  <WallRustBunny>txdv: Uh, if someone from core team hired by mozilla approves a change and it passes the test suite, it gets pulled in
13:50:06  <txdv>a lot of people have a problem with languages which are controlled by one single entity
13:57:27  <WallRustBunny>txdv: It's still an open source language though, so mozilla merely controls contributions to their official repo.
14:02:25  * janjongboomjoined
14:06:15  <txdv>so mozilla is unaible to sue for a real fork?
14:06:35  * hzquit
14:07:10  <WallRustBunny>txdv: As long as a fork abides by the open source licenses, then mozilla can't sue
14:07:42  <txdv>my favourite gets a lot of of shit talk because "microsoft is so evil"
14:07:48  <txdv>favourite language
14:08:59  <WallRustBunny>well C# isn't entirely open source yet, a lot of it relies of proprietary microsoft technology. The fact that they need to have mono as a completely independent runtime for non windows platforms isn't exactly ideal
14:09:34  <txdv>how far is libgreen along?
14:09:44  <txdv>is it possible to write scalable web apps?
14:10:46  <WallRustBunny>I've written a crappy server + client for some game I'm working on
14:10:57  <WallRustBunny>and handled 10k concurrent connections with pings every second just fine
14:11:14  <txdv>closed source?
14:11:27  <WallRustBunny>nah, open source https://github.com/NoLifeDev/NoLifePony
14:11:48  <txdv>so it uses libuv and libgreen to distribute the load on all cores?
14:12:01  <WallRustBunny>I had to manually lower the stack size to 32KB though, because the default of 2 MB per task quickly ate up the 2 GB of address space available to 32-bit apps
14:12:28  <WallRustBunny>It uses libuv through libgreen to use green threading
14:12:54  <WallRustBunny>if I use libnative, then it uses OS threads, where I can't even hit a thousand threads before the OS gives up
14:13:09  <txdv>every libgreen "thread" uses 2mb per default?
14:13:23  <WallRustBunny>It reserves stack space in 2mb chunks
14:13:36  <WallRustBunny>its virtual address space, so it doesn't actually use up that much ram
14:14:04  <txdv>but it is basically the same problem as in threaded programming
14:14:09  <txdv>every connection needs an entire stack
14:15:03  <WallRustBunny>rust's io model is based on a virtual interface that wraps either libnative or libgreen, where every operation is blocking
14:16:09  <WallRustBunny>It would be rather difficult to implement a callback style of IO combined with rust's thread safety model
14:18:37  * yunongjoined
14:18:56  <txdv>i have to look into that language
14:20:56  <txdv>so many new languages comming out
14:21:37  <brucem>txdv: and some old ones coming back ... :) (I work on a language that started out in the 1990s and went idle for a while)
14:24:03  * yunongquit (Ping timeout: 272 seconds)
14:24:56  <txdv>brucem: what language?
14:25:05  * raffikiquit (Quit: Connection closed for inactivity)
14:26:13  <brucem>txdv: http://opendylan.org/
14:27:34  * mikealquit (Quit: Leaving.)
14:32:57  <txdv>every new language has a uv binding
14:34:58  <brucem>txdv: ours isn't complete!
14:36:27  <WallRustBunny>rust was built on top of libuv before moving over to a native io implementation by default
14:37:03  <txdv>i have written one for C#
14:37:27  <txdv>the community is total shit, just complaining that this and that doesn't work without providing a single patch
14:49:40  <WallRustBunny>they expect microsoft to feed them everything
14:50:26  <WallRustBunny>its just a different kind of mentality compared to the open source world
14:53:11  <txdv>best part is an official microsoft posted an issue and did provide only the exception name
14:53:14  <txdv>no backtrace
14:53:18  <txdv>no test case
14:57:57  * mrvisserquit (Remote host closed the connection)
15:06:11  * kellabyte_joined
15:07:42  * c4milojoined
15:13:38  * euoiaquit (Ping timeout: 240 seconds)
15:18:37  * yunongjoined
15:23:35  * yunongquit (Ping timeout: 272 seconds)
15:31:33  * euoiajoined
15:39:23  * kazuponjoined
15:50:10  * mrvisserjoined
15:55:35  * kazuponquit
16:00:13  * AlexisMochajoined
16:00:58  * kazuponjoined
16:06:36  * seishunquit (Ping timeout: 260 seconds)
16:17:41  * thlorenzjoined
16:18:39  * yunongjoined
16:18:57  * rmgjoined
16:23:46  * yunongquit (Ping timeout: 264 seconds)
16:25:20  * yunongjoined
16:32:29  <txdv>saghul: when sending too big of a packet
16:32:40  <txdv>on smartos
16:32:53  <txdv>somekind of failure
16:33:00  <txdv>subsequent sendmsgs don't work any more
16:35:54  * dap_joined
16:38:18  * euoiaquit (Ping timeout: 240 seconds)
16:39:54  * TooTallNatejoined
16:40:04  * hzjoined
16:40:27  * euoiajoined
16:46:08  * inolenjoined
16:52:18  * AlexisMochaquit (Ping timeout: 244 seconds)
16:56:02  * EhevuTovjoined
16:56:18  * petka_quit (Quit: Connection closed for inactivity)
17:01:03  * thlorenz_joined
17:02:14  * thlorenzquit (Ping timeout: 248 seconds)
17:13:00  * hueniversequit (Ping timeout: 240 seconds)
17:14:34  * hueniversejoined
17:17:27  * guybrushquit (Excess Flood)
17:18:22  * guybrushjoined
17:19:24  * thlorenz_quit (Ping timeout: 260 seconds)
17:19:55  * thlorenzjoined
17:25:32  * m76joined
17:26:37  * mrvisserquit (Remote host closed the connection)
17:30:46  <saghul>txdv: oh
17:31:15  <saghul>txdv: then maybe make individual tests for each, instead of a single one which tests 3 things?
17:33:25  * dap_quit (Ping timeout: 272 seconds)
17:33:30  * thlorenzquit (Remote host closed the connection)
17:34:04  * thlorenzjoined
17:34:52  * dap_joined
17:36:23  <txdv>why?
17:36:43  <txdv>all tests are testing one particular feature
17:36:56  <txdv>shit
17:37:03  <txdv>need to install the newest ubuntu
17:37:12  <txdv>virtual box doent have the proper settings for smartos on 12.04
17:38:26  * thlorenzquit (Ping timeout: 252 seconds)
17:41:19  * a_lejoined
17:45:44  * wolfeida_quit (Read error: Permission denied)
17:46:22  * wolfeidaujoined
17:50:56  * mrvisserjoined
17:56:33  * hueniversequit (Quit: Leaving.)
18:01:38  * euoiaquit (Ping timeout: 240 seconds)
18:10:34  * euoiajoined
18:14:09  * c4miloquit (Remote host closed the connection)
18:14:43  * c4milojoined
18:16:55  * mikealjoined
18:18:18  * euoiaquit (Ping timeout: 240 seconds)
18:19:34  * c4miloquit (Ping timeout: 264 seconds)
18:23:31  * euoiajoined
18:24:02  * mikealquit (Quit: Leaving.)
18:25:08  * AvianFlujoined
18:25:44  * mikealjoined
18:29:26  * seishunjoined
18:29:48  <nathan7>txdv: we had a lot of trouble running SmartOS in vbox, vbox appeared to cause arbitrary memory corruption
18:29:57  <nathan7>txdv: things randomly segfaulting, etc
18:33:32  <txdv>on the machine I work with at my work everything is fine
18:33:38  <txdv>i3
18:42:47  * inolenquit (Quit: Leaving.)
18:43:33  * WallRustBunnyquit (Read error: Connection reset by peer)
18:43:39  * inolenjoined
18:45:30  * kazuponquit (Remote host closed the connection)
18:49:48  * mikealquit (Quit: Leaving.)
18:52:13  * mikealjoined
18:55:21  * hzquit
19:03:24  * mikealquit (Quit: Leaving.)
19:05:22  * mikealjoined
19:06:38  <nathan7>txdv: it is *random*, so you might run into nothing, we ran into a lot
19:06:54  <nathan7>Joyent guys reported that they'd seen this behaviour too though
19:09:48  * mikealquit (Client Quit)
19:10:58  * brsonjoined
19:13:03  * hzjoined
19:14:30  * rendarquit (Ping timeout: 248 seconds)
19:20:18  * rendarjoined
19:22:59  * hzquit
19:23:42  * mikealjoined
19:25:18  * euoiaquit (Ping timeout: 240 seconds)
19:31:29  * euoiajoined
19:36:18  * euoiaquit (Ping timeout: 240 seconds)
19:42:39  * mikealquit (Quit: Leaving.)
19:43:34  * mikealjoined
19:46:13  * kazuponjoined
19:46:50  * euoiajoined
19:47:09  * WalrusPonyjoined
19:48:41  * jgijoined
19:49:33  * mikealquit (Quit: Leaving.)
19:51:23  * kazuponquit (Read error: Connection reset by peer)
19:51:42  * kazuponjoined
19:53:16  * mikealjoined
19:53:46  * avalanche123joined
19:56:33  * kazuponquit (Ping timeout: 255 seconds)
19:56:52  * thlorenzjoined
19:58:34  * avalanche123quit (Ping timeout: 264 seconds)
20:01:23  * mikealquit (Quit: Leaving.)
20:07:20  * mikealjoined
20:12:19  * mikealquit (Quit: Leaving.)
20:14:08  * mikealjoined
20:18:16  * mikealquit (Client Quit)
20:20:07  * m76quit (Read error: Connection reset by peer)
20:20:10  * mikealjoined
20:23:07  * mikealquit (Client Quit)
20:24:45  * mikealjoined
20:28:38  * avalanche123joined
20:30:18  * tellnesquit (Ping timeout: 255 seconds)
20:36:51  * tellnesjoined
20:38:47  * AlexisMochajoined
20:39:38  * thlorenzquit (Remote host closed the connection)
20:39:42  * txdvquit (Read error: Connection reset by peer)
20:39:48  * thlorenzjoined
20:40:36  * txdvjoined
20:47:25  * Ralithquit (Ping timeout: 255 seconds)
20:47:40  * thlorenzquit (Remote host closed the connection)
20:48:07  * thlorenzjoined
20:48:12  * Ralithjoined
20:48:45  * mikealquit (Quit: Leaving.)
20:52:28  * kazuponjoined
20:52:33  * thlorenzquit (Ping timeout: 240 seconds)
20:57:20  * kazuponquit (Ping timeout: 260 seconds)
21:00:25  * mikealjoined
21:02:19  * EhevuTovquit (Quit: This computer has gone to sleep)
21:02:44  * inolenquit (Ping timeout: 240 seconds)
21:11:48  * rendarquit
21:13:18  * hzjoined
21:23:16  * c4milojoined
21:26:15  * c4miloquit (Read error: Connection reset by peer)
21:26:48  * c4milojoined
21:31:38  * c4miloquit (Ping timeout: 252 seconds)
21:34:56  * AlexisMochaquit (Ping timeout: 252 seconds)
21:36:45  * a_lequit (Remote host closed the connection)
21:37:00  * a_lejoined
21:41:41  * a_lequit (Remote host closed the connection)
21:41:56  * a_lejoined
21:42:15  * a_lequit (Remote host closed the connection)
21:42:51  * a_lejoined
21:48:01  * c4milojoined
21:48:16  * hzquit
21:53:27  * kazuponjoined
21:54:45  * c4miloquit (Read error: Connection reset by peer)
21:57:42  * kazuponquit (Ping timeout: 248 seconds)
21:59:36  * toothrjoined
22:03:58  * euoiaquit (Ping timeout: 240 seconds)
22:10:18  * bradleymeckjoined
22:14:30  * c4milojoined
22:16:47  * jgiquit (Quit: Leaving)
22:21:22  * c4miloquit (Ping timeout: 264 seconds)
22:21:43  * bradleymeckquit (Quit: bradleymeck)
22:26:45  * mikealquit (Quit: Leaving.)
22:26:59  <MI6>joyent/libuv: saghul created branch test-try-send - http://git.io/4r3HSA
22:29:58  * mikealjoined
22:41:08  * mikealquit (Quit: Leaving.)
22:42:30  * mikealjoined
22:45:11  * c4milojoined
22:53:10  * TooTallNatequit (Quit: Computer has gone to sleep.)
22:53:58  * kazuponjoined
22:57:14  * mikealquit (Quit: Leaving.)
22:58:20  * mikealjoined
22:58:57  * kazuponquit (Ping timeout: 272 seconds)
23:00:43  * avalanche123quit (Remote host closed the connection)
23:01:09  * avalanche123joined
23:03:18  * seishunquit (Ping timeout: 248 seconds)
23:05:55  * avalanche123quit (Ping timeout: 272 seconds)
23:10:46  * toothrquit (Ping timeout: 248 seconds)
23:13:07  * rvaggquit (Ping timeout: 245 seconds)
23:14:23  * rvaggjoined
23:23:46  * kenperkinsquit (Quit: Computer has gone to sleep.)
23:29:34  * AvianFluquit (Remote host closed the connection)
23:34:45  * c4miloquit (Remote host closed the connection)
23:35:17  * c4milojoined
23:39:45  * c4miloquit (Ping timeout: 255 seconds)
23:39:56  * toothrjoined
23:40:55  * kazuponjoined
23:43:51  * mikealquit (Quit: Leaving.)
23:48:44  * yunongquit (Remote host closed the connection)
23:49:20  * yunongjoined
23:51:28  * mikealjoined
23:53:32  * yunongquit (Ping timeout: 252 seconds)
23:54:29  * mikealquit (Client Quit)