Index

Show enters and exits. Hide enters and exits.

00:04:06rueevan: I think YOU are jumping ahead into a specific case over a more general case ;)
00:04:18evani was.
00:04:20evanno doubt
00:04:33evanbut that case helps dictate the low level implementation
00:04:36evanthats why I brought it up
00:04:50rueYes, it can be useful definitely
00:05:32ruePersonally, I would like the option that if I am in the debugger, any error raised will break right there regardless of where I am currently
00:05:45agardinerso there are two issues: intercepting the exception at the point it occurs, and following the control flow as the exception unwinds
00:08:44evanrue: sure, thats fine to have
00:08:54evanthey're not mutially exclusive
00:09:00evandiscussing all the features of a debugger
00:09:00evanat once
00:09:02evanover IRC
00:09:06evanwill make us all INSANE.
00:09:13agardineragreed
00:09:29agardineri think we've made a good start
00:09:38agardinerbut i for one need to get to bed
00:10:12agardinercan we pick this up again tomorrow?
00:10:21evanyep
00:10:22rueNo, it is now or NEVER!
00:10:23evantomorrow it is.
00:10:24evanHAH
00:10:28agardiner:-D
00:10:31evanrue sounds like a james bond villian.
00:10:33rue*wave
00:10:45agardinernight...
02:23:14pablohwhere the rubinius' rubyconf2009 presentation can be watched?
02:25:31brixenpabloh: http://rubyconf2009.confreaks.com/
02:25:33evanhttp://rubyconf2009.confreaks.com/
02:26:05brixenpabloh: the video for rubinius isn't up yet it looks like
02:26:10brixenbut keep checking that site
02:26:11pablohi seems it haven't been uploaded yet
02:26:15brixenyeah
02:26:22brixenit'll be there eventually though
02:26:24pablohok, i been for a while :)
02:26:29brixenheh
02:26:35evani think they had some sync issues
02:26:38evanso they pulled them
02:26:40evanwhile they work on it.
02:26:44brixenI'm sure they are
02:26:52brixengenerally they are very cool
02:26:54pablohok
02:27:08brixenway better than oreilly not recording the talks at all :/
02:29:27jaribi wonder how much ad money they make by just putting up a few videos at first :)
02:34:48evanbrixen: i'm going to try add a @start to String
02:34:57evanso that String#substring can use CoW
02:46:22brixendamn expose, dashboard whatever
02:46:28brixentwice in one day it hosed up on me
02:46:36brixenevan: how is @start related to CoW?
02:47:59brixenhmm, so it would use the same bytearray but different start and size?
02:48:34brixenI guess that would potentially cover a lot of cases
02:55:55evanright
03:01:48evanbrixen: one case i'm thinking is all the data that comes out of a MatchData
03:03:54brixenright
03:03:59brixenthat's a good case
03:04:28brixenI should investigate a full persistent (fp-style) DS for string
03:04:33brixenbut after dinner :P
03:04:42evanheh
03:04:49brixenand after I finish fixing the rubyspec fuckups
03:04:58brixenI really need to get CI running for rubyspec
03:05:14brixenppl are commiting shit for 1.9 without even checking 1.8 :(
03:05:22brixenanyway, I'm starving, bbl...
03:06:00evan:/
11:27:35rueWoo
11:33:30khaaseNet::HTTP seems to be extremely slow on rubinius. Gem install takes ages, getting alot of "connection reset after 2 requests, retrying".
11:42:49rueGood spot for improvement!
11:43:20rueThere was a problem with it at some point that I fixed, but this was over a year ago...I do not think it has regressed, it is probably just still slow
12:28:48dbussinkkhaase: it might even help gem installation, dunno if that uses net http though
13:19:25ruedbussink: Slowness might help gem installations? ;)
13:19:38dbussinkrue: fixing it :)
13:19:46dbussinkrue: didn't you already do that? ;)
16:17:07luislavenahello guys.
16:20:20khaasebtw i get an "Kernel(Rubinius::AST::ArrayLiteral)#first (method_missing) at kernel/delta/kernel.rb:49"
16:51:36evankhaase: open an issue
16:51:50evankhaase: include as much repro information as you have
16:52:48khaaseevan: I think there was an issue, at least I found one with google, but the issues ajax interface is not my friend today, as it appears
16:52:55khaasewill open an issue
16:55:21evanhave you upgraded?
16:55:28evani've fixed a number of gem speed issues
16:55:44evanand a similar bug to the one you have
16:56:39khaasei did a fresh clone this morning
16:57:09khaaselike 9 hours ago
16:57:21evanbe sure to clean up your .rbc files.
17:02:54khaaseevan: just did an update again, works now... strange
17:06:34evankhaase: hm, ok.
17:06:46khaasesorry for bothering
17:12:03rueLikely stale then
17:15:15evankhaase: no problem.
17:15:28evanman, freenode is having some serious IRC splits problems today.
17:28:06evanadding @start to string has diverged into cleaning up null byte assumptions.
17:30:35brixenevan: you mean where String methods don't account for a null byte embedded?
17:30:43evanactually no
17:30:54evanmaking it so that C code doesn't.
17:31:24evanwe had it mostly done actually
17:31:30brixenahh ok
17:31:32evanwe have a c_str() method on String
17:31:38evanbut it adds a null byte if there isn't one
17:31:46evanif you do that to a shared string
17:31:52evanyou add a null byte in the middle of some other String
17:31:56brixengotcha
17:32:01evanso you can't call c_str() on a shared string
17:32:10evanso i'm just reducing the uses of c_str()
17:32:15evanusing byte_address() + size()
17:33:17brixenhmmm
17:33:26brixenwhy not copy if you call c_str()
17:33:38evanI added to_chars() that does that.
17:33:49evani can't just change c_str to copy
17:33:57evanbecause everywhere that uses that buffer now needs a free()
17:34:27brixenso what does c_str() do?
17:34:48brixenlike when do you use c_str() vs byte_address() + size() ?
17:34:59evanc_str() checks for a null byte
17:35:07evanand sets it if it's not there
17:35:59evanc_str() looks like
17:36:21evanif(byte_address()[size()] != 0) byte_address()[size()] = 0;
17:36:24evanreturn byte_address()
17:36:31evanbut that mutation is invalid on shared strings
17:36:50brixengotcha, but when would we ever use c_str() then?
17:36:56evanrarely
17:36:58evanif ever.
17:37:07evani've added the assert
17:37:14evanbecause c_str had this as a subtle bug already
17:37:21brixenok
17:37:31brixenso, should we not remove it? heh
17:37:57evanoh probably.
17:38:07brixenjust to reduce confusion...
17:38:10evani'll get to that probably :)
17:38:13brixenok
17:39:02evananother option is to go a more C++y route
17:39:12evanand add our own tiny string class
17:39:23evanbut that doesn't really help
17:39:24evannm.
17:39:49khaaseevan: the error is back... unfortunately the project throwing this error (it's a rails project) may not be published atm. so i'll have to do some digging, i guess. a clean rails project did work just fine.
17:40:11evankhaase: you need to track down the file that it's occuring on
17:40:20evancould you gist the backtrace?
17:40:22evanat least
17:40:44khaaseevan: http://gist.github.com/251832
17:42:13khaasei will do some more digging tomorrow and then file an issue.
17:43:05evanok
17:43:09evanthis looks like the same thing
17:43:09khaasewow, also, a rake db:migrate gives me a segfault
17:43:17evanfor some reason, it's not going away.
17:43:32khaasehttp://gist.github.com/251836
17:43:36Zoxc-doesn't c extensions use c_str alot?
17:43:36evanbasically, that looks like the active_record/base.rb parse problem
17:43:40evanthat's been fixed.
17:43:42evanZoxc-: no.
17:44:04evankhaase: *shrug* haven't seen that before
17:44:06evanopen an issue.
17:44:07Zoxcplease call me Zoxc :)
17:44:22khaaseok, so it's in the rbc files of the gems
17:44:38evandid you install rubinius?
17:45:12evanie, use --prefix and rake install
18:08:18luislavenaevan: hello
18:08:32evanhello!
18:09:11luislavenaI'm building a new version of my VMs (Ubuntu) for Ruby testing, wanted to get Rubinius setup there too
18:09:18luislavenaevan: any advice?
18:09:37luislavenaevan: my mac is stuck at 10.5 so no snow for it yet (is summer here) ;-)
18:10:04evanheh
18:10:06evannothing special
18:10:13evanjust download, configure, rake
18:10:56luislavenaevan: ok, will try ;-)
18:17:41evanbrixen: so, I added up removing c_str()
18:17:45evanand adding cpp_str()
18:17:52evanthat returns a std::string as a value
18:18:01evanwhich means the ownership lifetime should be fine
18:19:32brixenthat sounds good
18:19:46brixenthe c_str() was a handy method, but I understand the issues with it
18:19:52evanyep
18:21:21evanusing a std::string is a bit more heavy weight
18:21:25evanbut it's correct.
18:21:37evanif more performance is needed
18:21:44evanthen the code can be converted to use byte_address() + size()
18:22:35ddubc_str on what object?
18:22:55evanrubinius::String*
18:24:02ddubahh
18:24:49dduba rubinius string contains a reference to a bytearray object, correct?
18:26:05evanyes
18:29:07ddubI'm trying to think of a way you could treat the bytearray as a string-like object, but deal with GC moves
18:29:12brixenevan: could you look at spec/frozen/language/break_spec.rb line 137
18:29:26brixenevan: #count is a 1.8.7+ method
18:29:33evansure
18:29:45brixenwhy not just ScratchPad.recorded.should == [....] ie, the full array
18:29:51evandid I write that?
18:29:53brixenyeah
18:29:58evansilly me.
18:30:06ddubsmart pointers will continue to be evil black magic until c++0a comes out, at which point they will be grey magic
18:30:08evanfix it however ou'd like.
18:30:17evanyou'd
18:30:27brixenevan: sure, just checking
18:30:36brixenin case I'm missing something
18:30:47evannope
18:30:49evanjust me being lazy
18:30:50brixenk
18:30:50evanagain.
18:31:59brixenman, Readline is such a freakin PITA for specs :(
18:35:06Zoxcyou can't preallocate the size of objects in rubinius to get a fast Array#join or things like that?
18:35:34Zoxcexploits it for fast string concatenation on MRI
18:36:19evanyes
18:36:25evani also fixed string interp
18:36:33evanso it calculates the final size from the parts
18:36:39evanso
18:36:48evanout = "#{a}#{b}"
18:36:50evanis a lot faster than
18:36:54evanout = a + b
18:36:55evanatm.
18:37:06Zoxcexcellent :)
18:37:08evanadd more items
18:37:12evanit gets faster
18:37:33Zoxcwrote a template engine which stores stuff into arrays :D
18:38:03dbussinkevan: couldn't this be relatively easy applied to + too then?
18:38:17evanwell, + is a bad example
18:38:22evanbecause it does already
18:39:10Zoxcshould "#{a}#{b}" be *alot* faster than a + b then or just the overhead of a method call?
18:39:43evanwe'd have to benchmark it to see
18:41:07Zoxcflatten!.join vs join then?
18:41:57evanwhy flatten?
18:44:07Zoxcbecause I might have nested arrays with more strings, which might get turn into tinyer strings and then concatenated to a large string
18:44:41evani'm not sure what you're point is
18:44:51evani don't get why this is related to string interp.
18:45:58Zoxcwell I (might/will) use array of (array of)* strings as a replacement for ropes =P
18:47:01evanok....
18:47:05evanagain, unrelated atm.
18:47:12evani'm not sure what we're talking about now.
18:48:59ZoxcI like how I can lookup how stuff works in the ruby draft spec, except that I don't make much sense of it :(
19:09:54rueA-ha! I mentioned this about c_str() :P
19:14:18ruebrixen: Does output_to_fd not have the old should_output functionality? That should avoid problems with Readline
19:17:59brixenrue: problems like certain functions not defined on a platform?
19:22:08rueOh, you are speccing Readline itself?
19:25:42brixenI'm just looking at all the failures running the specs against 1.8.6p287
19:29:15ddubI don't see how a + b could be made fast without short-circuiting string logic
19:29:49ddubodd that "#{a}#{b}" is faster until you think about the assumptions that makes
19:31:36DefilerYeah, you just need to check to make sure everything has #to_s
19:31:47Defilerand boom MAGIC TIME
19:32:59ddub"foo=#{foo}, bar=#{bar}" could be ["foo=", foo, ", bar=", bar].join
19:34:55DefilerThat's what it does pretty much, yeah
19:35:08evansort oh.
19:35:09evanof.
19:35:10Defilerexcept it uses string append instead of join on the pieces
19:35:19evannope
19:35:20evannot anymore.
19:35:26Defileroh, yeah?
19:35:29evanthats what I just changed.
19:35:40evanall the parts are pushed on the stack
19:35:46evanthen one opcode, string_build, is called
19:35:55Defileraha
19:35:56evanit looks at all of them and calculates the final size of the result
19:36:09evanthen copies the data into the result
19:36:45Defilercool
19:37:38ddubI suppose you could do the same for string addition, after you verify the first argument is a String and that + hasn't been overridden
19:38:22dbussinkddub: well, inside + you can push the other argument and call string_build then, right
19:38:23dbussink?
19:38:40ddubfor two, possibly, not three
19:38:47dbussinkddub: true
19:39:10ddubthe other option would be an intermediate object, but since strings are mutable there would be a bunch of edge cases that could happen there
19:39:13dbussinkddub: but could be that the 2 strings case already optimizes a great deal
19:45:19ddubin C++ there was a really cool concept of arithmetic templates a while back for matrix math
19:45:39ddubso for those who are unfamiliar with the horrors of c++, string c = a+b; creates two new objects
19:45:55dduba temporary with the value of a + b, then a copy of that which is set onto c
19:46:09ddubthats why c++0x has rvalue references
19:46:35ddubso that you can actually say things like, build that new string into the c object
19:47:14dgtizedevan: with this string build deal, how is the stack allocated again? I mean what if one of the items is an inspect with millions of constituative objects?
19:47:50ddubarithmetic templates would say, a + b returns a StringConcatenation object with references to a and to b, and that value could be assigned to a string, at which point a new string object would be made
19:47:58evandgtized: i don't get your example
19:48:19ddubshushes
19:51:13dgtizedevan: hmm, I was being idiotic, you just store the reference/pointer to the string on the C stack?
19:51:34evanthe result you mean?
19:51:45dgtizedthe intermediates
19:51:46dgtizedbut yea
19:51:59evannothing different than what we do with everything else
19:52:03evanfor
19:52:07evan"#{a}#{b}"
19:52:24evanA is evaluated, the result is pushed on he stack
19:52:30evanb is eval, result pushed on the stack
19:52:38dgtizedright, but it's just the pointer to the result for A and B
19:52:39evanif they're both locals, it looks like
19:52:41evanpush_local 0
19:52:42evanpsuh_local 1
19:52:44evanstring_bulid 2
19:52:46dgtizedyou are not storing the entire string
19:52:49dgtizedon the stack
19:52:53evanafter string_build, the top of the stack points to a String object
19:52:59dgtizedand that's what I was for some stupid reason thinking
19:53:00evandgtized: huh?
19:53:02evanof course not
19:53:05dgtizedyea I get it, it's fine I was being an idiot
19:53:08evanthe stack only contains object references.
19:53:29dwaiteand object immediates like fixnums and symbols
19:53:38evandon't confuse the matter
19:53:41evanthose are object references.
19:53:53evannevermind that the value is encoded within the reference itself.
19:53:56dgtizedyup, yup, I got it, was just misreading how the optimization worked
19:54:00evanthats an implementation detail.
19:54:06dwaiteyeah, they are just very detailed references :)
19:54:37evanit's in fact fine to consider them references to objects
19:54:47evanjust that the memory referenced doesn't actually exist.
19:56:31dgtizedevan: wait so is this string_build only for the "#{}" substitutions, or also for Array.join?
19:56:44evanonly string interp
19:56:51evanit's got nothing to do with Array#join
19:56:51evanzero.
19:57:27dgtizedbut if you pushed the separators onto the stack after each string element in an Array being joined ...
20:00:45dgtizedit's useless for + or << essentially, but Array.join and I guess to an extent Sprintf are the two other occasions where large strings are being allocated from necessarily a sequence of smaller constituative strings that you should know the length of by the time the arguments are processed
20:01:56evanthey can certainly use the same technique
20:02:02evanbut no need to use the string_build opcode
20:02:11evanthere is no way to access it from highlevel code anyway
20:02:18evanaccept doing a string interp.
20:02:21dgtizedeven as Rubinius.asm
20:02:27evani guess you could do that
20:02:32evanbut it's static
20:02:41evanstring_build takes an operand
20:02:48dgtizedthe number of elements?
20:02:49evanhow many things on the stack to take
20:02:54dgtizedright ...
20:02:57evanso if you have a method like Array#join
20:02:59evanit's useless
20:03:04evanbecause you don't know how many you'll have.
20:03:14evanagain
20:03:18evanArray#join can do the same thing dynamicly
20:03:26dgtizedcourse you do, it's the length of the Array + Length of Array - 1 for each seperator
20:03:27evancalculate the final size
20:03:39evanthats not the size
20:03:40evanat all.
20:03:47evanyou iterate the array
20:03:50evanand get the size of ecah element
20:03:58evanadd them together
20:04:17dgtizedwait but I thought string_build just popped each string reference off the stack?
20:04:19dwaitedgtized: the dquote string build is static though, you know exactly what arguments are needed to be interpreted at compilation time
20:04:28dwaiteand the string_build instruction requires a count
20:04:30evandgtized: course it does
20:04:36evanbut it has to know how many to pop
20:04:41dwaiteso array.join would have to generate code to handle that :)
20:04:43evanand it's told staticly.
20:04:51evanpush_local 0
20:04:52evanpush_local 1
20:04:56evanstring_build 2
20:04:57evansee the 2?
20:05:55dgtizedbut why does the argument to string_build have to be static, why can't it be push_local 0; push_local 1; puch_local 2; # where is the number of elements; and string_build
20:06:10evanit could be
20:06:11evanbut it's not.
20:06:23evannor do I think it should be.
20:06:30evani assume you mean
20:06:32evanpush_local 0
20:06:34evanpush_local 1
20:06:37evanpush_int 2
20:06:40evanstring_build
20:06:46evanactually no
20:06:50evanthats not allowed
20:07:01evanbecause you can't tell staticly how much stack string_build will use
20:07:05evanand thats a requirement
20:07:19evanno dynamic stack usage is allowed.
20:07:30dgtizedah
20:07:33dgtizedok
20:07:36dgtizedI follow
20:09:24dbussinkevan: polising it up before unleasing it to the world? :P
20:09:32evanhuh?
20:10:36dbussinkevan: the string improvements, or is it not finished yet?
20:10:43evanit's in.
20:10:48evanlast week.
20:10:56evanwell, string_build is
20:11:03evani'm working on the @start patch now.
20:11:15evanit doesn't work yet.
20:11:32dbussinkah ok, but the cow idea is nice :)
20:11:43dbussinksomething a lot of vm's do?
20:12:35evantypically yes
20:14:30evangags on FFI::Platform::File.basenam
20:14:33evanbasename
20:14:34evanfirst
20:14:38evanwhy the fuck is this code under FFI?
20:14:45evanoh i remember
20:14:50evansomeone moved Platform under FFI.
20:14:55evanle sigh.
20:16:28dwaitedbussink: which cow idea?
20:16:35dwaitecow strings?
20:16:40dbussinkdwaite: using cow strings
20:16:58dbussinkevan: self.expand_path even has a FIXME: this is awful ;)
20:17:12dwaiteyeah it depends. gcc moved away from them a while back because they have a ton of lock contention
20:22:43dbussinkdwaite: yeah, well, they are in quite a different situation :)
20:27:34brixenevan: do you have any commits to spec/frozen pending?
20:27:45evanhm
20:27:46evanone maybe
20:27:51evanjust a whitespace cleanup
20:27:53brixensomething you could push
20:28:10evanI think so.
20:28:12brixenok
20:28:15brixenor even a gist
20:28:22brixenI've got them merged back to rubyspec
20:28:28brixenand I'm trying to fix some stuff and sync rbx
20:28:41brixenmajor pita this time
20:29:37dbussinkbrixen: i've committed stuff to both rubyspec and spec/frozen, that's the preferred way right?
20:29:46brixendbussink: well, depends
20:30:00brixengenerally yes, you can do that
20:30:52brixenI'm just going to try to sync weekly
20:31:08dbussinkbrixen: well, if i can make your life easier, i'd do that, just for you ;)
20:31:10evanbrixen: actually, don't worry about this commit
20:31:22evanactually maybe i can test this..
20:31:23evanone sec.
20:32:09brixendbussink: appreciated... but there's not really a better way
20:36:21boyscoutWhitespace fix - 306c17d - Evan Phoenix
20:36:22boyscoutImprove String#split performance - 0e0612e - Evan Phoenix
20:36:22boyscoutAbstract all uses of ByteArray::bytes - c4b8ce3 - Evan Phoenix
20:43:04boyscoutCI: c4b8ce3 success. 3005 files, 11489 examples, 35634 expectations, 0 failures, 0 errors
20:53:46agardinerevening
21:21:36rue*wave
21:24:33dbussinkevan: how are you going to handle reused strings where the original string changes?
21:25:53dbussinkevan: or are you using the underlying copy on write principle?
21:32:40dwaitedbussink: actually the situation is very similar - its still a matter of trying to reduce the number of objects in memory.
21:33:47dwaiteI'd go as far as to say, toss an object header and encoding bit on the front and the old std::string impl and the rbx impl would be interchangable
21:51:29evanarg.
21:51:43evanadding @start requires a lot of string changes
22:08:26dwaiteevan: what is @start?
22:09:44evanmaking Strings CoW more flexible
22:09:50evanby allowing for a shifted start
22:10:06evanwhich means that String#substring could reuse the original ByteArray
22:10:17evanand just have @start > 0 with a size
22:22:32dbussinkevan: what will happen if the original bytearray is subsequently changed?
22:25:57Defilercopy on write
22:26:33dbussinkDefiler: yeah ok, but that could mean a lot more writes too
22:26:40dbussinkat least bigger writes
22:26:47Defilerworst case is only as bad as what it does now
22:28:30dbussinkDefiler: true yeah, i wasn't really thinking properly :)
22:28:45Defileryeah, it is ultra wintastic :)
22:28:59dbussinkDefiler: although modifying a single char inside a string could be less optimal
22:29:40dbussinkDefiler: where you would need to reallocate the bytearray instead of just modyfing a single element
23:03:07evanbrixen: poke
23:08:34slavahi evan
23:10:04evanhello slava.
23:11:05ruedbussink: No, you are just doing it at a later time
23:11:22ruesbryant`: Congrats, you have entered Stage 1 of Not Understanding It Either
23:12:05evansbryant`: what was the most confusing part
23:12:59evanback up
23:13:02evanyou mention both rubinius and the ruby-ffi gem
23:13:08evanwhich one are you talking about
23:13:12evanbecause they don't share any code atm.
23:14:10evanok
23:14:34evanwhich?
23:14:53evanrefrain from pronouns until we're discussing a singular thing
23:14:56evanplease.
23:17:06evanin which?
23:18:16evandid you read the FFI::Library#attach_function?
23:18:47evanthe binding is right there
23:18:52evanon line 97.
23:19:18evanif by binding you mean how a function is hooked up to a method.
23:20:12evanbe specific
23:20:19evani don't know what you mean.
23:20:35evancreate_backend is a primitive
23:20:35evanyou see that, yes?
23:20:56evanso you need to look at the definition of that primitive.
23:23:00rue<3 ctags
23:23:23evando you know what primitives are?
23:23:45rueOr just ack :)
23:24:04evanyes, `ack nativefunction_bind vm` will show you it.
23:24:25evanok
23:24:29evanso you don't know what primitives are.
23:24:39evanthats why you're confused.
23:24:55evana primitive in a C++ function exported into rubyland as a name
23:25:08evanand a ruby method can bind it's implementation to that name
23:25:18evanso when the method is called, the C++ function is called
23:25:55rueWell, create_backend lives in kernel/
23:26:22DefilerI'm assuming he found NativeFunction::bind
23:27:00evan/ Ruby.primitive :<name>
23:27:00evansyntax in vm declares a C++ function as having that primitive name
23:27:00evansbryant`: because primitives are not methods.
23:27:00evanDefiler: it would appear not.
23:27:08Defileraah
23:33:13evanwell that was fun.
23:33:17evangot a kernel panic.
23:39:35evank
23:42:48brixenevan: back...
23:43:40evani'm trying to figure out how to build the openssl extension
23:43:44evanI think i've got it now.
23:43:47brixenok
23:43:48evanmaybe.
23:44:17brixenwhich part is problematic, the openssl Rakefile or rakelib/extensions.rake?
23:45:08evani'm trying to do it without writing an openssl Rakefile
23:45:16evanbecause the extconf.rb has a whole bunch of logic.
23:45:22brixenoh ugh
23:45:23brixenok
23:45:46brixenare you using rake-compiler then?
23:46:02evani could, but i'm just shelling out to the extconf.rb direccly atm
23:46:05evannone the less
23:46:13evani'm worried that i can't run the extconf.rb under rbx
23:46:18evanbecause if --prefix is set
23:46:25evani can't just do "../../bin/rbx extconf.rb"
23:46:29brixenhmm
23:46:45evanwell, if i set the RBX_RUNTIME env var
23:46:45evani should be able to, yes?
23:46:58brixenwell, regardless of --prefix being set, the bootstrapping ruby is still used to build
23:47:13brixenrbx is not used to build extensions
23:47:23brixenunless you do rbx -S rake to build
23:47:30evanthats my point
23:47:35evanto use an extconf.rb
23:47:39evani have to build it under rbx
23:47:48brixenah yes
23:47:52evanthere is no way to use an extconf.rb under MRI but have it build for rbx
23:47:53brixenwhat a mess
23:48:05brixenwell, see Rakefile at the top
23:48:09evani might just ignore the extconf.rb
23:48:16evanand try and get a Rakefile up
23:48:17brixenI set RBX_RUNTIME and RBX_LIB to run the specs
23:48:24evanwhich rakefile?
23:48:27evanoh the main one
23:48:28brixenrbx
23:48:58brixenI think taking the time to set up the openssl Rakefile is worth it
23:49:07brixenI *think*... heh
23:49:23brixenle'see
23:50:36brixenman what a mess...
23:50:46evanthe crux is that extconf.rb does detection
23:50:51evanand our Rakefiles don't.
23:50:55evanthey can
23:50:58brixensure
23:50:59evanbut they don't atm.
23:51:04brixenyeah
23:51:36brixenwell, the detection doesn't depend on rbx
23:51:49brixenjust the flags to include, link, etc
23:52:01brixentoo bad mkmf wasn't actually a library
23:52:52evanok
23:53:00evani'm going the "work first, fix later" approach.
23:53:21brixenk