Show enters and exits. Hide enters and exits.
| 00:05:59 | rue | antares: Broadly looks OK. There is some unnecessary stuff (like the FASTCTX macro, the key part is not that it casts context to a fastctx which is already obvious in the code--specifically it treats an opaque OBJECT as a series of bytes instead of a normal object) and some of it could be addressed bit better variable names |
| 00:06:13 | rue | I can try to annotate it later if you want |
| 00:06:55 | antares | rue, alright, will try to improve it. Thanks! |
| 00:07:20 | rue | But, say 167 and 173 are kind of pointless as comments because you are just writing out exactly what the code already says |
| 00:07:46 | rue | For example, instead of 'flushes the sp' you could explain what that exactly means--the code already says flush_sp |
| 00:08:02 | rue | antares: Good work, though, do not get me wrong |
| 00:11:23 | graza_ enters the room. | |
| 00:11:24 | graza leaves the room. | |
| 00:11:40 | dewd leaves the room. | |
| 00:11:46 | djwhitt | question for anyone: what is the best source for understanding what is going in the vm at a high level? |
| 00:12:07 | djwhitt | is it helpful to work through the bluebook first? |
| 00:12:14 | djwhitt | or is just reading the source the best method? |
| 00:13:12 | radarek leaves the room. | |
| 00:14:04 | drbrain | I'm sure it's helpful to read the blue book |
| 00:14:12 | agardiner | djwhitt: the bluebook is useful background for a lot of the whys... |
| 00:14:38 | agardiner | and as an explanation of building a VM |
| 00:14:56 | agardiner | but in the end, reading the source is key |
| 00:15:23 | djwhitt | I've mostly been reading the source so far (not that I've gotten terribly far yet) |
| 00:15:30 | djwhitt | I wasn't sure how relevant the blue book was at this point |
| 00:16:17 | rightondev leaves the room. | |
| 00:17:30 | anonuser leaves the room. | |
| 00:17:35 | rightondev enters the room. | |
| 00:19:28 | agardiner | i guess it depends on how comfortable you are with concepts such as VMs, bytecode, primitives, etc |
| 00:19:57 | agardiner | if you aren't all that familiar with these, then the bluebook is probably a good reference |
| 00:22:07 | agardiner | otherwise, i guess i'd suggest looking at the bytecode and tracing how the various opcodes are implemented |
| 00:22:20 | agardiner | that's what i did... :-) |
| 00:23:17 | zenspider | I've got a regexp escaping bug I introduced, but current numbers show that my lexer work has sped up the parser 70%... still not great, but much much better |
| 00:23:24 | zenspider | (YAY) |
| 00:24:04 | zenspider | djwhitt: relevant or not, it is worth reading |
| 00:25:05 | RyanTM leaves the room. | |
| 00:26:06 | RyanTM enters the room. | |
| 00:32:46 | mae enters the room. | |
| 00:33:01 | mae leaves the room. | |
| 00:36:01 | Silex | 70% improvement is nice tho |
| 00:37:20 | antares | zenspider, 70% is definitely good |
| 00:37:56 | Silex | 20% is already good |
| 00:38:07 | Silex | if you talk about optimisation |
| 00:38:28 | Silex | 70% sounds like major design improvement tho |
| 00:38:31 | Silex | :) |
| 00:39:43 | jessop leaves the room. | |
| 00:52:01 | brixen | well, le'see if I can break rubuildius |
| 00:52:03 | mae enters the room. | |
| 00:52:20 | mae leaves the room. | |
| 00:52:24 | boyscout | 20 commits by Brian Ford |
| 00:52:25 | boyscout | * Added new MSpec runner scripts.; b23ce76 |
| 00:52:26 | boyscout | * Removed deprecated $deferr from getoptlong.rb. Moved to /lib.; 10dd379 |
| 00:52:27 | boyscout | * Hopefully fix autotest config script.; 8e995f2 |
| 00:52:28 | boyscout | * Added MSpec.register_exit, .exit_code. Various fixes.; 921154b |
| 00:52:29 | boyscout | * Use the spec guards properly.; ee2dabf |
| 00:52:30 | boyscout | ... |
| 00:52:33 | rue | Hurray |
| 00:52:37 | brixen | rue: :D |
| 00:52:38 | rue | How was the talk? |
| 00:52:42 | agardiner | woohoo! |
| 00:52:51 | graza_ leaves the room. | |
| 00:52:56 | brixen | ok, folks, this is *not* a regression in time to run specs |
| 00:53:02 | brixen | we're now running over 500 more specs |
| 00:53:12 | brixen | I've added library to CI |
| 00:53:27 | ezmobius | w00t |
| 00:53:28 | rue | Gotcha, you broke Rubinius |
| 00:53:30 | brixen | rue: quite interesting, have an email in to the prof that hosted the talk to get his slides |
| 00:53:34 | graza enters the room. | |
| 00:53:37 | brixen | rue: :P |
| 00:53:52 | brixen | er, get the other prof's slides |
| 00:56:08 | brixen | so, bin/ci will give you a deprecated message |
| 00:56:12 | mae enters the room. | |
| 00:56:25 | brixen | the new runners are mspec/bin/mspec-run and mspec-ci |
| 00:56:45 | brixen | access them with: bin/mspec [options] [spec files] |
| 00:56:48 | brixen | or bin/mspec ci |
| 00:57:00 | mae leaves the room. | |
| 00:57:22 | brixen | I'm working on mspec-tag atm, which will add, remove tags for the specs |
| 00:58:02 | brixen | the options for including/excluding specs have also changed a bit |
| 00:58:29 | brixen | -e/-E, -p/-P, -g/-G for including/excluding based on strings, patterns (i.e. regexp), and tags |
| 01:00:47 | dancroak enters the room. | |
| 01:02:19 | ezmobius | bin/mspec ci is broekn for me on a fresh rebuild of everyting http://pastie.caboo.se/154020 |
| 01:02:44 | rubuildius | Brian Ford: b23ce76a7; bin/ci failed! http://rafb.net/p/xJKTvd49.html |
| 01:03:21 | brixen | ezmobius: k, one sec |
| 01:03:28 | brixen | there should be an exclude for that |
| 01:03:46 | brixen | let's see if I can repro it |
| 01:03:57 | ezmobius | looks like the build bot got the same error |
| 01:04:32 | brixen | yep |
| 01:05:04 | rubuildius_ppc | Brian Ford: b23ce76a7; bin/ci failed! |
| 01:05:18 | eventualbuddha leaves the room. | |
| 01:05:31 | drbrain | or, you could fix it with one line |
| 01:05:36 | drbrain | raise IOError if closed? |
| 01:06:25 | brixen | drbrain: yeah, I'm more worried about where the tags are |
| 01:06:41 | brixen | ezmobius: do you have a file: spec/tags/ruby/1.8/core/io/each_line_tags.txt ? |
| 01:06:48 | ezmobius | sec.. |
| 01:06:52 | brixen | and does it contain: fails:IO#each_line raises IOError on closed stream |
| 01:07:42 | ezmobius | nope no each_line_tags.txt |
| 01:07:56 | ezmobius | only each_byte_tags.rb |
| 01:09:08 | cored enters the room. | |
| 01:09:18 | brixen | ezmobius: ok, but you do have the tags dir, just to double check ? |
| 01:09:54 | ezmobius | yes |
| 01:10:15 | brixen | k |
| 01:12:02 | brixen | yep, odd, both each and each_line tag files are missing from git.rubini.us tree, but I have them here |
| 01:12:17 | lopex leaves the room. | |
| 01:15:29 | Fullmoon enters the room. | |
| 01:15:55 | sudothinker enters the room. | |
| 01:15:58 | Fullmoon_ leaves the room. | |
| 01:19:25 | boyscout | 1 commit by Brian Ford |
| 01:19:26 | boyscout | * Raise IOError if attempting to read from a closed descriptor.; b179f10 |
| 01:19:42 | brixen | well, git add . picked up those two files, but git status showed nothing before that |
| 01:20:02 | ezmobius | cool |
| 01:20:05 | brixen | I guess if you change a bunch of files, git add just to be sure instead of relying on git status |
| 01:20:34 | ezmobius | hmm still no luck |
| 01:21:14 | brixen | ezmobius: pastie ? |
| 01:21:35 | ezmobius | http://pastie.caboo.se/154035 |
| 01:21:48 | ezmobius | the file for that exclude still doesnt seem to be added |
| 01:21:54 | brixen | I didn't add it |
| 01:21:59 | brixen | I fixed it |
| 01:22:01 | ezmobius | oh |
| 01:22:27 | brixen | I just wanted to try to understand why it wasn't in HEAD |
| 01:22:31 | brixen | can't say that I do ;) |
| 01:23:09 | crafterm leaves the room. | |
| 01:24:03 | brixen | ezmobius: hmm, checking gitweb for that tags file |
| 01:24:48 | brixen | ezmobius: yep, missing |
| 01:24:49 | tarcieri | so here's a pointless pedentic question |
| 01:24:52 | brixen | damn this is silly |
| 01:24:59 | ezmobius | heh |
| 01:25:12 | tarcieri | I've always heard the Rubinius compiler described as producing "Rubinius bytecode" |
| 01:25:17 | tarcieri | but isn't it technically shotgun bytecode? |
| 01:25:23 | brixen | tarcieri: yes |
| 01:25:51 | wvl leaves the room. | |
| 01:25:52 | ezmobius | isnt is rubinius assembly that is translated into shotgun bytecode? |
| 01:26:13 | ezmobius | so compiler => rubinius ASM -> shotgun bytecode? |
| 01:26:29 | ezmobius | or are rubinius ASM and shotgun bytecode the same thing? |
| 01:26:35 | brixen | well, it's all rubinius, so rubinius asm/btypecode really doesn't matter |
| 01:26:47 | brixen | if we had more than one vm, it might be confusing |
| 01:27:18 | brixen | ezmobius: dunno what's up with git, I'll push some fixes in a sec.. |
| 01:27:18 | tarcieri | or if the VM hosts more languages than just Ruby/Rubinius |
| 01:27:31 | brixen | well, rubinius is not a language |
| 01:27:34 | rubuildius | Brian Ford: b179f10bd; bin/ci failed! http://rafb.net/p/j40Zho53.html |
| 01:27:48 | tarcieri | yeah, just meant that as the Rubinius implementation of Ruby |
| 01:28:21 | rubuildius_ppc | Brian Ford: b179f10bd; bin/ci failed! |
| 01:28:35 | brixen | it's all a bit confusing. I think using rubinius to broadly mean what can compile Ruby and execute it is reasonable |
| 01:28:52 | defunkt enters the room. | |
| 01:29:45 | gnufied leaves the room. | |
| 01:32:54 | boyscout | 1 commit by Brian Ford |
| 01:32:55 | boyscout | * Raise IOError in IO#read and #sysread if descriptor is closed.; 6282aed |
| 01:33:07 | brixen | ezmobius: could you give that a try, please |
| 01:33:12 | ezmobius | yup sec.. |
| 01:33:21 | brixen | thanks |
| 01:35:06 | ezmobius | different error now |
| 01:35:07 | ezmobius | http://pastie.caboo.se/154040 |
| 01:36:14 | brixen | cool |
| 01:36:23 | brixen | I just completely removed the branch |
| 01:36:30 | brixen | le'see if I can get that |
| 01:38:48 | cremes | anybody have a pastie script that can read stdin and return a url so i can get rubuildius_ppc working right? |
| 01:39:31 | rue | Not I |
| 01:41:12 | boyscout | 1 commit by Brian Ford |
| 01:41:13 | boyscout | * Added new tags files for excludes.; 431af59 |
| 01:41:23 | lstoll enters the room. | |
| 01:41:23 | brixen | ezmobius: heh, one more time ? |
| 01:41:33 | ezmobius | yup.. |
| 01:42:31 | ezmobius | 1569 files, 5471 examples, 18929 expectations, 0 failures, 0 errors |
| 01:42:34 | ezmobius | yay |
| 01:43:58 | brixen | ezmobius: cool! thanks |
| 01:44:00 | rue | Wee, 5k handily down |
| 01:44:24 | rue | Did you revise the README? |
| 01:44:32 | rue | Be back in a bit |
| 01:44:37 | brixen | hehe |
| 01:44:42 | rubuildius_ppc | Brian Ford: 6282aed5c; 1569 files, 5504 examples, 18939 expectations, 0 failures, 47 errors; |
| 01:44:43 | brixen | updating LH right now |
| 01:50:43 | mae enters the room. | |
| 01:51:07 | mae leaves the room. | |
| 01:51:46 | binary42 leaves the room. | |
| 01:52:01 | binary42 enters the room. | |
| 01:54:16 | mae enters the room. | |
| 01:54:21 | rubuildius_ppc | Brian Ford: 431af5920; 1569 files, 5471 examples, 18889 expectations, 0 failures, 28 errors; |
| 01:54:34 | mae leaves the room. | |
| 01:59:37 | yipstar leaves the room. | |
| 02:03:51 | cjheath_ enters the room. | |
| 02:06:33 | crafterm enters the room. | |
| 02:10:26 | MenTaLguY enters the room. | |
| 02:11:38 | cjheath leaves the room. | |
| 02:13:26 | binary42 leaves the room. | |
| 02:15:34 | twshelton enters the room. | |
| 02:15:38 | mernen enters the room. | |
| 02:19:04 | yipstar enters the room. | |
| 02:21:10 | kofno enters the room. | |
| 02:25:57 | wvl enters the room. | |
| 02:30:37 | jacen_ enters the room. | |
| 02:31:19 | binary42 enters the room. | |
| 02:36:42 | antares | in case someone is also interested in Baker's copying GC algorithm, here's an overview: http://web.media.mit.edu/~lieber/Lieberary/GC/Realtime/Realtime.html |
| 02:37:09 | antares | it seems that one shotgun uses may differ a bit though but the idea is the same |
| 02:41:33 | cored leaves the room. | |
| 02:44:47 | tbmcmullen leaves the room. | |
| 02:45:12 | tbmcmullen enters the room. | |
| 02:46:15 | VVSiz_ enters the room. | |
| 02:47:07 | antares leaves the room. | |
| 02:49:49 | _mutle enters the room. | |
| 02:54:12 | mae enters the room. | |
| 02:54:36 | mae leaves the room. | |
| 02:58:06 | agile leaves the room. | |
| 02:59:32 | boyscout | 1 commit by Brian Ford |
| 02:59:33 | boyscout | * Removed :version guarded specs that are not current stable.; aa585b7 |
| 03:00:09 | brixen | rue: grabbing some dinner, I'll update the runner docs tonight |
| 03:00:31 | mernen leaves the room. | |
| 03:04:09 | VVSiz leaves the room. | |
| 03:05:31 | mutle leaves the room. | |
| 03:05:51 | rubyconsumer enters the room. | |
| 03:06:34 | jeremydurham leaves the room. | |
| 03:08:37 | rubuildius_ppc | Brian Ford: aa585b7e6; 1569 files, 5477 examples, 18910 expectations, 0 failures, 28 errors; |
| 03:16:23 | bitbckt enters the room. | |
| 03:25:18 | djwhitt enters the room. | |
| 03:25:55 | te enters the room. | |
| 03:26:03 | te | 'lo |
| 03:26:13 | rue | Hello |
| 03:26:18 | te | I was just googling my own name, and I found myself in the Rubinius slides |
| 03:26:23 | te | I was shocked. |
| 03:26:24 | te | :) |
| 03:26:26 | rue | cremes: Looks like you were successful? |
| 03:26:41 | cremes | rue: successful at what? |
| 03:26:59 | rue | rubuildius_ppc: <--- |
| 03:27:21 | cremes | rue: ah, yes... plus i just figured out how to get the pastie script to work. success! |
| 03:27:30 | RyanTM leaves the room. | |
| 03:27:34 | RyanTM_ enters the room. | |
| 03:30:39 | djwhitt enters the room. | |
| 03:30:44 | graza_ enters the room. | |
| 03:31:12 | graza leaves the room. | |
| 03:33:12 | ezmobius leaves the room. | |
| 03:36:38 | rue | Defiler: I can seeee youuuuu |
| 03:49:16 | Defiler | Oh yeah? |
| 03:49:41 | rue | Yep. Red shirt |
| 03:50:21 | Defiler | Heh |
| 03:50:24 | dysinger enters the room. | |
| 03:50:40 | Defiler | Through the.. time portal ... |
| 03:53:38 | bitbckt leaves the room. | |
| 03:54:30 | mae enters the room. | |
| 04:01:15 | headius leaves the room. | |
| 04:02:55 | bitbckt enters the room. | |
| 04:03:19 | enebo_ leaves the room. | |
| 04:09:39 | VVSiz_ leaves the room. | |
| 04:09:39 | crafterm leaves the room. | |
| 04:09:39 | Ingmar leaves the room. | |
| 04:09:39 | rue leaves the room. | |
| 04:09:39 | rubyconsumer leaves the room. | |
| 04:09:39 | MenTaLguY leaves the room. | |
| 04:09:39 | nicksieger leaves the room. | |
| 04:09:39 | nemerle_afk leaves the room. | |
| 04:09:39 | geekounet leaves the room. | |
| 04:09:39 | context leaves the room. | |
| 04:09:39 | maharg leaves the room. | |
| 04:09:39 | rudebwoy leaves the room. | |
| 04:09:39 | fearoffish leaves the room. | |
| 04:09:39 | ko1_ leaves the room. | |
| 04:09:39 | kevinclark leaves the room. | |
| 04:09:54 | rubyconsumer enters the room. | |
| 04:09:54 | VVSiz_ enters the room. | |
| 04:09:54 | MenTaLguY enters the room. | |
| 04:09:54 | crafterm enters the room. | |
| 04:09:54 | nicksieger enters the room. | |
| 04:09:54 | nemerle_afk enters the room. | |
| 04:09:54 | geekounet enters the room. | |
| 04:09:54 | Ingmar enters the room. | |
| 04:09:54 | context enters the room. | |
| 04:09:54 | rue enters the room. | |
| 04:09:54 | kevinclark enters the room. | |
| 04:09:54 | ko1_ enters the room. | |
| 04:09:54 | rudebwoy enters the room. | |
| 04:09:54 | maharg enters the room. | |
| 04:09:54 | fearoffish enters the room. | |
| 04:10:49 | bitbckt leaves the room. | |
| 04:11:33 | rue | Defiler: Looks like the time portal has torn a hole in the space-IRC continuum! |
| 04:12:01 | Defiler | Some sacrifices may need to be made for the good of the continuum. |
| 04:13:40 | mae leaves the room. | |
| 04:17:39 | bitbckt enters the room. | |
| 04:18:27 | _ADS enters the room. | |
| 04:23:13 | nicksieger leaves the room. | |
| 04:24:41 | imajes leaves the room. | |
| 04:33:36 | benburkert leaves the room. | |
| 04:36:48 | _ADS enters the room. | |
| 04:36:51 | graza_ leaves the room. | |
| 04:37:07 | graza enters the room. | |
| 04:37:32 | headius enters the room. | |
| 04:40:17 | mae enters the room. | |
| 04:41:27 | mae leaves the room. | |
| 04:44:03 | agile enters the room. | |
| 04:47:13 | zenspider | heh. I keep finding bugs in jruby that I ported. :) |
| 04:47:38 | headius | feel free to let us know about them |
| 04:47:46 | headius | they may be gone in the new lexer |
| 04:48:26 | zenspider | I just verified the latest is in the new one, unless old code is sitting around |
| 04:48:39 | zenspider | very end of StringTerm.java, the default section of the switch |
| 04:49:05 | zenspider | if (c != '\\' || c != end) is wrong |
| 04:49:34 | zenspider | I can't exactly tell what the original author was trying to say, but I doubt it is that |
| 04:50:59 | aotearoa leaves the room. | |
| 04:51:10 | MenTaLguY leaves the room. | |
| 04:51:55 | zenspider | haha... ok. that's a bug in cruby too |
| 04:52:12 | zenspider | I wonder if that is just japanese logic or something... R2L and all |
| 04:52:30 | zenspider | well... that's a really old cruby I'm looking at... sec |
| 04:53:49 | zenspider | the prev bug I found in jruby I didn't verify against the newer code... but the gist was this: { :identifier==>42 } |
| 04:54:23 | headius | ==> |
| 04:54:24 | headius | ? |
| 04:54:44 | zenspider | should parse as: { :identifier= => 42 } |
| 04:55:08 | headius | ahh that's an interesting one |
| 04:55:11 | headius | still seems to be on trunk |
| 04:55:23 | headius | I don't suppose I could get you to file bugs for these? :) |
| 04:55:37 | headius | if you figure out what that other one is that would be nice too |
| 04:55:41 | headius | if it's a bug |
| 04:56:43 | zenspider | all I know thus far is the literal translation is the only form I can get to work... I think it is a secret spell that causes my brain to not be able to translate it to something more understandable |
| 04:58:12 | zenspider | cause it SHOULD be if (c != "\\" || c != term) => if ! (c == "\\" && c == term) => unless (c == "\\" && c == term) => unless (c == "\\" && "\\" == term) which totally boggles my brain |
| 04:58:43 | zenspider | I was a tad low on blood sugar tho, so I might be totally borking the logical morphs |
| 05:00:33 | ttmrichter_ leaves the room. | |
| 05:00:39 | headius leaves the room. | |
| 05:01:20 | ttmrichter enters the room. | |
| 05:02:06 | zenspider | drbrain: am I still f'd up? or does that look right? |
| 05:02:18 | drbrain | it still looks right to me |
| 05:04:06 | dancroak enters the room. | |
| 05:05:58 | zenspider | drbrain: buttttt... is that actually what is / should be checking for? |
| 05:06:22 | zenspider | that's what stumps me... does it matter if the term is \\ ? (and can it be?) |
| 05:06:33 | drbrain | well, in r 2547, it changed from c != '/' || ... |
| 05:06:33 | zenspider | ok. wow. it can be... that's f'd up |
| 05:06:39 | drbrain | err, 2548 |
| 05:06:59 | zenspider | %r\blah\ => /blah/ |
| 05:07:15 | drbrain | "parse.y (tokadd_escape): wrong backslash escapement." |
| 05:07:42 | zenspider | so... maybe it should read: unless c == term && term == "\\" ? |
| 05:08:13 | drbrain | maybe |
| 05:08:42 | wmoxam leaves the room. | |
| 05:09:19 | zenspider | I think that's it... |
| 05:09:26 | zenspider | which is JUST FUCKED imo |
| 05:10:02 | drbrain | well, that line previously read if (c == '/' && c != term) |
| 05:10:15 | drbrain | but was changed to the modern version due to "escaped backslashes too much" |
| 05:11:13 | zenspider | heh |
| 05:11:28 | zenspider | I like the old version better |
| 05:11:49 | zenspider | but I like comparing term to the string literal even more |
| 05:12:07 | zenspider | I'm going with unless c == term && term == "\\" then |
| 05:12:16 | zenspider | but having a hard time writing a test to trigger the case |
| 05:13:19 | drbrain | http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y?view=diff&r1=1702&r2=1703 |
| 05:13:28 | drbrain | that's the original change to parse.y that added the feature |
| 05:13:39 | drbrain | * parse.y (parse_regx): handle backslash escaping of delimiter here. |
| 05:13:58 | benburkert enters the room. | |
| 05:15:21 | zenspider | is that all it's for? |
| 05:15:32 | zenspider | not specifically for %r\....\ ? |
| 05:15:33 | drbrain | seems to be |
| 05:15:34 | zenspider | fuck |
| 05:15:53 | zenspider | so %r%blah\%blah% |
| 05:15:53 | drbrain | there's all of 3 changes for that line |
| 05:26:18 | twshelton leaves the room. | |
| 05:26:23 | graza leaves the room. | |
| 05:30:06 | RyanTM_ leaves the room. | |
| 05:31:32 | bitbckt leaves the room. | |
| 05:34:23 | d2dchat leaves the room. | |
| 05:34:41 | agardiner | anyone else seeing problems running ci on library/socket/tcpsocket/new_spec.rb? seems to hang for me on that spec... |
| 05:43:29 | benburkert | i'm getting 3 errors |
| 05:44:02 | benburkert | http://pastie.caboo.se/154123 |
| 05:44:57 | drbrain | benburkert: you have an extra alias for your machine on loopback |
| 05:45:37 | zenspider | drbrain: I think what they really want is this: if c == "/" || c != term then |
| 05:45:42 | zenspider | |
| 05:45:48 | zenspider | which is opposite of the previous version |
| 05:45:53 | zenspider | slightly |
| 05:46:02 | drbrain | I wonder why they changed it to the present version |
| 05:46:37 | nicksieger enters the room. | |
| 05:46:43 | zenspider | which is, backslash if term is slash: /blah\/blah/ but don't backslash if the term is an alternate and that char is escaped: %r%blah\%blah% => /blah%blah/ |
| 05:46:52 | zenspider | that seems to make the most sense |
| 05:47:48 | drbrain | yeah |
| 05:47:50 | zenspider | what they want, internally, is a source properly backslashed for a regular forward slash form /blah/ |
| 05:47:53 | zenspider | currently: |
| 05:48:00 | zenspider | >> %r%blah\%blah% |
| 05:48:04 | boyscout | 1 commit by Adam Gardiner |
| 05:48:05 | boyscout | * Re-enable debug on context change; ec990b6 |
| 05:48:05 | zenspider | => /blah\%blah/ |
| 05:48:10 | zenspider | >> %r%blah/blah% |
| 05:48:16 | zenspider | => /blah\/blah/ |
| 05:48:23 | zenspider | I think that first result is a bug in ruby |
| 05:48:41 | drbrain | yeah |
| 05:48:59 | zenspider | drbrain: do you agree that the % one is a bug? |
| 05:49:06 | drbrain | I do |
| 05:49:13 | zenspider | If so, I'm gonna experiment with my change in the real parse.y |
| 05:49:41 | drbrain | well, for some reason they changed it to the present version, but I don't know why |
| 05:49:49 | drbrain | ... they did it a long time ago, though (r2500ish) |
| 05:51:22 | zenspider | also, I'm adding an irc rule to mri's makefile, damnit. |
| 05:52:21 | zenspider | er. irb |
| 05:52:43 | rue | agardiner: Did you by any chance come about new ideas what the field calculation problem may have been? I will try to track it down tomorrow maybe |
| 05:52:46 | brixen | agardiner: what platform? I'm getting a hang on ubuntu gutsy it looks like |
| 05:53:01 | agardiner | brixen: yeah, same platform |
| 05:53:24 | brixen | agardiner: ok, the "refuses the connection when there is no server to connect to" ? |
| 05:54:22 | tongueroo enters the room. | |
| 05:54:35 | agardiner | brixen: dunno... my VMware image has ground to a virtual standstill since i ran ci a few times! |
| 05:54:45 | agardiner | need to reboot |
| 05:55:05 | brixen | k |
| 05:55:20 | agardiner | rue: no, i haven't looked into it |
| 05:55:25 | headius enters the room. | |
| 05:58:37 | rubuildius_ppc | Adam Gardiner: ec990b6eb; 1569 files, 5477 examples, 18910 expectations, 0 failures, 28 errors; http://pastie.caboo.se/154128 |
| 05:58:49 | agardiner | rue: it's a strange one, no doubt about it. i can't think of what scenario could lead to the observed behavior... if there's a problem with unused fields, why doesn't it crash? |
| 05:59:06 | rue | Yeah |
| 06:00:39 | d2dchat enters the room. | |
| 06:00:51 | rubyconsumer leaves the room. | |
| 06:02:03 | technomancy leaves the room. | |
| 06:11:23 | enebo enters the room. | |
| 06:14:05 | hornbeck enters the room. | |
| 06:16:10 | GMFlash leaves the room. | |
| 06:16:19 | GMFlash enters the room. | |
| 06:23:28 | crafterm leaves the room. | |
| 06:26:08 | agardiner | later o/ |
| 06:26:28 | agardiner leaves the room. | |
| 06:28:19 | headius leaves the room. | |
| 06:32:52 | rubuildius | Adam Gardiner: ec990b6eb; bin/ci failed! http://rafb.net/p/AzARkg45.html |
| 06:32:53 | rubuildius | Brian Ford: aa585b7e6; bin/ci failed! http://rafb.net/p/souDbr21.html |
| 06:33:10 | binary42 leaves the room. | |
| 06:36:11 | sudothinker leaves the room. | |
| 06:38:05 | maduyb__ enters the room. | |
| 06:38:56 | dysinger leaves the room. | |
| 06:41:38 | tbmcmullen leaves the room. | |
| 06:46:50 | rue | You broked it |
| 06:48:43 | imajes enters the room. | |
| 06:52:12 | lstoll leaves the room. | |
| 06:56:16 | drbrain | oh, Time::at spec is suck |
| 06:56:26 | drbrain | because localtime needs to die |
| 07:08:17 | boyscout | 2 commits by Brian Ford |
| 07:08:18 | boyscout | * Exclude TCPSocket.new for now, hangs on ubuntu gutsy.; cbcdb83 |
| 07:08:19 | boyscout | * Fixed platform_is guard for when no platform is given.; e956b94 |
| 07:09:16 | _mutle leaves the room. | |
| 07:10:20 | mutle enters the room. | |
| 07:12:35 | kofno leaves the room. | |
| 07:12:57 | evan | hi yall |
| 07:13:34 | rue | Hi, who are you again? |
| 07:14:30 | evan | heh |
| 07:14:40 | evan | rue: wanted to talk mod_rubinius with ya |
| 07:14:43 | evan | got a few minutes? |
| 07:15:08 | rue | Sure |
| 07:15:34 | maduyb__ leaves the room. | |
| 07:16:04 | evan | so |
| 07:16:17 | evan | are you thinking mainly about mod_wsgi or mod_scgi? |
| 07:16:23 | evan | in terms of model |
| 07:17:16 | rue | Well, it is sort of a twofold issue |
| 07:17:17 | ragnard enters the room. | |
| 07:18:12 | rue | mod_scgi is basically like mod_fcgid in that it balances to child processes which then launch whatever scripts are requested using the SCGI env |
| 07:18:22 | rubuildius_ppc | Brian Ford: cbcdb8346; 1569 files, 5485 examples, 18943 expectations, 0 failures, 30 errors; http://pastie.caboo.se/154137 |
| 07:18:24 | evan | seems like the daemon mode of mod_wsgi is what you've been thinking about |
| 07:18:54 | rue | Yeah, broadly the mod_wsgi model is pretty nice--the only drawback is the very tight coupling |
| 07:19:03 | rue | And the ten freaking thousand lines of C :P |
| 07:19:17 | evan | yikes. |
| 07:20:23 | evan | so mod_fcgi launched proceses to run requests |
| 07:20:24 | evan | yes? |
| 07:20:29 | evan | and it pooled requests |
| 07:20:48 | rubuildius | Brian Ford: cbcdb8346; 1569 files, 5484 examples, 18971 expectations, 0 failures, 7 errors; http://rafb.net/p/Cl0fJU68.html |
| 07:20:48 | evan | so, the idea would be to move that kind of logic out of apache all together |
| 07:21:14 | rue | Yeah, the module only makes sure at least one process is available to take requests as they come in |
| 07:21:17 | evan | for each site, a apache module would hand a request to the same backend daemon |
| 07:21:26 | evan | for us |
| 07:21:26 | tarcieri | hey evan, how hard would it be for a Task to have a separate heap, and anything sent over the channel is copied rather than referenced... |
| 07:21:53 | evan | very |
| 07:21:56 | rue | evan: That is possible, sure, but not mandatory. We could just as well load-balance it |
| 07:21:56 | evan | not possible. |
| 07:22:01 | tarcieri | heh, ok |
| 07:22:39 | rue | evan: Or we could have each site with a dedicated thread (that lives in one of the daemon process) |
| 07:22:42 | evan | rue: well, what is your thinking for mod_rubinius? what would happen? |
| 07:22:49 | evan | walk me through a request coming into apache |
| 07:24:12 | rue | The module grabs all necessary request data and the output fd, serialises it somehow and sends it over to one of the daemons |
| 07:24:30 | evan | the same daemon each time? |
| 07:24:52 | rue | I would make that configurable.. by default probably no |
| 07:25:14 | evan | why not? |
| 07:25:18 | evan | i mean |
| 07:25:41 | evan | the model i have in my head for this is say there are 7 apps running |
| 07:25:53 | evan | that would mean there are 7 rubinius daemons |
| 07:26:08 | rue | Ah, narrow it down--a request for the same site? Sure, we could send it to the same daemon based on the route |
| 07:26:18 | evan | apache would just hand off request data to the same daemon for the app the request is for |
| 07:26:37 | evan | so, apache does simple app routing |
| 07:27:24 | rue | Right. The module would ideally do as little translation as possible and then (configurable) routing/load balancing and so on |
| 07:27:39 | rue | The module is basically a balancer proxy |
| 07:27:48 | evan | what is it balancing? |
| 07:28:00 | evan | requests to a pool of daemons for one app? |
| 07:28:06 | evan | ie, one app has a pool of daemons |
| 07:28:10 | evan | is that it? |
| 07:28:27 | rue | Possibly, sure, one site/app could have multiple daemons |
| 07:28:27 | evan | i think we need to have a phone call about this |
| 07:28:49 | evan | ok, don't say sure for everything :P |
| 07:28:54 | tarcieri | evan: so... nested libev loops |
| 07:28:59 | radarek enters the room. | |
| 07:29:00 | evan | i'm asking what you think would be the default configuration for 1.0 |
| 07:29:19 | tarcieri | evan: sounds like something you could use for mod_rubinius |
| 07:29:25 | rue | No, you were asking about a request coming through ;) |
| 07:30:23 | rue | But broadly, yes, the module would dispatch a serialised request based on the site (or other configuration parameter) to any of N daemons responsible for that site |
| 07:31:14 | tarcieri | In the end, don't you just want a lightweight Reactor-to-Rack binding? |
| 07:31:17 | tarcieri | ala Thin |
| 07:32:03 | rue | That would probably be the default. Other simple one-line configurations would be to pool daemons per app instead of site/location or to simply use the entire pool for any incoming requests |
| 07:32:20 | rue | tarcieri: Yes and no |
| 07:32:27 | tarcieri | are you planning on running a VM per core? |
| 07:32:49 | rue | I dunno what the normal load level recommendation is these days |
| 07:33:06 | tarcieri | well, should I say... are you planning on using MVM? |
| 07:33:35 | rue | Yes |
| 07:33:39 | tarcieri | sweet |
| 07:33:56 | evan | actually |
| 07:33:57 | evan | no |
| 07:34:02 | evan | well |
| 07:34:06 | tarcieri | no? |
| 07:34:16 | evan | none of the scenarios we've detailed so far have anything to do with MVM |
| 07:34:28 | evan | it's all process based |
| 07:34:33 | evan | in terms of current discussion. |
| 07:34:33 | rue | I guess maybe VMs per core |
| 07:34:47 | tarcieri | oh, so the VM runs as a separate process? |
| 07:34:52 | tarcieri | and talks over a unix socket or something? |
| 07:34:54 | rue | Righty, the threads only come to play *in* the daemons |
| 07:37:09 | tarcieri | well that works, and simplifies things greatly |
| 07:37:12 | evan | thats the direction the current discussion is taking |
| 07:37:25 | rue | So, to pick up on that--say the default model is to have a daemon per site |
| 07:38:04 | rue | The request gets sent over to the daemon, which in turn is running N threads for each application for the site |
| 07:38:31 | evan | N ruby Thread's? |
| 07:38:37 | rue | Native |
| 07:38:40 | evan | ok |
| 07:38:47 | evan | lets clean up the terminology |
| 07:38:52 | evan | nthread == native thread |
| 07:38:53 | rue | To clarify, N VMs running |
| 07:38:55 | evan | rthread == ruby thread |
| 07:39:00 | evan | thread is too ambigious. |
| 07:39:19 | rue | Yeah.. although Ruby threads do not really come into the picture at all at this level |
| 07:39:24 | evan | rue: ok, if it's N nthread's then you are thinking we use MVM |
| 07:39:28 | evan | rue: if so, why? |
| 07:39:32 | evan | whats the use? |
| 07:39:45 | evan | why not just start up another process and have apache give it data directly? |
| 07:40:01 | rue | Lighter-weight |
| 07:40:11 | evan | but they're not. |
| 07:40:13 | rue | Plus we get I(VM)C |
| 07:40:27 | evan | MVM is not lighter weight than multiple processes |
| 07:40:34 | evan | i'm not sure where that thinking began |
| 07:41:00 | evan | whats I(VM)C? |
| 07:41:15 | benburkert leaves the room. | |
| 07:41:21 | rue | Inter-VM-communication |
| 07:41:56 | rue | I would venture to say that broadly OS threads are still a bit lighter than processes |
| 07:41:57 | evan | but whats the use case for that feature? |
| 07:42:24 | rue | Caching, request parallelisation come to mind |
| 07:42:36 | rue | We could split requests over several VMs |
| 07:42:38 | tarcieri | Where the MVM model is more "lightweight" is when there's a high degree of intercommunication between VMs |
| 07:43:15 | tarcieri | Then messages can be buffered, and delivered over shared memory in bulk, with zero copy if you so desire |
| 07:43:33 | dysinger enters the room. | |
| 07:44:07 | evan | but in terms of this framework |
| 07:44:16 | tarcieri | Yeah |
| 07:44:17 | evan | i'm not sure how thats possible |
| 07:44:19 | tarcieri | Totally irrelevant |
| 07:44:22 | tarcieri | Heh |
| 07:44:46 | rue | What is, shm? |
| 07:45:05 | tarcieri | High performance intercommunication between VMs |
| 07:45:08 | evan | the ability for a VM to get a request and hand it to a sub-VM in the same processes is ok, but it requires serializing the request AGAIN |
| 07:46:00 | tarcieri | What if each VM created a unix socket, that talked to a multithreaded extension in the daemon? |
| 07:46:16 | evan | sure, but then you should just use processes |
| 07:46:20 | evan | not MVM |
| 07:46:51 | tarcieri | What would the disadvantage of MVM be in that case? |
| 07:47:02 | evan | there is no advantage |
| 07:47:12 | evan | thats a disadvantage |
| 07:47:14 | tarcieri | Is there a disadvantage? |
| 07:47:20 | evan | because it's more complicated than process based. |
| 07:48:07 | tarcieri | Where's the extra complexity? |
| 07:48:20 | rue | Why are we serialising the request again? |
| 07:48:21 | evan | it's just a more complicated feature |
| 07:48:33 | evan | rue: because VMs can only talk via a serialized mechanism. |
| 07:48:38 | evan | they can not share data |
| 07:49:56 | rue | tarcieri: Just to be clear, MVM and a native thread with a Rubinius running each are two different things |
| 07:49:57 | tarcieri | You don't have to serialize the request... you can just emit events to Ruby, and handle them there.... |
| 07:51:37 | evan | rue: how are you thinking about them being different? |
| 07:51:49 | evan | rue: are you still thinking about a native thread running inside apache's process? |
| 07:52:05 | rue | No |
| 07:52:09 | tbmcmullen enters the room. | |
| 07:52:51 | rue | But multiple independent Rubiniuses in different threads do not have any limitations except those placed by us |
| 07:53:25 | tbmcmullen | I think that'd be Rubinii, technically. ;) |
| 07:54:02 | evan | rue: sure, thats true, we can certainly add new features |
| 07:54:06 | evan | rue: but i'm telling ya right now |
| 07:54:26 | evan | any feature that requires multiple VMs to share objects (ie, references) is not going to be done for May. |
| 07:55:13 | rue | I am not necessarily expecting it to, but that is what the main difference is |
| 07:55:29 | tarcieri | the VMs would be shared-nothing, though... right? |
| 07:55:49 | evan | they are shared nothing now |
| 07:55:52 | evan | and they will be for 1.0 |
| 07:56:03 | tarcieri | that's awesome |
| 07:56:07 | imajes leaves the room. | |
| 07:56:14 | tarcieri | too bad you can't have shared-nothing tasks, heh |
| 07:56:22 | TheVoice | wasn't there something mentioned about them sharing a few things to help with memory usage and mod_rubinius etc? |
| 07:56:35 | benburkert enters the room. | |
| 07:56:41 | TheVoice | like you'd get with forking |
| 07:56:51 | enebo leaves the room. | |
| 07:57:39 | tarcieri | the penalties of spawning LWPs are lower than HWPs... |
| 07:58:18 | d2dchat leaves the room. | |
| 07:58:40 | tarcieri | although what evan's saying is that it's pointless... as compared with an application with a high degree of intercommunication |
| 07:59:56 | tarcieri | which doesn't really pertain to web frameworks at all, at least if you go with the Rails / Merb model where the DBMS is the way intercommunication takes place |
| 08:00:21 | rue | Currently |
| 08:00:47 | evan | we're going to what they currently do |
| 08:00:49 | evan | not what they might do |
| 08:00:51 | evan | if we do that |
| 08:00:58 | evan | we'll never finish with a mod_rubinius 1.0 |
| 08:02:24 | ragnard leaves the room. | |
| 08:02:51 | tarcieri | see, here's the thing evan... |
| 08:03:02 | tarcieri | if there aren't any disadvantages |
| 08:03:23 | tarcieri | there's a wide-open future for frameworks witch could leverage that shared-memory message bus |
| 08:03:28 | evan | sure |
| 08:03:37 | evan | i'm not really arguing one side or the other on this |
| 08:03:49 | evan | or at least, i'm not trying to |
| 08:04:05 | tarcieri | a friend of mine wants to write such a framework.. using Presentation-Abstraction-Control on top of Actors |
| 08:05:04 | TheVoice | would there be any usefulness is cloning a VM into a sandbox so you could do read only operations on the cloned VM's objects? |
| 08:05:28 | evan | whats the usecase? |
| 08:05:33 | srbaker enters the room. | |
| 08:06:18 | tarcieri | if you could clone a VM, you could leverage copy-on-write semantics |
| 08:06:25 | evan | thats not a use case. |
| 08:06:25 | tarcieri | plus it'd simplify loading of code |
| 08:06:28 | TheVoice | no idea, it just popped into my head. Worry free scaling like you get with master-slave is what comes to mind. |
| 08:07:13 | benburkert leaves the room. | |
| 08:07:25 | tarcieri | It'd be really handy to load everything -> go MVM -> spawn whatever VM supervisory/spawner thingy you want to kick off your app in the new VM |
| 08:08:11 | _ADS | is anyone else having mspec ci just die somewhere in lib/generator? |
| 08:08:45 | _ADS | it's getting a SIGKILL from somewhere |
| 08:08:53 | headius enters the room. | |
| 08:10:34 | evan | tarcieri: handy why? |
| 08:12:01 | tarcieri | evan: well, in an Actor world, so you can depend on certain init routines for Actors being there... |
| 08:12:19 | tarcieri | evan: Erlang works kinda like AciveSupport's const_missing |
| 08:12:50 | jessop enters the room. | |
| 08:13:02 | benburkert enters the room. | |
| 08:13:07 | evan | seems like a nasty hack. |
| 08:13:12 | evan | using MVM for that. |
| 08:13:24 | tarcieri | So don't... |
| 08:13:51 | tarcieri | Load everything you need beforehand, clone the VM, then you don't need any nasty const_missing hacks to spawn stuff remotely |
| 08:13:57 | rue | _ADS: Somewhere in sockets for me I think |
| 08:14:03 | tarcieri | Or you can just require it explicitly |
| 08:14:49 | tarcieri | All clone really has is COW |
| 08:15:20 | tarcieri | COW + nicer startup for MVM |
| 08:15:48 | evan | please implement that |
| 08:15:55 | tarcieri | heh |
| 08:15:58 | evan | because i currently don't have the time to |
| 08:15:59 | tarcieri | ok, point taken |
| 08:16:24 | tarcieri | just a suggestion :) |
| 08:16:48 | headius leaves the room. | |
| 08:17:09 | tarcieri | nested event loops though... that's something I'd be willing to implement |
| 08:17:14 | thehcdreamer enters the room. | |
| 08:17:18 | tarcieri | but I guess you don't buy into those |
| 08:17:37 | evan | whats the use case for a nested loop? |
| 08:17:42 | evan | i don't see it. |
| 08:17:48 | tongueroo leaves the room. | |
| 08:17:54 | tarcieri | a set of descriptors that you poll when you aren't dispatching events |
| 08:18:13 | tarcieri | synchronously, without the use of threads |
| 08:18:35 | evan | thats a how, not really a why |
| 08:18:57 | evan | whats the why? |
| 08:18:58 | tongueroo enters the room. | |
| 08:18:59 | tarcieri | is implementing Reactor a why? |
| 08:19:13 | evan | no clue how Reactor works |
| 08:19:20 | evan | nor do I know it's API |
| 08:19:30 | evan | assume I know nothing about event programming. |
| 08:19:33 | tarcieri | it's just a simple loop |
| 08:19:36 | srbaker leaves the room. | |
| 08:19:39 | tarcieri | wait for events |
| 08:19:44 | tarcieri | dispatch events |
| 08:19:46 | tarcieri | rinse, repeat |
| 08:20:13 | tarcieri | what a nested loop lets you do is segregate the waiting from the dispatching |
| 08:20:43 | tarcieri | that happens over and over in a loop, so it's nice if it's efficient |
| 08:21:06 | evan | so, a use case might be: |
| 08:21:23 | evan | you have to kinds of things you do |
| 08:21:31 | evan | so you group the fds related to each thing in a loop |
| 08:21:44 | evan | ie, 2 loops for 2 kinds of things |
| 08:21:57 | tongueroo leaves the room. | |
| 08:22:16 | evan | wtf. |
| 08:22:24 | evan | i'm getting Fixnum#size expecting 8 |
| 08:22:35 | evan | ci is busted? |
| 08:22:53 | brixen | evan: on leopard? |
| 08:22:56 | evan | yep |
| 08:23:07 | tarcieri | evan: heh, I take it you have more important things to deal with now |
| 08:23:07 | evan | i'm doing a 'rake clean build' now |
| 08:23:14 | tarcieri | evan: I'll tak to you about it later |
| 08:23:18 | evan | k |
| 08:24:08 | brixen | evan: it's cus the :size got changed to :wordsize, I'll update it |
| 08:24:40 | drbrain | evan: btw, buffered IO is all kinds of broken |
| 08:25:04 | drbrain | for example, io.read 1; io.pos; io.read 1 |
| 08:25:06 | evan | are there specs for this brokeness? |
| 08:25:31 | drbrain | I've fixed some of the ones I've found, but I'm sure there are more |
| 08:25:34 | langenberg enters the room. | |
| 08:25:39 | drbrain | no, since it involves interactions between methods |
| 08:25:46 | drbrain | gets/read was an important one I fixed |
| 08:25:51 | evan | omg. |
| 08:25:53 | evan | who wrote |
| 08:25:58 | evan | " io_close or raise SystemCallError, "Invalid file descriptor" |
| 08:25:58 | evan | " |
| 08:26:18 | drbrain | no idea |
| 08:26:55 | evan | slaps rue's hand |
| 08:27:27 | evan | drbrain: so |
| 08:27:31 | evan | is this |
| 08:27:36 | evan | io.read 1; io.pos; io.read 1 |
| 08:27:40 | evan | problem the only one you know about? |
| 08:27:43 | _ADS leaves the room. | |
| 08:27:50 | drbrain | yeah |
| 08:28:09 | drbrain | anywhere Buffer#reset! is called is suspect, too |
| 08:28:15 | evan | why? |
| 08:28:18 | evan | who do you suspect that? |
| 08:28:20 | evan | er. why |
| 08:28:49 | drbrain | it seems to throw away data and move the read pointer |
| 08:29:08 | evan | thats the whole point |
| 08:29:13 | evan | because the buffer is invalid |
| 08:29:18 | evan | so it's refilled from the new read point. |
| 08:29:25 | boyscout | 1 commit by Brian Ford |
| 08:29:26 | boyscout | * Convert platform guard :size option to :wordsize.; 33b1894 |
| 08:29:48 | drbrain | IO#pos does a seek 0, so the read pointer shouldn't move, but it seems to |
| 08:30:06 | _ADS enters the room. | |
| 08:30:20 | evan | well |
| 08:30:25 | evan | thats an edge case bug |
| 08:30:32 | evan | pos should be using tell |
| 08:30:33 | evan | not seek |
| 08:30:40 | evan | that btw |
| 08:30:42 | evan | works here fine |
| 08:30:44 | evan | the |
| 08:30:51 | evan | io.read 1; io.pos; io.read 1 |
| 08:30:57 | evan | it works fine here |
| 08:31:08 | evan | what should I have gotten? |
| 08:31:37 | drbrain | sec, let me see if I still get it, I last tried Friday |
| 08:31:47 | brixen | _ADS: can you make sure that's a real hang you are seeing. the specs for generator and ipaddr run *really* slow on linux for me |
| 08:31:57 | drbrain | I did write specs for the bugs I found with read/gets |
| 08:32:19 | _ADS | brixen, it's not a hang, it's a sigkill |
| 08:32:30 | brixen | _ADS: ah ok |
| 08:32:30 | scoopr leaves the room. | |
| 08:33:09 | brixen | _ADS: do you know which spec? |
| 08:33:32 | evan | i'm getting some bizarre String#% failure |
| 08:33:40 | rue | evan: N-uh, not my fault! :P Although I admittedly did not catch it when I was converting that |
| 08:33:42 | drbrain | evan: seems to work now |
| 08:33:45 | drbrain | but... |
| 08:33:53 | _ADS | the strange thing is if i do mspec ci --verbose, it dies in lib/generator/, but if do mspec run ...lib/generator/*.rb it finishes fine |
| 08:33:56 | brixen | evan: did you update? |
| 08:34:03 | drbrain | File.open 'x' do |io| p io.read(1), io.pos, io.read(1) end |
| 08:34:04 | brixen | evan: I just fixed that on leopard, for me at least |
| 08:34:11 | drbrain | something is wrong with order of evaluation |
| 08:34:45 | brixen | _ADS: mspec ci -fs, what does that do? |
| 08:34:48 | drbrain | x is `echo x > x` |
| 08:35:18 | evan | drbrain: thats because rubinius is still right to left |
| 08:35:20 | evan | not left to right. |
| 08:35:21 | brixen | _ADS: oh, what system btw? |
| 08:35:24 | drbrain | evan: I see the newline first, instead of last |
| 08:35:52 | drbrain | ok |
| 08:36:08 | evan | do you have code that depends upon that behavior? |
| 08:36:19 | evan | i hate people that write code that depends on arg evalution order. |
| 08:36:20 | _ADS | brixen: ubuntu on coLinux |
| 08:36:34 | drbrain | no real code, but it was surprising to see p print things in the wrong order |
| 08:36:42 | evan | it's not p |
| 08:36:44 | evan | it's everything. |
| 08:36:55 | drbrain | yeah, I know |
| 08:36:57 | evan | i guess i have to fix it. |
| 08:37:06 | drbrain | eventually |
| 08:37:27 | drbrain | I was just pointing out that it didn't match my expectations |
| 08:37:31 | evan | huh |
| 08:37:37 | evan | the specs take 8 seconds longer now |
| 08:37:39 | evan | that they used to |
| 08:37:47 | evan | brixen: is this the new mspec code? |
| 08:37:49 | drbrain | I was only using it for my test because it's easier to type , |
| 08:37:56 | brixen | evan: it's running library specs now too |
| 08:38:05 | brixen | evan: the new mspec, yes |
| 08:38:13 | drbrain | evan: I did add about 1s to the IO#read specs |
| 08:38:21 | evan | why? |
| 08:38:25 | evan | did you add a sleep? |
| 08:38:31 | drbrain | no |
| 08:38:31 | brixen | it's running ~500 more specs |
| 08:38:35 | rubuildius_ppc | Brian Ford: 33b189478; 1569 files, 5484 examples, 18946 expectations, 0 failures, 28 errors; http://pastie.caboo.se/154157 |
| 08:38:38 | drbrain | #read couldn't read > 8k |
| 08:38:58 | evan | brixen: how do I run ci for just spec/ruby/1.8/core |
| 08:38:58 | evan | ? |
| 08:39:07 | drbrain | sec |
| 08:39:09 | brixen | bin/mspec ci spec/ruby/1.8/core |
| 08:39:43 | headius enters the room. | |
| 08:39:54 | drbrain | http://git.rubini.us/?p=code;a=commitdiff;h=08982321472008f7645212289d2624d19053ed7e |
| 08:39:58 | rubuildius | Brian Ford: 33b189478; 1569 files, 5483 examples, 18974 expectations, 0 failures, 5 errors; http://rafb.net/p/0m9BNA92.html |
| 08:41:26 | evan | drbrain: whats the reason for the 'buffer.replace output' code? |
| 08:41:28 | evan | it seems gross. |
| 08:41:37 | wifelette leaves the room. | |
| 08:41:58 | drbrain | evan: the C code uses the same object |
| 08:42:08 | evan | for what? |
| 08:42:14 | drbrain | ... in MRI |
| 08:42:36 | drbrain | since you have a char* sitting around, you can have read(2) write directly into it |
| 08:43:10 | drbrain | eww, what's up with this AF_INET6 check in the getaddrinfo spec |
| 08:43:11 | _ADS | brixen, mspec ci -fs got to "Generator#next - returns the element at current position", and seems to be frozen now |
| 08:43:34 | evan | drbrain: why not just append directly into like before? |
| 08:43:51 | drbrain | it's wrong, as you may not have an IPv6 address set up anywhere, even if you have IPv6 support |
| 08:43:57 | evan | drbrain: building up output then doing replace defeats the whole idea of passing in the buffer |
| 08:43:59 | wifelette enters the room. | |
| 08:44:18 | drbrain | evan: we can't replicate the C behavior anyhow |
| 08:44:32 | evan | writing directly to the object? |
| 08:44:46 | drbrain | in MRI you'd say: buf = ' ' * 1024; io.read 1024, buf; ... |
| 08:44:50 | wifelette leaves the room. | |
| 08:44:54 | drbrain | so you can reuse memory and GC less |
| 08:45:18 | drbrain | (where you'd io.read in a loop) |
| 08:45:29 | evan | we can actually duplicate that |
| 08:45:33 | drbrain | sorry, I mean MRI when I say C again |
| 08:45:41 | drbrain | yes, we can, but don't currently |
| 08:45:53 | evan | so you made it twice as bad rather than one time as bad? |
| 08:46:08 | drbrain | so, I made better specs, then wrote the least-ugly thing I could think of to make it pass |
| 08:46:17 | drbrain | I made it more correct and possibly slower |
| 08:46:27 | evan | the behavior is in specs now, yes? |
| 08:46:40 | drbrain | yes |
| 08:47:02 | _ADS | when I hit C-z it prints one more line and then 'Killed' |
| 08:50:05 | drbrain | evan: also, I am curious about how to implement #close_read and #close_write |
| 08:50:10 | crafterm enters the room. | |
| 08:50:23 | crafterm leaves the room. | |
| 08:50:34 | ragnard enters the room. | |
| 08:50:43 | evan | drbrain: they're only on pipes, right? |
| 08:50:52 | drbrain | no |
| 08:51:01 | evan | I don't think they work on normal IO objects |
| 08:51:18 | drbrain | I think they work on socket |
| 08:51:21 | drbrain | s |
| 08:51:31 | evan | they probably do the same as just close |
| 08:51:38 | evan | in that case |
| 08:51:57 | evan | they only have a unique behavior when the IO object is for a pipe |
| 08:52:06 | evan | ie, where the IO object has actually 2 seperate fds inside it |
| 08:52:11 | evan | in all normal cases, there is only one fd |
| 08:52:18 | evan | and there is no way to close half on one fd |
| 08:52:32 | drbrain | yeah |
| 08:52:42 | graza enters the room. | |
| 08:52:51 | evan | actually.. wait.. |
| 08:52:52 | drbrain | well, a Socket doesn't |
| 08:52:58 | evan | doesn't what? |
| 08:53:08 | drbrain | doesn't have two fds |
| 08:53:13 | headius leaves the room. | |
| 08:53:18 | evan | nothing does |
| 08:53:35 | evan | expect for IO.popen(..., "r+") etc. |
| 08:53:37 | drbrain | for File opened in r+, close_read raises IOError: closing non-duplex IO for reading |
| 08:53:57 | drbrain | TCPSocket.open 'localhost', 'http' do |io| io.close_read; end |
| 08:54:02 | evan | ok, i'm a little wrong |
| 08:54:15 | evan | Socket's have a unique ability to close half of an fd |
| 08:54:23 | evan | via shutdown(2) |
| 08:54:47 | evan | i'd have to check if there is a Socket#close_read that calls shutdown |
| 08:54:54 | drbrain | ok, then it's simpler than I thought |
| 08:55:11 | evan | for Socket, yeah, it's pretty easy |
| 08:55:39 | evan | is rubygems closing half a socket? |
| 08:55:57 | drbrain | no, I just wanted to spec some stuff correctly |
| 08:56:07 | drbrain | right now it checks closed?, but that's too strict |
| 08:56:08 | evan | ok |
| 08:56:35 | evan | we don't have the duplex IO that MRI does |
| 08:56:47 | evan | instead, popen returns a BidirectionalPipe object |
| 08:56:47 | drbrain | there's a BasicSocket#close_read |
| 08:57:00 | evan | so doing close_read/close_write on a pipe is easy |
| 08:57:07 | evan | just make them methods of BidirectionalPipe |
| 08:57:21 | drbrain | so IO#close_read should probably just raise the IOError |
| 08:57:25 | evan | yep |
| 09:02:03 | evan | ok, bed time. |
| 09:02:03 | evan | nite. |
| 09:02:07 | imajes enters the room. | |
| 09:02:17 | langenberg | morning |
| 09:13:35 | wycats enters the room. | |
| 09:13:39 | graza leaves the room. | |
| 09:13:58 | graza enters the room. | |
| 09:14:21 | _ADS leaves the room. | |
| 09:23:04 | wycats leaves the room. | |
| 09:23:47 | wycats enters the room. | |
| 09:29:20 | VVSiz | brixen: alive? |
| 09:29:34 | VVSiz | with the latest mspec updates, how are we supposed to run JRuby in CI mode? |
| 09:30:00 | VVSiz | ci is deprecated, and mspec doesn't accept -E option (to specify our, external, excludes) |
| 09:30:15 | imajes leaves the room. | |
| 09:30:29 | imajes enters the room. | |
| 09:31:12 | TheVoice leaves the room. | |
| 09:31:17 | rue | mspec ci |
| 09:32:12 | geekounet leaves the room. | |
| 09:33:00 | VVSiz | rue: yeah, but it doesn't accept -E option which we use extensively to specify JRuby excludes |
| 09:33:52 | VVSiz | oh, now there is TAGS_DIR env variable |
| 09:33:59 | rue | You can do the mappings manually |
| 09:34:16 | VVSiz | how? |
| 09:36:36 | geekounet enters the room. | |
| 09:38:10 | w1rele55 enters the room. | |
| 09:38:53 | langenberg | Anyone willing to look at the patches I've submitted? Ticket #327 |
| 09:39:03 | rue | VVSiz: Syntax is something like fails:blah blah |
| 09:39:03 | Arjen_ enters the room. | |
| 09:39:13 | rue | VVSiz: Check spec/tags |
| 09:40:05 | rue | langenberg: I can get it tomorrow but just bother anyone who happens around |
| 09:40:12 | VVSiz | rue: yep, will do. I sure hope that it will not be required to change all our exclude files to new format, or at least the amout of manual changes will be minimal :) |
| 09:40:12 | rue | dbussink will probably be up shortly |
| 09:40:26 | langenberg | alright :) |
| 09:40:51 | langenberg | Just want to be sure I didn't forgot anything. |
| 09:41:14 | drbrain | what was wrong with the _excludes.txt files? |
| 09:43:46 | VVSiz | drbrain: yeah, I remember there were some discussions about excludes being not good for some reason... |
| 09:44:11 | VVSiz | but we actually been using them for a while in JRuby |
| 09:44:33 | VVSiz | one of the reasons is the ability to add some metadata to excluded tests, like bug number, platform, etc |
| 09:45:03 | drbrain | seem sodd that it needed a rename |
| 09:45:27 | octopod enters the room. | |
| 09:45:27 | drbrain | anyhow, back to Lost |
| 09:45:32 | VVSiz | yeah, the old functionality is gone, if I'm not mistaken, not good :) |
| 09:54:38 | tbmcmullen leaves the room. | |
| 09:59:38 | ariekere enters the room. | |
| 10:00:34 | ariekere leaves the room. | |
| 10:09:36 | scoopr enters the room. | |
| 10:10:17 | wycats leaves the room. | |
| 10:11:15 | jero5 enters the room. | |
| 10:11:39 | zenspider leaves the room. | |
| 10:18:22 | benburkert leaves the room. | |
| 10:20:59 | dysinger leaves the room. | |
| 10:25:17 | boyscout | 1 commit by Vladimir Sizikov |
| 10:25:18 | boyscout | * Added possibility to override CI_FILES and TAGS_DIR.; 5398a79 |
| 10:28:15 | jero5_ enters the room. | |
| 10:38:52 | rubuildius_ppc | Vladimir Sizikov: 5398a792e; 1569 files, 5484 examples, 18946 expectations, 0 failures, 28 errors; http://pastie.caboo.se/154187 |
| 10:40:07 | rubuildius | Vladimir Sizikov: 5398a792e; 1569 files, 5483 examples, 18974 expectations, 0 failures, 5 errors; http://rafb.net/p/9jTGR884.html |
| 10:40:17 | geekounet leaves the room. | |
| 10:44:37 | graza_ enters the room. | |
| 10:44:38 | graza leaves the room. | |
| 10:45:05 | jero5 leaves the room. | |
| 10:57:14 | graza enters the room. | |
| 10:57:15 | graza_ leaves the room. | |
| 11:03:01 | comboy leaves the room. | |
| 11:04:37 | ruivaldo enters the room. | |
| 11:18:56 | graza_ enters the room. | |
| 11:18:57 | graza leaves the room. | |
| 11:46:09 | graza enters the room. | |
| 11:46:10 | graza_ leaves the room. | |
| 11:49:18 | claudio_ enters the room. | |
| 11:51:04 | ruivaldo leaves the room. | |
| 11:54:18 | langenberg leaves the room. | |
| 11:54:50 | langenberg enters the room. | |
| 11:54:54 | langenberg leaves the room. | |
| 11:54:56 | claudio | hi |
| 11:55:23 | graza_ enters the room. | |
| 11:55:53 | langenberg enters the room. | |
| 11:56:09 | cremes | claudio_: i don't think any of the core team is awake right now; i just got up to get ready for my day job |
| 11:57:42 | claudio | ah, I know :-) |
| 12:00:45 | cremes leaves the room. | |
| 12:01:09 | w1rele55 leaves the room. | |
| 12:01:26 | w1rele55 enters the room. | |
| 12:05:47 | xmlhacker_ enters the room. | |
| 12:13:37 | graza__ enters the room. | |
| 12:13:38 | graza_ leaves the room. | |
| 12:16:58 | ragnard leaves the room. | |
| 12:18:51 | graza leaves the room. | |
| 12:21:18 | xmlhacker leaves the room. | |
| 12:21:56 | ctennis leaves the room. | |
| 12:28:56 | graza enters the room. | |
| 12:28:58 | graza__ leaves the room. | |
| 12:45:10 | FFighter enters the room. | |
| 12:45:13 | FFighter | hello! |
| 12:50:46 | rue | Hello, good night |
| 12:55:32 | ragnard enters the room. | |
| 13:07:52 | jtoy enters the room. | |
| 13:07:53 | graza leaves the room. | |
| 13:08:09 | graza enters the room. | |
| 13:13:55 | kofno enters the room. | |
| 13:33:35 | geekounet leaves the room. | |
| 13:33:36 | graza leaves the room. | |
| 13:33:45 | graza enters the room. | |
| 13:37:00 | geekounet enters the room. | |
| 13:44:47 | srbaker enters the room. | |
| 13:49:03 | graza_ enters the room. | |
| 13:49:04 | graza leaves the room. | |
| 13:51:28 | bitbckt enters the room. | |
| 13:54:30 | RyanTM_ enters the room. | |
| 13:56:49 | srbaker leaves the room. | |
| 14:14:08 | AndrewO_ enters the room. | |
| 14:16:35 | graza enters the room. | |
| 14:16:36 | graza_ leaves the room. | |
| 14:18:01 | bitbckt leaves the room. | |
| 14:20:30 | srbaker enters the room. | |
| 14:26:18 | RyanTM_ leaves the room. | |
| 14:26:46 | ragnard_ enters the room. | |
| 14:28:07 | ragnard leaves the room. | |
| 14:32:13 | ragnard_ leaves the room. | |
| 14:33:32 | graza_ enters the room. | |
| 14:33:33 | graza leaves the room. | |
| 14:35:32 | srbaker leaves the room. | |
| 14:36:13 | wmoxam enters the room. | |
| 14:40:10 | ttmrichter leaves the room. | |
| 14:41:13 | ragnard enters the room. | |
| 14:42:07 | chris2 enters the room. | |
| 14:43:43 | shevy enters the room. | |
| 14:44:11 | RyanTM enters the room. | |
| 14:51:45 | skaar enters the room. | |
| 14:52:23 | rubymaverick_ enters the room. | |
| 14:54:35 | moofbong enters the room. | |
| 15:10:53 | d2dchat enters the room. | |
| 15:26:39 | gdagley enters the room. | |
| 15:34:55 | graza_ leaves the room. | |
| 15:35:26 | agile leaves the room. | |
| 15:36:55 | binary42 enters the room. | |
| 15:46:02 | Fullmoon_ enters the room. | |
| 15:46:15 | cored enters the room. | |
| 15:46:17 | Fullmoon_ leaves the room. | |
| 15:48:05 | RyanTM leaves the room. | |
| 15:48:41 | RyanTM enters the room. | |
| 15:49:19 | lopex enters the room. | |
| 16:06:48 | ttmrichter enters the room. | |
| 16:16:40 | jtoy leaves the room. | |
| 16:20:56 | gdagley leaves the room. | |
| 16:29:39 | pietia enters the room. | |
| 16:30:48 | headius enters the room. | |
| 16:32:24 | sudothinker enters the room. | |
| 16:33:08 | ragnard leaves the room. | |
| 16:34:32 | agile enters the room. | |
| 16:34:42 | langenberg leaves the room. | |
| 16:35:46 | _ADS enters the room. | |