Show enters and exits. Hide enters and exits.
| 00:00:22 | TheProkrammer | I gather rubinius does not officially support cygwin today? |
| 00:00:25 | imajes enters the room. | |
| 00:00:30 | luislavena enters the room. | |
| 00:00:59 | luislavena | back. |
| 00:01:28 | luislavena | guys, can anyone confirm if it's possible create a file under *nix with "*" as name? |
| 00:01:39 | drbrain | TheProkrammer: I think only luislavena has tried to get rubinius to run on windows |
| 00:01:40 | luislavena | (not the quotes, but the wildcard character). |
| 00:01:42 | djwhitt | sure |
| 00:01:43 | djwhitt | just did |
| 00:01:43 | drbrain | luislavena: it is |
| 00:01:47 | drbrain | touch \* |
| 00:01:53 | jlindley enters the room. | |
| 00:01:58 | TheProkrammer | drbrain: Well now there's another crazy in the crowd :) |
| 00:02:02 | luislavena | drbrain: ls -a will list it? |
| 00:02:04 | shame leaves the room. | |
| 00:02:06 | drbrain | it is very nerve-wracking to remove |
| 00:02:10 | drbrain | luislavena: yes |
| 00:02:18 | luislavena | TheProkrammer: welcome aboard! :-D |
| 00:02:20 | TheProkrammer | luislavena: Have you tackled the context stuff yet? |
| 00:02:55 | luislavena | TheProkrammer: long time since I tried build it, I should give it a whirl this weekend. |
| 00:03:20 | TheProkrammer | luislavena: Ah, alrighty, so there hasn't been a successful mingw build yet? |
| 00:03:26 | luislavena | drbrain: hmn, * ? are wildcards on windows... and | is the pipe tunneling operator :-P |
| 00:03:40 | luislavena | (looking at the core/dir specs and mocks). |
| 00:03:44 | drbrain | luislavena: you can create all those files |
| 00:03:44 | Defiler | Windows just doesn't support escaped filenames, basically |
| 00:03:57 | luislavena | TheProkrammer: not thta I'm aware of ;-) |
| 00:04:03 | Defiler | At least not at the shell |
| 00:04:22 | luislavena | Defiler: not at the shell and not from ruby :-D |
| 00:04:33 | drbrain | http://rafb.net/p/tgdM3t55.html |
| 00:05:52 | TheProkrammer | I can't imagine any sane person using those characters in file names... even if they're supported... they're wildcards in *nix too. |
| 00:05:54 | luislavena | hates it current internet connection |
| 00:06:20 | luislavena | drbrain: http://rafb.net/p/7XlpXk31.html |
| 00:06:48 | drbrain | luislavena: figures |
| 00:07:10 | luislavena | drbrain: http://rafb.net/p/YSHXfO76.html |
| 00:07:20 | luislavena | drbrain: even using MSYS emulation :-P |
| 00:07:51 | drbrain | I suspect FAT/NTFS doesn't allow it |
| 00:08:15 | rubuildius_amd64 | Ryan Davis: eda8f33a8; 2091 files, 6666 examples, 23382 expectations, 0 failures, 0 errors; http://rafb.net/p/bk7ubM21.html |
| 00:09:20 | obiejuan leaves the room. | |
| 00:09:27 | luislavena | we can consider these cases posix and not posix compliant... |
| 00:09:29 | brapse enters the room. | |
| 00:10:38 | rubuildius_ppc | Ryan Davis: eda8f33a8; 2091 files, 6668 examples, 23408 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/185820 |
| 00:11:54 | TheProkrammer | luislavena: don't forget ":" :) |
| 00:12:32 | luislavena | TheProkrammer: funny, it wasn't listed in the fixtures... it is allowed on posix? |
| 00:12:38 | luislavena | touch \: works? |
| 00:12:48 | TheProkrammer | luislavena: in linux yeah. |
| 00:12:53 | TheProkrammer | not in cygwin tho |
| 00:13:40 | luislavena | TheProkrammer: good catch, there is no spec for it... afaik... |
| 00:13:43 | bitbang leaves the room. | |
| 00:14:04 | Defiler | Is it really our job to spec out what are basically OS file semantics? |
| 00:15:00 | TheProkrammer | Defiler: Nah, but it is something to be aware of for build scripts and what not... though again I don't think I've ever seen any of those characters in filenames in the wild... ever. |
| 00:15:26 | luislavena | Defiler: is not, but if there are specs that is expecting them, these must be platform-aware... |
| 00:15:57 | drbrain | I think fnmatch expects some of them |
| 00:16:00 | evan | i wonder if it's hard to install a not-so legal copy of vista under parallels |
| 00:16:09 | luislavena | those are part of dir/shared/glob_spec.rb, used as matcher for the regexp. |
| 00:16:22 | TheProkrammer | More likely to see an issue with case sensitivity (or lack there of) |
| 00:16:32 | drbrain | evan: there's some win2003 server images (in qemu/vmware) and ec2 |
| 00:16:32 | luislavena | evan: not hard, not legal, but slow.... |
| 00:16:38 | drbrain | you get a N day trail license |
| 00:16:40 | brapse leaves the room. | |
| 00:16:53 | luislavena | evan: will be better with win2003. |
| 00:16:57 | evan | i don't need it |
| 00:17:01 | evan | just curious to play with vista |
| 00:17:03 | evan | still haven't |
| 00:17:07 | evan | not really going to spend time on it |
| 00:17:14 | luislavena | evan: trust me, you don't miss anything. |
| 00:17:26 | TheProkrammer | evan: There are virtual labs out there that give you a server over remote desktop to play with it. |
| 00:17:30 | evan | i have great trust in you when it comes to these matters. |
| 00:17:39 | luislavena | evan: unless you want to fight and bench your speed clicking the annoying UAC popup ;-) |
| 00:17:46 | evan | hehe |
| 00:17:46 | drbrain | luislavena: ruby 1.8 is slightly faster on FreeBSD in parallels than mac native, but may be due to compile flags |
| 00:18:17 | luislavena | drbrain: yep, I think apple dudes build it with pthread enabled :-P |
| 00:18:28 | drbrain | luislavena: and -Os |
| 00:18:38 | obiejuan enters the room. | |
| 00:18:57 | jlindley leaves the room. | |
| 00:20:04 | tarcieri | evan: so I did a pure Ruby version of the mongrel parser last night... Ragel spits out some weeeeird Ruby code... anyway is that worth checking in? I guess the C version that's there works through subtend still |
| 00:20:16 | evan | please! |
| 00:20:21 | tarcieri | ok, cool |
| 00:20:31 | tarcieri | first version I did found a bug too, heh |
| 00:20:31 | evan | did you wire it in as the mongrel parser? |
| 00:20:45 | tarcieri | yeah, it's Mongrel::HttpParser |
| 00:20:49 | evan | hot dog! |
| 00:20:50 | luislavena | back to Dir glob specs, what will be a better regexp match that those special filenames... I guess it's missing to truly test the regexp... |
| 00:20:52 | evan | you da man! |
| 00:20:56 | tarcieri | heh |
| 00:21:09 | obiejuan_ enters the room. | |
| 00:21:16 | drbrain | luislavena: start with File.fnmatch |
| 00:21:18 | luislavena | tarcieri: we (mongrels) will love to take a look at that! :-D |
| 00:21:20 | tarcieri | evan: I'm having to manually munge the Ragel output because Ragel is doing some weird stuff |
| 00:21:22 | drbrain | luislavena: then do Dir glob |
| 00:21:24 | wyhaines | It'll be interesting to see how it runs under rubinius. It was pretty slow when tested with MRI, IIRC. |
| 00:21:32 | evan | tarcieri: thats ok for now. |
| 00:21:35 | brapse enters the room. | |
| 00:21:59 | tarcieri | evan: Namely if you define a private attr_writer, you can't self.attr = foo |
| 00:22:19 | tarcieri | in Rubinius... fine on MRI |
| 00:22:29 | luislavena | drbrain: 1 file, 52 examples, 126 expectations, 0 failures, 0 errors |
| 00:22:41 | luislavena | drbrain: that means dir specs are doing wrong things... |
| 00:22:52 | tarcieri | wyhaines: yeah considering what Ragel generates that's not surprising at all |
| 00:23:15 | tarcieri | it's doing funcalls to get to *all* of its constants |
| 00:23:22 | tarcieri | it's pretty disgusting |
| 00:23:58 | wyhaines | Heh. Is the Ragel ruby support still labeled as experimental? |
| 00:24:22 | tarcieri | dunno... I think I have some old copy of Ragel 5 installed too since I was working on something which wasn't Ragel 6 compatible |
| 00:24:30 | tarcieri | I should probably upgrade |
| 00:24:37 | drbrain | luislavena: hrm, ok, maybe Dir glob specs are broader |
| 00:24:40 | Arjen_ leaves the room. | |
| 00:25:09 | tarcieri | yeah, I have Ragel 5.25, heh |
| 00:25:23 | Defiler | luislavena: ohhh does this mean RubyInline will be possible on Win32, with the new one-click installer? |
| 00:26:08 | luislavena | Defiler: right now it does, but requires you have VC6... the new will work out of the box with MinGW :-D |
| 00:26:22 | luislavena | love his job (make users happy) :-D |
| 00:26:23 | Defiler | Yeah, I meant work out of the box, sorry |
| 00:26:38 | Defiler | Since Win32 production boxes (ha ha) don't ever have compilers |
| 00:26:51 | Defiler | It means that relying on RubyInline kinda excludes your Win32 users |
| 00:26:57 | tarcieri | luis: I'll ping the Mongrel list about it |
| 00:26:57 | luislavena | Defiler: thanks to zenspider it now does, ParseTree pre-built binary was created using it ;-) |
| 00:27:09 | tarcieri | luis: I'm sure someone can point out something I'm doing wrong |
| 00:27:29 | luislavena | tarcieri: great, we would love peek at that, maybe we can correct some of the things are wrong and both get benefits from it :-D |
| 00:31:47 | luislavena | brixen: ping? |
| 00:32:44 | Defiler | brixen is at class right now |
| 00:32:57 | luislavena | Defiler: wow, sorry :-P |
| 00:33:33 | luislavena | what do you guys think about this? |
| 00:33:34 | luislavena | http://pastie.caboo.se/185830 |
| 00:34:22 | luislavena | the sub part is creating a tmp/mock folder at the checkout/repository level instead of being root based (/tmp/mock) |
| 00:36:04 | jlindley enters the room. | |
| 00:36:09 | Defiler | Aah, right |
| 00:36:27 | Defiler | For sure we want to be good filesystem citizens |
| 00:37:28 | luislavena | Defiler: dunno if that is good or bad, it is just polluting the checkout... I thought it was wrong, but don't waste anything to ask before break something else :-D |
| 00:37:30 | obiejuan leaves the room. | |
| 00:38:10 | Defiler | I think we should never ever create a file anywhere outside of a tempdir |
| 00:38:14 | Defiler | During a spec run |
| 00:38:33 | Defiler | and I mean like Dir.tmpdir |
| 00:38:41 | Fullmoon enters the room. | |
| 00:38:48 | enebo enters the room. | |
| 00:39:13 | luislavena | Defiler: me too, just wanted to be 145% sure :-) |
| 00:41:26 | tarcieri | oh yeah |
| 00:41:33 | tarcieri | anyone know about the Rubinius support Ragel claims to have? |
| 00:41:55 | Defiler | No, but that is an awesome claim to hear about |
| 00:42:03 | jlindley leaves the room. | |
| 00:42:12 | evan | ragel claims rubinius support? |
| 00:42:13 | evan | sweeeeeeet |
| 00:42:28 | evan | i guess we better start a rubinius certification program! |
| 00:42:39 | tarcieri | heh |
| 00:42:54 | drbrain | evan: I'm working on it |
| 00:42:54 | tarcieri | rlgen-ruby has: |
| 00:42:55 | tarcieri | -x, --rbx Allow to use Rubinius asm features |
| 00:43:01 | evan | no way! |
| 00:43:05 | evan | NO FUCKING WAY. |
| 00:43:06 | Defiler | duuuuude |
| 00:43:08 | evan | duuuuuude. |
| 00:43:09 | Defiler | duuuuuuuuuuuude |
| 00:43:11 | evan | we've made |
| 00:43:15 | evan | everyone, take the rest of the day off. |
| 00:43:16 | evan | :) |
| 00:43:21 | tarcieri | haha |
| 00:43:27 | tarcieri | I can't tell what, if anything, it does though |
| 00:43:32 | Defiler | I won't do that, but I will work drunk :) |
| 00:43:34 | evan | i don't care! |
| 00:43:37 | tarcieri | heh |
| 00:44:27 | luislavena | need to setup some ubuntu/freebsd/any linux to test rbx before commit :-P |
| 00:44:52 | evan | i'm looking at ragle now |
| 00:44:54 | evan | seeing what they do |
| 00:45:02 | Defiler | Please update us with your findings |
| 00:45:04 | Defiler | I think that is amazing |
| 00:45:17 | evan | oh rad! |
| 00:45:21 | evan | i think it outputs rubinius assembly. |
| 00:45:29 | luislavena | thinks evan loves to peek in other source projects ;-) |
| 00:45:35 | Defiler | *squargle* |
| 00:45:53 | evan | interesting!! |
| 00:46:03 | evan | there is a generator in ragel called goto |
| 00:46:10 | evan | and has this comment in it. |
| 00:46:18 | evan | <paste> |
| 00:46:24 | evan | if ( rubyImpl == Rubinius ) { |
| 00:46:24 | evan | codeGen = new RbxGotoCodeGen(out); |
| 00:46:24 | evan | } else { |
| 00:46:24 | evan | cout << "Goto style is still _very_ experimental " |
| 00:46:24 | evan | "and only supported using Rubinius.\n" |
| 00:46:26 | evan | "You may want to enable the --rbx flag " |
| 00:46:29 | evan | " to give it a try.\n"; |
| 00:46:31 | evan | exit(1); |
| 00:46:33 | evan | } |
| 00:46:36 | evan | </paste> |
| 00:46:38 | evan | SO AWESOME. |
| 00:46:40 | Defiler | ruuhahhahhh |
| 00:46:53 | Defiler | Not only are we supported, but we are supported because we are better |
| 00:47:03 | tarcieri | oh |
| 00:47:04 | evan | then there is a file called rbx-gotocodegen.cpp |
| 00:47:08 | tarcieri | I didn't try the goto generator |
| 00:47:18 | evan | ah crap. |
| 00:47:23 | evan | this is sorta funny. |
| 00:47:28 | evan | it used compiler Ruby.asm stuff. |
| 00:47:32 | evan | so it doesn't work anymore. |
| 00:47:38 | evan | compiler1 |
| 00:47:39 | tarcieri | Adrian Thurston hopped on here one day |
| 00:47:42 | tarcieri | aah |
| 00:47:46 | evan | i should make it work again |
| 00:47:49 | evan | just so that this code will work |
| 00:47:51 | Defiler | Still, it should be easy to translate |
| 00:47:51 | evan | actually, hell |
| 00:47:56 | evan | i could make this work with Rubinius.asm |
| 00:47:59 | Defiler | We should just patch ragel and submit it |
| 00:48:03 | evan | totally. |
| 00:48:10 | Defiler | To use the new generator style |
| 00:48:10 | evan | i love this. |
| 00:48:37 | Defiler | ragel.push :self |
| 00:48:38 | Defiler | heh |
| 00:48:42 | luislavena | Defiler: can you apply this and see if it passes? (spec/ruby/1.8/core/dir) http://pastie.caboo.se/185839 |
| 00:48:52 | Defiler | luislavena: Sure |
| 00:49:08 | d2dchat enters the room. | |
| 00:49:31 | luislavena | Defiler: thank you, will work setting my jeos/ubuntu install this weekend (don't have one in my notebook) :-P |
| 00:49:56 | TheProkrammer | Found an LGPL'd win32 implementation of ucontext... any issue with incorporating it into rubinius? |
| 00:50:27 | benburkert leaves the room. | |
| 00:51:01 | evan | TheProkrammer: go for it. |
| 00:51:09 | evan | ucontext is going to be simplified in the new vm |
| 00:51:10 | Defiler | luislavena: running it now |
| 00:51:17 | evan | fyi. |
| 00:51:28 | luislavena | Defiler: (drums) :-P |
| 00:51:57 | bitbang_ leaves the room. | |
| 00:52:40 | agardiner | heya Defiler - are you looking at the cvar issue, i.e. @@foo ||= ...? |
| 00:52:48 | evan | crap! |
| 00:52:52 | Defiler | agardiner: Yeah. I have it fixed but not pushed |
| 00:52:57 | evan | how to i have ragel use this rbx awesomeness... |
| 00:53:06 | Defiler | luislavena: An exception occurred in loading spec/ruby/1.8/core/dir/unlink_spec.rb: |
| 00:53:09 | Defiler | NameError: "undefined local variable or method `tmp' for DirSpecs" |
| 00:53:17 | agardiner | ok great - hacked around it in ruby-debug for now... |
| 00:53:24 | Defiler | hrm let me make sure I am updated though |
| 00:53:25 | bitbang enters the room. | |
| 00:53:49 | luislavena | Defiler: was a few revisions back by brian, maybe is not there :-P |
| 00:53:58 | agardiner | is playing around with getting Rubinius to run ruby-debug... |
| 00:55:14 | luislavena | TheProkrammer: what are you using to build rubinius? (I know, mingw, but which implementation). |
| 00:56:10 | TheProkrammer | luislavena: cygwin actually. |
| 00:56:32 | TheProkrammer | gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) |
| 00:56:35 | luislavena | TheProkrammer: really? wow |
| 00:56:47 | luislavena | doesn't remember last time he used cygwin :-P |
| 00:56:50 | evan | HAHAHA |
| 00:57:00 | evan | got ragel to output rubinius specific .rb files. |
| 00:57:05 | evan | it's.... interesting. |
| 00:57:07 | TheProkrammer | luislavena: cygwin is what keeps me sane on windows :) |
| 00:57:08 | evan | to say the least. |
| 00:57:24 | luislavena | evan: "interesting" .... hmnnn :-D |
| 00:57:38 | evan | basically, he only outputs |
| 00:57:44 | luislavena | TheProkrammer: I take meds and lot of pills for that. |
| 00:57:44 | evan | Ruby.asm "goto <some label>" |
| 00:58:07 | evan | ie, he's using goto in ruby. |
| 00:58:09 | luislavena | s/take/inject |
| 00:58:30 | evan | wow |
| 00:58:32 | evan | this is so... |
| 00:58:43 | evan | i'm not sure i have the words. |
| 00:58:51 | evan | this is almost as cool as getting eval working. |
| 00:58:53 | tarcieri | sweet? |
| 00:59:11 | tarcieri | evan: if you want to play around with generating the Ruby I can just check in the raw Ragel file |
| 00:59:15 | d2dchat leaves the room. | |
| 00:59:21 | evan | though, this file confuses me |
| 00:59:22 | Defiler | That sounds like an awesome idea |
| 00:59:25 | evan | i think it must only work on C |
| 00:59:30 | benstiglitz leaves the room. | |
| 00:59:30 | evan | because it's got chunks of C code mixed with ruby |
| 00:59:38 | evan | so the atoi.rl only works with the C host language |
| 00:59:42 | tarcieri | what'd you use for input? |
| 00:59:49 | evan | atoi.rl |
| 00:59:51 | evan | yep, |
| 00:59:57 | evan | looks like it's got C code chunks embedded. |
| 01:00:06 | Defiler | rad |
| 01:00:18 | d2dchat enters the room. | |
| 01:00:20 | evan | super rad. |
| 01:00:23 | tarcieri | yeah, the language-specific stuff needs to be modified |
| 01:00:31 | tarcieri | what version are you playing with? |
| 01:00:35 | evan | 6.1 |
| 01:00:38 | evan | just downloaded it. |
| 01:00:41 | tarcieri | the Mongrel parser needs Ragel 5 atm :/ |
| 01:00:47 | evan | now... how to make this work with the current compiler... |
| 01:00:51 | evan | tarcieri: oh, ok. |
| 01:00:54 | Defiler | tarcieri: why? |
| 01:00:55 | tarcieri | should be easy to fix, but uhh |
| 01:01:02 | tarcieri | Defiler: it still uses %% write eof |
| 01:01:09 | tarcieri | to put the machine into a finished state |
| 01:01:29 | tarcieri | apparently there's an execution variable you're supposed to do something with now |
| 01:01:32 | tarcieri | but I can't find any docs on it |
| 01:01:44 | evan | ponders. |
| 01:01:47 | Defiler | I'll bet the guy who added rubinius support to ragel could help |
| 01:01:59 | luislavena | tarcieri: ragel 5 to 6.1 shown a few "glitches" for us (mongrel-dev team). |
| 01:02:20 | tarcieri | luis: I was using the latest version of the parser... looks like it's still for 5.x |
| 01:02:42 | Defiler | luislavena: http://rafb.net/p/2D928v23.html |
| 01:03:11 | lopex leaves the room. | |
| 01:03:23 | drbrain | Defiler: needs the absolute path trick |
| 01:03:36 | drbrain | I think an expand_path is the proper trick |
| 01:03:53 | evan | WIERD. |
| 01:04:03 | evan | i just got a tweet for someone that i'm not following |
| 01:04:08 | evan | because they did @evanphx in the tweet. |
| 01:04:15 | evan | but in only shows up in twitterific.... |
| 01:04:16 | evan | odd. |
| 01:05:17 | luislavena | drbrain: funny, it already does in common (@mock_dir = File.expand_path(tmp('mock'))) |
| 01:06:01 | luislavena | Defiler: not bad at all anyway, to almost broke the build ;-) |
| 01:08:46 | jtoy enters the room. | |
| 01:09:48 | agile enters the room. | |
| 01:10:22 | ezmobius_ enters the room. | |
| 01:11:20 | loincloth enters the room. | |
| 01:12:19 | evan | muhah |
| 01:12:29 | evan | this is going work perfectly. |
| 01:13:11 | obiejuan_ leaves the room. | |
| 01:14:35 | benny leaves the room. | |
| 01:15:03 | benburkert enters the room. | |
| 01:16:06 | Defiler | luislavena: Is that error enough to help you create a fix? |
| 01:16:31 | d2dchat leaves the room. | |
| 01:16:45 | boyscout | 1 commit by Wilson Bilkovich |
| 01:16:46 | boyscout | * Rewrite descriptions of language/def specs; 98b0c44 |
| 01:16:58 | Defiler | tired of having that at the head of the branch all the time |
| 01:16:59 | Defiler | heh |
| 01:17:33 | luislavena | Defiler: yes, it will for the time being :-) |
| 01:17:38 | luislavena | Defiler: thank you :-) |
| 01:18:00 | luislavena | looking with good eyes installing andLinux instead of full VM |
| 01:18:31 | d2dchat enters the room. | |
| 01:18:51 | TheProkrammer | Wow.. man... lots of stuff not defined on cygwin... annoying. |
| 01:18:55 | RyanTM enters the room. | |
| 01:21:35 | obiejuan enters the room. | |
| 01:22:29 | d2dchat leaves the room. | |
| 01:23:27 | jtoy leaves the room. | |
| 01:24:36 | boyscout | 1 commit by Tony Arcieri |
| 01:24:36 | boyscout | * Pure Ruby Mongrel HTTP parser generated with Ragel; 8687326 |
| 01:24:55 | evan | sweet! |
| 01:25:15 | tarcieri | guaranteed to be broken in some way! |
| 01:25:20 | tarcieri | but it works well enough on MRI |
| 01:25:26 | GMFlash leaves the room. | |
| 01:25:31 | evan | cool. |
| 01:25:36 | tarcieri | I'll run it by the Mongrel mailing list and see if I could actually write specs for it :O |
| 01:25:49 | obiejuan leaves the room. | |
| 01:26:52 | yugui enters the room. | |
| 01:26:52 | tarcieri | evan: right now it's storing the entire parser as instance specific data *groan* |
| 01:27:02 | evan | hehe |
| 01:27:03 | evan | oh well. |
| 01:27:06 | evan | it did that before too |
| 01:27:14 | tarcieri | I don't think it was ever intended to be used in a class, only in a module |
| 01:27:35 | evan | ok |
| 01:27:47 | evan | now i need a .rl file that will output ruby and work |
| 01:27:55 | evan | ie, not use C inline |
| 01:27:55 | tarcieri | that does |
| 01:28:03 | tarcieri | 100% C free! |
| 01:28:15 | tarcieri | you'll most likely need to move %% write data; out of #initialize |
| 01:28:16 | evan | it's complicated though. |
| 01:28:20 | evan | i just need a super basic one |
| 01:28:23 | evan | to test my ragel patch |
| 01:28:24 | tarcieri | oh |
| 01:28:37 | tarcieri | http://www.devchix.com/2008/01/13/a-hello-world-for-ruby-on-ragel-60/ |
| 01:30:17 | evan | oh damn. |
| 01:30:26 | evan | need to make it simpler. |
| 01:30:30 | evan | ok, take 2 |
| 01:30:54 | ezmobius | evan: http://github.com/bruce/keyword_search/tree/master |
| 01:31:03 | ezmobius | that one has a ragel parser that generates only ruby code |
| 01:31:37 | ezmobius | http://github.com/bruce/keyword_search/tree/master/lib/keyword_search.rl |
| 01:32:07 | crafterm enters the room. | |
| 01:32:38 | evan | i found a dirt simple one |
| 01:33:16 | obiejuan enters the room. | |
| 01:33:30 | benny enters the room. | |
| 01:34:10 | ezmobius | man no wonder rails is so slow.. |
| 01:34:10 | ezmobius | this is pretty twisted..., we have a mongrel request wrapped in a rack env wrapped in a Rack::Request object wrapped in a CGIWrapper object wrapped in a CgIRequest object before the rails controllers get at the request object |
| 01:34:30 | evan | man, we need to use the execute.rb plugin more |
| 01:34:31 | evan | it's sweet. |
| 01:34:32 | rubuildius_amd64 | Tony Arcieri: 868732662; 2091 files, 6666 examples, 23382 expectations, 0 failures, 0 errors; http://rafb.net/p/lS3syc65.html |
| 01:34:33 | rubuildius_amd64 | Wilson Bilkovich: 98b0c4405; 2091 files, 6666 examples, 23382 expectations, 0 failures, 0 errors; http://rafb.net/p/7c1Ddx17.html |
| 01:34:46 | evan | ezmobius_: geez. |
| 01:34:58 | zenspider | evan: ragel patch? |
| 01:35:04 | evan | yep |
| 01:35:11 | evan | ragel, it seems, has a rubinius mode. |
| 01:35:15 | evan | crazy eh. |
| 01:35:20 | evan | it uses compiler1 semantics |
| 01:35:22 | tarcieri | ezmobius: hahaha |
| 01:35:32 | evan | i'm writing a quick patch for it to use the current compiler semantics |
| 01:35:40 | kw leaves the room. | |
| 01:36:03 | twbray leaves the room. | |
| 01:36:13 | dlee leaves the room. | |
| 01:36:49 | nkpart enters the room. | |
| 01:37:31 | luislavena leaves the room. | |
| 01:39:03 | rubuildius_ppc | Tony Arcieri: 868732662; 2091 files, 6668 examples, 23408 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/185867 |
| 01:39:04 | rubuildius_ppc | Wilson Bilkovich: 98b0c4405; 2091 files, 6668 examples, 23408 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/185865 |
| 01:47:52 | Defiler | sweeet.. I just got a badass error |
| 01:48:18 | Defiler | http://rafb.net/p/QSodga73.html |
| 01:50:58 | evan | nice. |
| 01:52:19 | benburkert leaves the room. | |
| 01:53:53 | evan | OOH |
| 01:53:56 | evan | so close! |
| 01:54:02 | evan | almost got the ragel patch working. |
| 01:56:21 | evan | hrm. |
| 01:56:37 | evan | now i'm hitting where ragel isn't doing the right thing for some reason. |
| 01:56:41 | evan | er. rubinius. |
| 01:56:53 | bburcham enters the room. | |
| 01:58:14 | tarcieri | evan: that will be so damn cool when you get it working |
| 01:58:27 | evan | the code ragel outputs is weird |
| 01:58:31 | tarcieri | indeed! |
| 01:58:33 | evan | i'm thinking about write a new output mode for it |
| 01:58:41 | tarcieri | that'd probably be helpful |
| 01:58:45 | evan | rather than using class << self; attr_accessor; end |
| 01:58:47 | evan | everywhere |
| 01:58:49 | tarcieri | yeah |
| 01:58:58 | evan | just have it output a class that you make an instance |
| 01:59:04 | tarcieri | nice |
| 01:59:28 | tarcieri | evan: that stuff doesn't work on Rubinius since it makes all the :foo= methods private |
| 01:59:36 | tarcieri | then assigns values to them with self.foo = ... |
| 01:59:36 | boyscout | 3 commits by Wilson Bilkovich |
| 01:59:37 | boyscout | * Merge branch 'cvar'; 82c79a1 |
| 01:59:37 | evan | aoeunaoehtnaeohuthaoentuhaeot'nuhnaoeutnaoehuntaoehtnuhaoentuhntaeo'huntaeountoaehunteoahunhntu |
| 01:59:38 | boyscout | * Fix incorrect behavior for @@cvar ||= value; 02fef4c |
| 01:59:39 | boyscout | * Spec for using ||= to initialize a class variable; 24785f7 |
| 01:59:41 | tarcieri | which rbx doesn't like |
| 01:59:42 | evan | IT WORKS! |
| 01:59:48 | tarcieri | nice |
| 01:59:48 | Defiler | Oops. Sorry about the merge commit |
| 01:59:48 | tarcieri | heh |
| 02:00:37 | dfg59 enters the room. | |
| 02:01:32 | evan | wooo! |
| 02:01:48 | evan | i wonder if this simple one actually has state transitions though... |
| 02:01:57 | jtoy enters the room. | |
| 02:02:05 | benny leaves the room. | |
| 02:02:06 | agardiner | Defiler: thanks! |
| 02:02:53 | Defiler | agardiner: no problem. needed a break from method defs |
| 02:04:11 | obiejuan leaves the room. | |
| 02:04:39 | dfg59 leaves the room. | |
| 02:06:22 | zenspider | Defiler: awesome. thanks for that fix |
| 02:06:59 | enebo leaves the room. | |
| 02:07:13 | Defiler | a pleazure |
| 02:07:33 | rubuildius_amd64 | Wilson Bilkovich: 82c79a1ec; 2091 files, 6667 examples, 23383 expectations, 0 failures, 0 errors; http://rafb.net/p/lIh81f72.html |
| 02:10:35 | benburkert enters the room. | |
| 02:12:17 | rubuildius_ppc | Wilson Bilkovich: 82c79a1ec; 2091 files, 6669 examples, 23409 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/185875 |
| 02:12:31 | agardiner | sweet! got ruby-debug running far enough to get to a command prompt! |
| 02:12:31 | zenspider | http://rafb.net/p/t85ZYt20.html YAY |
| 02:14:21 | zenspider | nice! |
| 02:14:22 | evan | sending in ragel patch to support current rubinius compiler! |
| 02:14:31 | loincloth leaves the room. | |
| 02:17:29 | smparkes leaves the room. | |
| 02:18:18 | smparkes enters the room. | |
| 02:20:01 | bitbang leaves the room. | |
| 02:20:12 | obiejuan enters the room. | |
| 02:20:22 | dfg59 enters the room. | |
| 02:25:58 | headius enters the room. | |
| 02:28:28 | headius_ enters the room. | |
| 02:32:12 | VVSiz_ enters the room. | |
| 02:33:42 | wycats_ leaves the room. | |
| 02:33:58 | Santana_ enters the room. | |
| 02:34:51 | headius__ enters the room. | |
| 02:38:48 | benburkert leaves the room. | |
| 02:38:59 | kw enters the room. | |
| 02:39:48 | RyanTM_ enters the room. | |
| 02:39:57 | bburcham leaves the room. | |
| 02:40:31 | vertiginous enters the room. | |
| 02:40:31 | VVSiz leaves the room. | |
| 02:42:47 | dblack enters the room. | |
| 02:42:55 | RyanTM leaves the room. | |
| 02:42:59 | headius leaves the room. | |
| 02:45:27 | headius_ leaves the room. | |
| 02:47:29 | ruivaldo enters the room. | |
| 02:55:19 | twbray enters the room. | |
| 02:56:22 | dfg59 leaves the room. | |
| 03:14:16 | bitbang enters the room. | |
| 03:16:03 | ruivaldo leaves the room. | |
| 03:17:53 | twbray leaves the room. | |
| 03:22:41 | samsarin enters the room. | |
| 03:23:11 | wycats enters the room. | |
| 03:25:03 | benburkert enters the room. | |
| 03:27:36 | TheProkrammer | bah... can't get networking stuff to link up right... |
| 03:31:18 | crafterm leaves the room. | |
| 03:33:48 | obvio leaves the room. | |
| 03:35:01 | ezmobius_ leaves the room. | |
| 03:35:01 | ezmobius leaves the room. | |
| 03:37:50 | rue | Dang. There are 200 people signed up for rubinius-dev |
| 03:41:16 | obvio enters the room. | |
| 03:42:49 | boyscout | 1 commit by Evan Phoenix |
| 03:42:50 | boyscout | * Some bug fixes, found while debugging ragle; d7e27a7 |
| 03:43:10 | therealadam_ enters the room. | |
| 03:44:04 | evan | man, i can't spell ragel |
| 03:44:07 | evan | i always do ragle |
| 03:44:09 | evan | whatever. |
| 03:44:31 | evan | seriously though, we need to do more with execute.rb |
| 03:46:09 | samsarin leaves the room. | |
| 03:46:44 | TheProkrammer | curses. |
| 03:46:49 | headius | evening |
| 03:47:18 | dblack leaves the room. | |
| 03:48:21 | obiejuan leaves the room. | |
| 03:50:17 | TheProkrammer | headius: heyya |
| 03:51:40 | rubuildius_amd64 | Evan Phoenix: d7e27a745; 2091 files, 6667 examples, 23383 expectations, 0 failures, 0 errors; http://rafb.net/p/r9rRHz41.html |
| 03:52:01 | therealadam leaves the room. | |
| 03:53:00 | evan | evening. |
| 03:53:42 | brainopia enters the room. | |
| 03:55:42 | rubuildius_ppc | Evan Phoenix: d7e27a745; 2091 files, 6669 examples, 23409 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/185926 |
| 03:58:28 | ezmobius_ enters the room. | |
| 04:00:07 | bitbang leaves the room. | |
| 04:14:30 | ezmobius_ leaves the room. | |
| 04:17:19 | lstoll_ leaves the room. | |
| 04:17:39 | tarcieri | evan: where'd you get with Ragel? |
| 04:18:10 | tarcieri | (this is seriously some awesome shit, btw) |
| 04:18:50 | tarcieri | oh, guess you submitted a patch? |
| 04:18:53 | tarcieri | nice |
| 04:19:19 | headius | what's up with ragel |
| 04:20:01 | tarcieri | afaik, evan just submitted a Ragel patch for doing goto-driven FSMs using compiler2 semantics, but uhh, you might want to confirm with evan :) |
| 04:20:27 | tarcieri | like uhh, goto w\ Rubinius asm |
| 04:21:59 | tarcieri | and for all the CI bots here, it'd sure be nice to have ones with !next <nick> <msg> |
| 04:21:59 | tarcieri | heh |
| 04:22:37 | headius | not sure I understand |
| 04:22:52 | headius | a ragel feature just for rubinius? |
| 04:23:23 | tarcieri | yeah, a way to output a goto-driven FSM that might actually be quasi-performant |
| 04:23:37 | tarcieri | I haven't even tried the goto-driven FSM on Ruby otherwise |
| 04:23:41 | tarcieri | no idea how it would work, heh |
| 04:23:44 | tarcieri | callcc maybe? |
| 04:24:36 | headius | well that certainly wouldn't perform |
| 04:24:56 | tarcieri | I'd hope it performs better than the table-based FSMs it spits out by default :) |
| 04:25:08 | tarcieri | that do all table lookups through funcalls! |
| 04:25:24 | headius | callcc is dead slow in mri at least |
| 04:25:28 | tarcieri | haha |
| 04:25:31 | tarcieri | well screw MRI |
| 04:25:47 | headius | and on yarv |
| 04:25:56 | tarcieri | the best solution for MRI/YARV is a C extension |
| 04:26:10 | tarcieri | with Rubinius: there may be an alternative! |
| 04:26:11 | tarcieri | *gasp* |
| 04:26:25 | headius | what alternative? |
| 04:26:50 | tarcieri | well, for now, use Rubinius ASM to do a goto-driven FSM |
| 04:27:32 | headius | is this goto within a given method? |
| 04:27:38 | tarcieri | yes |
| 04:27:58 | headius | well that much is possible on the JVM as well...not sure I understand why it would be something new |
| 04:28:04 | tarcieri | heh |
| 04:28:12 | tarcieri | I'm sure it could target YARV bytecode too |
| 04:28:59 | tarcieri | I think the point is that there's a lot more optimization opportunities than afforded on, say, 1.8 |
| 04:29:33 | MenTaLguY enters the room. | |
| 04:29:34 | tarcieri | Ragel already targeted the compiler1 stuff... evan just updated it |
| 04:29:38 | MenTaLguY | hello |
| 04:29:45 | MenTaLguY | evan: what's your thinking on m:n threads these days? |
| 04:29:46 | tarcieri | and I'm sure if he wanted to he could massively improve it |
| 04:30:02 | tarcieri | likes the LWP == VM idea a lot |
| 04:30:53 | tarcieri | it's (almost) shared nothing |
| 04:31:00 | MenTaLguY | me also |
| 04:31:07 | headius | tarcieri: I look forward to these optimization opportunities :) |
| 04:31:08 | MenTaLguY | I think it's going to be a benefit on more NUMA systems |
| 04:31:16 | tarcieri | MenTaLguY: for sure |
| 04:31:18 | TheProkrammer | hmm looks like I'm going to have to implement getaddrname and gai_error on cygwin... poo. |
| 04:31:23 | tarcieri | and that's all that really matters to come |
| 04:31:27 | tarcieri | what with QuickConnect |
| 04:31:33 | tarcieri | (and HyperTransport) |
| 04:32:11 | RyanTM_ leaves the room. | |
| 04:32:13 | tarcieri | Everything's gonna be NUMA soon |
| 04:32:24 | tarcieri | at least as far as your everyday computer |
| 04:34:45 | tarcieri | Intel finally got their shit together |
| 04:34:50 | tarcieri | right about the time the market demanded it |
| 04:35:02 | tarcieri | they seem to have an uncanny ability at doing that |
| 04:36:59 | jicksta leaves the room. | |
| 04:43:06 | evan | MenTaLguY: my feeling on m:n is that they're hard |
| 04:43:12 | evan | but that we'll support them eventually most likely. |
| 04:43:44 | agardiner | dang! there's still a bug of some description with cvar ||=... |
| 04:43:57 | agardiner | Defiler: you around? |
| 04:47:55 | agardiner | pastie |
| 04:48:19 | pastie | http://pastie.org/185955 by agardiner. |
| 04:48:29 | evan | new cpp code is in. |
| 04:48:38 | tarcieri | evan: or... promote solutions for distributing your program across VMs :) |
| 04:48:39 | evan | the instruction test stuff is in place now. |
| 04:48:41 | agardiner | that shows the problem with cvar ||= |
| 04:48:51 | agardiner | seems to be some interaction of that and class << self |
| 04:51:59 | Santana_ leaves the room. | |
| 04:52:26 | headius | evan: why m:n rather than just native threads first |
| 04:55:23 | tarcieri | why more than one native thread per VM? :) |
| 04:57:08 | MenTaLguY | headius: that makes every thread very expensive compared to user threads or m:n |
| 04:57:13 | tarcieri | the way I see it: you have 3 tiers... Erlang on BEAM, which manages throughput between stacks/context/whatever in the millions of messages per second (on my computer), Scala on the JVM which manages throughput between stacks/contexts in the hundreds of thousands of messages per second, and Rubinius which is presently in the tens of thousands of messages per second |
| 04:57:33 | headius | yes, and I'm certainly all for doing the best thing possible, but perhaps it would be better to take steps towards it first |
| 04:57:43 | tarcieri | the JVM has had over a decade of development to get to fine grained locking |
| 04:57:58 | tarcieri | and Erlang still kicks its ass |
| 04:58:32 | tarcieri | maybe if you just require people structure their programs ever so slightly differently from your typical threaded system they'll perform better without a decade+ of work |
| 04:58:44 | headius | you're pretty cocky |
| 04:58:49 | tarcieri | heh |
| 04:58:57 | tarcieri | I'm just trying to be pragmatic |
| 04:59:00 | headius | last I heard Java on JVM was a hell of a lot faster than erlang |
| 04:59:08 | tarcieri | faster at what? |
| 04:59:13 | headius | exactly |
| 04:59:16 | tarcieri | heh |
| 04:59:20 | tarcieri | don't get me wrong |
| 04:59:29 | tarcieri | the JVM is probably the most advanced VM there is |
| 04:59:40 | tarcieri | I *REALLY* don't like their approach to concurrency |
| 05:00:20 | tarcieri | it's an approach that made sense in the 90s |
| 05:01:25 | headius | yes, well, things change, and the jvm isn't standing still either |
| 05:01:34 | evan | drbrain: you around? |
| 05:02:34 | lstoll enters the room. | |
| 05:02:45 | headius | it's entirely feasible we're going to have a JVM within the next year that does all it does now and also has optimized dynamic invocation, continuations, intrinsic tuples, and a lot more |
| 05:02:49 | tarcieri | headius: I think Scala does a nice job with it, it's just that the underlying architecture is still ridden with lots and lots of locks and context switches and other things which get in the way |
| 05:03:18 | MenTaLguY | I think the main thing is to modify the JVM so that the Scala model can be implemented without explicit continuation passing |
| 05:03:33 | MenTaLguY | the rest can be worked on in a more transparent fashion |
| 05:03:35 | headius | and that's certainly possible |
| 05:03:38 | tarcieri | headius: That'd all be great, but in the end it's really nice to have a pre-emptive user context that you can load-balance across hardware threads as the main concurrency primitive in the VM |
| 05:04:13 | tarcieri | if you can do that, then your program runs N times faster on N cpu cores |
| 05:04:28 | headius | as is that...with switch profiling a bytecode-based VM implemented atop the JVM could provide user threads and probably be a lot faster than erlang |
| 05:05:12 | tarcieri | headius: for all the years Java has had at optimizing execution of code in sequence, Erlang has spent optimizing execution of code in parallel |
| 05:05:13 | headius | it's a matter of there being a demand for such features, and they can happen...from talking with john rose, I don't think there's anything he would find impossible |
| 05:06:10 | headius | I hope you're not going to tell me erlang is going to overtake the JVM ;) |
| 05:06:14 | tarcieri | god no |
| 05:06:31 | tarcieri | however, if your intended model is user contexts that communicate with asynchronous messages, you're going to have a really hard time beating Erlang |
| 05:06:48 | crafterm enters the room. | |
| 05:06:52 | evan | headius: i didn't say m:n before native threads sharing heap |
| 05:07:05 | tarcieri | :( @ native threads sharing heap |
| 05:07:12 | Defiler | agardiner: back |
| 05:07:17 | headius | good, glad there's someone thinking practical here |
| 05:07:30 | tarcieri | heh |
| 05:07:43 | Defiler | agardiner: Yeah, I suspect that is the same bug that I am already working on |
| 05:07:48 | agardiner | ah, ok |
| 05:07:53 | evan | getting things shored up in the VM to run native threads with a shared heap is the first step of getting m:n anyway |
| 05:08:01 | evan | it's a natural first step |
| 05:08:02 | Defiler | I think it is going to be simple.. but I want to have a lot of spec coverage on it first |
| 05:08:03 | trythil leaves the room. | |
| 05:08:06 | agardiner | i've managed to determine there is no difference in the bytecode for the settings_map method |
| 05:08:33 | agardiner | do you want me to add this as a test case? |
| 05:08:35 | tarcieri | headius: Erlang sucks at CPU bound tasks |
| 05:08:42 | tarcieri | headius: JVM FTW in that case |
| 05:08:48 | agardiner | or i suppose you could, since you've got the pastie... :-) |
| 05:09:32 | tarcieri | headius: However, NIO is an abortion, MINA is a nice try at building a sane Reactor on top of it, and as far as concurrent I/O processing goes BEAM/HiPE blows the JVM out of the water |
| 05:09:47 | evan | abortion? |
| 05:09:47 | headius | NIO is far from an abortion |
| 05:09:53 | headius | you don't know what you're talking about now |
| 05:09:58 | evan | aboration? |
| 05:10:05 | tarcieri | heh |
| 05:10:22 | tarcieri | headius: Have you ever looked at how Erlang handles network I/O? |
| 05:10:27 | tarcieri | it's *beautiful* |
| 05:10:36 | headius | yes, I'm sure it's the bees knees |
| 05:11:02 | tarcieri | headius: MINA is pretty cool |
| 05:11:19 | tarcieri | headius: MINA is... NIO made sane |
| 05:11:22 | therealadam_ leaves the room. | |
| 05:11:50 | tarcieri | headius: I would not say that the NIO API is very useful when used directly in the general case |
| 05:12:15 | tarcieri | it's performant but very ugly |
| 05:12:24 | headius | I would not say erlang's syntax is very useful when used directly either |
| 05:12:31 | headius | but you can't judge based on that |
| 05:12:33 | tarcieri | lol |
| 05:12:35 | tarcieri | touche |
| 05:13:41 | tarcieri | when it comes right down to it, I think Reactor is pretty ugly too |
| 05:13:44 | tarcieri | due to inversion of control |
| 05:15:52 | Defiler | agardiner: please feel free to add it as a spec |
| 05:15:58 | Defiler | I was reading all the scrollback I missed. Heh |
| 05:18:02 | agardiner | ok, np... which spec should it go in though? |
| 05:18:57 | Defiler | I've got a semi-similar one that is going to go in language/def_spec.. |
| 05:19:05 | Defiler | so maybe you should put your version elsewhere |
| 05:19:39 | agardiner | hmmm... so what exactly is the problem my spec will show? :-) |
| 05:19:51 | Defiler | maybe class_variable_spec? To assert that a class variable reference in the metaclass finds the cvar in the class itself |
| 05:20:05 | agardiner | ah, ok - that makes sense |
| 05:20:17 | vertiginous leaves the room. | |
| 05:21:55 | agardiner | geez, class_variable_spec is pretty minimal! |
| 05:22:22 | tarcieri | MenTaLguY: oh, I've been meaning to ask you |
| 05:22:27 | tarcieri | I know you're a fan of join calculus |
| 05:22:32 | tarcieri | have you looked at JoCaml at all? |
| 05:23:30 | evan | hm |
| 05:23:34 | evan | getting one failure on linux |
| 05:23:43 | evan | looks like a DRb bind problem |
| 05:23:52 | evan | http://ci.rubini.us/ci/1209010907.M853302P2089.hoshi.fallingsnow.net.html |
| 05:23:59 | Defiler | Probably the usual race thing |
| 05:24:04 | MenTaLguY | tony: yeah |
| 05:24:12 | Defiler | when two pushes happen almost back to back |
| 05:24:25 | evan | huh? |
| 05:24:33 | evan | why would that matter? |
| 05:24:50 | Defiler | well, only one process can bind to a given ip on a given port |
| 05:24:51 | tarcieri | MenTaLguY: have you thought about pursuing join calculus in Ruby? |
| 05:24:56 | evan | Defiler: yes, i know. |
| 05:25:02 | evan | but there isn't anything else bound to that port. |
| 05:25:11 | Defiler | when two CI runs are going at the same time, there are problems |
| 05:25:35 | headius | hmm, gotta go, bbl perhaps |
| 05:25:36 | MenTaLguY | tony: actually one of the first things I committed to Rubinius was a join calculus implementation |
| 05:25:45 | tarcieri | orly |
| 05:26:00 | MenTaLguY | tony: however the API kind of sucked and it was also beyond what was actually implemented in Rubinius as far as language features at the time |
| 05:26:07 | tarcieri | heh |
| 05:26:10 | MenTaLguY | I'm planning on trying again soon based on my experience implementing joins in JRuby |
| 05:26:18 | tarcieri | nice |
| 05:26:23 | djwhitt | evan: you guys going to setup bot(s) for the new ci system? |
| 05:26:35 | evan | yeah |
| 05:26:44 | evan | i'm doing black box testing |
| 05:26:49 | evan | i'm the first user |
| 05:26:59 | evan | found a few bugs. |
| 05:27:04 | djwhitt | ah, so they're sending messages to you? |
| 05:27:11 | evan | yeah |
| 05:27:23 | evan | they post a yaml payload to a cgi running on git.rubini.us |
| 05:27:30 | evan | and a crontab picks up the data and writes out the reports |
| 05:27:37 | djwhitt | cool, not that I mind running a bot, but it's probably best if you guys have access to them |
| 05:28:19 | evan | yeah, we totally love you guys running them |
| 05:28:31 | evan | but we're trying to get a handle on running them on hosts we have access to |
| 05:28:38 | djwhitt | yeah, makes sense |
| 05:28:40 | evan | for platforms we need to be on top of |
| 05:31:45 | evan | ok, i'm putting in a bug to fix the DRb.start_service race condition |
| 05:31:45 | benburkert leaves the room. | |
| 05:31:47 | evan | we can't have that. |
| 05:33:57 | MenTaLguY leaves the room. | |
| 05:34:45 | trythil enters the room. | |
| 05:34:53 | benburkert enters the room. | |
| 05:34:54 | dfg59 enters the room. | |
| 05:35:58 | wmoxam enters the room. | |
| 05:39:48 | dfg59 | brixen: thanks for the help getting started last night. i have a patch i want to submit and wanted to run through the process with you real quick if you have time. my first patch here. |
| 05:43:36 | headius leaves the room. | |
| 05:44:14 | boyscout | 1 commit by Evan Phoenix |
| 05:44:15 | boyscout | * Fixes to get ci.rb running on linux; 6eee633 |
| 05:44:47 | agardiner | Defiler: so i added a couple of metaclass examples... |
| 05:45:00 | agardiner | and i'm getting a failure on the superclass for class << self |
| 05:45:10 | agardiner | its returning a MetaClass, instead of Class |
| 05:45:17 | agardiner | is that the bug you are working on? |
| 05:46:04 | agardiner | ...or have i stuffed up the spec :-) |
| 05:48:23 | brixen | dfg59: sure, best bet would be to post a ticket on LH |
| 05:48:41 | dfg59 | brixen: alrighty, will do |
| 05:49:11 | brixen | dfg59: also, you can mention it here to get people's attention :) |
| 05:49:17 | brixen | ticket # |
| 05:49:45 | dfg59 | alright, will do, it's a fix for File.join dealing with recursive arrays, i'll post the ticket # |
| 05:50:09 | brixen | k |
| 05:50:47 | nicksieger leaves the room. | |
| 05:51:06 | evan | hm, now getting a failure of Singleton.new |
| 05:51:11 | evan | thats not a race, right? |
| 05:51:17 | nicksieger enters the room. | |
| 05:51:38 | brixen | evan: that is an odd failure |
| 05:51:43 | rubuildius_amd64 | Evan Phoenix: 6eee6331d; 2091 files, 6667 examples, 23383 expectations, 0 failures, 0 errors; http://rafb.net/p/Wgvrzz20.html |
| 05:51:47 | brixen | I got it several times today, and only a rake clean build fixed it |
| 05:51:53 | evan | btw, http://ci.rubini.us is live. |
| 05:51:54 | brixen | didn't have time to debug |
| 05:52:12 | evan | i've got it running incremental on linux on the macmini |
| 05:52:26 | brixen | evan: what os for linux? |
| 05:52:31 | evan | ubuntu |
| 05:52:31 | brixen | or distro |
| 05:52:34 | brixen | k |
| 05:52:37 | evan | the 8.whatever beta |
| 05:52:41 | brixen | k |
| 05:52:43 | evan | since tomorrow 8.real comes out |
| 05:52:54 | brixen | heh, just when I got 7.10 working |
| 05:52:58 | evan | :) |
| 05:53:49 | brixen | heh hardy heron |
| 05:53:55 | brixen | what will i be |
| 05:54:35 | benburkert leaves the room. | |
| 05:54:54 | brixen | hmm ff3 is default |
| 05:55:53 | benburkert enters the room. | |
| 05:57:08 | rubuildius_ppc | Evan Phoenix: 6eee6331d; 2091 files, 6669 examples, 23409 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/185976 |
| 05:58:06 | dfg59 | when i run a git format-patch where are the patch files placed? |
| 05:58:16 | wyhaines leaves the room. | |
| 05:58:25 | evan | dfg59: in the current directory |
| 05:58:33 | evan | dfg59: but you have to tell it how many patches to make |
| 05:58:37 | evan | easiest is to do |
| 05:58:40 | evan | git format-patch origin |
| 05:58:52 | dfg59 | should i specify the patch hash? |
| 05:58:54 | evan | which indicates it should generate patch files for all commits that aren't in origin |
| 05:58:54 | tarcieri | can't wait for Ubuntu Irascible Ibex |
| 05:58:57 | dfg59 | sorry, the commit hash |
| 05:59:06 | evan | dfg59: it's how far back |
| 05:59:09 | evan | not a particular one |
| 05:59:10 | evan | i think. |
| 05:59:13 | dfg59 | ah, i see |
| 05:59:27 | dfg59 | oh, right, it's the previous hash i have to specify, doh |
| 05:59:33 | brixen | tarcieri: is that I? |
| 05:59:42 | brixen | tarcieri: I mean, has that already been selected? |
| 05:59:56 | tarcieri | no |
| 05:59:56 | tarcieri | heh |
| 06:00:00 | brixen | heh |
| 06:00:18 | dfg59 | evan: that did the trick, thanks |
| 06:00:37 | evan | dfg59: np |
| 06:03:36 | Defiler | Awesome. I've found four kinds of method definitions that we don't handle correctly |
| 06:05:52 | evan | http://rubini.us/lh now redirects to lighthouse |
| 06:06:01 | evan | because the url for lighthouse is too damn long. |
| 06:06:14 | dfg59 | ok, ticket #513 has been created for a patch to File#join to deal with recursive arrays |
| 06:06:29 | brixen | evan: sweet |
| 06:07:39 | headius enters the room. | |
| 06:09:46 | brixen | dfg59: I've only briefly glanced at your patch, so this might be off base, but did you see RecursionGuard kernel/core/misc.rb? |
| 06:09:56 | headius | evening again |
| 06:10:03 | brixen | evening headius |
| 06:10:05 | dfg59 | brixen: yes, that seemed to be causing the issue |
| 06:10:13 | boyscout | 1 commit by Wilson Bilkovich |
| 06:10:14 | boyscout | * Add specs for nested method definitions and other complex scenarios; ff3756e |
| 06:10:16 | brixen | dfg59: ah ok |
| 06:10:26 | Defiler | evan: OK. I think that covers everything from today |
| 06:10:30 | dfg59 | brixen: RecursionGuard was raising the error as it would not allow flattening of recursive arrays |
| 06:10:35 | Defiler | evan: we fail 4 of those specs currently |
| 06:10:39 | evan | checking now. |
| 06:10:47 | brixen | dfg59: k |
| 06:11:08 | brixen | dfg59: I admit, I've never contemplated calling File.join on a recursive array :) |
| 06:11:22 | brixen | I wouldn't begin to know what behavior to expect |
| 06:11:26 | dfg59 | brixen: who has :) the behavior is even more bizarre |
| 06:11:31 | brixen | heh |
| 06:11:47 | headius | that was surprisingly fast |
| 06:11:48 | dfg59 | it essentially goes one level into the recursion then replaces the recursive element with the string '[...]' |
| 06:11:53 | headius | er, misfire |
| 06:12:19 | brixen | headius: 0 to patch in 3.49 minutes |
| 06:12:30 | headius | heheh |
| 06:12:36 | headius | I was talking about openjdk build |
| 06:12:41 | headius | took only about 30 min |
| 06:12:43 | brixen | oh nm then |
| 06:13:06 | evan | Defiler: ha! nice. |
| 06:13:13 | evan | class; class <<; def; def |
| 06:13:13 | brixen | let's hope we don't intend to compete with openjdk builds :) |
| 06:13:15 | evan | thats a good one. |
| 06:13:23 | brixen | oh god |
| 06:13:43 | evan | __add_method__ to the rescue! |
| 06:13:53 | brixen | goes to boggle |
| 06:14:07 | Defiler | brixen: See if you like what I did to that file, actually |
| 06:14:42 | Defiler | This file is a syntax highlighting hellscape |
| 06:14:48 | Defiler | Truly an editor test |
| 06:14:49 | agardiner | hehe |
| 06:15:13 | evan | that would be an awesome name for a code refactoring/viewing browser |
| 06:15:15 | evan | hellscope |
| 06:15:18 | Defiler | You would be surprised by how confused some editors get by simple invocations like: def a.foo(x = ($foo_self = self; nil)); 5 ;end |
| 06:15:59 | agardiner | so, tell me, is this correct for Rubinius? class A; class << self; self; end.should == Class; end |
| 06:16:08 | Defiler | yes |
| 06:16:17 | zenspider | simple? |
| 06:16:20 | agardiner | ok, cause that fails at present |
| 06:16:25 | evan | well |
| 06:16:27 | Defiler | yep |
| 06:16:30 | evan | .should be_kind_of(Class) |
| 06:16:35 | evan | it's a MetaClass object. |
| 06:16:41 | evan | which is a Class subclass |
| 06:16:50 | Defiler | in MRI it is == to the class |
| 06:16:51 | agardiner | sorry, my bad |
| 06:17:13 | agardiner | that should have been class A; class << self; self; end.*superclass*.should == Class; end |
| 06:17:13 | evan | no prob |
| 06:17:19 | agardiner | right? |
| 06:17:29 | evan | imp |
| 06:17:30 | evan | um |
| 06:17:31 | evan | no |
| 06:17:36 | evan | use .should be_kind_of() |
| 06:17:59 | evan | zenspider: make some changes to ci.rb |
| 06:18:10 | evan | i YAGNI'd the CGI_URL regex |
| 06:18:12 | Defiler | oh, huh. You are right. |
| 06:18:28 | Defiler | interesting. |
| 06:18:28 | evan | and changed the git url to the anonymous one for all operations. |
| 06:18:49 | agardiner | Defiler: who is right? :-S |
| 06:18:50 | Defiler | The self of the metaclass body and the self of the methods that get defined there.. that distinction is pretty interesting |
| 06:19:04 | zenspider | evan: yagni'd? |
| 06:19:07 | evan | removed. |
| 06:19:44 | Defiler | for example, this code passes on 1.8.6: http://rafb.net/p/nCXCSD56.html |
| 06:20:03 | evan | Defiler: yes, the methods aren't added to self. |
| 06:20:09 | zenspider | OK... I had that in there because we're really close to having a 100% generic git CI system |
| 06:20:10 | Defiler | right |
| 06:20:16 | zenspider | but if you want to yank it, that's fine |
| 06:20:17 | brixen | dfg59: ok, long day so bear with me: in if recursive_index, doesn't the 2nd assignment to clean_part[recursive_index] just overwrite the 1st? |
| 06:20:28 | evan | zenspider: people probably wont follow the URI convention anyway |
| 06:20:29 | zenspider | I need a new package name for miniunit |
| 06:20:33 | evan | zenspider: so they'd always override it |
| 06:20:35 | dfg59 | brixen: ok, so here's what happens |
| 06:20:52 | dfg59 | first, we need to replace the recursive element with the string '[...]' |
| 06:20:56 | Defiler | wall unit |
| 06:21:00 | zenspider | evan: so what changes do you want me to make?!? |
| 06:21:04 | evan | none |
| 06:21:06 | evan | just a heads up. |
| 06:21:08 | dfg59 | upon replacing it, we need to add one level of recursion, hence the second assignment |
| 06:21:20 | Defiler | zenspider: You should call it The Intimidator |
| 06:21:23 | zenspider | evan: you said make changes to ci.rb ? |
| 06:21:25 | dfg59 | i have no idea why those are the expected results, but that's what the spec wants and how MRI behaves |
| 06:21:25 | evan | i did |
| 06:21:27 | brixen | zenspider: I think that was a s/make/made/ :) |
| 06:21:31 | evan | zenspider: oh noo |
| 06:21:34 | zenspider | ah |
| 06:21:34 | evan | zenspider: i said i made changes. |
| 06:21:56 | evan | probably my typelexia again |
| 06:22:46 | zenspider | so, I've added mini/spec.rb and mini/mock.rb to mini/test.rb... and it all comes in at < 1000 loc including tests (I need to write some for spec)... |
| 06:22:49 | dfg59 | so, yes, we are replacing the first assignment, but with itself, which now has the string rather than the recursive element... confusing to type :) |
| 06:22:54 | zenspider | so I can't call it miniunit anymore |
| 06:23:01 | zenspider | I was thinking "mini de sade" |
| 06:23:07 | brixen | dfg59: heh, confusing to parse the code |
| 06:23:09 | zenspider | to go with the vlad theme / precident |
| 06:23:13 | rubuildius_amd64 | Wilson Bilkovich: ff3756e17; 2091 files, 6673 examples, 23401 expectations, 0 failures, 0 errors; http://rafb.net/p/jiBe3j29.html |
| 06:23:15 | brixen | dfg59: I'll look at it in the debugger |
| 06:23:32 | rubuildius_ppc | Wilson Bilkovich: ff3756e17; 2091 files, 6675 examples, 23427 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/185993 |
| 06:23:39 | Defiler | minihorde |
| 06:23:55 | zenspider | haha |
| 06:24:03 | zenspider | I kinda like that |
| 06:24:06 | dfg59 | brixen: k, let me know if it is too "clever" and i can take another cut. tried to refactor it as much as possible, it's just tricky dealing with the recursive references, hence the necessity to dup |
| 06:24:12 | zenspider | could have a good logo too |
| 06:24:19 | brixen | precedent? |
| 06:24:24 | brixen | heh |
| 06:24:49 | brixen | ribs zenspider for ribbing evan about spelling |
| 06:25:06 | evan | nah, it's cool. |
| 06:25:12 | evan | my spelling is terrible. |
| 06:25:21 | evan | i can't even sound out words. |
| 06:25:30 | brixen | heh |
| 06:25:30 | evan | it seems to be a skill my brain just can't process. |
| 06:25:37 | brixen | hooked on phonics |
| 06:25:41 | evan | never worked! |
| 06:25:46 | evan | i can read and speak fine. |
| 06:25:59 | zenspider | I've always had a hard time with e/i |
| 06:26:07 | lopex enters the room. | |
| 06:26:27 | zenspider | esp when I'm thinking 4-5 words ahead of the fingers |
| 06:26:36 | evan | the spelling part of my brain seems to be sub let to the spacial memory portion, since i can tell you the layout of hotel rooms I said in years ago. |
| 06:26:51 | evan | stayed |
| 06:26:52 | brixen | hah |
| 06:26:53 | evan | see! |
| 06:26:54 | dfg59 | heh |
| 06:27:10 | Defiler | evan: So, tell me if this is naïve, but it seems like we just aren't setting the proper StaticScope for the current CompiledMethod when class << self comes along |
| 06:27:14 | brixen | well, laughter is supposed to be great for your health |
| 06:27:20 | brixen | I'm getting a good dose today |
| 06:27:20 | evan | Defiler: nice unicode. |
| 06:27:26 | evan | brixen: :) |
| 06:27:36 | evan | Defiler: thats exactly right. |
| 06:27:51 | Defiler | OK, so it really is one thing to fix instead of two |
| 06:28:00 | evan | very likely. |
| 06:28:02 | evan | well |
| 06:28:15 | evan | i think that the static scope inside instance_eval has to be adjusted too |
| 06:28:41 | headius leaves the room. | |
| 06:28:56 | Defiler | So, we need an "adjust static scope to be metaclass" thing that they both can use. |
| 06:29:04 | evan | actually! |
| 06:29:15 | evan | we just need to define MetaClass#__add_method__ |
| 06:29:15 | Defiler | Presumably you added this three months ago |
| 06:29:16 | evan | done and done. |
| 06:29:23 | Defiler | oh hoh |
| 06:29:30 | evan | since inside class << self, it's an instance of MetaClass |
| 06:29:39 | Defiler | So it's getting called there but using the superclass impl? |
| 06:29:42 | evan | it just needs to always add methods to itself if asked. |
| 06:29:59 | evan | yeah |
| 06:30:14 | Defiler | so if I defined that method to do "puts lol; super" it would work? |
| 06:30:25 | evan | actually.. |
| 06:30:28 | evan | why doesn't this work? |
| 06:30:35 | evan | because thats already happening. |
| 06:30:58 | Defiler | Good question |
| 06:31:00 | evan | MetaClass#__add_method__ is really Module#__add_method__ |
| 06:31:02 | Defiler | I am listening to this right now, and it helps |
| 06:31:04 | evan | which adds methods to itself. |
| 06:31:05 | Defiler | http://darklyrics.com/lyrics/doomsword/mynamewillliveon.html#2 |
| 06:31:24 | zenspider | doomsword?!? |
| 06:31:30 | evan | hey, you should make us a rubinius mixtap |
| 06:31:30 | Defiler | doomsword is the best |
| 06:31:33 | evan | mixtape |
| 06:31:35 | Defiler | oh good idea |
| 06:31:37 | evan | of your favorite music. |
| 06:31:52 | zenspider | omg how gay |
| 06:31:55 | evan | mixtape == zip of mp3/flac |
| 06:31:57 | Defiler | I went through the other day and assigned star ratings to everything tagged 'epic metal' or 'doom metal' in my library |
| 06:32:06 | zenspider | it's like death metal "artists" never pass 13 |
| 06:32:07 | evan | zenspider: thanks drama fag. |
| 06:32:14 | Defiler | So I can now use MATH to determine which is the best doom metal album |
| 06:32:22 | zenspider | makes me a fucking authority |
| 06:32:26 | evan | true |
| 06:32:42 | evan | abby needs black eye liner, whats the best? |
| 06:32:42 | evan | :) |
| 06:32:45 | zenspider | Defiler: have you seen black mask? |
| 06:32:49 | zenspider | jet li |
| 06:32:54 | Defiler | Yeah.. terrible, right? |
| 06:33:10 | zenspider | actually I loved black mask. tre campy but good |
| 06:33:21 | zenspider | but... black mask 2!!! now THERE is a movie |
| 06:33:27 | evan | hahah |
| 06:33:32 | evan | i've heard about this movie |
| 06:33:34 | evan | from you I think. |
| 06:33:35 | zenspider | we had bad movie night at my house and we watched with our jaws agape |
| 06:34:06 | zenspider | it is JUST like if two ten year old boys were sitting there writing the script going "and THEN ..." back and forth to each other |
| 06:34:08 | evan | Defiler: ok, test 1, class; class <<; def works properly |
| 06:34:21 | zenspider | I was reminded of it by doomsword... same fucking thing |
| 06:34:24 | evan | i can call T.thing |
| 06:34:50 | Defiler | Oh, so.. |
| 06:34:52 | brixen | agardiner: Kernel.debugger broke :( |
| 06:35:05 | agardiner | ohoh |
| 06:35:05 | brixen | agardiner: is it deprecated? should I use breakpoint ? |
| 06:35:07 | Defiler | what if it is the case that def foo resets the scope? |
| 06:35:14 | Defiler | So that the next def in the body has the wrong scope? |
| 06:35:22 | evan | i think thats what it is. |
| 06:35:23 | Defiler | Because you are right, class << self; def blah... works fine |
| 06:35:25 |