Index

Show enters and exits. Hide enters and exits.

00:02:40dewd enters the room.
00:02:47Defilerevan: Yeah. Not knowing how to read some kanji is brutal for getting around
00:02:54drbraindo we honestly care about "IO.new emits a warning if given a block FAILED"?
00:03:07Defilerevan: You can get between large stops using only English signage, but it fails quickly after that
00:03:11evandrbrain: thats bizarre.
00:03:26evandrbrain: leave it in, but i'd say we don't care
00:03:31drbrainit's an anti-newb thing
00:03:31Defilerand you won't be able to read the schedule boards for some destinations, and will need to see the office
00:03:51Defilerbut I know people who don't speak any Japanese that have had perfect success with the random office people
00:03:55Defilerwhich is good
00:03:57kw leaves the room.
00:04:09evani'll be a giant white man, so hopefully that will help
00:04:19manveru^^
00:04:20kw enters the room.
00:04:32DefilerI'm not sure that ever helps in Japan :)
00:04:36evanhelp with them expecting me to not speak japanese, that is.
00:04:36boyscoutCommands I know: action, help, save!, say, update_git
00:04:38Defilerbut it can be a fun role to play
00:04:43evanboyscout: fuck you.
00:04:53Defilerhaha
00:05:02evani'm gutting boyscout soon.
00:05:04mkrauskopf leaves the room.
00:05:06manveru[2008-05-15 08:04:06] ERROR #<NameError: uncaught throw `set $KCODE to "UTF8".'>
00:05:08manveru[2008-05-15 08:04:06] ERROR kernel/core/throw_catch.rb:77:in `throw'
00:05:14manveruyay
00:05:23manverucleans his torturing tools
00:05:26evanmanveru: how did you get that?
00:05:46DefilerNice error
00:05:51manveruevan: http://rubyforge.org/projects/ya2yaml
00:06:00zenspiderYAY for torturing tools!
00:06:02drbrainthat looks like Logger output
00:06:11evanmanveru: oh cool!
00:06:28evanwe should make a "Testing under Rubinius" website badge :)
00:06:29manverui use ya2yaml for localization in ramaze
00:06:39manveruso that's logging output from ramaze
00:06:55Defilerzenspider: Oh, so.. how hard will it be to get heckle running on rubinius?
00:06:55wmoxam leaves the room.
00:07:00manverubut it's some of the nastiest code you can find
00:07:07Defilerzenspider: I've recently been surprised by how many things use it
00:07:21djwhittevan: you don't need to gut boyscout. just pass it a '-a' on the command line
00:07:29evanwhats -a do?
00:07:32manveruevan: http://p.ramaze.net/1389
00:07:59djwhittstops it from responding to things that aren't private messaged to it
00:08:09djwhittdefault is to respond to everything for some reason
00:08:14rubuildius_amd64Eric Hodel: 578a29f5c; 2108 files, 6760 examples, 24961 expectations, 0 failures, 0 errors
00:08:40evandjwhitt: ah!
00:08:51zenspiderDefiler: how many things use heckle?!?
00:09:02Defilerzenspider: rspec for one =(
00:09:10zenspiderwhat?
00:09:16zenspiderwhoa
00:09:20DefilerWe should look at the gem repo for things that depend on it
00:09:31rubuildius_ppcEric Hodel: 578a29f5c; 2108 files, 6891 examples, 25170 expectations, 0 failures, 0 errors
00:09:32rubuildius_ppcCommands I know: action, help, save!, say, update_git
00:09:51zenspiderDefiler: 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:58DefilerBoyscout is always prepared to answer un-asked questions
00:10:16Defilerzenspider: Oh, good idea
00:10:23manverugiving boyscout a prefix for commands may help ;)
00:10:27evanmanveru: yeah
00:10:28zenspiderI really want those fucking bots to shut up
00:10:41manveruwow...
00:10:44brixenhehe
00:10:47manverunow it's even more interesting
00:10:50zenspiderDefiler: that way things will still work on 1.9, as long as they're not dependng on PT to get proc sexps
00:11:08drbrainthis is why we have no bots in #ruby-lang, except corundum
00:11:12manveruevan: http://p.ramaze.net/1390
00:11:25zenspiderwho only speaks when spoken to
00:11:37zenspiderthat's the important part
00:11:39evanmanveru: thats odd.
00:11:39drbrainI have beaten corundum with a stick, and it has learned its proper place in the order of things
00:11:49zenspiderheh
00:11:54evani never wanted boyscout to speak unless spoken to
00:11:58evanlet me restart him.
00:12:07boyscout leaves the room.
00:12:14zenspiderDefiler: what's the priority on the heckle stuffs?
00:12:23djwhittcremes, cremes_: whenever you get a chance add a '-a' to the launch.rb line in bot_nanny.sh and restart your bot
00:12:27manverutries less evil syntax
00:12:42context leaves the room.
00:12:57boyscout enters the room.
00:13:03evansay nothing
00:13:03rubuildius_ppcnothing
00:13:13evanok, so only one bot needs to be fixed now.
00:13:15djwhittcremes will get that soon
00:13:27evandjwhitt: thanks for the tip
00:13:36djwhittevan: no prob
00:13:47zenspiderARGH... git is tripping up on the mspec dir again
00:14:00evanzenspider: i think i know why
00:14:05evanrun 'rake git:pull' again
00:14:40Defilerzenspider: Low.. I've just been editing code that requires it
00:14:48Defilerzenspider: I was just wondering if it were trivial or something
00:15:11zenspidernot exactly trivial, but not too hard
00:15:34Defilerhpricot is more useful.. I may try that tonight, actually
00:15:59zenspideranother 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:46manveruooh
00:17:51manverumy bad
00:18:04boyscout1 commit by Evan Phoenix
00:18:05boyscout * Run spec:update AFTER git:update, not before; 9ee378d
00:18:22evanzenspider: that hopefully should clear up mspec showing up as modified.
00:18:38manveruof course "abc "UTF8" foo" is gonna fail :)
00:18:46evanmanveru: :D
00:18:54manverubut it should show the correct position
00:20:01manveruanyway
00:20:14evanwas it showing the wrong position?
00:20:15manveru$KCODE = 'u' should set $KCODE = 'UTF8'
00:20:24manveruand not $KCODE = 'UTF-8'
00:20:26evanKCODE needs to be a hooked global
00:20:58manveruhttp://p.ramaze.net/1390 points to $KCODE, not to UTF8
00:21:44evanah ah
00:21:45evanhm.
00:21:56evanthe column calculator is clearly off.
00:22:09zenspiderevan: cool. thanks
00:22:22manverulooks for $KCODE specs
00:22:37evanwe definitely need some i'll bet
00:22:42evani have no clue what $KCODE influences
00:22:48stepheneb enters the room.
00:23:08Defilerall kinds of crap
00:23:14lopex leaves the room.
00:23:16tarcierithe behavior of String#each_char ?
00:23:18manveruyeah, pretty salady
00:23:26manveruregular expressions
00:23:26Defilertarcieri: Interestingly, no
00:23:32manveruallowed literals in code
00:23:37Defilermostly regexp yeah
00:23:38evanString and Regexp i'd think
00:23:57Defileranything that updates last_match kinds of crap as well
00:24:00Defilerpotentially
00:24:19manverufor example
00:24:34manveru$KCODE = 'u'; あ = 1; あ #=> 1
00:25:03evanthat seems mainly the parser
00:25:13evandoes the parser see into setting of $KCODE?
00:26:05Defilerlooks like it
00:26:12Defilerstatic int regx_options refers to it
00:27:02Defilerand it looks like that is used for literal regexps
00:27:18joachimm_ leaves the room.
00:27:36stepheneb_ enters the room.
00:27:53stepheneb leaves the room.
00:27:53manveruit's a shame :| since $KCODE is completely useless in 1.9
00:28:24rubuildius_amd64Evan Phoenix: 9ee378da5; 2108 files, 6760 examples, 24961 expectations, 0 failures, 0 errors
00:28:35manverushould check the status of the rbyaml project
00:28:35DefilerYeah. We're going to throw it away when we become ruby 2.0, I guess
00:28:42Defilermanveru: utter failure
00:28:52manveruoh?
00:28:53evani wonder
00:29:01evancould we wire in kcode as an overlay?
00:29:05manveruDefiler: it throws errors when set in 1.9
00:29:10Defilerevan: So, what we should do is this..
00:29:16evanas an 'advise' overlay of methods
00:29:21Defilerevan: store the encoding as a flag on staticscope
00:29:29Defilerand then implement $KCODE as an emulator on top of that
00:29:33manveruor no, it issues a warning
00:29:54DefilerSince $KCODE is trying to emulate lexical encodings
00:30:03DefilerWhy not just build what it is trying to fake
00:30:12evanis $KCODE per file?
00:30:15Defilerand it will make 1.9 encoding compatibility super easy
00:30:17manveruno
00:30:20evanor per context, like $~
00:30:20Defileryes
00:30:27Defilerwell, yes and no
00:30:30Defilerit's thread local, I believe
00:30:36manveruchecks
00:30:57manveruDefiler: it's global
00:30:59DefilerIf we have encoding on staticscope, that gets us per-file and per-whatever-we-want encoding options, it seems to me
00:31:08DefilerIt's thread local, am I almost 100% sure
00:31:17evandoesn't look like it
00:31:22evan$KCODE calles kcode_setter
00:31:23evanin C
00:31:24Defilerwow
00:31:30dewd leaves the room.
00:31:35evanwhich calls rb_set_kcode in re.c
00:31:44drbrainDefiler: it is global
00:31:48evanwhich manipulates the state of some globals C variables
00:31:51manverumanveru@sigma ~ % ruby -e 'p [$KCODE, Thread.new{ $KCODE = "u" }, $KCODE]'
00:31:53manveru["NONE", #<Thread:0x2b5c0f428e98 dead>, "UTF8"]
00:32:12DefilerMadness
00:32:20manveru"This is " >>
00:32:36Defiler$KCODE = 'j' is the only troublesome one
00:32:36rubuildius_ppcEvan Phoenix: 9ee378da5; 2108 files, 6891 examples, 25170 expectations, 0 failures, 0 errors
00:32:49DefilerBecause we can make our default encoding UTF-8 and be ascii compatible
00:33:08Defilerthus removing 99% of the reason anyone ever sets KCODE
00:33:17manveruhmm
00:33:40evan$KCODE seems to only change regexs
00:33:42manveruthat would be like configuring ruby --with-default-kcode=KCODE=UTF8
00:33:46evanas far as I can tell
00:34:06Defilermanveru: I personally already do that, but we could be more specific with it if it is the wired-in default
00:34:19manveruevan: not only
00:34:44evani can't see where anything uses the flags it sets
00:34:46evanother than regex
00:34:55manveru ruby -e 'p "あ"'
00:34:57manveru"\343\201\202"
00:34:58drbrainjcode.rb?
00:34:59boyscout1 commit by Eric Hodel
00:35:00boyscout * Remove trailing whitespace; 6d087b5
00:35:18manveruif you set $KCODE = 'u' you get "あ" back
00:35:50DefilerMy assertion is that nobody ever wants that to print \343\201\202
00:35:52drbrainneat
00:35:54manveruso it does influence inspect
00:35:59Defilerand therefore we will not break anything by just not doing that
00:36:03drbrainruby -Ku -e ...
00:36:26DefilerI'm sorry, I meant $KCODE = 's'
00:36:31drbrainDefiler: what does it do to the String stuff that looks at mbchar?
00:36:32Defilerbut you get hte idea
00:36:57manveruhmh
00:36:59Defilerdrbrain: like what?
00:37:11manverui guess we just should default to UTF8
00:37:31DefilerThat's my vote
00:37:31manveruprograms that require the japanese variants have to set them explicitly anyway
00:37:41Defilerdefault ascii is ridiculous at this point
00:37:51Defilerparticularly since utf-8 is compatible
00:37:57drbrainupcase! checks
00:38:02manveruyeah
00:38:12drbrainand friends
00:38:12evandrbrain: checks what?
00:38:14evankcode?
00:38:15DefilerAgain, nobody ever wants upcase to NOT check
00:38:21manveruanyway, i'm out, have fun :)
00:38:23DefilerSo the MRI behavior there is just a hack
00:38:28Defilerand we can just make a sane upcase
00:38:30drbrainchecks for multibyte characters
00:38:43evanyeah
00:38:48evanbut it does all that independent of KCODE
00:38:53Defilercalling upcase on a utf8 string withot kcode = u set is always a bug
00:39:00drbrainthe rest of the mbchar checks are in regex.c, with some in parse.c
00:39:12enebo leaves the room.
00:39:16drbrainok, you have swayed me
00:39:35DefilerI think we should give it a shot and fix it if it breaks
00:39:45DefilerRather than steering clear of what seems like the right way to implement a language in 2008
00:40:27Defiler$KCODE is particularly bizarre because it seems like it should be a 'parse time' directive
00:40:37Defilerbut it is runtime
00:41:01headius leaves the room.
00:42:19evanso long as we don't break stuff that depends on the MRI behavior
00:42:25smparkes enters the room.
00:43:11zenspiderseconded... it still needs compatibility with old code
00:43:16rubuildius_amd64Eric Hodel: 6d087b592; 2108 files, 6760 examples, 24961 expectations, 0 failures, 0 errors
00:45:38DefilerYeah.. but preferably compatibility with real old code, not hypothetical old code ;)
00:47:45rubuildius_ppcEric Hodel: 6d087b592; 2108 files, 6891 examples, 25170 expectations, 0 failures, 0 errors
00:48:29stepheneb_ leaves the room.
00:48:46evanDefiler: thats fine.
00:48:47stepheneb enters the room.
00:54:28benstiglitz leaves the room.
01:02:01benburkert enters the room.
01:07:02imajes leaves the room.
01:19:18evanoh.. I love Frisky Dingo.
01:23:57obiejuan enters the room.
01:29:13drbrainI am in a maze of twisty little substring manipulations :(
01:29:20tarcieriall alike?
01:29:29drbrainno
01:29:40tarcierithen hopefully you can find your way out!
01:34:10yipstar leaves the room.
01:35:02evananyone have any suggestions for hotels in tokyo?
01:35:41yipstar enters the room.
01:37:06headius enters the room.
01:37:14evanheadius: where you staying in tokyo?
01:37:23Booster enters the room.
01:38:11headiusCerulean Tower, in Shibuya
01:39:04evanlooks nice, perhaps i'll stay there
01:39:12headiusyeah...bit spendy, but it's very nice
01:39:24headiusand of course shibuya is pretty cool
01:39:48drbrainheadius: does jruby pass all the File.fnmatch specs?
01:39:55headiusI'll check
01:39:58evanit's just for one night
01:40:04evanso i'm not worried about the cost
01:40:20evanand want to stay somewhere where I can walk around
01:40:26headiusyes
01:40:39headiuswe pass all fnmatch specs, assuming there are not guards stopping some from running
01:40:41drbrainthanks
01:41:53drbrainthere shouldn't be
01:41:59headiusevan: shibuya is the place, though akihabara is cool for a couple hours
01:42:08headiuslrz is staying near shibuya
01:42:10drbrainsomebody ported rubinius' fnmatch from jruby, and it fails one spec
01:42:27evanoh, i didn't realize he was going to be there
01:42:29headiusdrbrain: ahh...dunno when it would have been ported, but perhaps there were fixes since
01:42:39drbrainperhaps
01:42:41headiusevan: yeah, he was tweeting about it a couple weeks ago
01:42:50evanah
01:43:12drbrainI did a glance at your latest code, and it looks roughly as sane as the rubinius implementation
01:43:14evanflight to tokyo is cheap
01:43:15evanonly $1k
01:43:48headiusabout $1700 from MSP round trip, but NWA isn't exactly one of the cheaper airlines
01:43:56evanyeah
01:43:59evanit was going to be $1200
01:44:14evanbut orbitz was like "actually, we found you a cheaper fare!"
01:44:16evani was like "ok!"
01:44:19headiusnice
01:44:48headiuswe usually fly NWA regardless because it's always direct (hub) and we have crazy mad frequent flier status now
01:45:03evanyep
01:45:41evani'm working up, miles wise.
01:46:03headiusyeah I bet
01:46:17headiusneed more international events
01:46:34headiusI've got four trips for certain to EU left this year
01:46:38headiusfive if I do railsconf
01:46:43evanwow.
01:47:05evanthey're really workin' ya, ain't they
01:47:27jtoy enters the room.
01:47:34hoopy enters the room.
01:47:40headiusmost are invited trips
01:48:08headiuswith the openjdk and invokdynamic and whatnot stuff ramping up I'm starting to do a bit of that as well
01:48:33evannice.
01:48:48evanhave they made contiunations work in dvm yet?
01:49:06headiushmm, I haven't updated lately...I heard it was done and working but not pushed yet
01:49:59headiuslooks like still not pushed
01:50:26evanjust curious
01:50:38headiusok, I guess the answer is "yes" then :)
01:50:38drbrainI'm going to give up on fnmatch for today, it needs a fresh brain
01:50:41evani'm curious what technique the decide on
01:50:55headiusdid you read john rose's post about it a while back?
01:51:21evani think so
01:51:22evanurl?
01:51:27headiushttp://blogs.sun.com/jrose/entry/continuations_in_the_vm
01:51:31stepheneb leaves the room.
01:51:45headiusseems pretty setjmp to me
01:51:56headiuskinda has to be
01:52:12evanyeah
01:52:15evanjust curious.
01:52:45headiushe seemed pretty confident it was doable, probably with reasonable perf....but security is an open question
01:53:36jtoy leaves the room.
01:55:45yipstar leaves the room.
01:58:22ezmobius leaves the room.
02:03:44Booster leaves the room.
02:03:45hoopy_ leaves the room.
02:06:57jtoy enters the room.
02:16:06benburkert leaves the room.
02:16:35nicksieger leaves the room.
02:17:31nicksieger enters the room.
02:20:57ShayArnett leaves the room.
02:22:09wmoxam enters the room.
02:24:25VVSiz_ enters the room.
02:30:02dfg59 leaves the room.
02:30:09boyscout1 commit by Wilson Bilkovich
02:30:10boyscout * Move Module and Kernel versions of __add_method__ to MethodContext; 277caaf
02:30:46Defileradding a method no longer passes through any code with a # HACK comment. Heh
02:32:43VVSiz leaves the room.
02:37:07ShayArnett enters the room.
02:40:36rubuildius_amd64Wilson Bilkovich: 277caaffa; 2107 files, 6758 examples, 24959 expectations, 0 failures, 0 errors
02:43:49rubuildius_ppcWilson Bilkovich: 277caaffa; 2107 files, 6889 examples, 25168 expectations, 0 failures, 0 errors
02:45:39mernen enters the room.
02:47:55smparkes leaves the room.
02:50:00sambo leaves the room.
02:50:01moofbong enters the room.
02:55:52moofbong leaves the room.
02:57:44moofbong enters the room.
02:59:31wycatsdrbrain: When I have multiple gem repos in my .gemrc it updates the metadata every time :(
03:09:59trythil leaves the room.
03:10:03trythil enters the room.
03:11:12kw leaves the room.
03:18:50manveruwycats: 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:06blakewatters_ leaves the room.
03:25:54blakewatters enters the room.
03:26:16trythil leaves the room.
03:29:47ezmobius enters the room.
03:31:58wycatsmanveru: in other words, an unacceptable bug?
03:32:26evanhow about an uncalledfor tone?
03:32:38chillywillyis rubinius "usable", i.e. can you actually replace the Matz VM with it
03:32:43evanchillywilly: no
03:33:15chillywillyok
03:37:41kw enters the room.
03:37:58kw leaves the room.
03:39:58manveruchillywilly: when it is you'll hear for sure :)
03:40:31manveruin the meanwhile just try to run what you want to run and report any bugs you encounter
03:40:40manveruif you're lucky it will actually work
03:42:05chillywillyyea I am not much of a runbyist to tell you the truth :)
03:42:09chillywillyrubyist too
03:43:00chillywillyit'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:01Defilermanveru: Hrm. Good guess about the rubygems behavior. That's probably it.
03:44:26headius leaves the room.
03:45:10manveruchillywilly: alright, then just stick with normal ruby 1.8.6 for now
03:48:57chillywillyok, well I am not a newb developer that is for sure...just was curious about the status of this project
03:50:24mernen leaves the room.
03:50:29trythil enters the room.
03:51:08hoopy_ enters the room.
03:52:57therealadam leaves the room.
03:56:01ruechillywilly: What were you thinking about using it for? Or are you more interested in the implementation side of it?
03:56:41hoopy leaves the room.
03:59:06shame enters the room.
04:00:23chillywillywell 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:33RyanTM leaves the room.
04:01:08dfg59 enters the room.
04:01:35RyanTM enters the room.
04:02:00trythil leaves the room.
04:02:50AndrewO enters the room.
04:06:03ShayArnett leaves the room.
04:07:16ShayArnett enters the room.
04:12:56anteaya leaves the room.
04:20:13kw enters the room.
04:24:16RyanTM leaves the room.
04:25:25benburkert enters the room.
04:27:05crafterm enters the room.
04:31:58ruechillywilly: Heh :) I would actually recommend looking over the specs we have when you are learning Ruby
04:32:22rueAnd, of course, poke around the VM if you have C/C++-fu
04:33:32craftermhi all
04:33:36nicksieger leaves the room.
04:39:58dfg59 leaves the room.
04:47:20esomnie enters the room.
04:51:56rueHey, crafterm
04:52:07craftermhi rue, hows it going mate?
04:52:49lstoll enters the room.
05:10:39ezmobius leaves the room.
05:11:12ShayArnett leaves the room.
05:11:45yugui leaves the room.
05:11:47mediogre enters the room.
05:15:43obiejuan leaves the room.
05:23:52wmoxam leaves the room.
05:25:49headius enters the room.
05:28:05mapar enters the room.
05:28:45moofbong leaves the room.
05:33:59benburkert leaves the room.
05:40:29ruecrafterm: Slowly :)
05:41:52brixendrbrain: I ported jruby fnmatch. you can assign me the ticket if you want
05:42:07brixendrbrain: I know that VVSiz (pretty sure) added some new specs
05:49:33AndrewO leaves the room.
05:53:05srbaker leaves the room.
05:57:43rubuildius_ppc leaves the room.
05:58:00rubuildius_ppc enters the room.
05:58:12cremesdjwhitt: added "-a" and restarted now
06:08:05rubuildius_ppc leaves the room.
06:08:37rubuildius_ppc enters the room.
06:25:06kw leaves the room.
06:26:02wycats leaves the room.
06:29:53trythil enters the room.
06:30:44trythil_ enters the room.
06:30:44trythil leaves the room.
06:45:23wycats enters the room.
07:02:14Yurik enters the room.
07:11:06nemerle leaves the room.
07:12:00Skip enters the room.
07:12:00crafterm leaves the room.
07:30:53trythil_ leaves the room.
07:31:17trythil enters the room.
07:39:00yugui enters the room.
07:39:25Maledictus enters the room.
07:50:53trythil leaves the room.
07:52:13mkrauskopf enters the room.
07:55:18lstoll leaves the room.
07:57:22qwert666 enters the room.
08:14:39dewd enters the room.
08:19:38mkrauskopf leaves the room.
08:22:18thehcdreamer enters the room.
08:32:15dbussinkmorning
08:45:57Maledictusgood morning
08:56:01imajes enters the room.
08:57:58octopod enters the room.
08:57:58radarek enters the room.
08:58:09mutle enters the room.
09:08:07mutle leaves the room.
09:08:50mutle enters the room.
09:09:05rueMorning
09:13:45dbussinkrue: did you test something with the new primitive hierarchy?
09:14:55w1rele55 leaves the room.
09:17:16dbussink leaves the room.
09:26:59jtoy leaves the room.
09:27:12jtoy enters the room.
09:31:10Yurik leaves the room.
09:33:42w1rele55 enters the room.
09:37:08imajes leaves the room.
09:40:05mutle leaves the room.
09:40:14mutle enters the room.
09:42:10mkrauskopf enters the room.
09:47:52mapar leaves the room.
09:49:15mutle leaves the room.
09:49:52mutle enters the room.
09:53:23eule enters the room.
10:03:56NoKarma enters the room.
10:08:37wycats leaves the room.
10:09:18wycats enters the room.
10:10:55gnufied leaves the room.
10:23:51crafterm enters the room.
10:23:54crafterm leaves the room.
10:41:30Yurik enters the room.
10:46:49thehcdreamer_ enters the room.
10:55:23thehcdreamer leaves the room.
10:57:04lstoll enters the room.
11:03:56bleeder enters the room.
11:06:07danlucraf1 enters the room.
11:13:42jtoy leaves the room.
11:18:34blakewatters leaves the room.
11:31:22eule leaves the room.
11:34:10headius leaves the room.
11:34:19headius enters the room.
11:36:36headius leaves the room.
11:37:02radarek leaves the room.
11:37:52headius enters the room.
11:39:36headius leaves the room.
11:39:51headius enters the room.
11:40:16headius leaves the room.
11:40:40headius enters the room.
11:43:09headius_ enters the room.
11:43:09headius leaves the room.
11:43:52headius_ leaves the room.
11:50:41loop enters the room.
12:19:38bleederWhen 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:32ruebleeder: FFI issue.. should hopefully have better error messages there later today :) Which platform is this?
12:23:42eule enters the room.
12:27:40bleederrue: I'm on a Powerbook G4 with MacOSX 10.4
12:35:50ruebleeder: Sorry, wandering in and out. PPC? That error message usually means one of the platform functions does not exist
12:37:18bleederrue: Yeah, PPC... hrmm... guess that means I gotta get hacking, eh?
12:38:45ruebleeder: Possibly.. first double-check that you do not have an old version of the libraries installed anywhere
12:38:52mutle leaves the room.
12:39:30mutle enters the room.
12:41:09ruebleeder: 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:56bleederrue: I really doubt that I have the libraries installing, but I'm checking it at the moment...
12:42:27bleederinstalled even
12:45:30rueSure; 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:57bleederrue: 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:24anteaya enters the room.
12:48:48rueSounds good
12:49:09rueI am actually working on a (hopefully) better platform mechanism now
12:49:32bleederrue: oh, nice :)
12:53:38pluskid enters the room.
12:55:41RyanTM enters the room.
12:58:14bleederrue: 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:34rueHehe
12:58:58rueI suppose there is a bright side to not using Ruby (or having a boss who does not know any better)
12:59:44bleederHah, seems there is.
13:15:12RyanTM leaves the room.
13:16:24RyanTM enters the room.
13:22:19NoKarmacan someone running windows/openbsd/linux do a favor for me?
13:23:13NoKarmaI need the result of Math.atanh(1.0) and Math.atanh(-1.0) after loading the Complex library
13:25:07scoopron my windows, I get Infinity and -Infinity
13:25:17NoKarmaok, thanks!
13:26:48bleederHrmm, this FFI stuff is quite puzzling...
13:26:51bleederstill no luck :/
13:33:21RyanTM leaves the room.
13:34:03RyanTM enters the room.
13:34:17ruebleeder: Sorry, I am jumping ahead of myself here. Are you seeing the error when trying to initially build?
13:36:39rueIf 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:20gnufied enters the room.
13:37:49rueIf it breaks while building, researching will involve man pages :/
13:38:13bleederrue: Yeah, it breaks while running rake build
13:39:11rueDoes running rake with --trace show which file it is?
13:45:56bleederrue: rake build --trace produces this output: http://pastie.caboo.se/197498
13:50:33rueWell, I have great news for you if you like GDB
13:51:48bleeder...
13:52:08bleeder*headdesk*
13:52:59VVSizNoKarma: damn, Math.atanh(1.0) is different on Linux and Windows!!1 :)
13:54:14VVSizErrno::EDOM: Numerical argument out of domain - on Linux.
13:54:18VVSizInfinity - on Windows
13:54:19VVSiz:)
13:54:43kw enters the room.
13:55:30NoKarmaVVSiz: damn
13:55:42NoKarmaVVSiz: so Complex changes that behaviour too, grr!
13:55:55bleederrue: Do tell though, I'll see what I can get out of it ;)
13:56:14ruebleeder: 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:41ruebleeder: For GDB, you can just give `GDB=1` for the env
13:57:43VVSizNoKarma: JRuby returns Infinity everywhere. Rubinius retuns EDM (on Linux)
13:57:49VVSizfun!
13:58:02NoKarmameh
13:58:09bleederrue: Ooh, nice. I'll toy around with it :)
13:58:11ruebleeder: Erm, s/attach_method/attach_function/
13:59:14krisps enters the room.
14:03:15Erlang00t1 enters the room.
14:03:19obiejuan enters the room.
14:11:45anteaya leaves the room.
14:13:17krisps leaves the room.
14:13:25AndrewO enters the room.
14:13:54kw leaves the room.
14:17:34webmat enters the room.
14:23:38edwardam leaves the room.
14:35:40eule leaves the room.
14:37:09kw enters the room.
14:40:52eule enters the room.
14:42:34eule leaves the room.
14:43:47obiejuan leaves the room.
14:45:55wmoxam enters the room.
14:48:35dctanner enters the room.
14:49:18bleederhrrmmm... this is rather, ehh... frustrating...
14:51:21lstoll leaves the room.
14:58:23kw leaves the room.
14:59:35ruebleeder: No luck I gather?
15:00:03rueWe shall see if we can generate better errors to track it
15:01:54bleederrue: 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:09NoKarma leaves the room.
15:02:48bleederhell of a way to start digging into rubinius, heh...
15:07:01pluskid leaves the room.
15:10:41mutle leaves the room.
15:13:35enebo enters the room.
15:16:34bleeder leaves the room.
15:20:10mutle enters the room.
15:38:19krisps enters the room.
15:53:25shame leaves the room.
15:54:01anteaya enters the room.
16:06:50ShayArnett enters the room.
16:09:04Erlang00t1 leaves the room.
16:26:28benstiglitz enters the room.
16:28:55obiejuan enters the room.
16:32:24moofbong enters the room.
16:34:22JimMc leaves the room.
16:35:21rueHrm, I am going to write rake just_build shortly :P
16:36:13Defilerrake gimmie_dat_wallet
16:38:24smparkes enters the room.
16:42:30lopex enters the room.
16:42:46trythil enters the room.
16:44:23rueHrm. Fatal error, "unable to send send on #<MetaClass>"
16:45:51DefilerI moved __add_method__ yesterday, so you'll want to make sure all old .rbc files are getting rebuilt
16:46:58rueAh, nm. Untracked file is what it was
16:58:06evanmorning.
16:58:36rueEvening
16:58:43shame enters the room.
17:01:34gnufied leaves the room.
17:03:55rueDesign meeting is today, right?
17:06:50evanwho organized it?
17:06:56octopod leaves the room.
17:06:56evani don't have anything on my calendar
17:07:03gnufied enters the room.
17:07:26octopod enters the room.
17:08:13TheProkrammerYeah it is, I think it was actually you evan ;)
17:09:16TheProkrammer[2008/04/30 19:07:03] <evan> ok, shall we push it forward one day
17:09:18TheProkrammer[2008/04/30 19:07:10] <evan> to the 15th/16th
17:10:45dfg59 enters the room.
17:10:57evanoh oh
17:10:59evanruby design meeting?
17:11:29evanyeah
17:11:32evanthats today
17:11:33evansorry
17:11:37evani'm pre-coffee.
17:11:59qwert666 leaves the room.
17:13:14binary42 leaves the room.
17:22:58rueAdminister coffee
17:23:01anteaya leaves the room.
17:23:17anteaya enters the room.
17:24:19dbussink enters the room.
17:24:44evanDefiler: *poke*
17:25:38kw enters the room.
17:26:02ruedbussink: Yes, have been working on it
17:26:14rueBasically done except for the debugging ;)
17:27:14dbussinkrue: ah nice
17:27:44thoughtfiz leaves the room.
17:30:26thehcdreamer_ leaves the room.
17:33:31dbussinkrue: in a committable state yet?
17:33:49dfg59 leaves the room.
17:47:16ruedbussink: Not quite, but http://pastie.org/197639
17:47:48evanno
17:47:49evanplease no
17:47:51evanno define_method.
17:48:35evanthere is way way too much magic in there
17:49:29evanthe entire append_features for one
17:50:27evanwhats wrong with just having a POSIX superclass and OS specific subclasses?
17:50:30evanno magic
17:50:32evan?
17:51:11evani'm also very against the use of Base as a superclass name.
17:51:20evansorry to trample on this code so much rue :/
17:51:35rueThis is called prototyping, it happens
17:51:48joachimm_ enters the room.
17:52:19rueThe problem with POI is that the attaching must be delayed
17:52:28evani don't see the need for Attachable at all
17:52:32evanwhats the use case?
17:53:14dfg59 enters the room.
17:54:01thoughtfiz enters the room.
17:54:32evanug
17:54:36evanis this just so you can include a class?
17:56:47rueNo, it is for including modules. Use cases would be augmented functionality like extended file attributes, or some 32- vs. 64-bit functionality
17:56:56evanwhy is any of this needed?
17:57:02evanwhy can't you just include the module?
17:58:35evani don't see why the attach_function is delayed
17:58:57dbussinkhow do we handle the use case of attaching a function in for example posix
17:59:05dbussinkand then deattach it in for example openbsd
17:59:11dbussinkthis is the case with lchmod
17:59:43rueevan: 1) No #require in Core, 2) what happens when you load a class that attaches to Win32 methods on a Linux?
17:59:44evanis lchmod in POSIX?
18:00:09dbussinkevan: well, it's in some set that is implemented by most unix like systems
18:00:15smparkes leaves the room.
18:00:17evanthen it's not POSIX.
18:00:21dbussinktrue
18:00:30evanand thus should be in a module that can be included in OS's that have it.
18:00:38evanthere is no need for the delaying
18:00:54ruedbussink: You would have class POSIX; attachable :lchmod, # rest of arguments; class OpenBSD < something; unattachable :lchmod; end
18:01:09evanrue: why would you load a class that attaches Win32 methods on a Linux?
18:01:14mutle leaves the room.
18:01:32evanno no
18:01:32mutle enters the room.
18:01:39mutle leaves the room.
18:01:42evani think you're making this WAY more complicated than it is
18:01:47rueevan: class Win32; attach_function :zvhwGHndlUglWinFormFunc, # rest of it; end; RUBY_PLATFORM == 'linux' # What happens?
18:01:50evanforget all the attachable stuff
18:02:01evanit's not needed at all from the way I see it
18:02:34evanrue: you've completely forgot about the setup we worked out months ago
18:02:44evanwhich is that each platform has it's own platform/ directory
18:02:51evanand it's decided at compile time which one is loaded.
18:02:53dfg59 leaves the room.
18:03:14evanso that things not available on a platform are never attached
18:03:30rueHow does that work for the stables?
18:03:42evanstables are going away.
18:04:08evanso fine.
18:04:34trythil leaves the room.
18:04:40rueGo have a sammich :) I am going to eat some oatmeal and we can try this again
18:04:51evanit's 10am.
18:04:54evanno sammich needed.
18:05:01evani'm not irratable
18:05:08trythil enters the room.
18:05:09evanjust concerned about over architecting.
18:05:33rueAlright. I will be back in 10 myself then.
18:05:40evank
18:06:03brixenmmm oatmeal
18:06:08brixenis eating oatmeal too
18:10:37dbussinkyay, inconsistencies!
18:10:53dbussinkBignum::mul and Fixnum::multiply in the new vm
18:11:43dc_ leaves the room.
18:13:26dctanner enters the room.
18:16:39evanthey should be made consistent.
18:17:17dbussinkworking on that
18:17:40dbussinkevan: there you go
18:18:00evandid you push?
18:18:04dbussinkyeah
18:18:08evanboyscout doesn't report change no the cpp branch
18:18:13evanwhich sucks.
18:18:31dbussinkpushed my stuff for fixnum => bignum overflow too yesterday
18:18:47evansweet
18:19:25dbussinkgonna build some stuff for fixnum + bignum, fixnum + float etc.
18:20:44rueTasty oatmeal. Mm.
18:22:13rueevan: Magic will be as scarce as possible (by necessity, not a lot is loaded at that point.) This is a functionality prototype
18:22:48evani don't think it's necessary
18:23:19evanthe delayed loading is a work around for the assumption that all platform code is loaded, right?
18:23:24evanlets just change that assumpiton
18:23:28evanthats a lot easier that working around it
18:23:34evanand since we're the ones that set those, we can change them
18:25:38brixenyeah, I think extending our platform configuration utilities is the way to go
18:25:47brixenload time is (should be) a straight shot
18:26:18brixenbut this means we need to specify somewhere that kernel/platform/win32 dir is loaded
18:26:19evanand simple.
18:26:22brixenfor example
18:26:51evanat rubinius build time, there just have to be something that builds a .load_order.txt file
18:26:52rueSure, 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:57ruePlatforms even.
18:26:57evanthat indicates which files to load
18:27:44evanwe have have lchmod in a seperate file common_not_posix.rb
18:27:52brixenhrm, but he has a point
18:28:05brixenhow will we exclude for bsd on common_not_posix.rb?
18:28:05evanif everyone but OpenBSD has it
18:28:14evanthen the POSIX module should deal with that.
18:28:27rueI think the child should
18:28:48brixenperhaps I missed it, but why not attach a stub that raises if it could not attach to the function?
18:28:56DefilerYeah.. "unless openbsd?" sounds like a fine way to handle that one case to me
18:28:59brixeni.e. raises when you call the stub?
18:29:05dctanner leaves the room.
18:29:10DefilerWe should only do something rspecy if there are a bunch of examples
18:29:18DefilerThat's my new word for 'complicated'
18:29:22evanhah
18:29:23brixenhehe
18:29:35dbussinkbrixen: i've suggested the stub too
18:29:43brixenbut conditional code litterd in posix.rb etc is not that pretty
18:29:43evani can see why having the logic in the child, not POSIX is good
18:29:53evanbecause otherwise, POSIX will be littered with logic for platforms
18:29:58rueRight
18:30:04dbussinkthat's what we want to prevent
18:30:05evanwhich is against the whole point of this delegation scheme
18:30:46brixenbut if we autogen'd the attach_function stuff at compile time rather than hand-writing it, wouldn't that work?
18:30:51evanbut i think the best way to do this is to be strict
18:30:55brixensomething like we have struct gen now
18:30:59rueIn a perfect world we would all run plan9 but I think it will pay off to take this into account now.
18:31:00evanif lchmod isn't posix, it shouldn't be in POSIX
18:31:33evanas we figure out which platforms have what, we refactor modern-but-not-posix functions into ModernUnix
18:31:42rueAgreed, 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:37evanwell
18:32:39rueLet us assume that lchmod is in CommonNonPosixFunctions for the purposes of this exercise
18:32:52evanwhat should happen if someone tries to use lchmod on OpenBSD?
18:33:04evanshould code be able to detect that they don't and use a different function?
18:33:08evanor should it raise an exception?
18:33:25evani think the answer to that will help define this
18:33:25rueWhatever you like
18:33:34evani mean, whats the MRI behavior
18:33:57rueSay, class OpenBSD; unattachable :lchmod; def self.lchmod; # Emulate lchmod somehow; end; end
18:34:04dbussinkmri raises an exception if you call the method
18:34:11Defilerraise NotImplementedError?
18:34:14dbussinkyeah
18:34:19evanok
18:34:20dbussinkor something like that
18:34:25dbussinkit's different from NoMethodError at least
18:34:27rueFFI stuff is typically not MRI interface
18:34:28dbussinkit has a specific exception
18:34:40brixenso, stub methods would work best, just don't raise if you can't find it when trying to attach
18:34:44evanwell, as dbussink and others have said, we could have a special version of attach_function thats used in the platform code
18:34:53DefilerSounds like we should just override the method in the OpenBSD platform file
18:34:58evanthat installs a method that raises NotImplemententError if called
18:35:09evani'd prefer it be a special version for platform though
18:35:11evannot a generic version
18:35:20evanbecause i don't think everyone will want that behavior
18:35:24evanfor example in OpenSSL
18:35:29brixenso, in general code, it'd fail to attach, yeah
18:35:38DefilerYeah, that's a good idea
18:35:38evanthe normal version of attach_function should contain to raise an exception if the function doesn't exist
18:35:53DefilerOpenSSL probably does want that, actually
18:36:03rueThat is fine but it moves responsibility for the problem somewhere I am not sure it belongs
18:36:05Defilerthere is a bunch of conditional stuff in the MRI version based on macro definitions
18:36:16evani still think we should have POSIX be strictly posix functions
18:36:20evanand move lchmod to ModernUnix
18:36:34evanwhich would just use the stub if it's not available
18:36:35ruePerfectly fine, but the problem is exactly the same
18:36:36DefilerI like it
18:36:44evanrue: sure, i'm just crystalizing it
18:36:50evanrue: who do you think should be responsible?
18:37:21brixenwell, it does make it hard to test for lchmod except by calling it and rescuing then
18:37:27brixenversus checking if the method exists
18:37:31brixenbut is that a big issue?
18:37:40evanwell, thats my question
18:37:43evaneither behavior is fine
18:37:46evanin my book
18:37:59evanbecause remember that all of Platform is expected to be wrapped
18:38:09brixenI think we're talking about a small, rather well-defined set (e.g. posix or posix like)
18:38:13rueI 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:13evanbehind normal kernel methods
18:38:18brixenand so special behavior when loading platform is reasonable
18:38:36evanrue: we're not talking about the FFI layer
18:38:41evanwe're talknig about the Platform layer
18:38:44evanas are you.
18:38:46brixenfor user code that relies on FFI, they catch that a function does not exist
18:40:20rueOK, recap for me. The other option is to generate a stub that raises NotImplementedError if called at runtime?
18:40:49brixenrue: in platform, attach_function creates a stub that raises if the function does not exist
18:40:55evanhave the platform layer silently just not add it
18:41:00brixenin user code, FFI fails if the function does not exist
18:41:02evanthus if called, you get a NoMethodError
18:41:27evanis another option
18:41:32rueWhich component manages this?
18:42:02evanwe'd have Platform.import or something
18:42:10evanwhich is a specialized version of attach_function
18:42:26evanwhich contains the logic we want just for pulling in platform functions
18:42:57Defilerplatform_function
18:43:02Defilerinstead of attach_function
18:43:08evanwhatever the name
18:43:34benburkert enters the room.
18:43:34DefilerWasn't correcting you, just thinking out loud
18:43:34evanit would live on the superclass
18:43:40evanso that when you do
18:43:48evanclass Linux < Platform::OS
18:43:50evan you can do
18:44:00evan function :just_on_linux, ...
18:44:01evanend
18:44:02rueThe 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:08evans/function/whatever we call it/
18:44:35evansure
18:44:40evanhow should you 'find out'?
18:44:52evanNoMethodError or NotImplementedError?
18:44:55evanor something else?
18:45:26krisps leaves the room.
18:45:54rueThe prototype will raise when attach_function hits the unsupported one
18:46:10evanhuh/
18:46:10evan?
18:46:18evanyou want to detect at build/load time?
18:46:33evanrue: hows mod_rubinius coming btw? still haven't seen any code
18:46:53evan(not to derail things)
18:46:53benburkert leaves the room.
18:47:17krisps enters the room.
18:47:38lopex leaves the room.
18:47:45octopod leaves the room.
18:49:11rueevan: 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:23rueShould pop up on your Github
18:49:57cyndis enters the room.
18:51:38evanyep! thanks!
18:51:40rueTo 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:51rueAs opposed to bailing at runtime at some indeterminable point
18:53:10evanok
18:53:15evani've fine with that
18:53:22evani see why you have the delayed loading stuff now
18:53:25evangiven that desire.
18:53:33evanyou wanted to build up everything
18:53:40evanthen try and set it in stone at the end
18:54:24evanfor something like lchmod
18:54:31evanwhere everyone but OpenBSD has it
18:54:46evanwhat about letting OpenBSD communicate that fact upstream
18:54:50evanclass OpenBSD
18:55:03evan Exclude = [:lchmod]
18:55:04evanend
18:55:17evanand ModernUnix would consult Exclude
18:55:26evanmaybe that doesn't scale
18:55:30evani'm just thinking outloud
18:55:44rueYou are already loading the code at that point though, so it needs other assistance
18:55:47rueSure
18:56:47boyscout1 commit by pluskid
18:56:48boyscout * Fixes and specs for InstructionSequence::Encoder#replace_instruction; c8120f7
18:56:58rueThis 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:32rueWhether it is the easiest I dunno. But everything (there) happens for a reason ;
18:57:36boyscout1 commit by Wilson Bilkovich
18:57:37boyscout * Whitespace error in new iseq specs; 3cb1fd2
18:57:41dbussinkevan: the function overloading makes it look really nice
18:57:58dbussinkfixnum + bignum, fixnum + float etc.
18:58:20evandbussink: yeah.
18:59:03evanrue: you're technique delayed raise errors until the end of the load, right?
18:59:06evanthe attachable thing
18:59:18evanwe could easily do that
18:59:46evanby just having a #verify method
19:00:07evanthat would go back through and ask each class to make sure everything it expects to exist does exist
19:00:29evanso that ModernUnix say has
19:00:33evanfunction :lchmod, ...
19:00:40evanbut on OpenBSD, that does nothing
19:00:42evanlater on
19:00:45evanclass OpenBSD
19:00:52evan def lchmod; raise "sucker"; end
19:00:52evanend
19:01:11evanthen, at the end OpenBSD#verify is sent, which calls super into ModernUnix#verify
19:01:32evanwhich would consult a list built up from the calls to .function
19:01:37evanto make sure that all those methods exist
19:01:44evanif one doesn't, it raises an error
19:01:54evanthat effectively delays errors until the end
19:02:04evanletting a subclass 'fixup' things
19:04:55rueThe verification has to be done at the terminal platform (ahaha), though, right?
19:06:00rueRephrase, has to be done in the context of/using the information from the terminal
19:07:28dfg59 enters the room.
19:07:52imajes enters the room.
19:07:59scudwork enters the room.
19:08:26headius enters the room.
19:09:09Skip leaves the room.
19:09:17rubuildius_amd64Wilson Bilkovich: 3cb1fd2f2; 2108 files, 6762 examples, 24966 expectations, 0 failures, 0 errors
19:09:54Ski1 enters the room.
19:10:02evanrue: from the terminal?
19:10:30rueThe end-result, the furthest resolved platform class
19:10:38evancourse
19:10:42evanit wouldn't be from the terminal
19:11:02evanwhich platform class to use would be decided at rubinius build time
19:11:11evanand perhaps put into platform.conf
19:11:20evanrbx.platform.class = OpenBSD43
19:11:31evanthat string is translated into the proper class
19:11:44evanwhich has #verify called on it
19:11:53evanwhich calls up the superclasses
19:12:00evanto make sure everything is setup properly
19:13:47rueOK, 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:01evansure
19:14:18evanModernUnix's called to 'platform_function :lchmod, ...' would add :lchmod to an Array
19:14:46evanat #verify time, it makes sure that there are functions available for everything in that Array
19:15:00brixenhmm, is this actually easier than just attaching a stub method that raises if you call it?
19:15:03evanthat gives any OpenBSD the chance to do 'def lchmod; ...; end'
19:15:07brixenwhat is the main drawback to that approach?
19:15:33brixenwe can't really do lchmod in ruby, so why try?
19:15:34evanit's a different approach
19:15:35rubuildius_ppcWilson Bilkovich: 3cb1fd2f2; 2108 files, 6893 examples, 25175 expectations, 0 failures, 0 errors
19:15:36rubuildius_ppcpluskid: c8120f787; 2108 files, 6893 examples, 25175 expectations, 0 failures, 0 errors
19:15:39evanis all
19:15:41dbussinkevan: hmm, what is the maximum size of the instruction pointer inside a BuiltinTask object?
19:15:45evanrue: what do you see as the drawbacks?
19:15:56evandbussink: dunno
19:16:21dbussinkevan: ah, i was looking at it, make coverage throws some warnings there regarding signedness issues
19:16:41evanah.
19:16:44rueevan: Yeah, so it would work through explicit recordkeeping. Basically all I did was use the MethodTable instead of an Array
19:17:04dbussinkevan: easiest fix is to change the for loop from for(size_t) to for(int)
19:17:18evandbussink: thats fine.
19:17:53brixenI 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:02brixenwhat purpose does verify serve to user code?
19:19:09brixenmind you, I'm talking purely about FFI in platform
19:19:14ruebrixen, 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:29evanright, but is that a problem?
19:19:37brixenrue: I think that's fine, just as long as it doesn't derail loading
19:19:49smparkes enters the room.
19:20:00brixenif we want to add some facility for user code to ask "do I have lchmod" I think that's a separate concern
19:20:55brixenor, even not adding the stub, just don't fail
19:21:05rueIt would also allow the `Platform.respond_to? :lchmod` but I do not consider that as important
19:21:38brixenlet user code introspect for the lchmod method
19:21:49rueI 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:09brixenwell, now we fail at load time, that's the worst
19:22:15ruebrixen: Cannot do that with a stub, though
19:22:16brixenI don't think failing at build time helps anything
19:22:32brixenrue: right, just don't add anything if the function doesn't exist
19:22:43brixenbut don't fail loading by raising an exception
19:22:57brixenthen user code can introspect for the method if needed
19:23:02evani think that's ok
19:23:23evanwhatever uses lchmod in File or whatever
19:23:25elight enters the room.
19:23:27rueFailing at load time is bad mainly because of the error handling currently
19:23:28evancan just rescue a NoMethodError
19:23:39rueThat works, sure
19:23:51brixenperhaps attach_function! to do it with no failing, attch_function will raise if it doesn't exist
19:23:58evanno no
19:23:58rueBut again, that is making the rescue change in N places as opposed to just checking it once
19:24:06evani think we'll need a Platform specific version
19:24:12evanthat fails silently
19:24:18evannot called attach_function
19:24:22brixen