Show enters and exits. Hide enters and exits.
| 00:03:18 | benstiglitz leaves the room. | |
| 00:09:11 | agile leaves the room. | |
| 00:14:24 | Arjen_ leaves the room. | |
| 00:21:25 | wmoxam leaves the room. | |
| 00:22:20 | therealadam leaves the room. | |
| 00:34:51 | rue | tarcieri: Net::HTTP |
| 00:35:37 | obvio enters the room. | |
| 00:39:11 | wycats | hey drbrain |
| 00:39:19 | drbrain | sup |
| 00:39:25 | wycats | why isn't there a simple way in autotest to set up a mapping |
| 00:39:30 | wycats | like a .autotest with a YAML |
| 00:39:44 | wycats | or something equally trivial |
| 00:40:08 | wycats | that |
| 00:40:20 | ezmobius leaves the room. | |
| 00:40:35 | ezmobius enters the room. | |
| 00:40:36 | drbrain | what is hard about the .autotest? |
| 00:40:51 | mapar leaves the room. | |
| 00:40:51 | drbrain | it's only four lines right now, and is super flexible |
| 00:41:18 | bitbang enters the room. | |
| 00:42:17 | bitbang leaves the room. | |
| 00:44:58 | wycats | I mean for individual apps |
| 00:45:04 | wycats | not the system-wide one |
| 00:45:11 | wycats | basically to simplify the way you have to specify maps |
| 00:47:24 | drbrain | you can put a .autotest in the project directory |
| 00:48:30 | drbrain | for example, there's a .autotest in rubinius |
| 00:48:31 | wycats | and use it to specify maps? |
| 00:48:41 | wycats | it looks like it requires a whole procedure |
| 00:48:51 | wycats | at least I had to go through a procedure to get it working on merb |
| 00:49:02 | wycats | what I really want is a simple way to say: here's the map |
| 00:49:43 | drbrain | Autotest.add_hook :initialize do |at| at.add_mapping /.../ do |_, m| Dir["..."] end |
| 00:51:23 | drbrain | you can also throw in exception directories and whatnot to say "don't bother looking at this" |
| 00:51:44 | wycats | seems like I have to do some crazy shit with discovery |
| 00:51:58 | drbrain | no, just add_mapping |
| 00:52:14 | wycats | in Merb, we did it inside of class Autotest::MerbsourceRspec < Autotest |
| 00:52:16 | wycats | was that wrong? |
| 00:53:08 | dctanner leaves the room. | |
| 00:53:15 | drbrain | is this for merb apps, or is this a merb autotest runner? |
| 00:53:32 | drbrain | I may be confused |
| 00:53:36 | wycats | merb autotest runner |
| 00:53:52 | drbrain | ok |
| 00:54:03 | wycats | we ended up having to duplicate all the Rspec logic in our the class |
| 00:54:05 | drbrain | have you looked at autotest/rails.rb ? |
| 00:54:08 | wycats | yeah |
| 00:54:12 | wycats | they had to do that too |
| 00:54:27 | wycats | there didn't seem to be an Rspec superclass we could inherit from |
| 00:55:26 | drbrain | hrm, let me see what they did |
| 00:55:45 | wycats | also, add_mapping takes a lambda |
| 00:55:47 | wycats | which seems silly |
| 00:55:49 | wycats | for simple cases |
| 00:55:56 | wycats | like I have this: at.add_mapping(%r{^bin/thor}) {|_,_| at.files_matching %r{spec/thor_runner_spec}} |
| 00:56:21 | wycats | it would be great if I could do add_mapping "bin/thor", "spec/thor_runner_spec.rb" |
| 00:57:44 | drbrain | yeah |
| 00:58:05 | drbrain | in that case, dropping files_matching would make sense |
| 00:58:10 | wycats | or even a regex on both sides |
| 00:58:27 | wycats | and assume that a regex means {|_,_| at.files_matching regex }{ |
| 00:58:34 | drbrain | in rspec 1.1.3, the autotest/rspec.rb is 74 lines |
| 00:59:03 | drbrain | %r{} is // where you don't have to escape "/" |
| 00:59:05 | blakewatters enters the room. | |
| 00:59:29 | wycats | drbrain: duh :P |
| 00:59:36 | wycats | but I can't provide a regex |
| 00:59:41 | wycats | I have to provide a lambda |
| 01:00:07 | wycats | actually... a glob would probably be better than a regex |
| 01:00:13 | drbrain | add_mapping ... do "hard_coded_path" end :/ |
| 01:00:17 | drbrain | not the best |
| 01:00:35 | drbrain | but, I don't see where rspec is doing extra magic here |
| 01:00:59 | drbrain | more commonly I've paramaterized the regex, and used the match object to paramaterize a glob |
| 01:01:02 | wycats | glob => glob is probably a more common case |
| 01:01:08 | wycats | yeah |
| 01:01:39 | wycats | I don't mean to be nitpicky but it just seems like the API could be cleaner |
| 01:01:42 | wycats | for simpler cases |
| 01:01:58 | wycats | there's a bit of a learning curve for setting up autotest maps that imho does not need to exist |
| 01:02:09 | wycats | maybe the glob could take gsub params |
| 01:02:17 | wycats | 'spec/\1_spec.rb' |
| 01:02:52 | drbrain | they've got three standard rspec mappings and a bit of code to teach autotest about rspec |
| 01:03:48 | drbrain | looking at Autotest#test_files_for, that might complicate things a bit |
| 01:04:22 | blakewatters leaves the room. | |
| 01:05:01 | drbrain | 16:55 wycats: like I have this: at.add_mapping(%r{^bin/thor}) {|_,_| at.files_matching %r{spec/thor_runner_spec}} |
| 01:05:13 | drbrain | 16:56 wycats: it would be great if I could do add_mapping "bin/thor", "spec/thor_runner_spec.rb" |
| 01:05:16 | drbrain | basically |
| 01:05:27 | blakewatters enters the room. | |
| 01:05:33 | wycats | yeah |
| 01:05:54 | wycats | but then I modified it to say that the second param might support gsub params.... like 'spec/\1_spec' |
| 01:06:05 | anteaya leaves the room. | |
| 01:06:07 | wycats | the basic idea is that I wish it was easier to set up simple mappings |
| 01:06:13 | drbrain | wycats: the autotest/discover.rb lets autotest say "if I see X, load up autotest/merb.rb" which has merb-specific mappings |
| 01:06:21 | wycats | right |
| 01:06:24 | wycats | and we use that |
| 01:06:33 | wycats | but (1) we have to reinvent the rspec stuff |
| 01:06:36 | wycats | as far as I can tell |
| 01:06:42 | wycats | and (2) most of our maps could be simplified |
| 01:07:04 | zenspider | easier? just because they're regexps? |
| 01:07:12 | wycats | zenspider: no problem with regex |
| 01:07:15 | wycats | problems with lambdas |
| 01:07:19 | wycats | where not necessary |
| 01:07:29 | wycats | at.add_mapping(%r{^lib/merb-core/controller/([^/]*)\.rb$}) { |_, m| at.files_matching %r{^spec/(public|private)/abstract_controller/.*_spec\.rb} } |
| 01:07:32 | wycats | for instance |
| 01:07:36 | zenspider | ah |
| 01:07:40 | anteaya enters the room. | |
| 01:07:53 | zenspider | yeah... those 2 extra braces are a bitch. :P |
| 01:08:02 | evan | he's paid pre-brace |
| 01:08:06 | evan | i worked it out with Ezra |
| 01:08:11 | zenspider | I could see us extending it to take two strings tho |
| 01:08:11 | evan | per-brace. |
| 01:08:12 | evan | rather. |
| 01:08:15 | zenspider | per. :P |
| 01:08:21 | zenspider | you're fired |
| 01:08:26 | wycats | zenspider: it's not the two braces :P |
| 01:08:27 | zenspider | sorry... you didn't understand that |
| 01:08:33 | zenspider | your fired |
| 01:08:36 | zenspider | :P |
| 01:08:36 | evan | :) |
| 01:08:36 | wycats | :P |
| 01:08:38 | wycats | ur |
| 01:08:43 | wycats | it's the extra mental overhead you get when you get started with mappings |
| 01:09:07 | wycats | it's nice that the power is there, but it's also nice to not have to go through a bunch of rigamarole when you want to do something simple :) |
| 01:09:10 | drbrain | wycats: is the standard way to test a merb app to use rspec? |
| 01:09:17 | wycats | yes |
| 01:09:23 | wycats | this is for the merb source |
| 01:09:24 | wycats | not a merb app |
| 01:09:34 | drbrain | oh, merb source |
| 01:09:46 | wycats | I'm more concerned about having to dump in all this rspec stuff that's the same as every other rspec project |
| 01:09:49 | wycats | lemme pastie |
| 01:09:54 | drbrain | in that case, just drop in a .autotest in the top of the merb tree |
| 01:09:59 | zenspider | what's the reinvent part? |
| 01:10:15 | drbrain | and so long as you have a spec/ dir the rspec autotest will be there |
| 01:10:22 | drbrain | then you can extend rspec's mappings |
| 01:10:26 | wycats | http://pastie.caboo.se/private/bnldtydcxanw2uvns7ydpa |
| 01:10:34 | wycats | what's the superclass? |
| 01:10:41 | zenspider | I might be intermittant on the paying attention part. digging into String#unpack and horrified. |
| 01:10:50 | wycats | is there another one other than Autotest we should be using |
| 01:10:59 | wycats | zenspider: I saw you fixed up my admittedly horrific Array#pack :P |
| 01:11:08 | zenspider | wtf? |
| 01:11:14 | wycats | ? |
| 01:11:22 | wycats | I saw a bunch of activity on it |
| 01:11:36 | drbrain | wycats: delete everything except Autotest.add_hook :initialize block, I think |
| 01:11:38 | wycats | I wrote the very first pass of that, which I am admitting was horrific |
| 01:11:40 | zenspider | wait... I don't get why there is so much code in here... how old did you pull from rspec? |
| 01:11:54 | wycats | we copied from Rails |
| 01:11:54 | zenspider | wycats: you wrote pack? I thought jeremy roach did |
| 01:12:04 | wycats | zenspider: maybe he rewrote it? |
| 01:12:13 | wycats | #pack was the first thing I did on rbx |
| 01:12:16 | zenspider | from my rails plugin for autotest? |
| 01:12:20 | wycats | right |
| 01:12:23 | stepheneb enters the room. | |
| 01:13:32 | zenspider | wycats: you should dump everything you have and start over... you either pulled a looong time ago, or someone crufted a lot up |
| 01:13:40 | zenspider | the only def I have in rails.rb is path_to_classname |
| 01:13:50 | zenspider | and that's just because they tardedly put Test on the end |
| 01:14:30 | zenspider | I doubt you need a whole subclass and all... I bet you can get by just fine now with a simple .autotest and some basic hooks |
| 01:14:41 | zenspider | prolly 25% of the code you have now |
| 01:15:13 | zenspider | in fact, just your init hook... |
| 01:16:01 | zenspider | the rest you can probably get from the rspec plugin |
| 01:16:17 | zenspider | looks like you need the one tweak at the bottom because you use your own runner? |
| 01:16:20 | zenspider | (why?) |
| 01:16:23 | drbrain | and automatically, since you have a spec/ dir |
| 01:17:30 | wycats | zenspider: we have our own runner because we run test files in separate processes |
| 01:17:39 | wycats | hit me up next time we're in the same place and we can argue about it |
| 01:18:11 | drbrain | RailsConf, likely |
| 01:18:26 | zenspider | yeah. so dump everything. start with an empty .autotest file, pull in your :initalize hook, and see where you stand |
| 01:18:32 | jeremydurham enters the room. | |
| 01:18:39 | zenspider | the rest you can probably do with really minor overrides to rspec's plugin |
| 01:19:19 | benny leaves the room. | |
| 01:19:19 | drbrain | probably just subclass and add the one override for your special runner |
| 01:20:48 | zenspider | no, don't subclass... |
| 01:21:00 | zenspider | then you have to go the autotest/discover.rb route |
| 01:21:05 | zenspider | overkill |
| 01:22:01 | wycats | so if I just use .autotest it'll use rspec automatically |
| 01:22:05 | wycats | and add my additional hooks |
| 01:22:15 | drbrain | yeah |
| 01:22:28 | wycats | how do I get my spec_commands in? |
| 01:25:53 | mernen enters the room. | |
| 01:27:32 | zenspider | wycats: for that go ahead and open their runner class in your .autotest |
| 01:27:57 | zenspider | you'll only want the one or two methods at the bottom... it should be fine |
| 01:28:04 | zenspider | alias them aside and monkeypatch |
| 01:28:33 | wycats | by their runner class, you mean the Rspec one? |
| 01:29:45 | zenspider | yeah |
| 01:30:00 | zenspider | it'll be RspecAutotest or something like that |
| 01:30:35 | pauldix leaves the room. | |
| 01:35:42 | wycats | coo |
| 01:35:45 | Yurik leaves the room. | |
| 01:36:34 | evan | sweet, type-safe accessors to slots are working. |
| 01:38:41 | GMFlash leaves the room. | |
| 01:39:55 | wycats | :-D |
| 01:47:50 | lstoll leaves the room. | |
| 01:57:58 | trythil enters the room. | |
| 01:59:48 | jtoy enters the room. | |
| 02:01:33 | ezmobius leaves the room. | |
| 02:01:46 | ezmobius enters the room. | |
| 02:05:27 | evan | a veritable shitton of code pushed to cpp |
| 02:08:12 | rue | You really should switch to the metric system |
| 02:08:32 | evan | who said it wasn't a metric shitton? |
| 02:08:37 | wmoxam enters the room. | |
| 02:09:27 | ezmobius | sweet |
| 02:09:35 | ezmobius | does it run code yet? or still being wired up? |
| 02:09:38 | trythil leaves the room. | |
| 02:09:43 | evan | getting very close to running code |
| 02:09:43 | drbrain | evan: they spell it "tonne" |
| 02:09:50 | evan | drbrain: touche |
| 02:10:19 | evan | the decision to remove ivar_as_index meant that I had to add a bit more infrastructure on the VM side |
| 02:10:24 | evan | but thats all wired up now |
| 02:12:32 | cremes_ leaves the room. | |
| 02:12:33 | drbrain | yay! no more ivar_as_index! |
| 02:12:42 | ezmobius | so now all ivars are just real ivars? |
| 02:12:50 | cremes_ enters the room. | |
| 02:13:06 | drbrain | I was never fond of it |
| 02:13:13 | evan | me neither |
| 02:13:16 | evan | it was super brittle |
| 02:13:29 | evan | ezmobius: no, they just look that way |
| 02:13:36 | evan | the VM takes care of mapping them to slots as needed now |
| 02:13:41 | ezmobius | ahh cool |
| 02:13:47 | evan | the compiler isn't even aware |
| 02:14:04 | evan | the VM performs transforms on the bytecode before executing the CM |
| 02:14:09 | evan | (the first time only) |
| 02:14:22 | evan | one of the is type specialization |
| 02:14:34 | evan | it's very simple now |
| 02:14:45 | evan | but the infrastructure is in place for lots more optimizations now |
| 02:14:54 | rue | Hm, are there any issues with using them as regular ivars? |
| 02:15:17 | evan | rue: there is a bootstrapping issue |
| 02:15:20 | evan | and a performance issue |
| 02:15:32 | flori leaves the room. | |
| 02:15:32 | dlee leaves the room. | |
| 02:16:03 | shame enters the room. | |
| 02:16:12 | dlee enters the room. | |
| 02:16:12 | flori enters the room. | |
| 02:17:36 | eventualbuddha leaves the room. | |
| 02:18:46 | yugui enters the room. | |
| 02:31:40 | VVSiz_ enters the room. | |
| 02:35:45 | ShayArnett enters the room. | |
| 02:39:30 | jeremydurham leaves the room. | |
| 02:40:01 | jeremydurham enters the room. | |
| 02:41:26 | wmoxam leaves the room. | |
| 02:44:42 | ShayArnett leaves the room. | |
| 02:46:25 | ShayArnett enters the room. | |
| 02:47:34 | obiejuan enters the room. | |
| 02:48:10 | ezmobius leaves the room. | |
| 02:49:53 | VVSiz leaves the room. | |
| 02:53:35 | lstoll enters the room. | |
| 02:59:46 | jeremydurham leaves the room. | |
| 03:02:36 | anteaya leaves the room. | |
| 03:09:22 | lopex leaves the room. | |
| 03:10:15 | Fullmoon enters the room. | |
| 03:18:23 | jeremydurham enters the room. | |
| 03:19:40 | trythil enters the room. | |
| 03:20:07 | agardiner enters the room. | |
| 03:20:37 | agardiner | howdy |
| 03:23:09 | wmoxam enters the room. | |
| 03:23:27 | benburkert leaves the room. | |
| 03:34:22 | rue | Morning, agardiner |
| 03:35:00 | agardiner | hi rue. how's the back healing up? |
| 03:40:48 | benburkert enters the room. | |
| 03:43:53 | blakewatters leaves the room. | |
| 03:48:22 | m7d enters the room. | |
| 03:49:36 | obvio171 enters the room. | |
| 03:50:39 | obvio leaves the room. | |
| 04:00:53 | wmoxam leaves the room. | |
| 04:04:13 | m7d_ leaves the room. | |
| 04:08:39 | m7d_ enters the room. | |
| 04:09:55 | GMFlash enters the room. | |
| 04:13:57 | ezmobius_ enters the room. | |
| 04:15:06 | mernen leaves the room. | |
| 04:15:56 | wmoxam enters the room. | |
| 04:20:46 | ShayArnett leaves the room. | |
| 04:24:42 | m7d leaves the room. | |
| 04:25:24 | rue | agardiner: Alright |
| 04:26:11 | rue | Still kind of fuzzy, but I should be off the anti-inflammatories Saturday |
| 04:26:31 | srbaker leaves the room. | |
| 04:27:59 | rue | Nice. Kent Beck will be at RC |
| 04:28:12 | rue | (First time I am looking at the schedule o.O) |
| 04:33:50 | srbaker enters the room. | |
| 04:34:19 | agardiner | argh... sounds painful, but good to hear you're on the mend |
| 04:36:23 | evan | agardiner: hows the packing going? |
| 04:36:34 | agardiner | hey evan |
| 04:36:36 | agardiner | not too bad |
| 04:36:48 | agardiner | not so much packing as just running around tying up loose ends |
| 04:36:58 | agardiner | the movers are doing most of the packing, which is great |
| 04:37:16 | evan | nice |
| 04:37:32 | agardiner | yeah, it makes things a whole lot less hassle |
| 04:37:46 | agardiner | saw you're last cpp check-in |
| 04:37:58 | evan | thoughts? |
| 04:37:59 | agardiner | seems like you are getting close |
| 04:38:03 | evan | other than it's too damn big. |
| 04:38:19 | agardiner | the check-in, or the VM? |
| 04:38:24 | evan | the check-in |
| 04:38:42 | evan | the VM is crystalizing |
| 04:38:44 | agardiner | yeah, it was a biggy - but i guess that's a weeks work |
| 04:38:50 | evan | yeah |
| 04:38:56 | agardiner | the VM is looking really good |
| 04:39:11 | agardiner | the organisation is *much* better, and easier to follow |
| 04:39:15 | evan | yay! |
| 04:39:43 | evan | i love how the method lookup logic came together |
| 04:39:52 | agardiner | i was just going to comment on that |
| 04:39:54 | evan | as a series of delegated classes |
| 04:39:59 | agardiner | its amazing how few lines it is now |
| 04:40:03 | evan | exactly |
| 04:40:18 | rue | The new stuff is quite nicely condensed, certainly |
| 04:40:34 | evan | right now, i'm going to wire better method executon in |
| 04:40:43 | agardiner | i'm curious to know your thoughts/plans for vmmethod... |
| 04:40:46 | evan | have you noticed that there is a new superclass of CompiledMethod? |
| 04:40:49 | evan | Executable |
| 04:40:56 | agardiner | yeah, i saw that |
| 04:40:59 | agardiner | what's it for? |
| 04:41:32 | evan | the idea is that anything thats a subclass of Executable is something the VM itself can execute |
| 04:41:37 | evan | in terms of it can be in a MethodTable |
| 04:41:43 | agardiner | ooh, nice |
| 04:42:09 | evan | attr_* is going to generate Attr* instances which are Executable subclasses |
| 04:42:26 | evan | a ruby executable class is paired with a VM class of similar name |
| 04:42:40 | evan | there is a field in Executable called compiled |
| 04:43:03 | evan | might change the name, but basically it's a pointer to the VM object that handles the execution of the method |
| 04:43:24 | evan | so that method 'execution' becomes |
| 04:43:26 | agardiner | ok, so the thing that understands the compiledmethod or whatever it has to execute? |
| 04:43:55 | evan | ((VMExecutable*)method->compiled->pointer)->execute(state, method) |
| 04:44:04 | evan | execute is a C++ virtual function |
| 04:44:23 | agardiner | very nice - a ready-made hook for jit-ing |
| 04:44:28 | evan | yep. |
| 04:44:39 | evan | and FFI |
| 04:44:55 | agardiner | and primitives |
| 04:44:58 | evan | yep |
| 04:45:00 | agardiner | ? |
| 04:45:22 | evan | VMMmethod will have a subclass called VMMPrimitiveMethod |
| 04:45:35 | evan | that tries the primitive first and if it fails, delegates to it's superclass |
| 04:45:45 | agardiner | oh, very nice |
| 04:45:51 | agardiner | OO ftw |
| 04:45:53 | evan | it's still stackless, so execution of a VMMethod means repointing things and returning |
| 04:46:28 | evan | also, those things that need arguments get them from a Message object |
| 04:46:31 | evan | rather than looking on the stack |
| 04:46:43 | evan | thus things are abstracted away from the execution model a bit |
| 04:46:50 | evan | letting us grow more |
| 04:47:03 | agardiner | yeah, i also saw the new logic there to pull in the args when creating a context |
| 04:47:08 | agardiner | very neat |
| 04:47:11 | evan | yep |
| 04:47:17 | evan | arguments are pulled in inside the VM now |
| 04:47:38 | agardiner | i think that's a far better spot for it, personally |
| 04:47:43 | evan | me too |
| 04:47:51 | evan | every VM out there handles arguments inside the VM |
| 04:47:52 | agardiner | it was the part i always had difficulty following before |
| 04:47:55 | evan | for a number of good reasons |
| 04:48:13 | agardiner | yeah |
| 04:48:29 | evan | even parrot has a set of specialized arg bytecodes |
| 04:48:45 | agardiner | so, are you going with direct threading initially? or just a big switch to start with? |
| 04:49:05 | evan | getting stuff running with big switch |
| 04:49:09 | evan | then add direct threading back in |
| 04:49:39 | evan | i wont have time beore railsconf, but i'm pretty sure i've come up with a scheme that will let us use LLVM |
| 04:49:59 | agardiner | will that be a different VMExecutable subclass for each? |
| 04:50:14 | agardiner | oh wow... that's pretty awesome |
| 04:50:37 | evan | the LLVM still has overhead and such |
| 04:50:41 | evan | it will still be stackless |
| 04:50:49 | wycats_ leaves the room. | |
| 04:50:50 | evan | but it will basically give us another speed boost |
| 04:51:02 | wycats_ enters the room. | |
| 04:51:11 | evan | and it will be a lot like the call threaded paper that people were talking about a while ago |
| 04:51:35 | agardiner | yeah, i'm still interested in that idea... |
| 04:51:55 | evan | i have this other totally crazy idea about using clang (a new C frontend to LLVM) to let rubinius execute .c files directly |
| 04:52:12 | evan | no external compilation |
| 04:52:28 | agardiner | that's... interesting |
| 04:52:48 | evan | by hooking in, we could do source transformations on C code too |
| 04:52:53 | evan | to make it more GC friendly |
| 04:53:09 | evan | making subtend easier |
| 04:53:41 | evan | but thats a ways out still |
| 04:53:43 | agardiner | ahh... now the benefits become clearer! :-) |
| 04:53:51 | evan | that was my lunch reading today |
| 04:54:02 | agardiner | hehe |
| 04:54:08 | evan | thats got some awesome properties though |
| 04:54:18 | rue | I need to figure out something for the schedule. The possibility of me waking up at 8am is pretty remote |
| 04:54:20 | evan | like running .c files on windows |
| 04:54:26 | evan | without precompiling and with visual studio |
| 04:54:33 | evan | and without VS |
| 04:54:35 | agardiner | yeah, that'd be a plus |
| 04:54:52 | evan | rue: is the RC schedule out? |
| 04:56:42 | evan | oh good |
| 04:56:48 | evan | my thing isn't til 2:50 |
| 05:02:13 | agardiner | so, thinking about the current debugging arch and translating it to the new VM... |
| 05:02:35 | evan | k |
| 05:02:40 | agardiner | does a task still have a cache of what would now be the VMMethod of the CM it is executing? |
| 05:03:24 | agardiner | in other words, do we still have the ability to customise the CM on a per-task basis? |
| 05:03:52 | agardiner | (so that we can step) |
| 05:04:02 | evan | should be a lot easier |
| 05:04:05 | evan | not such a hack like before |
| 05:04:15 | agardiner | geez, that would be nice |
| 05:04:42 | agardiner | it took a fair bit of effort to get that working |
| 05:04:59 | evan | basically, we'll just wire a method into MethodContext called, say, #adjust |
| 05:05:03 | evan | that takes a CompiledMethod object |
| 05:05:03 | GMFlash leaves the room. | |
| 05:05:13 | GMFlash enters the room. | |
| 05:05:13 | evan | and specializes it into a VMMethod object |
| 05:05:23 | evan | and installs the VMMethod object into the MethodContext |
| 05:05:28 | evan | so when it's restored, it uses the new one |
| 05:05:33 | evan | keeping the original stuff clear |
| 05:05:40 | agardiner | a CM, or just the iseq? |
| 05:06:14 | evan | could be either. |
| 05:06:20 | agardiner | k |
| 05:06:30 | evan | doesn't really matter |
| 05:06:43 | evan | a VMMethod is mainly a specialization of an ISeq |
| 05:06:59 | agardiner | yeah, i guess its not done so frequently for the overhead of dup-ing a CM to matter |
| 05:07:07 | evan | it's where the a C array of the opcodes for that ISeq live |
| 05:07:58 | agardiner | incidentally, i had another thought about the assertions in yield_debugger |
| 05:08:12 | evan | oh? |
| 05:08:14 | agardiner | seems like they should be exceptions rather than assertions (no biggy) |
| 05:08:32 | agardiner | and that the check to see if there is a reader should go away |
| 05:08:45 | agardiner | since it won't work in multi-threaded code |
| 05:09:10 | agardiner | i.e. we could be handling a yield_debugger already when another thread executes yield_debugger |
| 05:09:23 | evan | yeah, we wont have any more C assertions |
| 05:09:29 | agardiner | so the second one should wait rather than cause an exception/assertion |
| 05:09:33 | evan | we'll have C++ exceptions that get translated back into Ruby exceptinos |
| 05:09:51 | agardiner | yeah, figured - another nice bonus |
| 05:10:09 | agardiner | also, the first check where we look for a debug channel... |
| 05:10:18 | agardiner | at present it just returns if it doesn't find one |
| 05:10:26 | evan | yeah |
| 05:10:27 | agardiner | which won't work, as discussed before |
| 05:10:29 | evan | you mentioned that |
| 05:10:33 | evan | it will raise an exception |
| 05:11:50 | agardiner | i wonder if it would be better/possible to have a way to just proceed as though you didn't hit a yield_debugger... |
| 05:12:17 | agardiner | been thinking about the fact that we've got 32-bits for the opcode, but only a hundred or so opcodes... |
| 05:12:37 | evan | where would it get the original opcode from? |
| 05:12:50 | agardiner | maybe the yield_debugger opcode could stash the original opcode in the high bits |
| 05:12:55 | evan | or do you want to use the debug opcode as a catch all |
| 05:12:56 | evan | yeah |
| 05:13:01 | agardiner | would need a mask when checking for a yield_debugger |
| 05:13:13 | evan | that opcode could be in a slow path |
| 05:13:26 | evan | where it's taken apart |
| 05:13:28 | agardiner | yeah, if nothing else matched |
| 05:13:37 | agardiner | that's what i was thinking |
| 05:13:55 | agardiner | be nice to be able to just carry on if there was no debug channel |
| 05:13:55 | evan | sure, thats easy enough to do |
| 05:13:58 | AndrewO leaves the room. | |
| 05:14:02 | evan | plus, it means less work |
| 05:14:18 | evan | we could even have the VM retain that fact itself |
| 05:14:23 | agardiner | yeah, not having to switch out the yield_debugger to resume would be huge! |
| 05:14:26 | evan | use a bit as a flag |
| 05:14:34 | agardiner | thats another major pita at the moment |
| 05:14:37 | evan | that indicates 'one shot' or 'persist' |
| 05:14:48 | evan | oh, bigtime. |
| 05:15:17 | agardiner | man, i can see breakpoint.rb getting a good gutting! :-D |
| 05:15:22 | evan | :) |
| 05:15:41 | evan | that could work pretty easily |
| 05:15:44 | agardiner | it would be so much more robust |
| 05:15:53 | evan | beacuse Task has a secondary function to execute opcodes |
| 05:15:56 | evan | execute_stream |
| 05:15:58 | agardiner | not to have to rely on breakpoint.rb to fix things up so the task can be resumed |
| 05:16:00 | evan | that I use for testing |
| 05:16:14 | evan | but could use it for out-of-band opcode execution |
| 05:16:29 | evan | ie, this slow path could see that it's a debugging instruction |
| 05:16:58 | evan | and when it's restored, execute the original opcode without changing the main stream |
| 05:18:00 | agardiner | so yield_debugger would do what it does, then call execute_stream after it receives on the control channel? |
| 05:18:21 | evan | yeah |
| 05:18:56 | evan | to make that work though, i need to wire it up so that a Task can register some code to run when it's restored |
| 05:19:01 | agardiner | you know what, rather than having a bit set to say whether the yield_debugger should persist or be one-shot, it should be the message on the control channel that determines it |
| 05:19:03 | evan | some VM code |
| 05:19:31 | evan | agardiner: oh, sure. |
| 05:19:32 | evan | that works. |
| 05:19:37 | agardiner | cause that way, a breakpoint can be deleted and we don't have to do anything except change the msg |
| 05:19:56 | evan | that could be wired up |
| 05:20:09 | agardiner | i like this... it sounds much cleaner |
| 05:20:41 | agardiner | but also more robust |
| 05:20:50 | evan | yeah. |
| 05:21:20 | evan | the new scheme (which is really the old old scheme) of using one dedicated stack per MethodContext is also going to make things more robust |
| 05:21:34 | agardiner | yeah, much |
| 05:21:54 | agardiner | easier and more self-contained |
| 05:22:26 | evan | yeah |
| 05:22:37 | evan | it should eliminate the problems with Continuations |
| 05:23:20 | agardiner | i've gotta say, the rewrite not only has all the benefits i blogged about before, it also is knocking off a lot of rough corners in the architecture! |
| 05:23:25 | agardiner | :-) |
| 05:23:35 | evan | that was the hope |
| 05:24:11 | evan | and is the reason it's taken longer than I originally thought |
| 05:24:16 | evan | plus I suck at time estimates. |
| 05:24:52 | agardiner | well, i wouldn't worry *too* much about that... it'll be a time saver in the medium to long term |
| 05:24:57 | evan | yeah |
| 05:25:33 | agardiner | but people also want rails to run now! :-D |
| 05:25:43 | evan | :) |
| 05:25:43 | agardiner | tough to please everyone |
| 05:25:48 | evan | yeah |
| 05:25:53 | evan | but i can take the heat. |
| 05:26:20 | agardiner | :-) |
| 05:26:42 | agardiner | well, i think its time for some lunch |
| 05:33:28 | brixen | evan: http://pastie.org/193456 |
| 05:33:41 | brixen | evan: does that look reasonable |
| 05:33:42 | brixen | ? |
| 05:33:59 | brixen | the Kernel#__add_method__ 2nd spec fails before your fix |
| 05:34:48 | evan | yeah, thats ok |
| 05:34:51 | brixen | ok |
| 05:34:52 | evan | it's a bit strange to test |
| 05:34:55 | brixen | yeah |
| 05:35:02 | brixen | I was really scratching my head for a minute |
| 05:35:11 | brixen | thanks |
| 05:44:24 | boyscout | 1 commit by Brian Ford |
| 05:44:25 | boyscout | * Some specs for Kernel#__add_method__ and Module.__add_method__.; 4e702d1 |
| 05:52:53 | rubuildius_amd64 | Brian Ford: 4e702d10b; 2105 files, 6851 examples, 24674 expectations, 0 failures, 0 errors; http://rafb.net/p/cFSWJS53.html |
| 05:57:41 | blakewatters enters the room. | |
| 05:59:30 | rubuildius_ppc | Brian Ford: 4e702d10b; 2105 files, 6853 examples, 24700 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/193462 |
| 06:04:58 | blakewatters leaves the room. | |
| 06:08:17 | srbaker leaves the room. | |
| 06:11:29 | agardiner leaves the room. | |
| 06:20:54 | yugui leaves the room. | |
| 06:21:50 | yugui enters the room. | |
| 06:23:31 | wycats_ leaves the room. | |
| 06:24:27 | stepheneb leaves the room. | |
| 06:31:42 | ttmrichter enters the room. | |
| 06:41:31 | wycats_ enters the room. | |
| 06:42:13 | murphee enters the room. | |
| 06:43:15 | murphee leaves the room. | |
| 06:53:08 | trythil leaves the room. | |
| 06:58:50 | srbaker enters the room. | |
| 07:06:37 | lstoll_ enters the room. | |
| 07:06:44 | wmoxam leaves the room. | |
| 07:10:13 | benny enters the room. | |
| 07:16:50 | lstoll leaves the room. | |
| 07:26:48 | dysinger leaves the room. | |
| 07:33:29 | benburkert leaves the room. | |
| 07:35:03 | imajes enters the room. | |
| 07:38:31 | wycats_ leaves the room. | |
| 07:40:48 | obvio leaves the room. | |
| 07:41:07 | dlee_ enters the room. | |
| 07:46:17 | imajes leaves the room. | |
| 07:47:24 | mkrauskopf enters the room. | |
| 07:55:16 | qwert666 enters the room. | |
| 07:57:54 | yugui leaves the room. | |
| 08:01:18 | boyscout | 2 commits by Brian Ford |
| 08:01:20 | boyscout | * Fixed constant type clash for ModuleSpecs modules.; 11dd3ae |
| 08:01:20 | boyscout | * Rake tasks for MSpec as a git submodule (not yet functional).; 9abde1b |
| 08:12:51 | rubuildius_amd64 | Brian Ford: 11dd3ae2c; 2105 files, 6854 examples, 24680 expectations, 0 failures, 0 errors; http://rafb.net/p/OkmZ1E36.html |
| 08:16:33 | m7d_ leaves the room. | |
| 08:16:36 | gnufied enters the room. | |
| 08:17:15 | rubuildius_ppc | Brian Ford: 11dd3ae2c; 2105 files, 6856 examples, 24706 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/193497 |
| 08:18:30 | thehcdreamer enters the room. | |
| 08:19:51 | Skip enters the room. | |
| 08:19:56 | srbaker leaves the room. | |
| 08:28:58 | dlee_ leaves the room. | |
| 08:41:03 | ezmobius leaves the room. | |
| 08:45:21 | lstoll enters the room. | |
| 08:46:41 | yaroslav enters the room. | |
| 08:50:37 | lstoll leaves the room. | |
| 08:51:41 | octopod enters the room. | |
| 08:52:07 | lstoll_ leaves the room. | |
| 08:54:54 | mutle enters the room. | |
| 08:57:09 | obvio enters the room. | |
| 09:11:06 | Arjen_ enters the room. | |
| 09:12:26 | GMFlash leaves the room. | |
| 09:24:30 | obvio leaves the room. | |
| 09:25:25 | obvio enters the room. | |
| 09:29:23 | ding enters the room. | |
| 09:31:13 | eule enters the room. | |
| 09:40:46 | Yurik enters the room. | |
| 09:40:47 | imajes enters the room. | |
| 09:43:24 | benny leaves the room. | |
| 09:48:24 | eule leaves the room. | |
| 09:54:02 | sudoer enters the room. | |
| 09:57:44 | jtoy leaves the room. | |
| 10:01:30 | Blinchik | is away: I don't need a weapon. I have a personality. |
| 10:11:31 | obvio leaves the room. | |
| 10:12:18 | boyscout | 1 commit by Evan Phoenix |
| 10:12:19 | boyscout | * Add late night hack of an Iconv, but works.; 0a9466c |
| 10:12:27 | evan | that was a good late night mental exercise |
| 10:13:42 | obvio enters the room. | |
| 10:13:48 | naeu enters the room. | |
| 10:14:31 | obvio leaves the room. | |
| 10:22:50 | rubuildius_amd64 | Evan Phoenix: 0a9466c47; 2105 files, 6854 examples, 24680 expectations, 0 failures, 0 errors; http://rafb.net/p/XlROVF24.html |
| 10:27:33 | rubuildius_ppc | Evan Phoenix: 0a9466c47; 2105 files, 6856 examples, 24706 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/193528 |
| 10:35:49 | obvio enters the room. | |
| 10:46:22 | obvio leaves the room. | |
| 10:49:54 | obvio enters the room. | |
| 10:55:50 | obvio171 enters the room. | |
| 10:56:23 | obvio leaves the room. | |
| 11:02:09 | obvio171 leaves the room. | |
| 11:03:06 | obvio enters the room. | |
| 11:03:44 | obvio leaves the room. | |
| 11:04:08 | Blinchik | is back (gone 01:02:37) |
| 11:04:39 | obvio enters the room. | |
| 11:12:09 | sudoer leaves the room. | |
| 11:19:39 | qwert666 leaves the room. | |
| 11:34:45 | yugui enters the room. | |
| 11:37:48 | obvio leaves the room. | |
| 11:41:21 | obvio enters the room. | |
| 11:46:20 | obvio leaves the room. | |
| 11:47:06 | obvio enters the room. | |
| 11:48:42 | obvio leaves the room. | |
| 11:49:48 | obvio enters the room. | |
| 11:50:39 | obvio leaves the room. | |
| 12:16:32 | benny enters the room. | |
| 12:28:58 | atmos leaves the room. | |
| 12:57:59 | yugui leaves the room. | |
| 12:58:16 | yugui enters the room. | |
| 12:59:46 | xhanjian_ enters the room. | |
| 13:00:23 | obvio enters the room. | |
| 13:00:51 | w1rele55 enters the room. | |
| 13:06:36 | wireless_ enters the room. | |
| 13:07:03 | riffraff enters the room. | |
| 13:07:12 | ding leaves the room. | |
| 13:13:41 | xhanjian leaves the room. | |
| 13:16:17 | rff enters the room. | |
| 13:23:54 | w1rele55 leaves the room. | |
| 13:24:37 | riffraff leaves the room. | |
| 13:31:06 | blakewatters enters the room. | |
| 13:39:23 | blakewatters_ enters the room. | |
| 13:39:39 | blakewatters leaves the room. | |
| 13:40:08 | blakewatters_ leaves the room. | |
| 13:44:07 | webmat enters the room. | |
| 13:55:04 | _mutle enters the room. | |
| 13:57:47 | mutle leaves the room. | |
| 14:03:02 | benny leaves the room. | |
| 14:09:15 | Arjen_ leaves the room. | |
| 14:09:21 | Arjen_ enters the room. | |
| 14:09:36 | AndrewO enters the room. | |
| 14:10:40 | qwert666 enters the room. | |
| 14:11:46 | fbuilesv enters the room. | |
| 14:14:00 | blakewatters enters the room. | |
| 14:18:19 | mutle leaves the room. | |
| 14:19:10 | mutle enters the room. | |
| 14:41:40 | moofbong enters the room. | |
| 14:42:11 | qwert666 leaves the room. | |
| 14:42:36 | rff leaves the room. | |
| 14:50:08 | obiejuan leaves the room. | |
| 14:55:17 | wmoxam enters the room. | |
| 15:02:56 | obiejuan enters the room. | |
| 15:08:27 | chris2 enters the room. | |
| 15:12:30 | hosiawak enters the room. | |
| 15:12:30 | riffraff enters the room. | |
| 15:20:01 | EugZol enters the room. | |
| 15:28:25 | danlucraft enters the room. | |
| 15:30:06 | pth enters the room. | |
| 15:31:20 | NoKarma enters the room. | |
| 15:41:15 | yugui leaves the room. | |
| 15:46:08 | trythil enters the room. | |
| 15:49:18 | gnufied leaves the room. | |
| 15:49:30 | trythil leaves the room. | |
| 15:49:42 | gnufied enters the room. | |
| 15:50:14 | ttmrichter leaves the room. | |
| 15:53:21 | benburkert enters the room. | |
| 15:54:26 | GMFlash enters the room. | |
| 16:05:17 | jtoy enters the room. | |
| 16:05:24 | shame leaves the room. | |
| 16:08:01 | joachimm enters the room. | |
| 16:09:55 | gnufied leaves the room. | |
| 16:10:41 | gnufied enters the room. | |
| 16:15:13 | macournoyer enters the room. | |
| 16:16:23 | benstiglitz enters the room. | |
| 16:20:07 | jpease enters the room. | |
| 16:20:19 | Blinchik leaves the room. | |
| 16:21:15 | Blinchik enters the room. | |
| 16:25:01 | benburkert leaves the room. | |
| 16:29:21 | gnufied leaves the room. | |
| 16:30:10 | gnufied enters the room. | |
| 16:30:18 | obiejuan leaves the room. | |
| 16:30:32 | qwert666 enters the room. | |
| 16:32:52 | naeu leaves the room. | |
| 16:34:39 | naeu enters the room. | |
| 16:36:31 | jtoy leaves the room. | |
| 16:40:51 | therealadam enters the room. | |
| 16:42:15 | gnufied leaves the room. | |
| 16:45:24 | joachimm leaves the room. | |
| 16:49:52 | imajes leaves the room. | |
| 16:50:09 | pth leaves the room. | |
| 16:52:00 | dgtized | evan: cpp branch is missing rubinius::ISeq, so it can't compile/test |
| 17:07:18 | shame enters the room. | |
| 17:08:29 | stepheneb enters the room. | |
| 17:09:07 | benburkert enters the room. | |
| 17:16:24 | lopex enters the room. | |
| 17:16:42 | naeu leaves the room. | |
| 17:17:25 | evan | morning. |
| 17:17:30 | evan | dgtized: hm.. |
| 17:17:39 | evan | it's been moved to InstructionSequence |
| 17:17:45 | evan | where do you see it called as ISeq |
| 17:17:46 | evan | ? |
| 17:24:51 | evan | Defiler: you around? |
| 17:28:12 | ShayArnett enters the room. | |
| 17:30:11 | benburkert enters the room. | |
| 17:31:47 | mutle leaves the room. | |
| 17:32:36 | riffraff enters the room. | |
| 17:38:26 | fbuilesv leaves the room. | |
| 17:38:55 | yaroslav leaves the room. | |
| 17:40:15 | hosiawak leaves the room. | |
| 17:43:09 | ShayArnett_ enters the room. | |
| 17:43:10 | ShayArnett leaves the room. | |
| 17:44:55 | ShayArnett leaves the room. | |
| 17:45:56 | ShayArnett enters the room. | |
| 17:53:13 | dbussink | evan: you didn't write specs for iconv ;) |
| 17:53:25 | dbussink | but cool that is works with not that much of an effort |
| 17:53:28 | dbussink | or was it painful? |
| 17:54:12 | ShayArnett leaves the room. | |
| 17:56:47 | evan | nah, it was easy. |
| 17:57:02 | evan | i just had to aff the set_ffi_lib method to Module |
| 17:57:16 | evan | so that attach_function can pull in functions from dynamic libraries |
| 17:57:26 | evan | s/aff/add/ |
| 17:59:01 | trythil enters the room. | |
| 17:59:07 | dbussink | how does it handle library search paths etc? |
| 17:59:25 | evan | the OS does whatever it normally does |
| 17:59:32 | evan | in terms of finding it |
| 17:59:39 | Defiler | evan: Oops, sorry. I was scrolled up and didn't notice |
| 17:59:43 | dbussink | ld_library_path stuff then |
| 17:59:44 | Defiler | evan: Still need me? |
| 17:59:52 | rff enters the room. | |
| 17:59:59 | evan | Defiler: wanted to give ya the heads up on lib/iconv.rb |
| 18:00:02 | evan | hacked it up last night. |
| 18:00:06 | evan | seems to work |
| 18:00:10 | dbussink | wondering whether it would easily integrate with libraries installed using for example macports |
| 18:00:22 | evan | it's also a good example of using FFI to bind to a dynamic library |
| 18:00:31 | evan | dbussink: should |
| 18:00:41 | Defiler | evan: Yeah, I saw it. Definitely what I needed as an example |
| 18:00:46 | evan | cool |
| 18:00:53 | evan | hopefully that gets you past the dep on it too |
| 18:01:16 | evan | it supports like 60% of the API in MRI's iconv.c |
| 18:01:58 | Defiler | Yeah, it looks like enough for JSON |
| 18:02:50 | joachimm enters the room. | |
| 18:02:53 | rff leaves the room. | |
| 18:03:45 | evan | sweet |
| 18:03:50 | evan | that was my late night mental exercise |
| 18:04:16 | dbussink | hmm, now i'm wondering about whether mysql would work in my case |
| 18:04:28 | dbussink | installed using the mysql installer from mysql.com |
| 18:04:29 | evan | which case is that? |
| 18:04:37 | dbussink | i suspect it will need some extra setting up |
| 18:04:45 | evan | do you have a mysqlclient.so? |
| 18:04:58 | evan | or .dylib, .bundle, or .dll |
| 18:05:07 | dbussink | yeah, but it floats around somewhere in /usr/local/mysql/lib or something like that |
| 18:05:10 | dbussink | not a standard path |
| 18:05:22 | evan | you have to tell your dynamic linker about that path |
| 18:05:27 | evan | on linux, in ld.so.conf |
| 18:05:39 | evan | on darwin, you use an env var |
| 18:05:47 | evan | but you can also give the full path to a library |
| 18:05:55 | dbussink | yeah, but i wonder whether requiring that is the proper way to it |
| 18:05:59 | evan | and FFI will pick it up |
| 18:06:06 | evan | well, it's ruby |
| 18:06:11 | evan | so you can probe dynamically |
| 18:06:24 | dbussink | maybe a one time configuration that could put something in platform.conf |
| 18:06:36 | evan | sure |
| 18:06:37 | riffraff leaves the room. | |
| 18:06:54 | dbussink | or a message like "aiee, couldn't find dynamic library x, please add to platform.conf: |
| 18:06:55 | dbussink | " |
| 18:06:58 | Defiler | Don't we essentially need an 'extconf.rb' kind of procedure? |
| 18:07:09 | Defiler | Since each library could need a different path |
| 18:07:14 | dbussink | yeah |
| 18:07:16 | evan | that looks for a library? |
| 18:07:18 | evan | sure |
| 18:08:01 | Defiler | If you install macports after rubinius, and then want to install some gem that depends on a native library, right now we would be screwed |
| 18:08:15 | Defiler | (native library that you installed with macports, I mean) |
| 18:08:35 | evan | why? |
| 18:08:45 | evan | if you let the OS know about the macports lib directory |
| 18:08:47 | evan | everything is fine. |
| 18:09:18 | thoughtfiz leaves the room. | |
| 18:09:22 | Defiler | Right, yeah. I just mean that we should think about how to make setting that env variable / whatever easy for people |
| 18:09:58 | joachimm leaves the room. | |
| 18:10:12 | evan | like dbussink said, easy enough to let them set a config value |
| 18:10:33 | evan | btw, I think i'm slightly wrong |
| 18:10:47 | evan | on darwin, I'm pretty sure that a binary has the full path to the dynamic lib linked in |
| 18:11:41 | evan | because otool -L `which irssi` outputs macports paths |
| 18:11:54 | evan | but i have no /opt/local/lib in any var I can find |
| 18:13:07 | Defiler | Same here, it seems |
| 18:13:20 | dbussink | yeah ok, but we don't want to link rubinius to everything |
| 18:13:33 | dbussink | those locations are determined compile time, not runtime |
| 18:14:43 | evan | right |
| 18:14:45 | evan | no big deal at all |
| 18:15:01 | evan | either have logic to probe for a library using a set of paths |
| 18:15:05 | thoughtfiz enters the room. | |
| 18:15:14 | evan | or have a config variable for where a library is located |
| 18:19:09 | thehcdreamer leaves the room. | |
| 18:19:33 | octopod leaves the room. | |
| 18:24:35 | Defiler | evan: OK, so in this iconv code.. "libiconv" is not linked into rubinius. What is allowing the FFI system to figure out where libiconv is? |
| 18:24:45 | Defiler | I don't appear to have any env variables that point to where it is |
| 18:24:58 | evan | you don't need them |
| 18:25:11 | evan | dlopen() searches the library path |
| 18:25:12 | evan | man dlopen |
| 18:25:23 | Defiler | OK, and some components of that are just baked in, e.g. /usr/lib |
| 18:25:26 | evan | and you have libiconv in /usr/lib |
| 18:25:48 | Defiler | The default value of DYLD_FALL- BACK_LIBRARY_PATH is $HOME/lib;/usr/local/lib;/usr/lib |
| 18:25:52 | Defiler | keen |
| 18:27:10 | ShayArnett enters the room. | |
| 18:27:38 | benny enters the room. | |
| 18:27:47 | imajes enters the room. | |
| 18:28:55 | evan | yep |
| 18:29:40 | dbussink | but that means it won't work with macports defaults out of the box |
| 18:29:57 | dbussink | since they use /opt/local/lib |
| 18:30:26 | Defiler | makes me wonder why they don't set LD_LIBRARY_PATH on install |
| 18:33:28 | therealadam leaves the room. | |
| 18:33:54 | Arjen_ leaves the room. | |
| 18:33:57 | evan | dbussink: easy enough to work with macports |
| 18:34:03 | Defiler | What is the linux equivalent of dlopen? |
| 18:34:16 | evan | probe if there is an /opt/local/lib at startup time and add it to the proper env ar |
| 18:34:19 | evan | var |
| 18:34:22 | evan | Defiler: dlopen |
| 18:34:34 | Defiler | Oh, right.. dynamic not darwin |
| 18:35:31 | Defiler | Linux's version of it doesn't appear to include /usr/local/lib in the default search path |
| 18:36:03 | evan | i always add it |
| 18:36:04 | Defiler | presumably distros are handling it in ld.so.conf though |
| 18:36:07 | evan | yep |
| 18:36:15 | evan | i always add it to ld.so.conf |
| 18:37:22 | Defiler | virtual memory is a damn cool idea |
| 18:37:51 | thoughtfiz leaves the room. | |
| 18:40:35 | Defiler | When first launched, it struggled under the overhead of the software and operating system, which consumed almost 60 MB on disk, a vast sum at the time[1], leading some wags to suggest that the pre-announce code name for the series, PACIFIC, was actually an acronym meaning "performance ain't critical if function is complete". |
| 18:40:41 | Defiler | That sounds like us |
| 18:41:01 | evan | hehe |
| 18:44:13 | thoughtfiz enters the room. | |
| 18:49:02 | ShayArnett leaves the room. | |
| 18:49:08 | ShayArnett enters the room. | |
| 18:52:00 | pth enters the room. | |
| 18:57:36 | TheVoice enters the room. | |
| 19:11:18 | ShayArnett leaves the room. | |
| 19:19:13 | ShayArnett enters the room. | |
| 19:20:33 | benny leaves the room. | |
| 19:22:48 | m7d enters the room. | |
| 19:23:37 | Maledictus enters the room. | |
| 19:30:36 | dysinger enters the room. | |
| 19:31:52 | wycats_ enters the room. | |
| 19:43:40 | benny enters the room. | |
| 19:45:46 | atmos enters the room. | |
| 19:53:25 | GMFlash leaves the room. | |
| 19:58:14 | febeling enters the room. | |
| 20:05:00 | m7d_ enters the room. | |
| 20:10:26 | m7d__ enters the room. | |
| 20:11:10 | enebo enters the room. | |
| 20:14:01 | rue | evan: Did we not just talk about #attach_foreign like two days ago? :) |
| 20:14:17 | evan | it was discussed yes |
| 20:14:21 | evan | did i forget what was talked about? |
| 20:14:31 | rue | :from => "libwhatever" |
| 20:14:34 | evan | what specificaly are you talking about |
| 20:14:36 | evan | ah |
| 20:14:36 | evan | yeah |
| 20:14:43 | evan | we removed the lib arg a while back |
| 20:14:50 | evan | because we were using nil everytime |
| 20:14:59 | rue | That is why I wrote #attach_foreign :P |
| 20:15:05 | evan | there is attach_foreign? |
| 20:15:18 | evan | oh, i thought you said attach_method |
| 20:15:22 | rue | Nuh |
| 20:15:23 | evan | where is attach_foreign? |
| 20:15:49 | rue | In module.rb. I did not want to mix the two until they converge |
| 20:15:58 | evan | thats a bad place for it |
| 20:16:03 | evan | because attach_function is in ffi |
| 20:16:06 | evan | thats why I missed it. |
| 20:17:08 | evan | i like the simplicity of my change |
| 20:18:15 | evan | ug. |
| 20:18:24 | evan | plus you changed the order of the args and stuff in attach_foreign |
| 20:18:31 | evan | and have keyword options |
| 20:19:07 | rue | Right, that is why it is in module |
| 20:19:15 | evan | why does it exist? |
| 20:19:20 | rue | It also handles .dylib and .bundle |
| 20:19:34 | evan | thats handled in the VM |
| 20:20:04 | evan | when did you add attach_foreign? |
| 20:20:14 | rue | I dunno, months ago |
| 20:20:19 | evan | lets remove it. |
| 20:20:27 | evan | i don't want to cloud the water |
| 20:20:27 | rue | When I changed the VM to handle both extensions |
| 20:20:42 | rue | But you still need to strip the ext before the dlopen call |
| 20:20:53 | evan | people shouldn't be specifying the extension |
| 20:21:03 | evan | i think i coded the VM to not append an extension if there already is one too |
| 20:21:05 | m7d leaves the room. | |
| 20:21:37 | evan | the different order of things is a problem too |
| 20:21:38 | evan | imho. |
| 20:21:41 | rue | Only for certain extensions. |
| 20:21:43 | evan | of the arguments |
| 20:22:34 | rue | Yeah. This reads like the function declaration. I figured it is easier to see which parameter is which. Plus it allows having the optionals conveniently at the end |
| 20:22:59 | evan | we can't have 2 methods that have identifical functionality with different argument orders |
| 20:23:03 | evan | just can't. |
| 20:23:07 | evan | one has to go. |
| 20:26:06 | m7d_ leaves the room. | |
| 20:26:17 | evan | since attach_foreign isn't in use, it seems like it's the one to go |
| 20:27:30 | evan | guesses the conversation is over. |
| 20:30:38 | evan | lunch! |
| 20:30:51 | drbrain | ... since you're the only one speaking for the past five minutes |
| 20:30:54 | drbrain | same |
| 20:33:18 | ezmobius enters the room. | |
| 20:37:15 | rubuildius_ppc leaves the room. | |
| 20:37:19 | rubuildius_ppc enters the room. | |
| 20:48:37 | joachimm enters the room. | |
| 20:49:50 | enebo leaves the room. | |
| 20:52:36 | m7d enters the room. | |
| 20:53:57 | rubuildius_ppc | Evan Phoenix: 0a9466c47; 2105 files, 6856 examples, 24706 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/193860 |
| 20:57:37 | Defiler | I wonder why MRI doesn't use autoload for the whole stdlib |
| 20:58:02 | Defiler | referring to StringIO (for example) should just trigger the autoload |
| 20:59:06 | m7d leaves the room. | |
| 21:00:42 | evan | *shrug* |
| 21:00:44 | evan | a good question |
| 21:00:53 | evan | too magic i think |
| 21:01:13 | evan | they'd have to maintain a mapping in the MRI kernel too |
| 21:01:18 | evan | which could be out of date, etc. |
| 21:08:18 | m7d__ leaves the room. | |
| 21:11:38 | kw enters the room. | |
| 21:13:22 | ezmobius leaves the room. | |
| 21:22:26 | headius enters the room. | |
| 21:24:12 | ShayArnett leaves the room. | |
| 21:26:18 | ezmobius enters the room. | |
| 21:27:10 | evan | it's been quiet in here lately |
| 21:27:56 | dbussink | yeah, but more than 100 people in |
| 21:28:33 | jazen | does it run doom? |
| 21:28:35 | evan | maybe that will get more people talking |
| 21:28:38 | dbussink | hehe, trying to trigger people? |
| 21:28:39 | jazen | :> |
| 21:28:40 | evan | jazen: nope |
| 21:28:49 | evan | but a doom port would be awesome. |
| 21:28:58 | evan | what would we use for graphics? |
| 21:29:03 | jazen | gl |
| 21:29:12 | evan | sounds fun |
| 21:29:24 | dbussink | we can now use ffi for it ;) |
| 21:29:27 | evan | esp if I can hit ~ |
| 21:29:35 | evan | and monkey patch enemies to fight themselves |
| 21:30:00 | evan | >> world.pause |
| 21:30:15 | evan | >> enemies = world.current_room.enemies |
| 21:30:33 | evan | >> enemies.each { |e| e.attack! enemies.rand } |
| 21:30:40 | jazen | evan, i vote for nice threads and customizable gc |
| 21:30:53 | evan | what form to you see customizable gc? |
| 21:30:59 | evan | knobs to tune it? |
| 21:31:04 | headius | nice threads? |
| 21:31:08 | headius | as opposed to mean ones? |
| 21:31:10 | headius | hi all, btw |
| 21:31:12 | jazen | choose a strategy |
| 21:31:22 | jazen | or write your own |
| 21:31:23 | evan | headius: hows the comfy chair? |
| 21:31:26 | jazen | whatever fits the app |
| 21:31:32 | evan | jazen: so, knobs |
| 21:31:43 | evan | writing a GC is not a casual task |
| 21:31:52 | jazen | well, yeah, thought you mean knobs as in "knobs to customize one strategy" |
| 21:32:05 | headius | evan: comfy |
| 21:32:28 | evan | jazen: I do mainly |
| 21:32:31 | jazen | evan, true, but the possibility to use another strategy would put these "omg the ruby gc kills my app" discussions/flames |
| 21:32:39 | benny leaves the room. | |
| 21:32:43 | evan | you'd like different GC strategy's to choose from? |
| 21:32:58 | evan | what do you consider a strategy? |
| 21:33:03 | jazen | at least an option to switch to another one |
| 21:33:29 | jazen | well |
| 21:33:35 | jazen | there are several algorithms |
| 21:33:40 | jazen | mark-and-sweep, etc |
| 21:33:41 | wmoxam | um, that's kinda crazy |
| 21:33:42 | headius | jazen: like JVM's concurrent vs large memory vs etc |
| 21:33:45 | headius | ? |
| 21:33:57 | evan | so, selecting whole different GCs |
| 21:33:59 | jazen | i have no in-depth-knowledge, so i don't know how big the effort would be |
| 21:34:07 | jazen | yeah |
| 21:34:10 | evan | not just a different strategy for an existing strategy |
| 21:34:14 | evan | er. |
| 21:34:16 | evan | for an existing GC |
| 21:34:33 | jazen | yep |
| 21:34:47 | evan | thats doable in the long term |
| 21:35:00 | jazen | same would be nice for memory-allocation i guess |
| 21:35:01 | evan | the VM is wired to the ObjectMemory system using a standard interface |
| 21:35:18 | qwert666_ enters the room. | |
| 21:35:22 | evan | i doubt we'll have time in the near term unless someone steps up and writes another GC |
| 21:35:45 | jazen | sure, i wouldn't call it a v1.0 must-have too ;) |
| 21:35:56 | evan | but knobs to customize the GCs we do have would be easy |
| 21:36:00 | headius | there aren't many VMs with swappable GCs |
| 21:36:01 | evan | i've been planning on that for a while |
| 21:36:14 | evan | letting you indicate sizes and ratios |
| 21:36:25 | jazen | sounds good |
| 21:36:26 | evan | headius: yeah |
| 21:36:32 | jazen | evan, what about symbol-gc? |
| 21:36:41 | benny enters the room. | |
| 21:36:43 | jazen | are there plans to fix this issue? |
| 21:36:48 | evan | yeah |
| 21:36:55 | evan | again, not sure if we'll get to it for 1.0 |
| 21:37:00 | evan | but it's fairly straight forward |
| 21:37:01 | headius | JVMs all have swappable GCs, but JVMs are also 13+ years old |
| 21:37:07 | headius | kinda have to evolve over that time |
| 21:37:29 | evan | yeah |
| 21:37:38 | jazen | ok |
| 21:37:42 | jazen | hm, what else |
| 21:37:53 | brainopia enters the room. | |
| 21:38:14 | jazen | how's the "threads-issue" handled at the moment? |
| 21:38:26 | jazen | you know, ruby isn't famous for it ;) |
| 21:38:34 | headius | as in green threading? |
| 21:38:42 | jazen | yep |
| 21:39:22 | jazen | everyone praises erlang's - is it's way portable to rubinius? |
| 21:40:36 | thoughtfiz leaves the room. | |
| 21:42:38 | headius leaves the room. | |
| 21:45:11 | enebo enters the room. | |
| 21:47:03 | thoughtfiz enters the room. | |
| 21:49:17 | brainopia leaves the room. | |
| 21:52:56 | qwert666 leaves the room. | |
| 22:01:44 | febeling leaves the room. | |
| 22:07:33 | dbussink | that was a short burst of activity :P |
| 22:08:56 | evan | :) |
| 22:09:01 | evan | i'm on the phone now |
| 22:09:02 | headius enters the room. | |
| 22:11:59 | stepheneb leaves the room. | |
| 22:17:32 | Blinchik leaves the room. | |
| 22:18:15 | wmoxam leaves the room. | |
| 22:19:19 | Blinchik enters the room. | |
| 22:20:00 | jnicklas enters the room. | |
| 22:23:35 | chris2 leaves the room. | |
| 22:25:42 | AndrewO leaves the room. | |
| 22:27:33 | macournoyer leaves the room. | |
| 22:35:36 | rue | jazen: Not exactly, but we could theoretically get close in parallelism |
| 22:36:14 | Maledictus leaves the room. | |
| 22:45:28 | kw leaves the room. | |
| 22:48:11 | blakewatters leaves the room. | |
| 22:49:26 | webmat leaves the room. | |
| 23:09:52 | moofbong leaves the room. | |
| 23:15:13 | shame leaves the room. | |
| 23:21:37 | mkrauskopf leaves the room. | |
| 23:21:54 | mkrauskopf enters the room. | |
| 23:25:44 | nicksieger enters the room. | |
| 23:34:57 | Arjen_ enters the room. | |
| 23:37:30 | thudson_ enters the room. | |
| 23:38:00 | jnicklas leaves the room. | |
| 23:41:35 | wmoxam enters the room. | |
| 23:47:10 | imajes leaves the room. | |
| 23:47:16 | qwert666_ leaves the room. | |
| 23:49:45 | Arjen_ leaves the room. | |
| 23:55:34 | nicksieger leaves the room. | |
| 23:59:05 | benny leaves the room. | |
| 23:59:41 | benny enters the room. |