Index

Show enters and exits. Hide enters and exits.

00:00:42imajes leaves the room.
00:03:44brainopia enters the room.
00:07:45AndrewO leaves the room.
00:11:29wycats enters the room.
00:18:13cypher23 leaves the room.
00:22:42anteaya_ enters the room.
00:23:14anteaya leaves the room.
00:26:28imajes enters the room.
00:31:08tockitj leaves the room.
00:33:16dysinger leaves the room.
00:43:09kw enters the room.
00:52:34radarek leaves the room.
00:53:38twbray enters the room.
00:55:18Ingmar leaves the room.
01:00:01twbray leaves the room.
01:01:53Ingmar enters the room.
01:07:13Ingmar leaves the room.
01:11:09Ingmar enters the room.
01:17:11brainopia leaves the room.
01:18:42anteaya__ enters the room.
01:19:03anteaya_ leaves the room.
01:23:38obvio enters the room.
01:28:47twbray enters the room.
01:29:18cored enters the room.
01:36:59twbray leaves the room.
01:43:15lopex leaves the room.
01:48:22benburkert leaves the room.
01:49:32benny leaves the room.
01:50:08benny enters the room.
01:57:54peeja enters the room.
01:58:41peeja leaves the room.
02:01:03jeremydurham enters the room.
02:01:53peeja enters the room.
02:03:08peeja leaves the room.
02:05:50GMFlash leaves the room.
02:14:58qwert666_ leaves the room.
02:19:32kw leaves the room.
02:22:57smartocci leaves the room.
02:25:28smartocci enters the room.
02:32:54dlee enters the room.
02:35:13GMFlash enters the room.
02:45:30brainopia enters the room.
03:09:55twbray enters the room.
03:10:01yugui enters the room.
03:12:48pluskid enters the room.
03:15:23kw enters the room.
03:16:58cored leaves the room.
03:17:44smartocci leaves the room.
03:18:59smartocci enters the room.
03:19:04peeja enters the room.
03:22:39mitchellvriley enters the room.
03:23:33mitchellvrileyGaah! Why must I be on the other side of the world of where the action happens!
03:23:51mitchellvriley leaves the room.
03:26:55fbuilesv poor sad and depressed soul :(
03:27:36twbray leaves the room.
03:29:29jicksta leaves the room.
03:29:30jicksta_ enters the room.
03:31:28imajes leaves the room.
04:22:03brainopia leaves the room.
04:24:02antares_ leaves the room.
04:25:58brainopia enters the room.
04:26:32brainopia leaves the room.
04:27:12brainopia enters the room.
04:31:32jennyw enters the room.
04:40:40seydar enters the room.
04:49:22seydarcongrats to whomever fixed some major bug recently. rubinius no longer fails 99% of the tests of tiger/ppc. in fact, its passing all but three
04:49:27smartocci leaves the room.
04:49:54smartocci enters the room.
05:02:40be9 enters the room.
05:03:29seydar leaves the room.
05:03:30be9 leaves the room.
05:03:40be9 enters the room.
05:22:35fbuilesv leaves the room.
05:22:47pluskid leaves the room.
05:27:29sethbc enters the room.
05:27:39smartocci leaves the room.
05:40:31AndrewO enters the room.
05:53:47peeja leaves the room.
05:53:56peeja_ enters the room.
06:02:48trythil leaves the room.
06:03:43imajes enters the room.
06:04:13anteaya__ leaves the room.
06:09:20imajes leaves the room.
06:09:39imajes enters the room.
06:18:01yugui leaves the room.
06:18:08benburkert enters the room.
06:18:20benburkert leaves the room.
06:22:11twbray enters the room.
06:30:30boyscout2 commits by Brian Ford
06:30:31demisone leaves the room.
06:30:33boyscout * Guard affected specs with conflicts_with :Rational.; 6101a49
06:30:33boyscout * Added conflicts_with guard to MSpec.; cae9551
06:32:58kw leaves the room.
06:34:40boyscout1 commit by Brian Ford
06:34:40boyscout * Fix silly typo in Numeric#quo specs.; 3f70ece
06:38:51kirindav_ enters the room.
06:42:21rubuildius_amd64Brian Ford: 3f70eceb3; 2090 files, 6569 examples, 22948 expectations, 0 failures, 0 errors;
06:44:19sethbc leaves the room.
06:46:44jeremydurham leaves the room.
06:50:07rubuildius_ppcBrian Ford: 3f70eceb3; 2090 files, 6572 examples, 22977 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/183719
06:50:08rubuildius_ppcBrian Ford: 6101a4992; 2090 files, 6572 examples, 22977 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/183717
07:00:01peeja_ leaves the room.
07:00:30peeja enters the room.
07:00:38d2dchat leaves the room.
07:06:52Santana_ enters the room.
07:06:55Santanahi
07:07:25imajes leaves the room.
07:08:44Santanaany thoughts on ticket #493?
07:09:33kirindav_ leaves the room.
07:11:38brixenSantana_: it's confusing to me. I see the patch but the ticket seems to discuss a lot more than that
07:11:52Santanaright
07:11:55brixenare you wondering if that patch will apply for other platforms?
07:11:56Santanaignore the rest
07:12:28Santanathe patch is about Bourne shell compatibility
07:13:02brixenI can test it on ubuntu 32bit, leopard intel. will that help?
07:13:05Santanaltmain.sh doesn't work when run by Solaris' sh
07:14:27SantanaThat's ok, because all those platforms use bash
07:14:41Santanahave you seen the patch?
07:14:45Santanait changes this line:
07:14:50Santanafor arg; do
07:15:01Santanawith this two lines:
07:15:03Santanafor arg
07:15:04Santanado
07:15:18brixenyeah, I see it, but I don't know what the question is ;)
07:15:33SantanaWhich, by the way, already appears in other parts of the script
07:15:38Santanaaah! :)
07:15:43Santanasorry
07:15:55Santanawhy hasn't it been applied?
07:16:21brixenhm, that I don't know. let me try it and I'll apply now
07:16:25Santanait will fix Solaris built
07:16:56Santanaerr, it will permit the building of Rubinius on Solaris
07:17:02Santana:)
07:17:43twbray leaves the room.
07:18:03brixenk
07:19:55benny leaves the room.
07:23:39evanpatching ltmain.sh seems odd.
07:23:50evanbut it's so minor, it can't hurt.
07:23:58brixenyeah
07:24:10evanit's odd because it goes via configure/autoconf
07:24:21brixenright
07:24:38Santanayeah, but didn't found the original file
07:24:44Santanadidn't find
07:25:09evanit's inside autoconf somewhere
07:25:10Santanashouldn't it be in the git repository?
07:25:20evanno
07:25:22Santanahmm
07:25:23evanit's from autoconf
07:25:42Santana:-S
07:26:01evanare you famaliar with autoconf?
07:26:19SantanaI have used it, yes
07:26:44brixenwell, ltmain.sh is generated, but we've already got it checked in
07:26:49Santanaand I understand you, it's somewhere inside autoconf that is producing that code
07:26:51brixenso patching it isn't totally unreasonable
07:26:55evanyeah
07:27:00evanit's fine to apply.
07:27:03brixenk
07:27:12evanwe may ditch ltdl soon
07:27:26evani'm not using it in the new VM currently
07:27:34evanbecause dl* work fine on OS X now.
07:28:13brixencool, fewer deps is always a plus
07:28:17evanyep.
07:28:58Santanathere's another issue on Solaris, dicussed in ticket #493, that prevents building of external_libs/*
07:29:43Santanathe problem is that Solaris' gcc is compiled to use /usr/ccs/bin/ld, instead of GNU ld
07:29:45evanthe soname switch?
07:29:51Santanayes
07:29:56evanhm, ok.
07:30:15Santanaapart from replacing /usr/ccs/bin/ld with GNU ld, do you see another workaround?
07:30:33evanperhaps fix the Makefile's to not use soname on solaris
07:31:01rubuildius_ppc leaves the room.
07:31:01Santanathat would be needed in every library under external_libs
07:31:01boyscout1 commit by Gerardo Santana
07:31:04rubuildius_ppc enters the room.
07:31:18SantanaI can do it, if it seems reasonable to you guys
07:31:22evanwtf is with boyscout.
07:31:29Santanaor probably Solaris should fix its gcc ...
07:31:54boyscout * Fixing for loop for portability; de3c1fd
07:32:25evani think thats ok
07:32:31evansome are going away soon.
07:32:49evanlibmpa, libbstring, libcchash, probably libmquark
07:32:54Santanaoh
07:33:06evanthey're functionality is all replaced by using STL in C++
07:33:08brixenSantana_: I'll leave #493 open then?
07:33:33Santanabrixen, no, you can close it. I shouldn't had discussed anything else there.
07:34:06brixenSantana_: ok, cool
07:34:42Santanathis may sound annecdotic, or stupid... but "I've read on the web" that the STL is not well supported on all platforms
07:34:54Santanais this true?, have you taking that in account?
07:34:57evanpretty much BS
07:35:08Santanaok, cool
07:35:11evanit's certainly more well supported than some adhoc libs we threw together.
07:35:14evanwhich is what counts in this case.
07:35:23Santanaright, ok
07:35:31wycats leaves the room.
07:38:35Santanaif quark goes away, another problem on Solaris does too. It's trying to include stdbool.h, which on Solaris requires a _STD* constant is defined
07:38:56SantanaI can't access my Solaris box right now, to give the exact name of the constant
07:39:25Santanamay I ask when will the new VM be available?
07:40:31RyanTM leaves the room.
07:41:19rubuildius_amd64Gerardo Santana: de3c1fd71; 2090 files, 6569 examples, 22948 expectations, 0 failures, 0 errors; http://rafb.net/p/7K3syN89.html
07:42:48Maledictus enters the room.
07:44:27rubuildius_ppcGerardo Santana: de3c1fd71; 2090 files, 6572 examples, 22977 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/183727
07:52:04wycats enters the room.
07:52:46AndrewO leaves the room.
08:00:23Santanait will help me decide wether to send a patch for external_libs/* or just wait for the new VM
08:00:27Santanaon Solaris
08:01:20Santanawhether
08:05:34twbray enters the room.
08:09:32Santana_ leaves the room.
08:12:01twbray leaves the room.
08:17:53headius_ enters the room.
08:17:53headius leaves the room.
08:28:20maharg leaves the room.
08:29:01maharg enters the room.
08:40:34MenTaLguY leaves the room.
08:52:21rueThere is always STLport if all else fails
09:03:48evanpushed more into cpp
09:04:30qwert666 enters the room.
09:04:33evanand bed time.
09:29:26rudebwoy leaves the room.
09:38:16trythil enters the room.
09:52:10demisone enters the room.
10:05:46demisone_ enters the room.
10:06:33demisone leaves the room.
10:09:16cypher23 enters the room.
10:09:28Arjen_ enters the room.
10:22:10BlackEdder enters the room.
10:50:12JeyR enters the room.
11:18:16antares enters the room.
11:30:44thehcdreamer enters the room.
11:58:19obvio leaves the room.
12:03:18demisone enters the room.
12:04:36demisone_ leaves the room.
12:05:47chris2 enters the room.
12:17:40pluskid enters the room.
12:23:13dlee leaves the room.
12:31:12radarek enters the room.
12:33:40trythil leaves the room.
12:59:27FoobarWidget enters the room.
13:07:41octopod enters the room.
13:32:34lopex enters the room.
13:34:27yugui enters the room.
13:38:30dctanner enters the room.
13:40:30obvio enters the room.
13:43:19peeja leaves the room.
13:45:41Fullmoon enters the room.
13:53:57octopod leaves the room.
14:03:26obvio leaves the room.
14:24:14Fullmoon leaves the room.
14:33:10imajes enters the room.
14:34:13yaroslav enters the room.
14:35:11GMFlash leaves the room.
14:35:16GMFlash enters the room.
14:50:35fbuilesv enters the room.
15:07:13imajes leaves the room.
15:07:33imajes enters the room.
15:10:45yaroslav leaves the room.
15:12:52fbuilesv leaves the room.
15:13:48obvio enters the room.
15:16:24fbuilesv enters the room.
15:17:15srbaker leaves the room.
15:23:51dbussink enters the room.
15:24:31dbussink enters the room.
15:24:43anteaya enters the room.
15:38:34Arjen_ leaves the room.
15:41:24benburkert enters the room.
15:47:47qwert666_ enters the room.
15:58:16brainopia enters the room.
16:01:29FoobarWidget leaves the room.
16:04:19benny enters the room.
16:04:56qwert666 leaves the room.
16:07:59twbray enters the room.
16:15:58imajes_ enters the room.
16:16:07twbray leaves the room.
16:16:46imajes leaves the room.
16:28:20pluskid leaves the room.
16:29:18brainopia leaves the room.
16:31:09twbray enters the room.
16:31:30wycats leaves the room.
16:31:56twbray leaves the room.
16:35:12sethbc enters the room.
16:35:18RyanTM enters the room.
16:35:46enebo enters the room.
16:36:27obvio leaves the room.
16:40:51anteaya leaves the room.
16:43:55yugui leaves the room.
16:46:38imajes_ leaves the room.
16:49:55anteaya enters the room.
16:54:39wycats enters the room.
16:54:59benny leaves the room.
16:55:13benny enters the room.
16:58:31atmos leaves the room.
16:58:34fbuilesvanybody knows of the current slots for ruby in the GSoC how many will go towards Rubinius development?
16:59:55wycats leaves the room.
17:01:36kirindav_ enters the room.
17:15:30sethbc leaves the room.
17:34:38antares leaves the room.
17:34:53imajes enters the room.
17:36:32chris2 leaves the room.
17:43:03RyanTM leaves the room.
17:47:47srbaker enters the room.
17:55:11Santana_ enters the room.
17:55:46anteaya leaves the room.
17:56:45obiejuan enters the room.
17:57:47chris2 enters the room.
17:58:54jammiwhat's up with mkmf?
17:59:54wdperson enters the room.
18:02:32kirindav_ leaves the room.
18:07:29jammihttp://pastie.caboo.se/183864
18:13:42chris2_ enters the room.
18:19:12chris2 leaves the room.
18:23:07fbuilesv leaves the room.
18:24:52ubiquitous enters the room.
18:25:56imajes leaves the room.
18:26:18jennyw leaves the room.
18:32:09wycats enters the room.
18:34:22srbaker leaves the room.
18:35:32Defilerjammi: Rubinius doesn't have mkmf yet
18:39:34anteaya enters the room.
18:40:01srbaker enters the room.
18:42:24be9 leaves the room.
18:50:14benny leaves the room.
18:53:39twbray enters the room.
18:55:45headius leaves the room.
18:59:49thehcdreamer leaves the room.
19:06:58rueMorning
19:08:01Santanahey rue
19:09:14srbaker leaves the room.
19:12:51Santanadefiler, jammi: then we can't test C extensions that rely on mkmf ...
19:15:16d2dchat enters the room.
19:15:26srbaker enters the room.
19:16:27DefilerSantana_: True.
19:16:42DefilerAt least, not without doing what you can see happening in the mongrel rake task
19:16:56DefilerOr, more clearly, all of the extension rake tasks
19:18:45DefilerAnybody here a Wireshark pro?
19:18:58DefilerI've got two captures, one of them is via MRI, and the other is Rubinius behaving badly
19:19:17Defilerbut I'm staring at it, and not seeing what is wrong
19:19:19rueSantana_: I think evan is looking at getting a degree of functionality up in the next week or so for the C++ conversion. So unless you specifically need Solaris right now, I would suggest just waiting
19:19:49rueDefiler: Paste it, I can stare at it with you
19:20:55rueSantana_: Also, the STL should really be available pretty much everywhere. If not, STLport or uSTLport can be installed, they run almost anywhere
19:21:15dc_ leaves the room.
19:22:05dctanner enters the room.
19:22:06Defilerhttp://supremetyrant.com/ruby/MRI%20Connecting%20to%20MySQL%20via%20TCP
19:22:11Santanaok, I will wait.
19:22:12Defilerhttp://supremetyrant.com/ruby/Rubinius%20Connecting%20to%20MySQL%20via%20TCP
19:23:14SantanaMy purpose is to help Rubinius support Solaris. I'm not in a hurry. Although I count on Rubinius for compiling a project that is in its planning stage.
19:23:52radarek leaves the room.
19:24:43rueHum, why did they change the name.. I wondered what this Wireshark is and why you are not using Ethereal :)
19:25:38DefilerThere was some kind of legal thing
19:25:44DefilerAs I recall
19:26:10dbussinkSantana_: i've looked at solaris a while back too
19:26:27dbussinkSantana_: but went to freebsd / openbsd first, a lot of ironing out there that was easier to do ;)
19:26:49chris2 leaves the room.
19:26:53Defilerhttp://www.linux.com/feature/54968
19:26:54dbussinkSantana_: but i think we should go for the solaris ld and see whether we can make it work on that
19:27:01ctennis enters the room.
19:28:47thehcdreamer enters the room.
19:28:54Santanadbussink, that would be great. Rubinius build system is so GNU dependant
19:29:12dbussinkSantana_: well, i don't think we'll ever leave gcc
19:29:26dbussinkSantana_: but afaik using gnu ld on solaris can be problematic sometimes
19:29:37dbussinkalthough i don't know whether that's still the case these days
19:30:26Santanado you have any test case?
19:30:47SantanaI have access to a Solaris box right now
19:30:53twbray_ enters the room.
19:31:28dbussinkSantana_: what do you mean by test case?
19:32:26Santanaan example of the problem you mention
19:32:29Santanathat I can reproduce
19:32:55dbussinkah, not a specific problem, but this is what i've read about using gnu ld on solaris
19:33:00dbussinknot my own experience
19:33:18dbussinkbut the fact that even gcc on solaris uses sun's ld probably indicates enough
19:33:43dbussinkthat you'll have to jump through hoops to get gnu ld and that it's probably not well supported
19:34:17Santanain that case, it's just about editing Makefiles to add a SunOS case
19:34:58dbussinki don't know whether the gnu options we use are really necessary, or that we can create a cross platform makefile
19:35:06dbussinkdidn't go into that in detail
19:35:47rueDefiler: ACK
19:36:26Santanadbussink, I'd love to see a compiler/linker agnostic Rubinius
19:36:37Santanaif that makes any sense
19:36:40DefilerThat is super hard =(
19:36:46imajes enters the room.
19:37:00dbussinkwell, dunno whether linker agnostic is attainable
19:37:03brainopia enters the room.
19:37:04Santanaeven make agnostic
19:37:16Santanawell, I'd like to try
19:37:29Santana*if* it makes sense
19:37:52dbussinki think linker has prio then, because gcc and gmake are reliable and reasonably available on all unix like platforms we'll probably want to support
19:38:29Santanacan't configure help with that?
19:38:36DefilerNot making sense is not always a reason not to do something
19:38:54SantanaDefiler: :)
19:39:15Defilerrue: ACK as in a sound of dismay, or as in TCP? :)
19:40:18dbussinkDefiler: hmm, too bad that wireshark profile doesn't have two different hosts
19:40:39dbussinkDefiler: did you find where the 5 second delay comes from?
19:41:02twbray_ leaves the room.
19:41:28DefilerWell, Rubinius is a LOT slower than MRI
19:41:33wmoxam_ enters the room.
19:41:50SantanaDefiler: how come?
19:41:51DefilerIt wouldn't surprise me if we were 100x slower on this run
19:41:53dbussinkyeah ok, but that five seconds is pretty absurd slow
19:42:08DefilerSantana_: Because we haven't been working on it since 1993 :)
19:42:52Santanaisn't Rubinius a recent project?, or am I missing a local joke?
19:42:57dbussinkisn't that 5 seconds some mysql connect timeout?
19:43:27dbussinkbecause the last packet after the greeting looks exactly the same on both traces
19:44:20DefilerSantana_: MRI came out in 1993
19:45:18SantanaI know. Oh, I see. Ruby guys have a head start.
19:45:26wmoxam_ leaves the room.
19:48:18rueDefiler: There is a 5-second delay between frames 4 and 5 in Rubinius?
19:48:46DefilerShows up as between 5 and 6 on my end
19:48:48Defilerbut yeah
19:49:07DefilerSo presumably the rbx -> mysql packet there is wrong in some way
19:49:12Defiler..and mysql is angry?
19:49:26cremes leaves the room.
19:50:17rueIt more seems that rbx is losing frame 4 so mysql times the connection out in 5
19:50:37twbray leaves the room.
19:51:13rueBut that is clearly not the case
19:51:25DefilerThe packet numbered '5' in the rubinius trace is the same as the matching one in mri, right?
19:51:38demisone leaves the room.
19:53:37dbussinklook the same to me
19:54:05DefilerSo rubinius gets handed back a FIN/ACK/timeout in response to that, and MRI is peachy
19:55:09dbussinkwell, rbx doesn't send the login request
19:55:18dbussink#6 in the mri lit
19:55:19dbussinklist
19:55:40dbussinkthat goes from mri to mysql if i look at the source / destination ports
19:56:02dbussinkand since mysql doesn't receive that, it disconnects after 5 secs
19:56:08dbussinkat least, this is my interpretation
19:57:03srbaker leaves the room.
19:58:19d2dchat leaves the room.
19:58:56rueYeah, 5 ACKs, then 6 is the request (the MYSQL proto name may be confusing, this is mri > mysql)
20:00:08rueBut that seems to be it
20:00:29dbussinkso rubinius just stops sending out packets there
20:01:45rueOh.. wait
20:02:29binary42 leaves the room.
20:02:32binary42 enters the room.
20:02:33rueMm. I wonder.
20:02:45dbussinkwondering what?
20:02:46DefilerBack in a bit. Food
20:02:48rueIt DOES eventually send the request but the connection is already being closed
20:03:21dbussinkah yeah, i see, #8
20:03:34rueI was thinking it was an adapter issue but this might actually be something wrong in the IO layer
20:04:02dbussinkwell, the adapter should probably work without modifications, it's a pure ruby adapter
20:04:23rueI mean the other way around, sorry
20:05:37MenTaLguY enters the room.
20:05:44rueI dunno where it is getting the sequence 63 from though
20:05:53MenTaLguYhowdy
20:06:20rueHeyap
20:09:38AndrewO enters the room.
20:10:30fbuilesv enters the room.
20:10:33rueDefiler: Out for while, but essentially the problem is as dbussink said: rbx is not sending the login request in frame #6 as it should. It does send the ACK to the greeting (that is #5) but then it pauses
20:11:20dbussinkmaybe it blocks on something because the io layer wants to get something back before sending something again?
20:11:32rueYeah, that is quite possible
20:11:36dbussinkthat could explain why the login is sent at a later point
20:11:59rueOr maybe a status is not being cleared so the write is pending, something like that
20:12:21thehcdreamer leaves the room.
20:17:16jacen_ leaves the room.
20:19:40srbaker enters the room.
20:20:21enebo leaves the room.
20:20:24rueActually, if the TCP is multiplexing it may just be a delay too--if something is being compiled, for example
20:21:09evanmorning.
20:21:34MenTaLguYdon't forget nagle either
20:21:41MenTaLguYhi evan
20:23:12evanhow are things in code land this morning?
20:26:49dbussinklooks like the tcp bits are on strike
20:27:59obiejuan leaves the room.
20:32:43MenTaLguYdoes TCP_NODELAY make the difference?
20:37:05dbussinkit shouldn't be the cause afaik
20:38:00dbussinkmri also doesn't use it
20:38:26evan"Hell no! We won't packetize!"
20:40:59jacen_ enters the room.
20:41:10srbaker leaves the room.
20:41:22srbaker enters the room.
20:41:59srbaker leaves the room.
20:42:38twbray enters the room.
20:43:24boyscout1 commit by MenTaLguY
20:43:24boyscout * efficient implementation of Fukomoto's semaphore; 6f63870
20:44:11twbray leaves the room.
20:45:01evanMenTaLguY: thats nice and tight.
20:45:12boyscout1 commit by MenTaLguY
20:45:15boyscout * fix copyright year; 1af4a3e
20:45:18MenTaLguYthanks
20:45:41MenTaLguYthe one thing I'm a little unhappy with is the initvalue.times { @channel << nil }
20:45:48MenTaLguYkind of sucks for large initvalues
20:46:03MenTaLguYmay not be a significant issue in practice though
20:46:10evanare Semaphores actually initialized like that?
20:46:25evani guess where you have a default pool or something
20:46:26MenTaLguYnormally there's just an assignment to the count field
20:46:42evanah
20:46:42MenTaLguYoh, you mean in terms of the constructor taking an initial count?
20:46:45MenTaLguYit's not too unusual
20:46:47evanok
20:47:02MenTaLguYI actually could have done @channel.value = initvalue.to_i
20:47:12evanyep
20:47:25MenTaLguYbut that depends on channel implementation details which won't remain fixed
20:47:29evantrue
20:47:42evanyou could hide it behind a Channel method
20:47:51MenTaLguYtrue
20:47:52evanChannel#prime
20:48:01MenTaLguYhmm.
20:48:16MenTaLguYif it comes up again maybe
20:48:50evanhm, so i think i need to give the new VM the ability to call a method and discard it's return value
20:48:55evanie, proper hooks
20:49:18evani guess i could just set a flag on the MethodContext
20:49:36MenTaLguYwhy is it necessary to have a special facility for discarding a return value?
20:49:54evanwell, the biggy is initialize
20:49:59evani want to move Class#new into the VM
20:50:04evanbut others are class hooks
20:50:07evanlike method_added
20:50:25evanwhere you want to call it if it exists, but ignore the return value
20:50:36MenTaLguYI see
20:50:40evanbasically, you decide the return value up front, then call it and ignore the return value
20:50:40ruedbussink, Defiler: Mm, actually the times are probably more indicative of an IO layer issue
20:50:44MenTaLguYso you don't have to worry about whether to pop something from the stack
20:50:48evanright
20:50:59evanbecause the pop would have to actually be in the bytecode
20:51:15evanmethod_added is a bad example
20:51:20evanbecause it's not a VM hook anymore
20:51:22rueWe could make up a new operator for that, like obj ->stabbymcstab-> meth
20:51:23evannow that we use __add_method__
20:51:52evanthe current VM uses a ruby trampoline to do this
20:52:05evancalling VM.perform_hook in ruby, with the return value it wants
20:52:27MenTaLguYso, basically what you want is something which calls a method if available, but leaves the stack the way it was?
20:52:34evanso the activation of perform_hook is the state to have the proper return value on the stack
20:52:39MenTaLguYor just something which pops after making the call if it succeeds
20:52:40evanMenTaLguY: exactly.
20:52:45evanwell, they're the same
20:52:57MenTaLguYwell, true, assuming proper stack hygene
20:53:23evanperhaps CPS style
20:53:37evanlet the VM register a C function to call when a MethodContext returns
20:53:41MenTaLguYin some ways I actually prefer the idea of providing a default return value which is left on the stack if the call doesn't succeed
20:53:53MenTaLguYI think that has potential to be more useful
20:53:58MenTaLguYin more cases
20:54:06evanhow do you define "doesn't succeed"?
20:54:41MenTaLguYit's not there to call
20:55:09evanthat is the semantics i'm talking about
20:55:14evansame thing
20:55:34evanthe return value of the hook doesn't replace the original return value (which is pushed on the stack BEFORE the hook is called)
20:56:59rubuildius_amd64MenTaLguY: 1af4a3eeb; 2090 files, 6569 examples, 22948 expectations, 0 failures, 0 errors; http://rafb.net/p/Y1yVOU81.html
20:57:00rubuildius_amd64MenTaLguY: 6f638702d; 2090 files, 6569 examples, 22948 expectations, 0 failures, 0 errors; http://rafb.net/p/PuwOnx10.html
20:58:08rueevan: It is not really possible to run this as an optimization instead, is it?
20:58:26evannot sure what ya mean
20:59:16rueIf you just have a method call without an assignment and it is not the return value of its containing method or the return value of the containing method does not have assignment etc.
20:59:43evanhuh?
20:59:46evani still don't follow.
20:59:54ruedef foo; blah; 5; end
21:00:04rueWe do not need blah's return value
21:00:09evansure...
21:00:11evanso?
21:00:15evanthats not really what i'm talking about
21:01:39evani'm talking about where the VM contains code to run a method
21:01:40rueMost of the hooks would have similar semantics though, no? I am just thinking it would be better if it can be written as a general optz instead of a special-case
21:01:54rueBut that may or may not be feasible
21:01:57imajes leaves the room.
21:02:00evanand that method should be executed without being seen at all from the context it's called, ie, doesn't touch the calling stack
21:02:10evanthe code is INSIDE the VM
21:02:13evanit's not at the bytecode level.
21:02:29evanneither the caller nor the callee has bytecode to run the hook
21:03:04MenTaLguYit seems like sometimes you might have hooks whose return values you care about
21:03:30MenTaLguYwhat I was suggesting was that the return value of the hook replaces the supplied "default" return value if the hook is there to be called
21:03:41evansure, but i want to deal with the case of where you don't care
21:04:02evanMenTaLguY: that breaks things
21:04:08evanthats not how MRI's hooks operate
21:04:14imajes enters the room.
21:04:30MenTaLguYnone? anywhere?
21:04:50MenTaLguYas long as it is consistently discarded, then, yeah... I guess so
21:04:56rueWell, you would not necessarily want to constrain to just doing that but broadly, yeah, MRI hooks are "informational" moreso
21:06:06evani agree that it would be nice for a hook to leave it's return value for the caller to see
21:06:10evanthat case is actually really simple.
21:06:14rueMaybe we could use Monads for specifically side-effecting :)
21:06:17evanso i'm not considering it rigth now.
21:06:42evani'm looking at the zero-side-effect-on-caller hook
21:07:17MenTaLguYwhat about exceptions raised by the hook?
21:07:39evanthey flow up like normal
21:07:39imajes leaves the room.
21:07:45MenTaLguYok
21:07:51evanok, so not zero
21:08:00MenTaLguYis satisfied at this point
21:08:07evanlittle-to-no-side-effect-on-caller
21:08:08evan:)
21:08:43evanso, i'm thinking either a flag in the MethodContext of running the hook that indicates the return value should be discarded
21:08:44MenTaLguYincidentally, I'm trying to work out a nice Ruby API for joins
21:08:47evanthats the simplest
21:08:50MenTaLguYthe original API I worked out was a bit grotty
21:09:10evani considered running each hook on a new Task
21:09:11MenTaLguYand my experience implementing joins in Java for JRuby made it clear that what I was thinking of wasn't necessarily the best way to do things
21:09:24evanbut then exceptions don't flow upwards.
21:09:35evanjoins?
21:10:28MenTaLguYjoin calculus
21:10:36MenTaLguYc.f. C-omega or Join Java
21:11:06imajes_ enters the room.
21:11:45evanah
21:12:05MenTaLguYwhat I'm thinking at the moment is something vaguely like Struct
21:12:15MenTaLguYin terms of a class factory sort of arrangement
21:12:31MenTaLguYyou define your chords in a block passed to Join.new or something
21:13:26evanhm
21:13:35evanmy brain still doesn't growk that very well
21:13:47evanthe best i've gotten it is you explain channels to me over and over again
21:13:54evanto the point that I could implement them sorta in rubinius
21:13:57benny enters the room.
21:14:28MenTaLguYjoins are sort of like bundles of channels
21:14:47MenTaLguYwhere you specify rules for callbacks that get invoked when values are available on specific combinations of channels
21:15:13MenTaLguYe.g. "call this if values are available on the first and second channels"
21:15:22wmoxam_ enters the room.
21:15:35evaninteresting
21:16:15wmoxam leaves the room.
21:16:25wmoxam_ enters the room.
21:16:28headius enters the room.
21:16:28srbaker enters the room.
21:16:29MenTaLguYit seems to be helpful for solving some really hairy concurrency things in a straightforward way
21:17:02dgtizedMenTaLguY: it lets you do dependencies in a multithreaded fashion easily right?
21:17:28MenTaLguYI'm not sure I'd put it like that
21:17:36RyanTM enters the room.
21:17:39headius_ enters the room.
21:17:52headius leaves the room.
21:19:28headius_ leaves the room.
21:19:34MenTaLguYhttp://svn.codehaus.org/jruby/trunk/jruby/src/org/jruby/demo/TextAreaReadline.java
21:19:42headius enters the room.
21:19:44MenTaLguYscroll down to INPUT_SPEC
21:20:24antares enters the room.
21:20:31dgtizedsomething like it lets you fulfill a promise to do A every time B, and C are fulfilled, and B is fulfilled everyother time C is fulfilled?
21:21:04MenTaLguYnot really
21:21:08MenTaLguYit's more like chemical reactions
21:21:15xmlhacker leaves the room.
21:21:49dbussinkDefiler: any help from rue's and my comments?
21:21:57dgtizeddistributed prolog maybe?
21:22:14dgtizedI dunno I'll go read up on it instead of just guessing
21:22:25headius_ enters the room.
21:22:47headius leaves the room.
21:23:06Defilerdbussink: It is helpful, yeah.. but I'm still trying to figure out what to check next, based on them
21:23:13imajes__ enters the room.
21:23:26DefilerAs in, figuring out where/if IO is blocking
21:23:57evanDefiler: have you checked out senryu? it's a haiku OS image
21:24:32DefilerNo, but that's a good name
21:24:41xmlhacker enters the room.
21:24:55xmlhacker leaves the room.
21:24:57evanit only works under vmware, and it seems fusion is no longer registered for me
21:25:27evanfires up iSerial Reader
21:26:02DefilerI did run Haiku under VMWare, though
21:26:06Defilerjust using a different image
21:26:11DefilerI love how fast it boots.
21:26:24cypher23 leaves the room.
21:26:24imajes__ leaves the room.
21:26:57imajes enters the room.
21:26:57ubiquitous leaves the room.
21:27:23ubiquitous enters the room.
21:27:36Defilerevan: If I suspect that the rubinius IO subsystem is blocking when it should not.. what should I use to test that assertion
21:27:53ubiquitous leaves the room.
21:28:48xmlhacker enters the room.
21:28:54evanyou should walk down Channel#receive in IO#read
21:28:55headiusis there any way to force a stack dump at runtime, from outside the process?
21:28:58evaninto the vm
21:29:10evanheadius_: in general or in rubinius?
21:29:29evanand by stack dump, do you mean backtrace?
21:29:46Defilerevan: What do I do about the delay added by stepping in the debugger? As in, imagine rbx is blocking for 5 seconds on some timeout thing.. by the time I step through that, 5 seconds will definitely have elapsed, and it will just continue
21:29:47headiusin rubinius
21:29:50imajes_ leaves the room.
21:29:56headiuswell backtrace, but perhaps with C frames as well
21:30:04headiusruby backtrace alone is probably enough
21:30:39evanDefiler: thats a tough one.
21:30:54evanDefiler: you could try running under strace/dtruss
21:31:02evanDefiler: see what it's doing out to the kernel
21:31:10evanthat could show you if it's blocking into the kernel.
21:31:15DefilerAha
21:31:36evanheadius: we don't have on at present
21:32:00headiusdebugging a similar issue under jruby that's what I'd do...might be a nice thing to add
21:32:07evanheadius: you could attach via gdb and run machine_print_callstack(0)
21:32:16w1rele55 enters the room.
21:33:11evanthats available as rbt if you runing with --gdb
21:33:38rueevan: Check haikuware.com
21:34:13rueGotta say, Haiku is looking really good. I had almost lost faith but looks like they made a couple breakthroughs
21:34:40headiusdo you do anything special when you run under --gdb?
21:34:51evanno
21:34:57evan./shotgun/rubinius --gdb ...
21:35:19headiusI was thinking about adding a jdb flag for jruby, but there's not many folks that would use that over a full IDE debugger
21:35:48rueDefiler: To elaborate, I do not think *rubinius* is blocking for 5 seconds specifically (and I think dbussink was of the same mind.)
21:36:32evani wish i could use xcode's debugger more easily
21:36:39evanwithout having to have a whole project setup
21:36:57rueDefiler: For whatever reason, after rbx sends the ACK it does not send the login request immediately. So MySQL times out after 2 segment TTLs which is probably the 5 secs. Then when rbx gets the FIN ACK, it kicks back in and sends the request but it is too late.
21:37:08TheVoice enters the room.
21:38:02rueDefiler: So a likely culprit is that the IO is expecting the MySQL side to re-respond or initiate the next step; or that the channel is for some reason not shown as readable or shown as having more pending data
21:38:23rueWhich is blocking the write from going out
21:38:44MenTaLguYtried TCP_NODELAY?
21:38:49rueOh yes, and that
21:39:02rueNagle could also be the culprit
21:39:19rueErm, Nagle =~ TCP_NODELAY
21:39:36MenTaLguYyes.
21:39:37DefilerAccording to dtruss, the noticeable 5 second delay happens between system calls
21:39:43DefilerSo it must be inside rbx, right?
21:40:28DefilerOh, and just as a reminder, this happens with unix sockets as well as TCP sockets
21:40:39DefilerThough I can't use wireshark to record the unix socket conversation
21:40:40rueIt would be likely, yes
21:40:43DefilerSo I can't prove it
21:40:50rueYou could netcat that
21:41:11Defilernetcat what to what?
21:41:38ruePlug a netcat TCP "logger" inbetween
21:42:04DefilerHow do I make netcat look like a socket so that I can open it?
21:42:10DefilerOr am I missing something fundamental here
21:42:42rueSorry, I mean socat
21:44:12DefilerWhoa I didn't know this existed
21:44:44rueBasically you make a tunnel from rbx to mysql but you can peek at the data
21:44:50DefilerYeah, that is genius
21:45:10rueI have nc aliased to socat :P
21:45:36Defiler"This is UNIX! I know this!"
21:45:46rueCheck http://www.dest-unreach.org/socat/doc/socat.html#EXAMPLES for ideas
21:46:31DefilerOh, the example of proxying X11 traffic is siiick
21:48:19rue"Wait, did he just implement a proxy in two lines?"
21:48:20DefilerSo I want UNIX-LISTEN:/new/fake/thing UNIX-CLIENT:/path/to/mysql/socket ?
21:48:29djwhittsocat can be used to setup a pretty nice repl interface for vim
21:49:43djwhittor just about any other editor that can send data to a shell for that matter
21:50:14evanok, off to enjoy my sunday
21:50:23evana walk, brunch, a comedy
21:50:27evanperhaps a car wash
21:53:15kw enters the room.
21:53:16AndrewO leaves the room.
21:53:34AndrewO enters the room.
21:53:36peeja enters the room.
21:53:37Maledictus leaves the room.
21:56:16AndrewO leaves the room.
21:59:46rueDefiler: Sorry, wandering off and on. Yeah, you can do that and then just log it. Alternatively or if that info is not enough or clear, you can set up a TCP forwarder to the mysql socket, and then the client from the rbx unix socket through TCP to your forwarder
22:04:15Defilerlooks like the macports version is broken
22:04:19Defilerdoing it from source now
22:04:39rueHih, sometimes macports is more trouble than it is worth
22:04:50Defilersudo socat -d -d -x -v UNIX-LISTEN:/tmp/socat.sock,fork UNIX-CONNECT:/tmp/mysql.sock
22:04:51rueGranted most of my issues have been from the pre-installed Ruby
22:04:53Defileris what I've got so far
22:05:54rueThrow in -D and -lu
22:06:03DefilerWhat are those?
22:06:27headius leaves the room.
22:06:57rue-lu is microsecond timestamps and -D gives some info about the descriptors before transferring
22:07:10Defilercool
22:08:03Defilerdamnit, I just can't make it build on os x
22:09:20Defilerhttp://rafb.net/p/ViybS875.html
22:09:40rueThen the debug socket option should (hopefully) enable socket debug
22:10:25DefilerI'm assumign this is some nightmare readline problem
22:10:26Defileras usual
22:10:27anteaya_ enters the room.
22:11:39rueReadline?
22:11:43rueYeah, looks it
22:11:53rue--disable-readline
22:12:00wmoxam enters the room.
22:13:45probablycorey enters the room.
22:13:56Defilergets further, but breaks on the symbol "_res_9_init"
22:16:46antares leaves the room.
22:19:23rueThat is the resolver, probably
22:19:56Defilerhaha got it
22:20:05rueresolv.h
22:20:42Defilerrghhgh still the same error
22:21:02Defilerhttp://rafb.net/p/RmyBvg37.html
22:21:10Defiler(that's the one I got via macports that made me install from source)
22:22:03luislavena enters the room.
22:22:49luislavenahello guys, to whom I should direct some mspec questions?
22:23:09srbaker leaves the room.
22:23:12Defilerbrixen is in charge of that
22:23:15Fullmoon enters the room.
22:23:21DefilerThough various people can probably answer most questions you may have
22:23:22Fullmoon leaves the room.
22:23:32DefilerHe's the guy if you want to suggest changes, though
22:24:03luislavenaDefiler: no changes for now, want to be sure it's working properly (it's own specs passes)...
22:24:32luislavenawant to introduce some changes to allow backslash in the paths (for windows) to allow running rubyspecs against MRI.
22:25:02MenTaLguYdoesn't MRI use forward slashes in paths too?
22:25:06Defilerluislavena: I have always used forward-slashes in Ruby on Windows. I take it some folks do otherwise?
22:25:08Fullmoon enters the room.
22:25:19imajes leaves the room.
22:25:30imajes enters the room.
22:25:46luislavenaDefiler: \ vs / let autocomplete work out of the box.
22:26:15imajes leaves the room.
22:26:18luislavenaDefiler: but is not a blocker, just want to be sure it's working before evaluate why some the specs passes...
22:26:29Defilerk
22:26:33luislavenathink you cannot trust a tool that have it's own specs failing :-)
22:26:39imajes enters the room.
22:26:43DefilerTrue. All the mspec specs should pass
22:26:57DefilerIf they don't we need to fix whatever platform bug is at fault
22:27:12luislavenaDefiler: that's my task for today :-)
22:27:29luislavenaDefiler: if you have a minute, can you run mspec -t ruby mspec/spec on your box?
22:28:05rueDefiler: Hm, it seems to build OK from macports here
22:28:05adamwiggins enters the room.
22:29:06Defilerrue: builds OK, doesn't run
22:29:18Defilerluislavena: tons of failures. I believe that isn't the correct way to run it. Let me look
22:29:54DefilerOh, right. the mspec specs are meant to run in rspec
22:30:02luislavenaDefiler: thank you, just wanted to be sure, since it expected you ruby mspec with your current ruby implementation :-)
22:30:09Defilerso 'spec spec/mspec' should do what you want
22:30:14luislavenaDefiler: oh, great! :-D
22:30:42DefilerI guess that is a little like how rspec has some test/unit bootstrap tests
22:30:48DefilerYou'll have to ask brixen about the 'why' part, though
22:30:51anteaya leaves the room.
22:30:58Defiler"rake spec:mspec" will do it as well
22:31:14luislavenaDefiler: great, thank you for your time :-)
22:31:20rueDefiler: Oh, maybe termios.. sec
22:32:10Defilerluislavena: Thanks for taking a look at it on Windows
22:32:13luislavenaDefiler: 671 examples, 10 failures, not that bad :-D
22:32:37luislavenaDefiler: no problem, want to use the rubyspecs into MinGW One-Click Installer :-)
22:32:43DefilerLet me run it here as well to make sure there are no errors
22:32:48Defilerhot
22:33:03luislavenasince 1.8.7 really screwed up things a bit on this side :-P
22:33:28rueI am fully expecting 1.8.7 to bomb
22:33:54DefilerRunning MRI releases before they have a patch-level tacked onto the end is bad
22:33:56luislavenarue: they backported a lot of things that will make 1.8 users unhappy :-(
22:33:56rueMaybe they will finally adopt the novel "running tests" approach though
22:33:58DefilerAt least recently
22:36:34Defilerluislavena: 0 failures here, so at least it is meant to pass :)
22:37:08luislavenaDefiler: excellent :-)
22:37:34luislavenaDefiler: it seems most of the failures came from hardcoded /tmp/tags.txt
22:37:49luislavenaDefiler: will workaround those and make it pass.
22:37:58rueluislavena: Using rspec to run the tests is specifically because it is not possible to run some of the specs on MatzRuby because of the "recursion"
22:38:42luislavenarue: yes, also because sometimes is not possible test your tool with the tool itself :-P
22:38:43probablycorey leaves the room.
22:39:22luislavenarunning mspec on spec/ruby/1.8 got a bug crash, so I can say I'm happy :-D
22:41:36rueDefiler: -d -d -d -d also gives you the c function calls socat is making which may help with timing issues
22:42:53rueHaha: echo -e "\0\14\0\0\c" |socat -u - file:/usr/bin/squid.exe,seek=0x00074420
22:43:17imajes leaves the room.
22:43:24Defilerrue: So, it is working for you on your Mac OS install?
22:43:28DefilerOr is that on a different platform
22:44:15benny leaves the room.
22:44:48kw leaves the room.
22:46:23wmoxam leaves the room.
22:46:47rueDefiler: I installed it manually just now
22:47:17DefilerWhat did you type to get that to work?
22:47:50adamwigginsHey guys, I've got my first (attempt at a) patch, a couple of specs for IO.popen. What's the best way to get this reviewed, stick it in a pastie and link here? Or create a ticket in lighthouse?
22:48:43Defilerticket
22:49:04DefilerFeel free to link it here after doing so, though, to attract interest
22:50:14adamwigginsCool, thanks.
22:51:50demisone enters the room.
22:52:39rubuildius_ppcMenTaLguY: 1af4a3eeb; 2090 files, 6572 examples, 22977 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/183928
22:52:41rubuildius_ppc leaves the room.
22:52:43rubuildius_ppc enters the room.
22:52:45rueDefiler: `./configure --prefix=/opt/local --disable-termios --disable-readline` and then edited config.h to #define HAVE_RESOLV_H 0 instead of 1
22:52:53Defileraha
22:55:33Defilerrue: Cool. That works. You are a pro
22:57:41Defilerrue: Hrm. I'm not getting the content that I'm sending on STDERR. Do I need another flag for that?
22:58:12DefilerClient can connect through the proxied socket and talk to mysql, though, so that part is working at least
22:58:20jicksta enters the room.
23:02:26rueAre you seeing nothing or just the mysql side/
23:02:28adamwigginsHere's the patch, feedback appreciated:
23:02:29adamwigginshttp://rubinius.lighthouseapp.com/projects/5089-rubinius/tickets/506-specs-for-io-popen
23:03:22Defilerrue: Nothing
23:03:33Defilerrue: Other than the one line that prints showing a successful startup of socat
23:05:44rubuildius_ppcMenTaLguY: 1af4a3eeb; 2090 files, 6572 examples, 22977 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/183932
23:08:41rueDefiler: Oh, the fork probably?
23:09:39DefilerWorks the same without the fork
23:10:01Defileroh wait
23:10:02ruesocat -d -d -d -d -lu -v -x UNIX-LISTEN:/tmp/fakerbxtest.sock UNIX-CONNECT:/tmp/rbxtest.sock
23:10:37fbuilesvluislavena: can MRI be built on Windows right now without using Cygwin?
23:10:54wdperson leaves the room.
23:11:06ruefbuilesv: Yeah, the one-click uses VC++ 7 or something
23:11:12DefilerI was setting the wrong env variable durh
23:11:32luislavenafbuilesv: yes, but didn't followed that path, if you want mingw I can help :-D
23:11:38fbuilesvrue: I see.
23:11:56luislavenafbuilesv: oh, without cygwin... yeah, take a look at One-Click installer bootstrap project.
23:11:56fbuilesvluislavena: Nah, just checking the patch uploaded by adamwiggins so I'm guessing that echo and cat will fail on Windows?
23:12:28luislavenayep, these will fail, cat/type , echo will work unless you use $VAR
23:13:06rueThe specs do rely rather heavily on the shell to verify the system side
23:13:20DefilerOK, check this out
23:13:21Defilerhttp://rafb.net/p/oyJ3vo49.html
23:13:38ruefbuilesv, luislavena: Emm, I do not think IO.popen works on Win32 to begin with? :)
23:13:40luislavenarue: current one click uses VC6, upcoming uses GCC
23:13:51luislavenafbuilesv: yes, IO.popen now works.
23:14:05adamwigginsWhat would be a cross-platform way to test writing to a pipe, then?
23:14:06brainopia_ enters the room.
23:14:13luislavenarue: do you want me to test something?
23:14:21fbuilesvluislavena: How do you make that work in Windows? Is there anything that resembles a pipe?
23:14:28adamwigginsOr should I go with the eyesore of if RUBY_PLATFORM = ...
23:14:33adamwigginsAnd specify an alternate command in each case.
23:14:37Defilerfbuilesv: Windows has named pipes
23:14:38luislavenafbuilesv: there are pipes on Windows :-)
23:14:44fbuilesv:O
23:14:46Defilerand mailboxes, even
23:15:02rueDefiler: Can you run it with -d * 4 ?
23:15:16luislavenaabuses of unnamed pipes quite often to redirect child processes.
23:15:40rueadamwiggins: There is a guard mechanism for this
23:15:59fbuilesvadamwiggins: you can use guards but there must be something that runs both in Unix and Win
23:16:18Defilerrue: http://rafb.net/p/7jwvBr95.html
23:16:28adamwigginsMeaning I can use platform_is :something and make a different spec for each?
23:16:58rueadamwiggins: Yeah, you could do that--however, there may be a simpler way to verify the write works than cat
23:17:09rueWell, not simpler but more portable
23:17:27adamwigginsThat'd be great, couldn't think of anything though - ideas?
23:17:41Defilerand -d -d -d -d with MRI: http://rafb.net/p/c2MHmD52.html
23:19:31adamwigginsDoes "sh" run on windows? I noticed that referenced elsewhere in the IO class
23:19:44luislavenaadamwiggins: http://pastie.caboo.se/private/ulue4fxyaesbsxaqs2w5yg
23:19:46DefilerIt does, but via trickery
23:20:47adamwigginsluislavena: can you suggest a command that can be written to in a pipe and its result easily tested?
23:20:48luislavenaadamwiggins: there is no write for IO.popen on Windows... even replacing cat
23:20:59brainopia leaves the room.
23:21:15adamwigginsAs in, MRI doesn't support writing to pipes?
23:21:29fbuilesvadamwiggins, rue: Would doing something like "ruby -e "print 'foo'" be too expensive for a spec?
23:21:34lstoll leaves the room.
23:21:37adamwigginsHaha
23:21:55fbuilesvyou can be sure that it will be on both platforms :P
23:22:06luislavenafbuilesv: echo will work, what wouldn't is write...
23:22:23adamwigginsHehe, unless some purist has uninstalled it and has only rbx :)
23:22:41fbuilesvluislavena: I see
23:22:50adamwigginsruby -e 'print "foo"' take 0.01s on my system... seems reasonable
23:22:51luislavenafbuilesv: let me see what I came up for the writing...
23:23:16luislavenaadamwiggins: there is no need for that, echo will work out of the box on most of the OS...
23:23:31fbuilesvluislavena: will cat work too?
23:24:07luislavenafbuilesv: there is no cat, and type doesn't work like that... I'm looking what could replace it :-)
23:24:21zimbatm leaves the room.
23:24:37DefilerCOPY CON
23:24:37Defilerheh
23:24:42rueDefiler: Looks like a different problem at least
23:24:42fbuilesvluislavena: I may seem nubish but my only real approach to Win in the last years was to play WoW :P
23:25:18Defilerrue: Man, I am really skeptical that TCP and UNIX sockets have two different problems that result in the exact same 5 second timeout
23:25:26luislavenafbuilesv: hehehe, I don't remember last time I played a game :-P
23:25:28DefilerSurely this is one underlying problem?
23:26:25adamwigginsluislavena: can you try applying this? http://pastie.caboo.se/183939
23:26:32luislavenafbuilesv: ok, you must guard against write on pipes... that doesn't work...
23:27:10adamwigginsluislavena: pipe writing doesn't work at all, so the command doesn't matter...?
23:27:11fbuilesvadamwiggins: Now that I think about it, calling ruby -e wouldn't make much sense if we're trying to improve rbx, and calling rbx -e is pretty slow. I support the idea to guard it
23:27:47adamwigginsWill do then. What should I pass to platform_is to guard win32?
23:27:50Defilerluislavena: I thought you could just do WriteFile to write to a pipe in Win32?
23:27:57luislavenaadamwiggins: is halting trying to read from the pipe...
23:28:36luislavenaDefiler: want me take a look at the internals?, sometimes I got amazed how MRI do things... even I create things with win32 :-P
23:28:44rueDefiler: Sec, I thought I saw no delay in the AF_UNIX output
23:28:53adamwigginsplatform_is_not :mswin ?
23:29:09rueadamwiggins: Perhaps a small script that reads its input?
23:29:10imajes enters the room.
23:29:47luislavenaplatform_is_not :windows ?
23:29:49rueI suppose it might be simpler to just guard it for now
23:30:02adamwigginsYeah, that's what I was trying with ruby -e 'print STDIN.gets'
23:30:06rueYou will need both platform_is_not and platform_is
23:30:16Defilerluislavena: 'platform' inspects the string that the runtime returns.. e.g. mswin32
23:30:18dctanner leaves the room.
23:30:29luislavenaDefiler: oh, that will then fail for mingw32
23:30:34Defilerplatform_is_not :win would exclude both mswin32 and darwin, for example
23:30:59rueDefiler: Sorry, I see it now. I was looking at the usecs :D
23:31:37rueA 5-second delay and network debugging cause an existential conflict in my perception-processing organs
23:32:02fbuilesvluislavena: any idea of what does Config::CONFIG['host_os'] return on Windows?
23:32:59luislavenafbuilesv: mswin32 for VC6 (One-Click installer)
23:33:10rueDefiler: So yes, this does in fact seem to be the same problem
23:33:27luislavenafbuilesv: mingw32 for the new MinGW based build of One-Click Installer.
23:33:42luislavenafbuilesv: take in consideration mswin64 too :-P
23:34:01luislavenacan you guard against two platforms in the same line? platform_is_not :mswin, :mingw ?
23:34:26DefilerYes
23:34:33Defilertwo on the same line is an 'or'
23:34:40DefilerIf you need 'and' exclusion, you nest them
23:35:36rueDefiler: You would want to hook into the VM network layer with GDB and see. I can try to take a look later too, what are you using to test? The unmodified pure-Ruby mysql driver?
23:36:02DefilerThough I suspect we are going to want to address the concept of 'windows' in specs often enough that we should make a cleaner way
23:36:15Defilerplatform_is_not :windows would be nice to be able to say
23:36:17brainopia enters the room.
23:36:25brainopia leaves the room.
23:36:30Defilerrue: I have slightly modified mine to print some crap to the console
23:36:34Defilerrue: but it is otherwise unmodified
23:36:35adamwigginsArguably you might want platform_is_not :unix
23:36:47