Show enters and exits. Hide enters and exits.
| 00:02:40 | dewd enters the room. | |
| 00:02:47 | Defiler | evan: Yeah. Not knowing how to read some kanji is brutal for getting around |
| 00:02:54 | drbrain | do we honestly care about "IO.new emits a warning if given a block FAILED"? |
| 00:03:07 | Defiler | evan: You can get between large stops using only English signage, but it fails quickly after that |
| 00:03:11 | evan | drbrain: thats bizarre. |
| 00:03:26 | evan | drbrain: leave it in, but i'd say we don't care |
| 00:03:31 | drbrain | it's an anti-newb thing |
| 00:03:31 | Defiler | and you won't be able to read the schedule boards for some destinations, and will need to see the office |
| 00:03:51 | Defiler | but I know people who don't speak any Japanese that have had perfect success with the random office people |
| 00:03:55 | Defiler | which is good |
| 00:03:57 | kw leaves the room. | |
| 00:04:09 | evan | i'll be a giant white man, so hopefully that will help |
| 00:04:19 | manveru | ^^ |
| 00:04:20 | kw enters the room. | |
| 00:04:32 | Defiler | I'm not sure that ever helps in Japan :) |
| 00:04:36 | evan | help with them expecting me to not speak japanese, that is. |
| 00:04:36 | boyscout | Commands I know: action, help, save!, say, update_git |
| 00:04:38 | Defiler | but it can be a fun role to play |
| 00:04:43 | evan | boyscout: fuck you. |
| 00:04:53 | Defiler | haha |
| 00:05:02 | evan | i'm gutting boyscout soon. |
| 00:05:04 | mkrauskopf leaves the room. | |
| 00:05:06 | manveru | [2008-05-15 08:04:06] ERROR #<NameError: uncaught throw `set $KCODE to "UTF8".'> |
| 00:05:08 | manveru | [2008-05-15 08:04:06] ERROR kernel/core/throw_catch.rb:77:in `throw' |
| 00:05:14 | manveru | yay |
| 00:05:23 | manveru | cleans his torturing tools |
| 00:05:26 | evan | manveru: how did you get that? |
| 00:05:46 | Defiler | Nice error |
| 00:05:51 | manveru | evan: http://rubyforge.org/projects/ya2yaml |
| 00:06:00 | zenspider | YAY for torturing tools! |
| 00:06:02 | drbrain | that looks like Logger output |
| 00:06:11 | evan | manveru: oh cool! |
| 00:06:28 | evan | we should make a "Testing under Rubinius" website badge :) |
| 00:06:29 | manveru | i use ya2yaml for localization in ramaze |
| 00:06:39 | manveru | so that's logging output from ramaze |
| 00:06:55 | Defiler | zenspider: Oh, so.. how hard will it be to get heckle running on rubinius? |
| 00:06:55 | wmoxam leaves the room. | |
| 00:07:00 | manveru | but it's some of the nastiest code you can find |
| 00:07:07 | Defiler | zenspider: I've recently been surprised by how many things use it |
| 00:07:21 | djwhitt | evan: you don't need to gut boyscout. just pass it a '-a' on the command line |
| 00:07:29 | evan | whats -a do? |
| 00:07:32 | manveru | evan: http://p.ramaze.net/1389 |
| 00:07:59 | djwhitt | stops it from responding to things that aren't private messaged to it |
| 00:08:09 | djwhitt | default is to respond to everything for some reason |
| 00:08:14 | rubuildius_amd64 | Eric Hodel: 578a29f5c; 2108 files, 6760 examples, 24961 expectations, 0 failures, 0 errors |
| 00:08:40 | evan | djwhitt: ah! |
| 00:08:51 | zenspider | Defiler: how many things use heckle?!? |
| 00:09:02 | Defiler | zenspider: rspec for one =( |
| 00:09:10 | zenspider | what? |
| 00:09:16 | zenspider | whoa |
| 00:09:20 | Defiler | We should look at the gem repo for things that depend on it |
| 00:09:31 | rubuildius_ppc | Eric Hodel: 578a29f5c; 2108 files, 6891 examples, 25170 expectations, 0 failures, 0 errors |
| 00:09:32 | rubuildius_ppc | Commands I know: action, help, save!, say, update_git |
| 00:09:51 | zenspider | Defiler: I just need to write a simple auto-fallback layer to ruby_parser so that things that fail to use ParseTree will use ruby_parser cleanly |
| 00:09:58 | Defiler | Boyscout is always prepared to answer un-asked questions |
| 00:10:16 | Defiler | zenspider: Oh, good idea |
| 00:10:23 | manveru | giving boyscout a prefix for commands may help ;) |
| 00:10:27 | evan | manveru: yeah |
| 00:10:28 | zenspider | I really want those fucking bots to shut up |
| 00:10:41 | manveru | wow... |
| 00:10:44 | brixen | hehe |
| 00:10:47 | manveru | now it's even more interesting |
| 00:10:50 | zenspider | Defiler: that way things will still work on 1.9, as long as they're not dependng on PT to get proc sexps |
| 00:11:08 | drbrain | this is why we have no bots in #ruby-lang, except corundum |
| 00:11:12 | manveru | evan: http://p.ramaze.net/1390 |
| 00:11:25 | zenspider | who only speaks when spoken to |
| 00:11:37 | zenspider | that's the important part |
| 00:11:39 | evan | manveru: thats odd. |
| 00:11:39 | drbrain | I have beaten corundum with a stick, and it has learned its proper place in the order of things |
| 00:11:49 | zenspider | heh |
| 00:11:54 | evan | i never wanted boyscout to speak unless spoken to |
| 00:11:58 | evan | let me restart him. |
| 00:12:07 | boyscout leaves the room. | |
| 00:12:14 | zenspider | Defiler: what's the priority on the heckle stuffs? |
| 00:12:23 | djwhitt | cremes, cremes_: whenever you get a chance add a '-a' to the launch.rb line in bot_nanny.sh and restart your bot |
| 00:12:27 | manveru | tries less evil syntax |
| 00:12:42 | context leaves the room. | |
| 00:12:57 | boyscout enters the room. | |
| 00:13:03 | evan | say nothing |
| 00:13:03 | rubuildius_ppc | nothing |
| 00:13:13 | evan | ok, so only one bot needs to be fixed now. |
| 00:13:15 | djwhitt | cremes will get that soon |
| 00:13:27 | evan | djwhitt: thanks for the tip |
| 00:13:36 | djwhitt | evan: no prob |
| 00:13:47 | zenspider | ARGH... git is tripping up on the mspec dir again |
| 00:14:00 | evan | zenspider: i think i know why |
| 00:14:05 | evan | run 'rake git:pull' again |
| 00:14:40 | Defiler | zenspider: Low.. I've just been editing code that requires it |
| 00:14:48 | Defiler | zenspider: I was just wondering if it were trivial or something |
| 00:15:11 | zenspider | not exactly trivial, but not too hard |
| 00:15:34 | Defiler | hpricot is more useful.. I may try that tonight, actually |
| 00:15:59 | zenspider | another thing that'd help is if PT and friends all return the result piped through UnifiedRuby so they all have similar and clean sexps |
| 00:17:46 | manveru | ooh |
| 00:17:51 | manveru | my bad |
| 00:18:04 | boyscout | 1 commit by Evan Phoenix |
| 00:18:05 | boyscout | * Run spec:update AFTER git:update, not before; 9ee378d |
| 00:18:22 | evan | zenspider: that hopefully should clear up mspec showing up as modified. |
| 00:18:38 | manveru | of course "abc "UTF8" foo" is gonna fail :) |
| 00:18:46 | evan | manveru: :D |
| 00:18:54 | manveru | but it should show the correct position |
| 00:20:01 | manveru | anyway |
| 00:20:14 | evan | was it showing the wrong position? |
| 00:20:15 | manveru | $KCODE = 'u' should set $KCODE = 'UTF8' |
| 00:20:24 | manveru | and not $KCODE = 'UTF-8' |
| 00:20:26 | evan | KCODE needs to be a hooked global |
| 00:20:58 | manveru | http://p.ramaze.net/1390 points to $KCODE, not to UTF8 |
| 00:21:44 | evan | ah ah |
| 00:21:45 | evan | hm. |
| 00:21:56 | evan | the column calculator is clearly off. |
| 00:22:09 | zenspider | evan: cool. thanks |
| 00:22:22 | manveru | looks for $KCODE specs |
| 00:22:37 | evan | we definitely need some i'll bet |
| 00:22:42 | evan | i have no clue what $KCODE influences |
| 00:22:48 | stepheneb enters the room. | |
| 00:23:08 | Defiler | all kinds of crap |
| 00:23:14 | lopex leaves the room. | |
| 00:23:16 | tarcieri | the behavior of String#each_char ? |
| 00:23:18 | manveru | yeah, pretty salady |
| 00:23:26 | manveru | regular expressions |
| 00:23:26 | Defiler | tarcieri: Interestingly, no |
| 00:23:32 | manveru | allowed literals in code |
| 00:23:37 | Defiler | mostly regexp yeah |
| 00:23:38 | evan | String and Regexp i'd think |
| 00:23:57 | Defiler | anything that updates last_match kinds of crap as well |
| 00:24:00 | Defiler | potentially |
| 00:24:19 | manveru | for example |
| 00:24:34 | manveru | $KCODE = 'u'; あ = 1; あ #=> 1 |
| 00:25:03 | evan | that seems mainly the parser |
| 00:25:13 | evan | does the parser see into setting of $KCODE? |
| 00:26:05 | Defiler | looks like it |
| 00:26:12 | Defiler | static int regx_options refers to it |
| 00:27:02 | Defiler | and it looks like that is used for literal regexps |
| 00:27:18 | joachimm_ leaves the room. | |
| 00:27:36 | stepheneb_ enters the room. | |
| 00:27:53 | stepheneb leaves the room. | |
| 00:27:53 | manveru | it's a shame :| since $KCODE is completely useless in 1.9 |
| 00:28:24 | rubuildius_amd64 | Evan Phoenix: 9ee378da5; 2108 files, 6760 examples, 24961 expectations, 0 failures, 0 errors |
| 00:28:35 | manveru | should check the status of the rbyaml project |
| 00:28:35 | Defiler | Yeah. We're going to throw it away when we become ruby 2.0, I guess |
| 00:28:42 | Defiler | manveru: utter failure |
| 00:28:52 | manveru | oh? |
| 00:28:53 | evan | i wonder |
| 00:29:01 | evan | could we wire in kcode as an overlay? |
| 00:29:05 | manveru | Defiler: it throws errors when set in 1.9 |
| 00:29:10 | Defiler | evan: So, what we should do is this.. |
| 00:29:16 | evan | as an 'advise' overlay of methods |
| 00:29:21 | Defiler | evan: store the encoding as a flag on staticscope |
| 00:29:29 | Defiler | and then implement $KCODE as an emulator on top of that |
| 00:29:33 | manveru | or no, it issues a warning |
| 00:29:54 | Defiler | Since $KCODE is trying to emulate lexical encodings |
| 00:30:03 | Defiler | Why not just build what it is trying to fake |
| 00:30:12 | evan | is $KCODE per file? |
| 00:30:15 | Defiler | and it will make 1.9 encoding compatibility super easy |
| 00:30:17 | manveru | no |
| 00:30:20 | evan | or per context, like $~ |
| 00:30:20 | Defiler | yes |
| 00:30:27 | Defiler | well, yes and no |
| 00:30:30 | Defiler | it's thread local, I believe |
| 00:30:36 | manveru | checks |
| 00:30:57 | manveru | Defiler: it's global |
| 00:30:59 | Defiler | If we have encoding on staticscope, that gets us per-file and per-whatever-we-want encoding options, it seems to me |
| 00:31:08 | Defiler | It's thread local, am I almost 100% sure |
| 00:31:17 | evan | doesn't look like it |
| 00:31:22 | evan | $KCODE calles kcode_setter |
| 00:31:23 | evan | in C |
| 00:31:24 | Defiler | wow |
| 00:31:30 | dewd leaves the room. | |
| 00:31:35 | evan | which calls rb_set_kcode in re.c |
| 00:31:44 | drbrain | Defiler: it is global |
| 00:31:48 | evan | which manipulates the state of some globals C variables |
| 00:31:51 | manveru | manveru@sigma ~ % ruby -e 'p [$KCODE, Thread.new{ $KCODE = "u" }, $KCODE]' |
| 00:31:53 | manveru | ["NONE", #<Thread:0x2b5c0f428e98 dead>, "UTF8"] |
| 00:32:12 | Defiler | Madness |
| 00:32:20 | manveru | "This is " >> |
| 00:32:36 | Defiler | $KCODE = 'j' is the only troublesome one |
| 00:32:36 | rubuildius_ppc | Evan Phoenix: 9ee378da5; 2108 files, 6891 examples, 25170 expectations, 0 failures, 0 errors |
| 00:32:49 | Defiler | Because we can make our default encoding UTF-8 and be ascii compatible |
| 00:33:08 | Defiler | thus removing 99% of the reason anyone ever sets KCODE |
| 00:33:17 | manveru | hmm |
| 00:33:40 | evan | $KCODE seems to only change regexs |
| 00:33:42 | manveru | that would be like configuring ruby --with-default-kcode=KCODE=UTF8 |
| 00:33:46 | evan | as far as I can tell |
| 00:34:06 | Defiler | manveru: I personally already do that, but we could be more specific with it if it is the wired-in default |
| 00:34:19 | manveru | evan: not only |
| 00:34:44 | evan | i can't see where anything uses the flags it sets |
| 00:34:46 | evan | other than regex |
| 00:34:55 | manveru | ruby -e 'p "あ"' |
| 00:34:57 | manveru | "\343\201\202" |
| 00:34:58 | drbrain | jcode.rb? |
| 00:34:59 | boyscout | 1 commit by Eric Hodel |
| 00:35:00 | boyscout | * Remove trailing whitespace; 6d087b5 |
| 00:35:18 | manveru | if you set $KCODE = 'u' you get "あ" back |
| 00:35:50 | Defiler | My assertion is that nobody ever wants that to print \343\201\202 |
| 00:35:52 | drbrain | neat |
| 00:35:54 | manveru | so it does influence inspect |
| 00:35:59 | Defiler | and therefore we will not break anything by just not doing that |
| 00:36:03 | drbrain | ruby -Ku -e ... |
| 00:36:26 | Defiler | I'm sorry, I meant $KCODE = 's' |
| 00:36:31 | drbrain | Defiler: what does it do to the String stuff that looks at mbchar? |
| 00:36:32 | Defiler | but you get hte idea |
| 00:36:57 | manveru | hmh |
| 00:36:59 | Defiler | drbrain: like what? |
| 00:37:11 | manveru | i guess we just should default to UTF8 |
| 00:37:31 | Defiler | That's my vote |
| 00:37:31 | manveru | programs that require the japanese variants have to set them explicitly anyway |
| 00:37:41 | Defiler | default ascii is ridiculous at this point |
| 00:37:51 | Defiler | particularly since utf-8 is compatible |
| 00:37:57 | drbrain | upcase! checks |
| 00:38:02 | manveru | yeah |
| 00:38:12 | drbrain | and friends |
| 00:38:12 | evan | drbrain: checks what? |
| 00:38:14 | evan | kcode? |
| 00:38:15 | Defiler | Again, nobody ever wants upcase to NOT check |
| 00:38:21 | manveru | anyway, i'm out, have fun :) |
| 00:38:23 | Defiler | So the MRI behavior there is just a hack |
| 00:38:28 | Defiler | and we can just make a sane upcase |
| 00:38:30 | drbrain | checks for multibyte characters |
| 00:38:43 | evan | yeah |
| 00:38:48 | evan | but it does all that independent of KCODE |
| 00:38:53 | Defiler | calling upcase on a utf8 string withot kcode = u set is always a bug |
| 00:39:00 | drbrain | the rest of the mbchar checks are in regex.c, with some in parse.c |
| 00:39:12 | enebo leaves the room. | |
| 00:39:16 | drbrain | ok, you have swayed me |
| 00:39:35 | Defiler | I think we should give it a shot and fix it if it breaks |
| 00:39:45 | Defiler | Rather than steering clear of what seems like the right way to implement a language in 2008 |
| 00:40:27 | Defiler | $KCODE is particularly bizarre because it seems like it should be a 'parse time' directive |
| 00:40:37 | Defiler | but it is runtime |
| 00:41:01 | headius leaves the room. | |
| 00:42:19 | evan | so long as we don't break stuff that depends on the MRI behavior |
| 00:42:25 | smparkes enters the room. | |
| 00:43:11 | zenspider | seconded... it still needs compatibility with old code |
| 00:43:16 | rubuildius_amd64 | Eric Hodel: 6d087b592; 2108 files, 6760 examples, 24961 expectations, 0 failures, 0 errors |
| 00:45:38 | Defiler | Yeah.. but preferably compatibility with real old code, not hypothetical old code ;) |
| 00:47:45 | rubuildius_ppc | Eric Hodel: 6d087b592; 2108 files, 6891 examples, 25170 expectations, 0 failures, 0 errors |
| 00:48:29 | stepheneb_ leaves the room. | |
| 00:48:46 | evan | Defiler: thats fine. |
| 00:48:47 | stepheneb enters the room. | |
| 00:54:28 | benstiglitz leaves the room. | |
| 01:02:01 | benburkert enters the room. | |
| 01:07:02 | imajes leaves the room. | |
| 01:19:18 | evan | oh.. I love Frisky Dingo. |
| 01:23:57 | obiejuan enters the room. | |
| 01:29:13 | drbrain | I am in a maze of twisty little substring manipulations :( |
| 01:29:20 | tarcieri | all alike? |
| 01:29:29 | drbrain | no |
| 01:29:40 | tarcieri | then hopefully you can find your way out! |
| 01:34:10 | yipstar leaves the room. | |
| 01:35:02 | evan | anyone have any suggestions for hotels in tokyo? |
| 01:35:41 | yipstar enters the room. | |
| 01:37:06 | headius enters the room. | |
| 01:37:14 | evan | headius: where you staying in tokyo? |
| 01:37:23 | Booster enters the room. | |
| 01:38:11 | headius | Cerulean Tower, in Shibuya |
| 01:39:04 | evan | looks nice, perhaps i'll stay there |
| 01:39:12 | headius | yeah...bit spendy, but it's very nice |
| 01:39:24 | headius | and of course shibuya is pretty cool |
| 01:39:48 | drbrain | headius: does jruby pass all the File.fnmatch specs? |
| 01:39:55 | headius | I'll check |
| 01:39:58 | evan | it's just for one night |
| 01:40:04 | evan | so i'm not worried about the cost |
| 01:40:20 | evan | and want to stay somewhere where I can walk around |
| 01:40:26 | headius | yes |
| 01:40:39 | headius | we pass all fnmatch specs, assuming there are not guards stopping some from running |
| 01:40:41 | drbrain | thanks |
| 01:41:53 | drbrain | there shouldn't be |
| 01:41:59 | headius | evan: shibuya is the place, though akihabara is cool for a couple hours |
| 01:42:08 | headius | lrz is staying near shibuya |
| 01:42:10 | drbrain | somebody ported rubinius' fnmatch from jruby, and it fails one spec |
| 01:42:27 | evan | oh, i didn't realize he was going to be there |
| 01:42:29 | headius | drbrain: ahh...dunno when it would have been ported, but perhaps there were fixes since |
| 01:42:39 | drbrain | perhaps |
| 01:42:41 | headius | evan: yeah, he was tweeting about it a couple weeks ago |
| 01:42:50 | evan | ah |
| 01:43:12 | drbrain | I did a glance at your latest code, and it looks roughly as sane as the rubinius implementation |
| 01:43:14 | evan | flight to tokyo is cheap |
| 01:43:15 | evan | only $1k |
| 01:43:48 | headius | about $1700 from MSP round trip, but NWA isn't exactly one of the cheaper airlines |
| 01:43:56 | evan | yeah |
| 01:43:59 | evan | it was going to be $1200 |
| 01:44:14 | evan | but orbitz was like "actually, we found you a cheaper fare!" |
| 01:44:16 | evan | i was like "ok!" |
| 01:44:19 | headius | nice |
| 01:44:48 | headius | we usually fly NWA regardless because it's always direct (hub) and we have crazy mad frequent flier status now |
| 01:45:03 | evan | yep |
| 01:45:41 | evan | i'm working up, miles wise. |
| 01:46:03 | headius | yeah I bet |
| 01:46:17 | headius | need more international events |
| 01:46:34 | headius | I've got four trips for certain to EU left this year |
| 01:46:38 | headius | five if I do railsconf |
| 01:46:43 | evan | wow. |
| 01:47:05 | evan | they're really workin' ya, ain't they |
| 01:47:27 | jtoy enters the room. | |
| 01:47:34 | hoopy enters the room. | |
| 01:47:40 | headius | most are invited trips |
| 01:48:08 | headius | with the openjdk and invokdynamic and whatnot stuff ramping up I'm starting to do a bit of that as well |
| 01:48:33 | evan | nice. |
| 01:48:48 | evan | have they made contiunations work in dvm yet? |
| 01:49:06 | headius | hmm, I haven't updated lately...I heard it was done and working but not pushed yet |
| 01:49:59 | headius | looks like still not pushed |
| 01:50:26 | evan | just curious |
| 01:50:38 | headius | ok, I guess the answer is "yes" then :) |
| 01:50:38 | drbrain | I'm going to give up on fnmatch for today, it needs a fresh brain |
| 01:50:41 | evan | i'm curious what technique the decide on |
| 01:50:55 | headius | did you read john rose's post about it a while back? |
| 01:51:21 | evan | i think so |
| 01:51:22 | evan | url? |
| 01:51:27 | headius | http://blogs.sun.com/jrose/entry/continuations_in_the_vm |
| 01:51:31 | stepheneb leaves the room. | |
| 01:51:45 | headius | seems pretty setjmp to me |
| 01:51:56 | headius | kinda has to be |
| 01:52:12 | evan | yeah |
| 01:52:15 | evan | just curious. |
| 01:52:45 | headius | he seemed pretty confident it was doable, probably with reasonable perf....but security is an open question |
| 01:53:36 | jtoy leaves the room. | |
| 01:55:45 | yipstar leaves the room. | |
| 01:58:22 | ezmobius leaves the room. | |
| 02:03:44 | Booster leaves the room. | |
| 02:03:45 | hoopy_ leaves the room. | |
| 02:06:57 | jtoy enters the room. | |
| 02:16:06 | benburkert leaves the room. | |
| 02:16:35 | nicksieger leaves the room. | |
| 02:17:31 | nicksieger enters the room. | |
| 02:20:57 | ShayArnett leaves the room. | |
| 02:22:09 | wmoxam enters the room. | |
| 02:24:25 | VVSiz_ enters the room. | |
| 02:30:02 | dfg59 leaves the room. | |
| 02:30:09 | boyscout | 1 commit by Wilson Bilkovich |
| 02:30:10 | boyscout | * Move Module and Kernel versions of __add_method__ to MethodContext; 277caaf |
| 02:30:46 | Defiler | adding a method no longer passes through any code with a # HACK comment. Heh |
| 02:32:43 | VVSiz leaves the room. | |
| 02:37:07 | ShayArnett enters the room. | |
| 02:40:36 | rubuildius_amd64 | Wilson Bilkovich: 277caaffa; 2107 files, 6758 examples, 24959 expectations, 0 failures, 0 errors |
| 02:43:49 | rubuildius_ppc | Wilson Bilkovich: 277caaffa; 2107 files, 6889 examples, 25168 expectations, 0 failures, 0 errors |
| 02:45:39 | mernen enters the room. | |
| 02:47:55 | smparkes leaves the room. | |
| 02:50:00 | sambo leaves the room. | |
| 02:50:01 | moofbong enters the room. | |
| 02:55:52 | moofbong leaves the room. | |
| 02:57:44 | moofbong enters the room. | |
| 02:59:31 | wycats | drbrain: When I have multiple gem repos in my .gemrc it updates the metadata every time :( |
| 03:09:59 | trythil leaves the room. | |
| 03:10:03 | trythil enters the room. | |
| 03:11:12 | kw leaves the room. | |
| 03:18:50 | manveru | wycats: i guess there's only one cache, and once the first is fetched it's overwritten by the next one, which will trigger the first one to fetch again... |
| 03:20:06 | blakewatters_ leaves the room. | |
| 03:25:54 | blakewatters enters the room. | |
| 03:26:16 | trythil leaves the room. | |
| 03:29:47 | ezmobius enters the room. | |
| 03:31:58 | wycats | manveru: in other words, an unacceptable bug? |
| 03:32:26 | evan | how about an uncalledfor tone? |
| 03:32:38 | chillywilly | is rubinius "usable", i.e. can you actually replace the Matz VM with it |
| 03:32:43 | evan | chillywilly: no |
| 03:33:15 | chillywilly | ok |
| 03:37:41 | kw enters the room. | |
| 03:37:58 | kw leaves the room. | |
| 03:39:58 | manveru | chillywilly: when it is you'll hear for sure :) |
| 03:40:31 | manveru | in the meanwhile just try to run what you want to run and report any bugs you encounter |
| 03:40:40 | manveru | if you're lucky it will actually work |
| 03:42:05 | chillywilly | yea I am not much of a runbyist to tell you the truth :) |
| 03:42:09 | chillywilly | rubyist too |
| 03:43:00 | chillywilly | it's a very nice language...I have a pdf of the latest pickaxe book but I haven't been able to get through it all...recently I've been reading why's guide as it is also pretty entertaining |
| 03:44:01 | Defiler | manveru: Hrm. Good guess about the rubygems behavior. That's probably it. |
| 03:44:26 | headius leaves the room. | |
| 03:45:10 | manveru | chillywilly: alright, then just stick with normal ruby 1.8.6 for now |
| 03:48:57 | chillywilly | ok, well I am not a newb developer that is for sure...just was curious about the status of this project |
| 03:50:24 | mernen leaves the room. | |
| 03:50:29 | trythil enters the room. | |
| 03:51:08 | hoopy_ enters the room. | |
| 03:52:57 | therealadam leaves the room. | |
| 03:56:01 | rue | chillywilly: What were you thinking about using it for? Or are you more interested in the implementation side of it? |
| 03:56:41 | hoopy leaves the room. | |
| 03:59:06 | shame enters the room. | |
| 04:00:23 | chillywilly | well it just looked like a great project that had a nice community behind it to tell you the truth...so I suppose more implementation than anything :) |
| 04:00:33 | RyanTM leaves the room. | |
| 04:01:08 | dfg59 enters the room. | |
| 04:01:35 | RyanTM enters the room. | |
| 04:02:00 | trythil leaves the room. | |
| 04:02:50 | AndrewO enters the room. | |
| 04:06:03 | ShayArnett leaves the room. | |
| 04:07:16 | ShayArnett enters the room. | |
| 04:12:56 | anteaya leaves the room. | |
| 04:20:13 | kw enters the room. | |
| 04:24:16 | RyanTM leaves the room. | |
| 04:25:25 | benburkert enters the room. | |
| 04:27:05 | crafterm enters the room. | |
| 04:31:58 | rue | chillywilly: Heh :) I would actually recommend looking over the specs we have when you are learning Ruby |
| 04:32:22 | rue | And, of course, poke around the VM if you have C/C++-fu |
| 04:33:32 | crafterm | hi all |
| 04:33:36 | nicksieger leaves the room. | |
| 04:39:58 | dfg59 leaves the room. | |
| 04:47:20 | esomnie enters the room. | |
| 04:51:56 | rue | Hey, crafterm |
| 04:52:07 | crafterm | hi rue, hows it going mate? |
| 04:52:49 | lstoll enters the room. | |
| 05:10:39 | ezmobius leaves the room. | |
| 05:11:12 | ShayArnett leaves the room. | |
| 05:11:45 | yugui leaves the room. | |
| 05:11:47 | mediogre enters the room. | |
| 05:15:43 | obiejuan leaves the room. | |
| 05:23:52 | wmoxam leaves the room. | |
| 05:25:49 | headius enters the room. | |
| 05:28:05 | mapar enters the room. | |
| 05:28:45 | moofbong leaves the room. | |
| 05:33:59 | benburkert leaves the room. | |
| 05:40:29 | rue | crafterm: Slowly :) |
| 05:41:52 | brixen | drbrain: I ported jruby fnmatch. you can assign me the ticket if you want |
| 05:42:07 | brixen | drbrain: I know that VVSiz (pretty sure) added some new specs |
| 05:49:33 | AndrewO leaves the room. | |
| 05:53:05 | srbaker leaves the room. | |
| 05:57:43 | rubuildius_ppc leaves the room. | |
| 05:58:00 | rubuildius_ppc enters the room. | |
| 05:58:12 | cremes | djwhitt: added "-a" and restarted now |
| 06:08:05 | rubuildius_ppc leaves the room. | |
| 06:08:37 | rubuildius_ppc enters the room. | |
| 06:25:06 | kw leaves the room. | |
| 06:26:02 | wycats leaves the room. | |
| 06:29:53 | trythil enters the room. | |
| 06:30:44 | trythil_ enters the room. | |
| 06:30:44 | trythil leaves the room. | |
| 06:45:23 | wycats enters the room. | |
| 07:02:14 | Yurik enters the room. | |
| 07:11:06 | nemerle leaves the room. | |
| 07:12:00 | Skip enters the room. | |
| 07:12:00 | crafterm leaves the room. | |
| 07:30:53 | trythil_ leaves the room. | |
| 07:31:17 | trythil enters the room. | |
| 07:39:00 | yugui enters the room. | |
| 07:39:25 | Maledictus enters the room. | |
| 07:50:53 | trythil leaves the room. | |
| 07:52:13 | mkrauskopf enters the room. | |
| 07:55:18 | lstoll leaves the room. | |
| 07:57:22 | qwert666 enters the room. | |
| 08:14:39 | dewd enters the room. | |
| 08:19:38 | mkrauskopf leaves the room. | |
| 08:22:18 | thehcdreamer enters the room. | |
| 08:32:15 | dbussink | morning |
| 08:45:57 | Maledictus | good morning |
| 08:56:01 | imajes enters the room. | |
| 08:57:58 | octopod enters the room. | |
| 08:57:58 | radarek enters the room. | |
| 08:58:09 | mutle enters the room. | |
| 09:08:07 | mutle leaves the room. | |
| 09:08:50 | mutle enters the room. | |
| 09:09:05 | rue | Morning |
| 09:13:45 | dbussink | rue: did you test something with the new primitive hierarchy? |
| 09:14:55 | w1rele55 leaves the room. | |
| 09:17:16 | dbussink leaves the room. | |
| 09:26:59 | jtoy leaves the room. | |
| 09:27:12 | jtoy enters the room. | |
| 09:31:10 | Yurik leaves the room. | |
| 09:33:42 | w1rele55 enters the room. | |
| 09:37:08 | imajes leaves the room. | |
| 09:40:05 | mutle leaves the room. | |
| 09:40:14 | mutle enters the room. | |
| 09:42:10 | mkrauskopf enters the room. | |
| 09:47:52 | mapar leaves the room. | |
| 09:49:15 | mutle leaves the room. | |
| 09:49:52 | mutle enters the room. | |
| 09:53:23 | eule enters the room. | |
| 10:03:56 | NoKarma enters the room. | |
| 10:08:37 | wycats leaves the room. | |
| 10:09:18 | wycats enters the room. | |
| 10:10:55 | gnufied leaves the room. | |
| 10:23:51 | crafterm enters the room. | |
| 10:23:54 | crafterm leaves the room. | |
| 10:41:30 | Yurik enters the room. | |
| 10:46:49 | thehcdreamer_ enters the room. | |
| 10:55:23 | thehcdreamer leaves the room. | |
| 10:57:04 | lstoll enters the room. | |
| 11:03:56 | bleeder enters the room. | |
| 11:06:07 | danlucraf1 enters the room. | |
| 11:13:42 | jtoy leaves the room. | |
| 11:18:34 | blakewatters leaves the room. | |
| 11:31:22 | eule leaves the room. | |
| 11:34:10 | headius leaves the room. | |
| 11:34:19 | headius enters the room. | |
| 11:36:36 | headius leaves the room. | |
| 11:37:02 | radarek leaves the room. | |
| 11:37:52 | headius enters the room. | |
| 11:39:36 | headius leaves the room. | |
| 11:39:51 | headius enters the room. | |
| 11:40:16 | headius leaves the room. | |
| 11:40:40 | headius enters the room. | |
| 11:43:09 | headius_ enters the room. | |
| 11:43:09 | headius leaves the room. | |
| 11:43:52 | headius_ leaves the room. | |
| 11:50:41 | loop enters the room. | |
| 12:19:38 | bleeder | When trying to build the current version of rubinius, I get the following error: Fatal error in bootstrap/core: Unable to send initialize on #<FFI::NotFoundError> (NoMethodError) - anyone have any suggestions? Tried a lot, but it all seems to fail this way. |
| 12:21:32 | rue | bleeder: FFI issue.. should hopefully have better error messages there later today :) Which platform is this? |
| 12:23:42 | eule enters the room. | |
| 12:27:40 | bleeder | rue: I'm on a Powerbook G4 with MacOSX 10.4 |
| 12:35:50 | rue | bleeder: Sorry, wandering in and out. PPC? That error message usually means one of the platform functions does not exist |
| 12:37:18 | bleeder | rue: Yeah, PPC... hrmm... guess that means I gotta get hacking, eh? |
| 12:38:45 | rue | bleeder: Possibly.. first double-check that you do not have an old version of the libraries installed anywhere |
| 12:38:52 | mutle leaves the room. | |
| 12:39:30 | mutle enters the room. | |
| 12:41:09 | rue | bleeder: If that + `rake build` does not solve it, go to kernel/platform/ffi.rb and manually print the data out where a NotFoundError is being raised |
| 12:41:56 | bleeder | rue: I really doubt that I have the libraries installing, but I'm checking it at the moment... |
| 12:42:27 | bleeder | installed even |
| 12:45:30 | rue | Sure; the error message just indicates it could be something like that (that, or the system is just too fux0red from the error to run properly) |
| 12:46:57 | bleeder | rue: Nope, don't have it installed anywhere. Think I'll try with a fresh repo, and if it does the same, I'll take a look at kernel/platform/ffi.rb |
| 12:47:24 | anteaya enters the room. | |
| 12:48:48 | rue | Sounds good |
| 12:49:09 | rue | I am actually working on a (hopefully) better platform mechanism now |
| 12:49:32 | bleeder | rue: oh, nice :) |
| 12:53:38 | pluskid enters the room. | |
| 12:55:41 | RyanTM enters the room. | |
| 12:58:14 | bleeder | rue: Bad news is that it didn't work... good news is that my boss fell for the old "I'm not slacking off, my code is compiling" :D |
| 12:58:34 | rue | Hehe |
| 12:58:58 | rue | I suppose there is a bright side to not using Ruby (or having a boss who does not know any better) |
| 12:59:44 | bleeder | Hah, seems there is. |
| 13:15:12 | RyanTM leaves the room. | |
| 13:16:24 | RyanTM enters the room. | |
| 13:22:19 | NoKarma | can someone running windows/openbsd/linux do a favor for me? |
| 13:23:13 | NoKarma | I need the result of Math.atanh(1.0) and Math.atanh(-1.0) after loading the Complex library |
| 13:25:07 | scoopr | on my windows, I get Infinity and -Infinity |
| 13:25:17 | NoKarma | ok, thanks! |
| 13:26:48 | bleeder | Hrmm, this FFI stuff is quite puzzling... |
| 13:26:51 | bleeder | still no luck :/ |
| 13:33:21 | RyanTM leaves the room. | |
| 13:34:03 | RyanTM enters the room. | |
| 13:34:17 | rue | bleeder: Sorry, I am jumping ahead of myself here. Are you seeing the error when trying to initially build? |
| 13:36:39 | rue | If it only breaks after building whenever you try to run something, you should be able to add the manual output to ffi.rb, `rake build` and see that output when trying to run again |
| 13:37:20 | gnufied enters the room. | |
| 13:37:49 | rue | If it breaks while building, researching will involve man pages :/ |
| 13:38:13 | bleeder | rue: Yeah, it breaks while running rake build |
| 13:39:11 | rue | Does running rake with --trace show which file it is? |
| 13:45:56 | bleeder | rue: rake build --trace produces this output: http://pastie.caboo.se/197498 |
| 13:50:33 | rue | Well, I have great news for you if you like GDB |
| 13:51:48 | bleeder | ... |
| 13:52:08 | bleeder | *headdesk* |
| 13:52:59 | VVSiz | NoKarma: damn, Math.atanh(1.0) is different on Linux and Windows!!1 :) |
| 13:54:14 | VVSiz | Errno::EDOM: Numerical argument out of domain - on Linux. |
| 13:54:18 | VVSiz | Infinity - on Windows |
| 13:54:19 | VVSiz | :) |
| 13:54:43 | kw enters the room. | |
| 13:55:30 | NoKarma | VVSiz: damn |
| 13:55:42 | NoKarma | VVSiz: so Complex changes that behaviour too, grr! |
| 13:55:55 | bleeder | rue: Do tell though, I'll see what I can get out of it ;) |
| 13:56:14 | rue | bleeder: Heh, if you are familiar with PPC, it might be worthwhile to `grep -Rn 'attach_method'` kernel and see if you can spot any functions that are obviously wrong for the platform. OpenBSD has/had an issue with lchmod, for example |
| 13:57:41 | rue | bleeder: For GDB, you can just give `GDB=1` for the env |
| 13:57:43 | VVSiz | NoKarma: JRuby returns Infinity everywhere. Rubinius retuns EDM (on Linux) |
| 13:57:49 | VVSiz | fun! |
| 13:58:02 | NoKarma | meh |
| 13:58:09 | bleeder | rue: Ooh, nice. I'll toy around with it :) |
| 13:58:11 | rue | bleeder: Erm, s/attach_method/attach_function/ |
| 13:59:14 | krisps enters the room. | |
| 14:03:15 | Erlang00t1 enters the room. | |
| 14:03:19 | obiejuan enters the room. | |
| 14:11:45 | anteaya leaves the room. | |
| 14:13:17 | krisps leaves the room. | |
| 14:13:25 | AndrewO enters the room. | |
| 14:13:54 | kw leaves the room. | |
| 14:17:34 | webmat enters the room. | |
| 14:23:38 | edwardam leaves the room. | |
| 14:35:40 | eule leaves the room. | |
| 14:37:09 | kw enters the room. | |
| 14:40:52 | eule enters the room. | |
| 14:42:34 | eule leaves the room. | |
| 14:43:47 | obiejuan leaves the room. | |
| 14:45:55 | wmoxam enters the room. | |
| 14:48:35 | dctanner enters the room. | |
| 14:49:18 | bleeder | hrrmmm... this is rather, ehh... frustrating... |
| 14:51:21 | lstoll leaves the room. | |
| 14:58:23 | kw leaves the room. | |
| 14:59:35 | rue | bleeder: No luck I gather? |
| 15:00:03 | rue | We shall see if we can generate better errors to track it |
| 15:01:54 | bleeder | rue: Well, I've been gdb'ing a bit, and it seems to screw over after environment_load_machine(e, m); (shotgun/main.c:97) has been called, but that's the best I could gather... |
| 15:02:09 | NoKarma leaves the room. | |
| 15:02:48 | bleeder | hell of a way to start digging into rubinius, heh... |
| 15:07:01 | pluskid leaves the room. | |
| 15:10:41 | mutle leaves the room. | |
| 15:13:35 | enebo enters the room. | |
| 15:16:34 | bleeder leaves the room. | |
| 15:20:10 | mutle enters the room. | |
| 15:38:19 | krisps enters the room. | |
| 15:53:25 | shame leaves the room. | |
| 15:54:01 | anteaya enters the room. | |
| 16:06:50 | ShayArnett enters the room. | |
| 16:09:04 | Erlang00t1 leaves the room. | |
| 16:26:28 | benstiglitz enters the room. | |
| 16:28:55 | obiejuan enters the room. | |
| 16:32:24 | moofbong enters the room. | |
| 16:34:22 | JimMc leaves the room. | |
| 16:35:21 | rue | Hrm, I am going to write rake just_build shortly :P |
| 16:36:13 | Defiler | rake gimmie_dat_wallet |
| 16:38:24 | smparkes enters the room. | |
| 16:42:30 | lopex enters the room. | |
| 16:42:46 | trythil enters the room. | |
| 16:44:23 | rue | Hrm. Fatal error, "unable to send send on #<MetaClass>" |
| 16:45:51 | Defiler | I moved __add_method__ yesterday, so you'll want to make sure all old .rbc files are getting rebuilt |
| 16:46:58 | rue | Ah, nm. Untracked file is what it was |
| 16:58:06 | evan | morning. |
| 16:58:36 | rue | Evening |
| 16:58:43 | shame enters the room. | |
| 17:01:34 | gnufied leaves the room. | |
| 17:03:55 | rue | Design meeting is today, right? |
| 17:06:50 | evan | who organized it? |
| 17:06:56 | octopod leaves the room. | |
| 17:06:56 | evan | i don't have anything on my calendar |
| 17:07:03 | gnufied enters the room. | |
| 17:07:26 | octopod enters the room. | |
| 17:08:13 | TheProkrammer | Yeah it is, I think it was actually you evan ;) |
| 17:09:16 | TheProkrammer | [2008/04/30 19:07:03] <evan> ok, shall we push it forward one day |
| 17:09:18 | TheProkrammer | [2008/04/30 19:07:10] <evan> to the 15th/16th |
| 17:10:45 | dfg59 enters the room. | |
| 17:10:57 | evan | oh oh |
| 17:10:59 | evan | ruby design meeting? |
| 17:11:29 | evan | yeah |
| 17:11:32 | evan | thats today |
| 17:11:33 | evan | sorry |
| 17:11:37 | evan | i'm pre-coffee. |
| 17:11:59 | qwert666 leaves the room. | |
| 17:13:14 | binary42 leaves the room. | |
| 17:22:58 | rue | Administer coffee |
| 17:23:01 | anteaya leaves the room. | |
| 17:23:17 | anteaya enters the room. | |
| 17:24:19 | dbussink enters the room. | |
| 17:24:44 | evan | Defiler: *poke* |
| 17:25:38 | kw enters the room. | |
| 17:26:02 | rue | dbussink: Yes, have been working on it |
| 17:26:14 | rue | Basically done except for the debugging ;) |
| 17:27:14 | dbussink | rue: ah nice |
| 17:27:44 | thoughtfiz leaves the room. | |
| 17:30:26 | thehcdreamer_ leaves the room. | |
| 17:33:31 | dbussink | rue: in a committable state yet? |
| 17:33:49 | dfg59 leaves the room. | |
| 17:47:16 | rue | dbussink: Not quite, but http://pastie.org/197639 |
| 17:47:48 | evan | no |
| 17:47:49 | evan | please no |
| 17:47:51 | evan | no define_method. |
| 17:48:35 | evan | there is way way too much magic in there |
| 17:49:29 | evan | the entire append_features for one |
| 17:50:27 | evan | whats wrong with just having a POSIX superclass and OS specific subclasses? |
| 17:50:30 | evan | no magic |
| 17:50:32 | evan | ? |
| 17:51:11 | evan | i'm also very against the use of Base as a superclass name. |
| 17:51:20 | evan | sorry to trample on this code so much rue :/ |
| 17:51:35 | rue | This is called prototyping, it happens |
| 17:51:48 | joachimm_ enters the room. | |
| 17:52:19 | rue | The problem with POI is that the attaching must be delayed |
| 17:52:28 | evan | i don't see the need for Attachable at all |
| 17:52:32 | evan | whats the use case? |
| 17:53:14 | dfg59 enters the room. | |
| 17:54:01 | thoughtfiz enters the room. | |
| 17:54:32 | evan | ug |
| 17:54:36 | evan | is this just so you can include a class? |
| 17:56:47 | rue | No, it is for including modules. Use cases would be augmented functionality like extended file attributes, or some 32- vs. 64-bit functionality |
| 17:56:56 | evan | why is any of this needed? |
| 17:57:02 | evan | why can't you just include the module? |
| 17:58:35 | evan | i don't see why the attach_function is delayed |
| 17:58:57 | dbussink | how do we handle the use case of attaching a function in for example posix |
| 17:59:05 | dbussink | and then deattach it in for example openbsd |
| 17:59:11 | dbussink | this is the case with lchmod |
| 17:59:43 | rue | evan: 1) No #require in Core, 2) what happens when you load a class that attaches to Win32 methods on a Linux? |
| 17:59:44 | evan | is lchmod in POSIX? |
| 18:00:09 | dbussink | evan: well, it's in some set that is implemented by most unix like systems |
| 18:00:15 | smparkes leaves the room. | |
| 18:00:17 | evan | then it's not POSIX. |
| 18:00:21 | dbussink | true |
| 18:00:30 | evan | and thus should be in a module that can be included in OS's that have it. |
| 18:00:38 | evan | there is no need for the delaying |
| 18:00:54 | rue | dbussink: You would have class POSIX; attachable :lchmod, # rest of arguments; class OpenBSD < something; unattachable :lchmod; end |
| 18:01:09 | evan | rue: why would you load a class that attaches Win32 methods on a Linux? |
| 18:01:14 | mutle leaves the room. | |
| 18:01:32 | evan | no no |
| 18:01:32 | mutle enters the room. | |
| 18:01:39 | mutle leaves the room. | |
| 18:01:42 | evan | i think you're making this WAY more complicated than it is |
| 18:01:47 | rue | evan: class Win32; attach_function :zvhwGHndlUglWinFormFunc, # rest of it; end; RUBY_PLATFORM == 'linux' # What happens? |
| 18:01:50 | evan | forget all the attachable stuff |
| 18:02:01 | evan | it's not needed at all from the way I see it |
| 18:02:34 | evan | rue: you've completely forgot about the setup we worked out months ago |
| 18:02:44 | evan | which is that each platform has it's own platform/ directory |
| 18:02:51 | evan | and it's decided at compile time which one is loaded. |
| 18:02:53 | dfg59 leaves the room. | |
| 18:03:14 | evan | so that things not available on a platform are never attached |
| 18:03:30 | rue | How does that work for the stables? |
| 18:03:42 | evan | stables are going away. |
| 18:04:08 | evan | so fine. |
| 18:04:34 | trythil leaves the room. | |
| 18:04:40 | rue | Go have a sammich :) I am going to eat some oatmeal and we can try this again |
| 18:04:51 | evan | it's 10am. |
| 18:04:54 | evan | no sammich needed. |
| 18:05:01 | evan | i'm not irratable |
| 18:05:08 | trythil enters the room. | |
| 18:05:09 | evan | just concerned about over architecting. |
| 18:05:33 | rue | Alright. I will be back in 10 myself then. |
| 18:05:40 | evan | k |
| 18:06:03 | brixen | mmm oatmeal |
| 18:06:08 | brixen | is eating oatmeal too |
| 18:10:37 | dbussink | yay, inconsistencies! |
| 18:10:53 | dbussink | Bignum::mul and Fixnum::multiply in the new vm |
| 18:11:43 | dc_ leaves the room. | |
| 18:13:26 | dctanner enters the room. | |
| 18:16:39 | evan | they should be made consistent. |
| 18:17:17 | dbussink | working on that |
| 18:17:40 | dbussink | evan: there you go |
| 18:18:00 | evan | did you push? |
| 18:18:04 | dbussink | yeah |
| 18:18:08 | evan | boyscout doesn't report change no the cpp branch |
| 18:18:13 | evan | which sucks. |
| 18:18:31 | dbussink | pushed my stuff for fixnum => bignum overflow too yesterday |
| 18:18:47 | evan | sweet |
| 18:19:25 | dbussink | gonna build some stuff for fixnum + bignum, fixnum + float etc. |
| 18:20:44 | rue | Tasty oatmeal. Mm. |
| 18:22:13 | rue | evan: Magic will be as scarce as possible (by necessity, not a lot is loaded at that point.) This is a functionality prototype |
| 18:22:48 | evan | i don't think it's necessary |
| 18:23:19 | evan | the delayed loading is a work around for the assumption that all platform code is loaded, right? |
| 18:23:24 | evan | lets just change that assumpiton |
| 18:23:28 | evan | thats a lot easier that working around it |
| 18:23:34 | evan | and since we're the ones that set those, we can change them |
| 18:25:38 | brixen | yeah, I think extending our platform configuration utilities is the way to go |
| 18:25:47 | brixen | load time is (should be) a straight shot |
| 18:26:18 | brixen | but this means we need to specify somewhere that kernel/platform/win32 dir is loaded |
| 18:26:19 | evan | and simple. |
| 18:26:22 | brixen | for example |
| 18:26:51 | evan | at rubinius build time, there just have to be something that builds a .load_order.txt file |
| 18:26:52 | rue | Sure, that would work for the majority of it. The only problematic case is the lchmod() that came up. While I agree that it should probably not go in POSIX, we could probably use a CommonNotPosixStuff since most other platforms DO have lchmod(). There, it would be a nice option to just drop the anomalous one from OpenBSD instead of having to specifically include it in all the other N platfroms |
| 18:26:57 | rue | Platforms even. |
| 18:26:57 | evan | that indicates which files to load |
| 18:27:44 | evan | we have have lchmod in a seperate file common_not_posix.rb |
| 18:27:52 | brixen | hrm, but he has a point |
| 18:28:05 | brixen | how will we exclude for bsd on common_not_posix.rb? |
| 18:28:05 | evan | if everyone but OpenBSD has it |
| 18:28:14 | evan | then the POSIX module should deal with that. |
| 18:28:27 | rue | I think the child should |
| 18:28:48 | brixen | perhaps I missed it, but why not attach a stub that raises if it could not attach to the function? |
| 18:28:56 | Defiler | Yeah.. "unless openbsd?" sounds like a fine way to handle that one case to me |
| 18:28:59 | brixen | i.e. raises when you call the stub? |
| 18:29:05 | dctanner leaves the room. | |
| 18:29:10 | Defiler | We should only do something rspecy if there are a bunch of examples |
| 18:29:18 | Defiler | That's my new word for 'complicated' |
| 18:29:22 | evan | hah |
| 18:29:23 | brixen | hehe |
| 18:29:35 | dbussink | brixen: i've suggested the stub too |
| 18:29:43 | brixen | but conditional code litterd in posix.rb etc is not that pretty |
| 18:29:43 | evan | i can see why having the logic in the child, not POSIX is good |
| 18:29:53 | evan | because otherwise, POSIX will be littered with logic for platforms |
| 18:29:58 | rue | Right |
| 18:30:04 | dbussink | that's what we want to prevent |
| 18:30:05 | evan | which is against the whole point of this delegation scheme |
| 18:30:46 | brixen | but if we autogen'd the attach_function stuff at compile time rather than hand-writing it, wouldn't that work? |
| 18:30:51 | evan | but i think the best way to do this is to be strict |
| 18:30:55 | brixen | something like we have struct gen now |
| 18:30:59 | rue | In a perfect world we would all run plan9 but I think it will pay off to take this into account now. |
| 18:31:00 | evan | if lchmod isn't posix, it shouldn't be in POSIX |
| 18:31:33 | evan | as we figure out which platforms have what, we refactor modern-but-not-posix functions into ModernUnix |
| 18:31:42 | rue | Agreed, lchmod should not be in POSIX. But should it be separately included to every platform that is not OpenBSD or should it be excluded in OpenBSD and automatically included everywhere else. |
| 18:32:37 | evan | well |
| 18:32:39 | rue | Let us assume that lchmod is in CommonNonPosixFunctions for the purposes of this exercise |
| 18:32:52 | evan | what should happen if someone tries to use lchmod on OpenBSD? |
| 18:33:04 | evan | should code be able to detect that they don't and use a different function? |
| 18:33:08 | evan | or should it raise an exception? |
| 18:33:25 | evan | i think the answer to that will help define this |
| 18:33:25 | rue | Whatever you like |
| 18:33:34 | evan | i mean, whats the MRI behavior |
| 18:33:57 | rue | Say, class OpenBSD; unattachable :lchmod; def self.lchmod; # Emulate lchmod somehow; end; end |
| 18:34:04 | dbussink | mri raises an exception if you call the method |
| 18:34:11 | Defiler | raise NotImplementedError? |
| 18:34:14 | dbussink | yeah |
| 18:34:19 | evan | ok |
| 18:34:20 | dbussink | or something like that |
| 18:34:25 | dbussink | it's different from NoMethodError at least |
| 18:34:27 | rue | FFI stuff is typically not MRI interface |
| 18:34:28 | dbussink | it has a specific exception |
| 18:34:40 | brixen | so, stub methods would work best, just don't raise if you can't find it when trying to attach |
| 18:34:44 | evan | well, as dbussink and others have said, we could have a special version of attach_function thats used in the platform code |
| 18:34:53 | Defiler | Sounds like we should just override the method in the OpenBSD platform file |
| 18:34:58 | evan | that installs a method that raises NotImplemententError if called |
| 18:35:09 | evan | i'd prefer it be a special version for platform though |
| 18:35:11 | evan | not a generic version |
| 18:35:20 | evan | because i don't think everyone will want that behavior |
| 18:35:24 | evan | for example in OpenSSL |
| 18:35:29 | brixen | so, in general code, it'd fail to attach, yeah |
| 18:35:38 | Defiler | Yeah, that's a good idea |
| 18:35:38 | evan | the normal version of attach_function should contain to raise an exception if the function doesn't exist |
| 18:35:53 | Defiler | OpenSSL probably does want that, actually |
| 18:36:03 | rue | That is fine but it moves responsibility for the problem somewhere I am not sure it belongs |
| 18:36:05 | Defiler | there is a bunch of conditional stuff in the MRI version based on macro definitions |
| 18:36:16 | evan | i still think we should have POSIX be strictly posix functions |
| 18:36:20 | evan | and move lchmod to ModernUnix |
| 18:36:34 | evan | which would just use the stub if it's not available |
| 18:36:35 | rue | Perfectly fine, but the problem is exactly the same |
| 18:36:36 | Defiler | I like it |
| 18:36:44 | evan | rue: sure, i'm just crystalizing it |
| 18:36:50 | evan | rue: who do you think should be responsible? |
| 18:37:21 | brixen | well, it does make it hard to test for lchmod except by calling it and rescuing then |
| 18:37:27 | brixen | versus checking if the method exists |
| 18:37:31 | brixen | but is that a big issue? |
| 18:37:40 | evan | well, thats my question |
| 18:37:43 | evan | either behavior is fine |
| 18:37:46 | evan | in my book |
| 18:37:59 | evan | because remember that all of Platform is expected to be wrapped |
| 18:38:09 | brixen | I think we're talking about a small, rather well-defined set (e.g. posix or posix like) |
| 18:38:13 | rue | I think the FFI layer should do exactly one thing. It is the responsibility of its users to create and manage any context beyond that |
| 18:38:13 | evan | behind normal kernel methods |
| 18:38:18 | brixen | and so special behavior when loading platform is reasonable |
| 18:38:36 | evan | rue: we're not talking about the FFI layer |
| 18:38:41 | evan | we're talknig about the Platform layer |
| 18:38:44 | evan | as are you. |
| 18:38:46 | brixen | for user code that relies on FFI, they catch that a function does not exist |
| 18:40:20 | rue | OK, recap for me. The other option is to generate a stub that raises NotImplementedError if called at runtime? |
| 18:40:49 | brixen | rue: in platform, attach_function creates a stub that raises if the function does not exist |
| 18:40:55 | evan | have the platform layer silently just not add it |
| 18:41:00 | brixen | in user code, FFI fails if the function does not exist |
| 18:41:02 | evan | thus if called, you get a NoMethodError |
| 18:41:27 | evan | is another option |
| 18:41:32 | rue | Which component manages this? |
| 18:42:02 | evan | we'd have Platform.import or something |
| 18:42:10 | evan | which is a specialized version of attach_function |
| 18:42:26 | evan | which contains the logic we want just for pulling in platform functions |
| 18:42:57 | Defiler | platform_function |
| 18:43:02 | Defiler | instead of attach_function |
| 18:43:08 | evan | whatever the name |
| 18:43:34 | benburkert enters the room. | |
| 18:43:34 | Defiler | Wasn't correcting you, just thinking out loud |
| 18:43:34 | evan | it would live on the superclass |
| 18:43:40 | evan | so that when you do |
| 18:43:48 | evan | class Linux < Platform::OS |
| 18:43:50 | evan | you can do |
| 18:44:00 | evan | function :just_on_linux, ... |
| 18:44:01 | evan | end |
| 18:44:02 | rue | The second question is whether it is preferrable to find out about nonsupported platform functions at build/load time or runtime. I lean on the former |
| 18:44:08 | evan | s/function/whatever we call it/ |
| 18:44:35 | evan | sure |
| 18:44:40 | evan | how should you 'find out'? |
| 18:44:52 | evan | NoMethodError or NotImplementedError? |
| 18:44:55 | evan | or something else? |
| 18:45:26 | krisps leaves the room. | |
| 18:45:54 | rue | The prototype will raise when attach_function hits the unsupported one |
| 18:46:10 | evan | huh/ |
| 18:46:10 | evan | ? |
| 18:46:18 | evan | you want to detect at build/load time? |
| 18:46:33 | evan | rue: hows mod_rubinius coming btw? still haven't seen any code |
| 18:46:53 | evan | (not to derail things) |
| 18:46:53 | benburkert leaves the room. | |
| 18:47:17 | krisps enters the room. | |
| 18:47:38 | lopex leaves the room. | |
| 18:47:45 | octopod leaves the room. | |
| 18:49:11 | rue | evan: Sorry, I just added ez there. You have access now; this is the (future) public so I am moving stuff into it as I go through it |
| 18:49:23 | rue | Should pop up on your Github |
| 18:49:57 | cyndis enters the room. | |
| 18:51:38 | evan | yep! thanks! |
| 18:51:40 | rue | To re-rail, I personally prefer bailing immediately when the attach_function fails which would mean build time for anything in the platform hierarchy |
| 18:52:51 | rue | As opposed to bailing at runtime at some indeterminable point |
| 18:53:10 | evan | ok |
| 18:53:15 | evan | i've fine with that |
| 18:53:22 | evan | i see why you have the delayed loading stuff now |
| 18:53:25 | evan | given that desire. |
| 18:53:33 | evan | you wanted to build up everything |
| 18:53:40 | evan | then try and set it in stone at the end |
| 18:54:24 | evan | for something like lchmod |
| 18:54:31 | evan | where everyone but OpenBSD has it |
| 18:54:46 | evan | what about letting OpenBSD communicate that fact upstream |
| 18:54:50 | evan | class OpenBSD |
| 18:55:03 | evan | Exclude = [:lchmod] |
| 18:55:04 | evan | end |
| 18:55:17 | evan | and ModernUnix would consult Exclude |
| 18:55:26 | evan | maybe that doesn't scale |
| 18:55:30 | evan | i'm just thinking outloud |
| 18:55:44 | rue | You are already loading the code at that point though, so it needs other assistance |
| 18:55:47 | rue | Sure |
| 18:56:47 | boyscout | 1 commit by pluskid |
| 18:56:48 | boyscout | * Fixes and specs for InstructionSequence::Encoder#replace_instruction; c8120f7 |
| 18:56:58 | rue | This is what I thought would be the easiest to use from the perspective of a user of the platform hierarchy. Adding new platforms, adding exceptions or overrides for bugs found and whatnot |
| 18:57:32 | rue | Whether it is the easiest I dunno. But everything (there) happens for a reason ; |
| 18:57:36 | boyscout | 1 commit by Wilson Bilkovich |
| 18:57:37 | boyscout | * Whitespace error in new iseq specs; 3cb1fd2 |
| 18:57:41 | dbussink | evan: the function overloading makes it look really nice |
| 18:57:58 | dbussink | fixnum + bignum, fixnum + float etc. |
| 18:58:20 | evan | dbussink: yeah. |
| 18:59:03 | evan | rue: you're technique delayed raise errors until the end of the load, right? |
| 18:59:06 | evan | the attachable thing |
| 18:59:18 | evan | we could easily do that |
| 18:59:46 | evan | by just having a #verify method |
| 19:00:07 | evan | that would go back through and ask each class to make sure everything it expects to exist does exist |
| 19:00:29 | evan | so that ModernUnix say has |
| 19:00:33 | evan | function :lchmod, ... |
| 19:00:40 | evan | but on OpenBSD, that does nothing |
| 19:00:42 | evan | later on |
| 19:00:45 | evan | class OpenBSD |
| 19:00:52 | evan | def lchmod; raise "sucker"; end |
| 19:00:52 | evan | end |
| 19:01:11 | evan | then, at the end OpenBSD#verify is sent, which calls super into ModernUnix#verify |
| 19:01:32 | evan | which would consult a list built up from the calls to .function |
| 19:01:37 | evan | to make sure that all those methods exist |
| 19:01:44 | evan | if one doesn't, it raises an error |
| 19:01:54 | evan | that effectively delays errors until the end |
| 19:02:04 | evan | letting a subclass 'fixup' things |
| 19:04:55 | rue | The verification has to be done at the terminal platform (ahaha), though, right? |
| 19:06:00 | rue | Rephrase, has to be done in the context of/using the information from the terminal |
| 19:07:28 | dfg59 enters the room. | |
| 19:07:52 | imajes enters the room. | |
| 19:07:59 | scudwork enters the room. | |
| 19:08:26 | headius enters the room. | |
| 19:09:09 | Skip leaves the room. | |
| 19:09:17 | rubuildius_amd64 | Wilson Bilkovich: 3cb1fd2f2; 2108 files, 6762 examples, 24966 expectations, 0 failures, 0 errors |
| 19:09:54 | Ski1 enters the room. | |
| 19:10:02 | evan | rue: from the terminal? |
| 19:10:30 | rue | The end-result, the furthest resolved platform class |
| 19:10:38 | evan | course |
| 19:10:42 | evan | it wouldn't be from the terminal |
| 19:11:02 | evan | which platform class to use would be decided at rubinius build time |
| 19:11:11 | evan | and perhaps put into platform.conf |
| 19:11:20 | evan | rbx.platform.class = OpenBSD43 |
| 19:11:31 | evan | that string is translated into the proper class |
| 19:11:44 | evan | which has #verify called on it |
| 19:11:53 | evan | which calls up the superclasses |
| 19:12:00 | evan | to make sure everything is setup properly |
| 19:13:47 | rue | OK, so ModernUnix needs to know (or be able to find out) that it could not set up lchmod(); and OpenBSD needs to know that IT needs to set up lchmod() |
| 19:14:01 | evan | sure |
| 19:14:18 | evan | ModernUnix's called to 'platform_function :lchmod, ...' would add :lchmod to an Array |
| 19:14:46 | evan | at #verify time, it makes sure that there are functions available for everything in that Array |
| 19:15:00 | brixen | hmm, is this actually easier than just attaching a stub method that raises if you call it? |
| 19:15:03 | evan | that gives any OpenBSD the chance to do 'def lchmod; ...; end' |
| 19:15:07 | brixen | what is the main drawback to that approach? |
| 19:15:33 | brixen | we can't really do lchmod in ruby, so why try? |
| 19:15:34 | evan | it's a different approach |
| 19:15:35 | rubuildius_ppc | Wilson Bilkovich: 3cb1fd2f2; 2108 files, 6893 examples, 25175 expectations, 0 failures, 0 errors |
| 19:15:36 | rubuildius_ppc | pluskid: c8120f787; 2108 files, 6893 examples, 25175 expectations, 0 failures, 0 errors |
| 19:15:39 | evan | is all |
| 19:15:41 | dbussink | evan: hmm, what is the maximum size of the instruction pointer inside a BuiltinTask object? |
| 19:15:45 | evan | rue: what do you see as the drawbacks? |
| 19:15:56 | evan | dbussink: dunno |
| 19:16:21 | dbussink | evan: ah, i was looking at it, make coverage throws some warnings there regarding signedness issues |
| 19:16:41 | evan | ah. |
| 19:16:44 | rue | evan: Yeah, so it would work through explicit recordkeeping. Basically all I did was use the MethodTable instead of an Array |
| 19:17:04 | dbussink | evan: easiest fix is to change the for loop from for(size_t) to for(int) |
| 19:17:18 | evan | dbussink: thats fine. |
| 19:17:53 | brixen | I think not raising an exception at load time is a key factor. but I don't think we need to defer this and verify |
| 19:18:02 | brixen | what purpose does verify serve to user code? |
| 19:19:09 | brixen | mind you, I'm talking purely about FFI in platform |
| 19:19:14 | rue | brixen, evan: The main drawback to, as I understand it, basically `def ModernUnix.lchmod; raise; end` is that it will not raise until some indeterminable time in the future |
| 19:19:29 | evan | right, but is that a problem? |
| 19:19:37 | brixen | rue: I think that's fine, just as long as it doesn't derail loading |
| 19:19:49 | smparkes enters the room. | |
| 19:20:00 | brixen | if we want to add some facility for user code to ask "do I have lchmod" I think that's a separate concern |
| 19:20:55 | brixen | or, even not adding the stub, just don't fail |
| 19:21:05 | rue | It would also allow the `Platform.respond_to? :lchmod` but I do not consider that as important |
| 19:21:38 | brixen | let user code introspect for the lchmod method |
| 19:21:49 | rue | I am not sure if it is a *problem*. But given the option between failing at build time or failing at runtime, I would opt for the former |
| 19:22:09 | brixen | well, now we fail at load time, that's the worst |
| 19:22:15 | rue | brixen: Cannot do that with a stub, though |
| 19:22:16 | brixen | I don't think failing at build time helps anything |
| 19:22:32 | brixen | rue: right, just don't add anything if the function doesn't exist |
| 19:22:43 | brixen | but don't fail loading by raising an exception |
| 19:22:57 | brixen | then user code can introspect for the method if needed |
| 19:23:02 | evan | i think that's ok |
| 19:23:23 | evan | whatever uses lchmod in File or whatever |
| 19:23:25 | elight enters the room. | |
| 19:23:27 | rue | Failing at load time is bad mainly because of the error handling currently |
| 19:23:28 | evan | can just rescue a NoMethodError |
| 19:23:39 | rue | That works, sure |
| 19:23:51 | brixen | perhaps attach_function! to do it with no failing, attch_function will raise if it doesn't exist |
| 19:23:58 | evan | no no |
| 19:23:58 | rue | But again, that is making the rescue change in N places as opposed to just checking it once |
| 19:24:06 | evan | i think we'll need a Platform specific version |
| 19:24:12 | evan | that fails silently |
| 19:24:18 | evan | not called attach_function |
| 19:24:22 | brixen |