Show enters and exits. Hide enters and exits.
| 00:18:56 | evan | woop |
| 00:18:59 | evan | dynamic deoptimization |
| 00:19:00 | evan | in the HOUSE |
| 00:19:16 | brixen | rad |
| 00:20:12 | evan | i think i want to redo MethodTable |
| 00:20:29 | evan | it needs some encapsalation |
| 00:20:49 | evan | and I really find the Visibility objects to be combersome |
| 00:21:08 | brixen | yeah, they are a bit gross |
| 00:21:27 | evan | i think i'll make MethodTable it's own class, not a subclass of LookupTable |
| 00:21:33 | evan | and have it use a cuckoo hash internally |
| 00:21:53 | evan | with the value being (Executable* method, Symbol* visibility) |
| 00:21:56 | evan | so you just do |
| 00:22:06 | evan | method_table.set method, :public |
| 00:22:19 | brixen | sure |
| 00:22:38 | evan | then i can hide cache invalidation behind MethodTable's methods |
| 00:22:46 | evan | rather than having to sprinkle it around |
| 00:29:13 | evan | ok, gotta run some errands. |
| 01:24:39 | boyscout | Implement a faster reference class guard - c9d1953 - Evan Phoenix |
| 01:24:39 | boyscout | Add dynamic deoptimization for establish safe inlining - 9865fe3 - Evan Phoenix |
| 01:25:45 | evan | nice english there evan. |
| 01:25:46 | evan | geez. |
| 01:30:33 | boyscout | CI: 9865fe3 success. 2709 files, 10776 examples, 33796 expectations, 0 failures, 0 errors |
| 01:32:28 | brixen | heh |
| 01:37:54 | evan | brixen: do you have that cuckoo.h i sent you awhile back? |
| 01:38:04 | evan | i've got a copy here, i'm wondering if it's old |
| 01:38:35 | evan | actually, you know |
| 01:38:36 | evan | nm. |
| 01:38:45 | evan | i'm not going to use a cuckoo for now. |
| 01:39:15 | brixen | I have it, if you need it |
| 01:39:20 | evan | gist/paste it |
| 01:39:26 | brixen | sec |
| 01:40:18 | brixen | http://gist.github.com/103631 |
| 01:40:29 | brixen | I just pulled that out of .git/config :) |
| 01:40:35 | brixen | gist is awesome |
| 01:41:00 | evan | ok, thats the same one. |
| 01:41:08 | brixen | so, for compactlookuptable, I'd like to try a linear probe hash |
| 01:41:15 | brixen | worst case is no worse than now |
| 01:41:21 | brixen | best case is O(1) |
| 01:42:06 | brixen | for method table, cuckoo may work quite well |
| 01:42:18 | evan | ok, i'll give it a shot. |
| 01:42:19 | brixen | since you'd never be more than h2() away |
| 01:42:42 | brixen | insert would be more expensive and load factor is never > 0.5 |
| 01:42:48 | brixen | so uses more space probably |
| 01:43:00 | brixen | insert _may_ be more expensive |
| 01:43:14 | evan | because of the shifting around |
| 01:43:14 | brixen | but with the better integer hash function, may perform well |
| 01:43:18 | evan | gah. |
| 01:43:19 | brixen | yeah |
| 01:43:22 | evan | you know |
| 01:43:23 | evan | nevermind |
| 01:43:31 | evan | i'm going to duplicate LookupTable, but with a different Bucket class. |
| 01:43:45 | brixen | that's probably a best first try |
| 01:44:03 | brixen | we should see how long the chains are getting anyway |
| 01:45:42 | evan | yeah |
| 04:29:12 | slava | hi evan |
| 05:40:52 | brixen | crappy code is the preferred nesting ground of the twisty logic bird |
| 06:28:13 | evan | brixen: hows loader.rb going? |
| 06:30:46 | brixen | almost there! |
| 06:31:17 | brixen | mri does some weird stuff |
| 06:31:27 | brixen | big surprise, news at 11 |
| 06:31:44 | brixen | so ruby -e 'blah' -e 'foo' script |
| 06:31:51 | brixen | runs both -e's but not script |
| 06:34:01 | brixen | I broke something with ARGF that I'm looking at now |
| 06:34:25 | brixen | brb.. |
| 07:11:36 | scoopr | heh, didn't realize that python was (indirectly) a build time requirement =) |
| 07:17:01 | brixen | scoopr: it is? |
| 07:21:14 | scoopr | yeah, udis86 generates some stuff with python |
| 07:21:25 | brixen | ahh |
| 07:21:38 | scoopr | though, I'm not compiling on x86 so I doubt I'll need that lib =) |
| 07:24:27 | brixen | mri option parsing is o/~ fucking crazy o/~ |
| 07:26:44 | brixen | http://gist.github.com/135724 |
| 07:31:36 | evan | yep! |
| 07:36:17 | brixen | I thinks I got it |
| 07:38:18 | brixen | so close |
| 07:43:09 | brixen | man, I'm so spoiled with these consistently ~45sec full spec runs |
| 07:43:27 | evan | hehehe |
| 07:43:38 | brixen | dunno what I'll do with myself when they are ~10-15sec |
| 07:43:48 | brixen | :) |
| 07:44:36 | evan | hah |
| 07:44:44 | evan | join a band |
| 07:44:48 | evan | in your new free time |
| 07:45:03 | brixen | heh, indeed |
| 07:45:04 | evan | i'm working on the MethodTable change |
| 07:45:11 | brixen | ah, how's it going? |
| 07:45:14 | evan | i basically just duplicated LookupTable into MethodTable |
| 07:45:20 | evan | and changed the Bucket class |
| 07:45:26 | evan | and the key name |
| 07:45:33 | brixen | that's cool |
| 07:45:47 | evan | key type is Symbol* only, Bucket has Executable* method, and Symbol* visibility |
| 07:46:12 | brixen | makes sense |
| 07:46:21 | brixen | we can evolve them as oppropriate for each |
| 07:46:31 | brixen | instead of one-size-fits-all-method-tables |
| 07:46:36 | evan | pretty much |
| 07:46:41 | brixen | er lookup-tables rathre |
| 07:46:52 | evan | the Bucket has basically become a Visibility object |
| 07:47:03 | evan | so the changes to the rest of the system have been pretty easy |
| 07:47:09 | brixen | cool |
| 07:53:37 | evan | whats the other side of lookup the verb |
| 07:53:40 | evan | assign? |
| 07:53:42 | evan | bind? |
| 07:53:43 | evan | store? |
| 07:55:21 | brixen | um.. |
| 07:55:30 | brixen | store |
| 07:55:43 | brixen | seems most symmetric to me |
| 07:55:52 | evan | k. |
| 08:18:56 | boyscout | Added simple option parsing. - df578f7 - Brian Ford |
| 08:18:56 | boyscout | Moved legend on benchmark graphs. - adde17d - Brian Ford |
| 08:18:56 | boyscout | Added optional arguments and -, -- parsing. - 7828b2b - Brian Ford |
| 08:18:56 | boyscout | Initial rewrite of loader.rb with option parsing. - 1e1644b - Brian Ford |
| 08:19:50 | brixen | there are certainly other ways to do it, but I think this is a big initial improvement |
| 08:20:16 | brixen | plenty to bikeshed there though, what with option parsing and script writing :) |
| 08:21:34 | boyscout | CI: 1e1644b success. 2733 files, 10849 examples, 33889 expectations, 0 failures, 0 errors |
| 08:22:34 | brixen | evan: I'd like to get the Hash stuff in before I forget what I was doing |
| 08:22:45 | evan | k |
| 08:23:02 | brixen | mind if I try a different algo for compactlookuptable to see if I can speed up interp ivar access? |
| 08:24:07 | evan | brixen: what is Options? |
| 08:24:12 | evan | and where is it coming from? |
| 08:24:22 | brixen | kernel/delta/options |
| 08:24:28 | brixen | or do you mean where is the code from? |
| 08:24:49 | brixen | it's modified from what's in mspec |
| 08:24:50 | evan | both |
| 08:25:27 | evan | ok, |
| 08:25:29 | evan | cool. |
| 08:25:53 | evan | the big deal with using an option class in loader has been about it's simplicity and non-interference |
| 08:26:02 | brixen | yeah |
| 08:26:10 | evan | though honestly, we're so darn good now, compat wise |
| 08:26:11 | brixen | are you surprised by it? |
| 08:26:16 | evan | the simplicity thing matters less |
| 08:26:26 | evan | no, not surprised. |
| 08:26:27 | brixen | we talked about doing this |
| 08:26:28 | brixen | ok |
| 08:26:29 | evan | yeah |
| 08:26:33 | evan | i knew you were doing it. |
| 08:27:11 | brixen | I think loader should use realistic ruby code |
| 08:27:22 | evan | yeah, thats fine. |
| 08:27:23 | brixen | although, the option parser is really simple |
| 08:27:37 | evan | i've always been paranoid about using complex code in there |
| 08:27:41 | evan | but in reality, it doesn't matter |
| 08:27:47 | evan | by the time we get to loader.rb, irb can run |
| 08:27:53 | evan | so it's complete :D |
| 08:27:56 | brixen | right |
| 08:28:10 | brixen | but realistic code doesn't necessarily mean complex code |
| 08:28:18 | brixen | that script was like wow |
| 08:28:28 | brixen | back to the future car and it actually runs |
| 08:28:28 | evan | i doubt it's a big deal, but something to watch out for is startup time |
| 08:28:32 | evan | hahahahh |
| 08:28:35 | evan | you know |
| 08:28:46 | evan | loader.rb is probably the only file that has never been rewritten until now. |
| 08:28:54 | evan | it's been cobbled up since day 1 |
| 08:28:55 | brixen | probably |
| 08:28:58 | brixen | yeah |
| 08:34:23 | evan | is't the way -e's are run weird |
| 08:35:24 | brixen | yeah |
| 08:36:09 | brixen | it's really the interaction of -e with the first non-option arg |
| 08:37:21 | evan | right |
| 08:49:01 | boyscout | Status updates for Roadmap page. - 3b0f5d0 - Brian Ford (gh-pages) |
| 08:50:19 | brixen | evan: http://rubini.us/roadmap.html |
| 08:50:59 | evan | looks good. |
| 17:39:26 | lypanov | breathes a big sigh of relief |
| 17:39:29 | lypanov | evan: yo |
| 17:40:25 | brixen | lypanov: what up yo? |
| 17:40:32 | lypanov | wazaa |
| 17:40:32 | brixen | what're ya sighing about? |
| 17:40:43 | lypanov | marriage and major release. both finished |
| 17:40:49 | lypanov | can relax now |
| 17:40:49 | brixen | sweeet! |
| 17:40:51 | brixen | heh |
| 17:41:16 | brixen | settling down into the good 'ol life eh? |
| 17:41:28 | lypanov | yeah. but the wife stole the bottle of wine |
| 17:41:42 | brixen | oh boy, the battling begins |
| 17:41:49 | brixen | just when you thought you could relax |
| 17:42:26 | brixen | lypanov: does that mean you have some free time to help rbx? |
| 17:46:41 | lypanov | brixen: to give guidance at the very least. preferably some code but not 100% certain |
| 17:48:07 | brixen | lypanov: cool |
| 17:57:07 | evan | marning! |
| 17:57:11 | evan | or.. morning! |
| 17:57:46 | brixen | morning! |
| 17:58:32 | evan | should finish the MethodTable change shortly |
| 17:58:34 | brixen | ps ux'd on elle and discovered 3 spec runs jit.enabled apparently still running |
| 17:58:38 | evan | it's running enough to run irb |
| 17:58:42 | evan | going to run the specs now. |
| 17:58:42 | brixen | sweet |
| 18:00:04 | lypanov | waza mr evan |
| 18:00:17 | evan | lypanov: congrats on the big day! |
| 18:00:21 | evan | lypanov: go smoothly? |
| 18:01:58 | lypanov | evan: very. in awe of the girl |
| 18:02:10 | evan | yay |
| 18:02:14 | lypanov | evan: but, as she stole my wine. lets talk shop |
| 18:02:15 | lypanov | :P |
| 18:02:19 | evan | hah |
| 18:02:30 | evan | i'm in the midst of adding inlining via type feedback |
| 18:02:53 | lypanov | ooo |
| 18:02:59 | lypanov | k. my work is done |
| 18:03:04 | evan | hah |
| 18:03:08 | lypanov | goes off to do his own ruby interpreter |
| 18:03:15 | evan | no no stay! |
| 18:03:33 | lypanov | falls over while attempting to walk both backwards and forwards at the same time |
| 18:03:49 | evan | helps lypanov put and puts the rubinius source in front of him |
| 18:03:58 | evan | atm, it's only inlining accessors |
| 18:04:13 | lypanov | k. pray tell good man, what methods hast thee used to undertake the implementation of such a grossly underused mechanism? |
| 18:05:03 | evan | I rewrote our InlineCaches |
| 18:05:18 | evan | to allow them to track seen receiver classes |
| 18:05:35 | evan | once the JIT kicks in for a method |
| 18:05:51 | evan | it can consult those ICs to figure out if it should inline |
| 18:06:20 | evan | for accessors, it emits a guard and then custom code to run the accessor |
| 18:06:50 | evan | for inlining a normal method, i'm going to run the same JIT Compiler I have, but in "inline" mode |
| 18:07:06 | evan | so it emits code thats normally by itself in an LLVM Function |
| 18:07:13 | evan | but now, in the middle of an existing LLVM Function |
| 18:07:20 | evan | then let LLVM go to down optimizing it. |
| 18:07:59 | lypanov | whats the speed improvement like |
| 18:08:03 | lypanov | ?* |
| 18:08:16 | evan | for accessors, about 12% improvement |
| 18:08:46 | lypanov | what exactly does the accessor do anyway? |
| 18:08:58 | evan | just return an ivar of a method |
| 18:09:04 | evan | class B; attr_reader: foo; end |
| 18:09:12 | evan | b = Blah.new; b.foo |
| 18:09:18 | lypanov | ah, thought you meant accessor as in @blah |
| 18:09:22 | evan | yeah. |
| 18:09:24 | lypanov | makes more sense hehe |
| 18:09:35 | evan | :D |
| 18:10:22 | lypanov | how is ivar lookup done? |
| 18:10:29 | evan | there are 2 ways |
| 18:10:33 | evan | depending on the class |
| 18:10:42 | evan | either via fixed offset inside the object |
| 18:10:51 | evan | or via an ivar table |
| 18:10:55 | evan | for fixed offset ones |
| 18:10:56 | evan | it's great |
| 18:11:02 | evan | LLVM lowers it to |
| 18:11:10 | evan | mov %eax, 10(%ecx) |
| 18:11:15 | evan | given the object is in %ecx |
| 18:11:38 | evan | the guard is 5 instructions, then this one to get the proper slot |
| 18:11:57 | evan | so i actually want to figure out how to properly translate normal ivars into slot based ones |
| 18:11:59 | lypanov | you making use of the cute bignum support in llvm yet? |
| 18:12:24 | evan | no |
| 18:12:31 | evan | but we make use of the fact that it supports a 31bit int |
| 18:12:41 | evan | since thats how many bits our Fixnum has |
| 18:12:56 | evan | we use that with the overflow addition instrinsics |
| 18:13:02 | brixen | cute bignums? I've always thought of them as big and hairy and smelling of beer |
| 18:13:13 | evan | heh |
| 18:13:33 | sbryant_work | doesn't sound very cute. |
| 18:14:18 | evan | nope! |
| 18:15:23 | sbryant_work | Afternoon. |
| 18:16:07 | evan | sbryant_work: where you at? |
| 18:16:11 | lypanov | evan: aye. i meant the overflow support :) |
| 18:16:26 | lypanov | so whats the killer with perf in rubinius lately? |
| 18:16:43 | evan | lypanov: the ammount of ruby code we have |
| 18:16:44 | evan | :D |
| 18:16:48 | lypanov | :P |
| 18:17:10 | evan | I profile it often |
| 18:17:12 | lypanov | any luck on the techniques i talked about for doing profiling? |
| 18:17:13 | evan | there is no silver bullet anymore |
| 18:17:25 | evan | which techniques did you mention? i don't recall |
| 18:17:53 | brixen | I would say the amount of ruby code we *run* |
| 18:18:10 | evan | there ya go |
| 18:18:11 | brixen | one perf area is making that less if possible |
| 18:18:28 | brixen | like in core lib, which we haven't looked at tons |
| 18:18:36 | brixen | and in the jit |
| 18:18:45 | brixen | which just makes everything faster |
| 18:19:52 | evan | brixen: so, i'm going to simplify the MT interface |
| 18:19:58 | evan | a bit |
| 18:20:02 | evan | no [] or []= |
| 18:20:15 | evan | #lookup returns a MethodTableBucket or nil |
| 18:20:16 | sbryant_work | evan: Atlanta. |
| 18:20:26 | evan | #store takes a name, Executable, and visibility |
| 18:20:36 | evan | sbryant_work: hotlanta in the house! |
| 18:21:10 | sbryant_work | evan: it's hot alright. |
| 18:21:15 | sbryant_work | Too damn hot and humid. |
| 18:21:21 | sbryant_work | I'm from the north so this is a bit much. |
| 18:21:31 | evan | i'll bet |
| 18:21:33 | sbryant_work | Been here for a number of years now and still not used to it. |
| 18:21:35 | evan | growing up in Montana |
| 18:21:40 | evan | i can't really handle humid well. |
| 18:21:56 | sbryant_work | I'm from Detroit and it gets cold or perfect weather. |
| 18:22:28 | evan | how did you end up in Atlanta? |
| 18:23:03 | sbryant_work | Family moved here. |
| 18:23:27 | sbryant_work | Kind of blindsided me actually. I was a kid on vacation and came back to a new state o.O |
| 18:23:37 | evan | :/ |
| 18:24:03 | sbryant_work | I'd like to move but I can't figure out a decent place. |
| 18:24:09 | lypanov | holland |
| 18:24:13 | brixen | heh |
| 18:24:18 | evan | LA is pretty nice. |
| 18:24:26 | lypanov | yeah, if you don't count holland |
| 18:24:28 | sbryant_work | How's the job market and can I speak English? |
| 18:24:30 | brixen | pdx is pretty nice, if you like rain |
| 18:24:34 | evan | it's probably like Atlanta with a thermostat that isn't busted |
| 18:24:52 | lypanov | sbryant_work: if you're good, you'll get away with anything anyway. |
| 18:24:58 | lypanov | anywhere :) |
| 18:25:01 | sbryant_work | I love California. I head there to visit friends and stuff |
| 18:25:26 | sbryant_work | lypanov: yeah, well people generally are wary because I opted out of a college education for computer science. |
| 18:25:55 | brixen | evan: so, why no [], []=? seems like you could give it just lookup/store semantics and it would be slightly cleaner at use points |
| 18:25:55 | lypanov | ah. that'll be a problem here in big companies |
| 18:25:58 | sbryant_work | I was going to film school and then I landed a job at a start up. |
| 18:26:09 | lypanov | but shouldn't be in small as long as you can prove yourself |
| 18:26:12 | brixen | evan: or are you wanting to disambiguate on the selector? |
| 18:26:23 | evan | brixen: well, i could do [] to return a MTB |
| 18:26:40 | evan | but []= has issues, because you never pass the visibility |
| 18:26:46 | evan | i could default it to :public |
| 18:26:47 | lypanov | whats the situation with rubinius + wacky gcc versions now? |
| 18:26:52 | sbryant_work | lypanov: the thing is that I don't think I'm that good. Other people say differently but I'm not a really great programmer (yet). |
| 18:26:54 | brixen | evan: ah I see |
| 18:26:57 | brixen | either way |
| 18:26:58 | evan | but i'd prefer the user actually have to always specify it |
| 18:27:02 | brixen | yeah |
| 18:27:08 | evan | MT is used actually very few places |
| 18:27:11 | evan | so it's not a big deal |
| 18:27:12 | lypanov | sbryant_work: no time like the present :P |
| 18:27:15 | brixen | I prefer explicit and consistent |
| 18:27:53 | lypanov | always thought he rocked, so. yeah... can't comment |
| 18:27:57 | sbryant_work | lypanov: hah. This contract is ending in a few days. So I could go for anything |
| 18:28:06 | brixen | lypanov: gcc 4.2.1 appears to do mean things to our stack manipulation code in one of the opcodes |
| 18:28:18 | sbryant_work | lypanov: I used to think that, then I met really good programmers. |
| 18:28:30 | brixen | lypanov: so, you end up with a message sent to the wrong item cus the stack order is wonky |
| 18:28:39 | brixen | at least that's the assumption |
| 18:29:12 | evan | sbryant_work: well, you get better by doing |
| 18:29:25 | evan | software development isn't a spectator sport |
| 18:29:27 | evan | as they say. |
| 18:29:54 | evan | I have a nasty habit of taking on things just over my head |
| 18:29:58 | evan | and pulling myself up |
| 18:30:02 | lypanov | ditto |
| 18:30:05 | lypanov | do that. its fun |
| 18:30:10 | evan | it is fun |
| 18:30:13 | lypanov | rewrite photoshop in ruby or something |
| 18:30:19 | sbryant_work | evan: I develop quite often :) |
| 18:30:21 | lypanov | with the aim of finishing by saturday |
| 18:30:33 | sbryant_work | I'm just not as good as I want to be. |
| 18:31:33 | lypanov | only knows a few people he knows are better than him and they all say that he's amazing, so, doesn't know what to think really |
| 18:31:35 | sbryant_work | I usually try not to talk about things I don't about |
| 18:32:01 | sbryant_work | know about |
| 18:32:17 | evan | sbryant_work: you doing development day to day now? |
| 18:32:20 | evan | for work |
| 18:32:23 | sbryant_work | evan: have been for years |
| 18:32:33 | lypanov | boring or interesting? |
| 18:32:39 | sbryant_work | I've been programming since I was 10 or 12 |
| 18:32:43 | sbryant_work | boring :( |
| 18:32:49 | sbryant_work | And personal projects are interesting |
| 18:33:24 | sbryant_work | I'm trying to do some Chromium development, that's pretty interesting. |
| 18:33:41 | lypanov | used to hack on webkit, which also is fun :) |
| 18:33:50 | evan | sbryant_work: which part of chromium? |
| 18:33:55 | sbryant_work | The OS X version. |
| 18:34:00 | lypanov | good boy |
| 18:34:04 | sbryant_work | That's the best I can give for "part" |
| 18:34:24 | sbryant_work | I had patches for the project before my mbp was stolen! |
| 18:34:31 | evan | :( |
| 18:34:34 | lypanov | :( |
| 18:35:14 | lypanov | so. which gcc should i use? and how should i build rubinius? |
| 18:35:21 | lypanov | would like to actually have a play |
| 18:35:49 | lypanov | should for once just stick to a normal osx install one of these days |
| 18:36:01 | sbryant_work | what do you do to your os x install? |
| 18:36:13 | lypanov | gentoo |
| 18:36:19 | evan | you're so crazy. |
| 18:36:19 | sbryant_work | I disable all the keyboard shortcuts because it gets in the way of my emacsing |
| 18:36:23 | sbryant_work | gentoo is crazy |
| 18:36:33 | lypanov | i heart gentoo |
| 18:36:35 | sbryant_work | I had a friend who used to build gentoo over and over for some reason. |
| 18:36:52 | sbryant_work | he was always in a different stage of installing that thing |
| 18:36:56 | lypanov | hehe |
| 18:37:01 | evan | no no |
| 18:37:04 | evan | thats what you do with gentoo |
| 18:37:08 | evan | you're compiling CONSTANTLY |
| 18:37:10 | sbryant_work | evan: i know! |
| 18:37:20 | sbryant_work | But I'm no better, I used to hack on FreeBSD. |
| 18:37:31 | lypanov | really? odd. i compile less with gentoo than i do when fucking around with macports or fink |
| 18:37:35 | sbryant_work | I wrote custom drivers and stuff for a company I used to work for |
| 18:37:51 | evan | lypanov: well, thats true |
| 18:37:54 | lypanov | and gentoo actually works when i install something |
| 18:38:01 | lypanov | even with a tiny user base |
| 18:38:07 | sbryant_work | if I linux I usually debian or ubuntu it up. |
| 18:38:08 | lypanov | its still more reliable than that tcl shit |
| 18:38:16 | evan | yeah |
| 18:38:21 | evan | macports is a pain in the ass. |
| 18:38:31 | evan | i generally try to use it. |
| 18:38:35 | evan | try to NOT use it. |
| 18:38:36 | evan | rather. |
| 18:38:42 | lypanov | wish that was an option. |
| 18:38:43 | sbryant_work | I try to. |
| 18:38:59 | lypanov | i use ubuntu when i have the option |
| 18:39:25 | sbryant_work | FreeBSD spoiled me. When I installed something I didn't have to worry about installing "dev" packages. |
| 18:51:19 | brixen | evan: there are 4 hung rbx processes running specs jit enabled under my elle account if you'd like to debug this |
| 18:51:22 | brixen | http://gist.github.com/136016 |
| 18:51:37 | brixen | I'm guessing they are the same issue but I only attached to that one |
| 18:56:51 | evan | ok. |
| 18:57:03 | brixen | argh, fucked up -S processing |
| 18:57:08 | brixen | le'see |
| 18:58:36 | rue | evan: I see a lot of non-morphic caching, strategised any for those? I have not seen today's commits if you have just added something |
| 19:01:22 | evan | what do ya mean, non-morphic caching |
| 19:02:40 | rue | Cache hits on the same class without exception |
| 19:03:05 | evan | you mean where the cache only ever seens one class? |
| 19:04:18 | evan | s/seens/sees/ |
| 19:06:05 | evan | those are prime inlining canidates |
| 19:11:43 | evan | rue? |
| 19:23:00 | rue | Yes, those |
| 19:24:34 | evan | inline them is the current strategy |
| 19:24:41 | evan | is there something else you were considering? |
| 19:30:38 | evan | wonders if there is a space delay on packets to finland today |
| 19:32:36 | rue | Doing stuff. |
| 19:33:03 | rue | Hard inline or leaving a guard still? |
| 19:33:11 | evan | you have to guard |
| 19:33:19 | rue | A hard inline mode might be useful as an option |
| 19:33:30 | evan | there is no guarantee that because it worked before it will continue to work |
| 19:33:50 | evan | i suppose it depends on the code being inlined |
| 19:33:58 | evan | there is some code thats unsafe for unguarded inlining |
| 19:34:05 | slava | hi evan |
| 19:34:07 | evan | i suspect there is probably some that is safe though |
| 19:34:11 | evan | slava: hello. |
| 19:35:17 | rue | OK |
| 19:36:37 | slava | evan: how's things? |
| 19:38:29 | evan | oh good |
| 19:38:30 | evan | you? |
| 19:38:49 | slava | hacking at a coffee shop |
| 19:39:09 | slava | with my mac laptop |
| 19:39:11 | slava | I'm such a fag |
| 19:39:30 | evan | heh |
| 19:40:50 | brixen | slava: you are a junior pupil at a private preparatory school that works and runs errands for a senior pupil? |
| 19:41:04 | lypanov | slava: frappuccino? |
| 19:41:15 | brixen | consulted the dashboard dictionary widget |
| 19:41:20 | slava | lypanov: peach iced tea |
| 19:41:22 | slava | brixen: something like that |
| 19:41:39 | sbryant_work | slava: you're not hacking at a coffee shop. You're writing a screen play. Now come clean with it! |
| 19:41:47 | lypanov | slava: oh, i have no idea then. |
| 19:42:36 | slava | sbryant_work: actually, I'm writing a critical analysis of kant's work, surrounded by 6 smoking-hot chicks who dig my emo style |
| 19:43:00 | brixen | hah |
| 19:43:12 | brixen | it's written in Factor though |
| 19:43:32 | sbryant_work | slava: as one man to another. Pics or it didn't happen. |
| 19:47:56 | slava | sbryant_work: my friend sitting next to me has one of the newer unibody mac book pros. he's getting all the girls |
| 19:48:12 | slava | bastard also got a 3gs iphone the other day just to totally upstage me |
| 19:49:05 | brixen | 2 things every hot geek must have: unibody mbp and iphone 3gs |
| 19:49:22 | lypanov | isn't hot, so, its okay |
| 19:49:24 | brixen | the moustache or scruffy beard is optional |
| 19:50:27 | slava | what about picking bits of skin off your foot at eating them, RMS-style? |
| 19:51:05 | slava | evan: how's the type feedback going? |
| 19:51:11 | evan | going good |
| 19:51:18 | evan | accessors are inlinig |
| 19:51:24 | evan | i've got dynamic deopt working |
| 19:51:24 | slava | with guards? |
| 19:51:26 | evan | yeah |
| 19:51:29 | slava | nice |
| 19:52:17 | evan | one nice thing about the guards here is that i know, from the class, if the object will be a reference or an immediate |
| 19:52:28 | evan | which simplifies the guard |
| 19:52:55 | evan | for checking a reference's class, it's currently at 5 instructions |
| 19:53:14 | slava | you could probably bum that down a bit; its just reading the header isn't it? |
| 19:53:17 | evan | with 2 jumps to the non-inlined version |
| 19:53:21 | slava | or are you doing a full subtype check |
| 19:53:31 | evan | well, it's a couple things |
| 19:53:36 | evan | we have to check that the object is a reference first |
| 19:53:39 | evan | thats 2 instructions |
| 19:53:43 | slava | oh, you mean in the general case |
| 19:54:02 | evan | well, even if you're checking a reference class |
| 19:54:09 | evan | you still have to make sure the object is a reference |
| 19:54:28 | slava | ah |
| 19:54:30 | slava | I get it |
| 19:54:55 | evan | then 1 to get the class, and 1 to compare the class's id against the expected id |
| 19:55:00 | evan | and a jump |
| 19:55:12 | slava | sounds good |
| 19:56:08 | evan | checking for Fixnum's is only 2 |
| 19:56:13 | evan | which is nice. |
| 19:56:36 | slava | if you have a guard nested inside of a code block that is itself protected by a guard, do you optimize out the inner guard if the condition it checks is a subset of the outer condition? |
| 19:57:01 | evan | no, but i should |
| 19:57:08 | evan | i'll be sure to add that |
| 19:57:18 | evan | that shouldn't be hard |
| 19:57:29 | evan | i'll just pass down in the compiler an assumptions object |
| 19:57:33 | slava | yeah |
| 19:57:50 | evan | and the guards can consult the assumptions to make themselves more effecient |
| 19:58:25 | slava | have you read about class hierarchy analysis? |
| 19:58:46 | slava | once you have some type feedback going you can do some static analysis too, and it becomes a lot more effective |
| 19:59:01 | evan | yeah, i have some |
| 20:03:35 | slava | your jit is starting to sound pretty awesome |
| 20:03:44 | evan | yeah! |
| 20:03:51 | slava | what about code sequences for built-in stuff, like blocks, control flow, etc, are they pretty good? |
| 20:04:03 | evan | control flow is solid |
| 20:04:09 | evan | and exceptions rock |
| 20:04:23 | evan | they're flattened entirely into C style control flow |
| 20:04:33 | evan | because the compiler can seen the nesting at compile time |
| 20:04:40 | slava | so you're probably getting good results for fib now huh? :) |
| 20:04:54 | evan | you know |
| 20:04:58 | evan | i don't really benchmark fib :D |
| 20:05:02 | evan | i should check though. |
| 20:05:31 | brixen | heh, we should add fib to the nightly bench runs |
| 20:05:44 | brixen | I think I'll do that |
| 20:05:50 | brixen | it's so real-world |
| 20:06:27 | evan | hah |
| 20:06:54 | slava | brixen: 90% of scheme implementations are only used to run fib |
| 20:07:04 | evan | hahah |
| 20:07:09 | brixen | then we'll be faster than MRI on something, show 'em where the real potential is |
| 20:09:10 | slava | evan: I finished up with my new register allocator, now I'm working on a pass which converts stack operations to register operations in the whole procedure |
| 20:09:14 | slava | formerly I'd do this on a per-basic block basis |
| 20:09:28 | evan | ah! cool |
| 20:12:23 | slava | I went test-crazy with the register allocator, more than half the code is unit tests :) |
| 20:12:31 | evan | thats good! |
| 20:12:37 | evan | especially for a register allocator |
| 20:12:45 | evan | there are so many edge cases |
| 20:13:17 | slava | yeah, register allocation in basic blocks is easy but when you do it for the whole procedure you have to take control flow into account |
| 20:13:46 | slava | eg, if you spill a value in block A and reload it in block B, you better make sure that every path from the entry to B goes through A otherwise its wrong :-) |
| 20:13:46 | evan | yeah |
| 20:13:54 | evan | bigtime |
| 20:14:13 | evan | did you end up decorating each block with the register usage? |
| 20:14:53 | slava | the algorithm I use allocates registers in a linear fashion, ignoring control flow, then does a pass at the end to fix things up |
| 20:14:58 | evan | saying "this block loads value 1 into register 2" |
| 20:15:14 | evan | ah ok. |
| 20:15:15 | slava | for every value, it compares its register at the end of one block with the start of the successor block |
| 20:15:19 | slava | if they differ, it inserts a move |
| 20:15:28 | evan | ah! sure |
| 20:15:28 | slava | in practice you only insert a handful of moves |
| 20:15:32 | evan | thats pretty straightforward |
| 20:16:09 | slava | the other tricky thing is that if you have a series of blocks, A B C, A defines a value, C uses it, but B doesn't use it, you still have to take it into account when allocating registers in B |
| 20:16:16 | slava | since its live there even though its not used |
| 20:16:35 | slava | computing liveness was a bit tricky, I had to bug jrose about it a few times |
| 20:16:35 | evan | yeah |
| 20:16:55 | slava | my algorithm still isn't optimal, I use hash sets of values but you're meant to use a bit vector where bit N is set if value N is live |
| 20:17:02 | evan | you have to mark that value as being a shadow in B |
| 20:17:03 | slava | then you can do union/intersection with and/or on the bits |
| 20:17:39 | slava | that's a nice optimization for sets where all keys are small integers |
| 20:19:17 | evan | nice |
| 20:24:39 | dbussink | sbryant_work: i vote for holland too :) |
| 20:25:00 | evan | then you can eat stroopwaffles everday at lunch! |
| 20:25:05 | evan | everday |
| 20:25:07 | evan | GR. |
| 20:25:09 | evan | everyday |
| 20:25:16 | lypanov | veryday! |
| 20:25:31 | dbussink | muhaha |
| 20:25:50 | dbussink | evan: you can buy them in the restaurant where i work |
| 20:25:53 | dbussink | :) |
| 20:25:56 | evan | hahah |
| 20:26:08 | dbussink | lypanov: where are you located? |
| 20:26:13 | evan | dbussink: to you eat herring from street vendors? |
| 20:26:29 | dbussink | evan: personally i hate raw herring, not really a fish person in general either |
| 20:26:46 | dbussink | evan: but we have people that do, a fish street vendor is not very uncommon |
| 20:26:53 | evan | yeah |
| 20:27:01 | evan | i recall seeing them in amsterdam |
| 20:27:02 | dbussink | although they usually have their van there all the time, so it's not that they are moving around |
| 20:27:08 | evan | and being mildly grossed out. |
| 20:27:15 | dbussink | evan: hehe, i can imagine |
| 20:27:33 | evan | it's no different than getting a hotdog on the street though |
| 20:27:36 | dbussink | the first catch of the year usually goes for something like 20k euro's |
| 20:27:38 | evan | the herring is better for you too |
| 20:28:13 | dbussink | which usually makes the national news too, so it's pretty much an estabilished tradition |
| 20:28:21 | evan | yeah |
| 20:28:55 | dbussink | evan: ok, it was 66000 euro's this year... |
| 20:29:07 | evan | zoinks. |
| 20:29:08 | dbussink | long live wikipedia |
| 20:29:27 | sbryant_work | dbussink: but I'm a vegan! |
| 20:29:57 | dbussink | sbryant_work: well, we have less of a burger culture compared to the us ;) |
| 20:30:20 | dbussink | not a steakhouse on every corner with insanely large portions |
| 20:30:27 | dbussink | so that's better i guess |
| 20:30:36 | lypanov | and the water doesn't suck |
| 20:30:39 | sbryant_work | The insane proportions is better but I doubt it's less animal focused. |
| 20:30:49 | slava | animals are tasty |
| 20:30:52 | sbryant_work | lypanov: oh man I hate the chlorine heavy water. |
| 20:31:00 | lypanov | move to holland then |
| 20:31:04 | sbryant_work | and the florine too. |
| 20:31:05 | lypanov | here we actually have water |
| 20:31:06 | dbussink | sbryant_work: dutch water is better than bottled |
| 20:31:11 | sbryant_work | Metal tastes nasty. |
| 20:31:11 | lypanov | aye |
| 20:31:26 | sbryant_work | I've had filters installed where I live |
| 20:31:30 | lypanov | dbussink: as a friend staying with us atm said "wow, its like it came from the mountains!" |
| 20:31:44 | dbussink | there are places where on one side of there street there's a water bottling company pumping up water, on the other side of the road there's the communal water supply :) |
| 20:31:55 | lypanov | hehe |
| 20:32:11 | dbussink | they measured quality too and usually tap water wins |
| 20:32:24 | dbussink | i hated the chlorine taste in the us too |
| 20:32:32 | sbryant_work | dbussink: can I get by with just english? |
| 20:32:37 | dbussink | sbryant_work: yeah |
| 20:32:43 | lypanov | sbryant_work: the portions of meat here are sane. and they have plenty of veggie restaurants |
| 20:32:49 | sbryant_work | I take it Japanese (my horribly broken Japanese at that) isn't very useful over there. |
| 20:32:55 | dbussink | sbryant_work: english speaking people actuallu complain that they can't learn dutch here |
| 20:33:01 | sbryant_work | haha |
| 20:33:08 | dbussink | sbryant_work: because the instant someone notices you're english speaking they switch |
| 20:33:18 | lypanov | they should just make conversation with the turkish. they are fine |
| 20:33:20 | sbryant_work | Much better than Russia. |
| 20:33:22 | lypanov | just the dutch are annoying |
| 20:33:30 | dbussink | i read / write more english than dutch |
| 20:33:35 | dbussink | lypanov: hey :P |
| 20:33:35 | lypanov | ditto |
| 20:33:37 | boyscout | Rework MethodTable to be independent - 01a15c7 - Evan Phoenix |
| 20:33:40 | sbryant_work | Where they spell out prices in Russian and give numbers for english people. |
| 20:33:50 | evan | ok, MethodTable work is all done. |
| 20:33:53 | sbryant_work | And the prices are always jacked up too. |
| 20:33:54 | evan | Visibility is gone |
| 20:33:54 | evan | yay! |
| 20:33:55 | lypanov | dbussink: its true. its almost impossible to get someone to just talk dutch with you when you arrive. they always "want to help" |
| 20:34:06 | dbussink | lypanov: you mean as a tourist? |
| 20:34:12 | dbussink | well, don't stay in amsterdam then :0 |
| 20:34:13 | dbussink | :) |
| 20:34:17 | boyscout | CI: Build 01a15c7 failed. http://ci.rubini.us/rubinius/builds/01a15c7a00d156b7afac8dfb50bc695565d3278d |
| 20:34:17 | lypanov | no, as a newcomer to the country that wants to learn the language |
| 20:34:25 | dbussink | lypanov: ah yeah, that's hard indeed |
| 20:34:33 | lypanov | sbryant_work: as someone that eats vegan (but with honey) 2 days a week for religious reasons, its still very hard to eat vegan here. |
| 20:34:37 | dbussink | you have to continuesly ask people to speak dutch to you |
| 20:34:51 | lypanov | sbryant_work: i cook myself instead. cheaper anyway. |
| 20:34:57 | sbryant_work | lypanov: I do too. |
| 20:35:13 | dbussink | here there's much more a culture of home cooking compared to the us |
| 20:35:17 | dbussink | that's my experience at least |
| 20:35:20 | lypanov | agreed |
| 20:35:25 | lypanov | same with me |
| 20:35:31 | sbryant_work | I found some pasta and breads over here that have only 3 ingredients. That excited me. |
| 20:35:50 | dbussink | you can buy actual real bread at a bakery |
| 20:35:57 | sbryant_work | Thank god. |
| 20:36:04 | sbryant_work | I always have to ask for real bread here. |
| 20:36:07 | dbussink | you don't realize the quality untill you go abroad |
| 20:36:14 | dbussink | sbryant_work: even the supermarket bread is real |
| 20:36:16 | sbryant_work | I don't want anything but water, flour and a rising agent. |
| 20:36:22 | sbryant_work | Is it that hard? |
| 20:36:25 | dbussink | sbryant_work: if you don't buy the cheapest of the cheapest |
| 20:36:32 | dbussink | sbryant_work: probably not in a bakery |
| 20:36:42 | sbryant_work | dbussink: my food bills are not cheap here. |
| 20:36:53 | sbryant_work | mainly because I go for quality. |
| 20:37:10 | sbryant_work | Oh and some friends grow things and I steal from them. |
| 20:37:14 | evan | fail! |
| 20:37:25 | evan | erg. |
| 20:37:53 | dbussink | sbryant_work: supermarkets also have a collection of ecological stuff |
| 20:38:09 | dbussink | sbryant_work: but you can also get fresh vegetables at the local market pretty cheap |
| 20:38:55 | sbryant_work | The thing that upsets me where I live is the time things are open. |
| 20:39:04 | sbryant_work | Places start closing around 9pm. |
| 20:39:12 | dbussink | that's the same around here |
| 20:39:16 | sbryant_work | :( |
| 20:39:26 | dbussink | supermarkets where i live are usually closed at 8pm |
| 20:39:32 | evan | sbryant_work: move to vegas! |
| 20:39:34 | dbussink | in cities like amsterdam it's longer |
| 20:39:36 | evan | stuff never closes there. |
| 20:39:50 | sbryant_work | evan: vegas is a nice place to sometimes maybe visit if you have money to burn. |
| 20:39:52 | dbussink | also almost everything is usually closed on sundays here |
| 20:40:15 | dbussink | religious tradition left over |
| 20:40:24 | dbussink | although that's not the case in the bigger cities again |
| 20:40:28 | sbryant_work | Figured as much. |
| 20:40:35 | sbryant_work | Can you buy booze on sunday? |
| 20:40:39 | slava | why would you go to a supermarket after 9pm? |
| 20:40:48 | sbryant_work | slava: awkward schedule |
| 20:40:55 | dbussink | sbryant_work: at bars you always can |
| 20:41:06 | dbussink | and if a supermarkt is open, you can buy it there of course |
| 20:41:13 | dbussink | if you're over 16 that is ;) |
| 20:41:41 | sbryant_work | Last time I checked I was over 16. |
| 20:41:47 | sbryant_work | yep still 23. |
| 20:43:06 | dbussink | but if you move to for example downtown amsterdam it's way different than some other smaller city :) |
| 20:44:49 | sbryant_work | My friends tell me amsterdam is a place should avoid. |
| 20:45:06 | sbryant_work | I should avoid. |
| 20:46:01 | boyscout | CI: 01a15c7 success. 2733 files, 10849 examples, 33889 expectations, 0 failures, 0 errors |
| 20:46:40 | dbussink | sbryant_work: you should visit it just to have been there |
| 20:47:06 | dbussink | sbryant_work: although i've worked there 3 years ago during the summer and it's nice if you know where to avoid the tourists :0 |
| 20:47:07 | dbussink | :) |
| 20:48:31 | dbussink | dbussink: i actually live on the other side of the country and i like it |
| 20:48:51 | dbussink | but i grew up between farmlands, so that might have an influence too |
| 20:54:50 | sbryant_work | I'm planning a visit out there. |
| 20:54:55 | sbryant_work | I guess if I like it I won't come back? |
| 20:57:33 | dbussink | sbryant_work: hehe, well, you need stuff like a work visa etc. but that isn't that hard |
| 20:57:52 | dbussink | especially if you find a company that i willing to pay a reasonable amount of money |
| 20:57:54 | sbryant_work | But I'm Amurikan! |
| 20:58:17 | sbryant_work | I was wondering about residency requirements and things like that. |
| 20:59:17 | lypanov | requirement == good position, as dbussink says :) |
| 20:59:23 | dbussink | sbryant_work: i was able to get a colombian intern to work here, for americans it's actually easier |
| 21:00:57 | sbryant_work | Does it help that I might come over there with money? |
| 21:01:25 | dbussink | sbryant_work: can help yeah, just found that we apparently have a eu blue card thingy these days |
| 21:01:34 | dbussink | for high-skilled foreign workers |
| 21:02:00 | sbryant_work | Oh neat-o. |
| 21:02:36 | dbussink | hmm, still a proposal i see |
| 21:02:51 | dbussink | but if you can get a good job, it's not an issue in general |
| 21:03:38 | dbussink | sbryant_work: you have a masters degree? |
| 21:03:45 | sbryant_work | No. |
| 21:03:53 | sbryant_work | I'm a self taught programmer. |
| 21:04:40 | dbussink | ah, because that's a qualification for high skilled worker |
| 21:04:45 | sbryant_work | I've been thinking about going back to school |
| 21:06:18 | sbryant_work | dbussink: that's strange for the tech industry. |
| 21:06:37 | dbussink | sbryant_work: well, it's a general rule, so it's where they put the mark |
| 21:06:45 | dbussink | but if you make enough money you can get around it |
| 21:06:57 | sbryant_work | what's that mark? |
| 21:07:10 | sbryant_work | Is six figures enough? |
| 21:07:23 | dbussink | that's way to much even :) |
| 21:07:35 | dbussink | you don't get that here quickly as a developer either |
| 21:08:04 | sbryant_work | I just like to know things :) |
| 21:08:14 | dbussink | sbryant_work: around 36k for under 30, 50k for older |
| 21:08:33 | dbussink | sbryant_work: and those are not really insane salaries, you get there pretty quick |
| 21:08:57 | slava | 36k? are you serious? |
| 21:08:59 | sbryant_work | Oh yeah, my first tech job payed me over that :) |
| 21:09:01 | slava | is this php programming? |
| 21:09:04 | dbussink | slava: yeah |
| 21:09:14 | dbussink | well, salaries are not really comparable to the us |
| 21:09:36 | dbussink | with a master thesis starting salaries are around 2500 / month here |
| 21:09:36 | slava | no shit :) |
| 21:10:14 | ddub | yeah, I really wanted to work overseas a few years back |
| 21:10:25 | ddub | but I simply couldn't comprehend the drop in salary |
| 21:10:26 | dbussink | if you're a decent ruby developer you probably end up with something between 40 - 60 |
| 21:10:34 | ddub | of course, the dollar has dropped since then, so it might work out :) |
| 21:10:41 | dbussink | i don't know what the average living expenses are over there |
| 21:10:48 | dbussink | with health insurance and all that stuff |
| 21:10:59 | sbryant_work | dbussink: that's what I'm trying to figure out. |
| 21:11:10 | dbussink | but i probably could have made a lot more money if i'd moved to the us :P |
| 21:11:13 | sbryant_work | 40 - 60 is low over here. |
| 21:11:18 | slava | cost of living is higher; the prices in coffee shops are not competitive with what you pay in US or Canada at all :) |
| 21:11:33 | dbussink | we don't live in those shops either ;) |
| 21:11:38 | slava | of course its legal, so... |
| 21:11:43 | sbryant_work | Yeah! You probably don't spend $5 on a cup of coffee. |
| 21:11:46 | dbussink | but i pay around 100 euro's a month for health insurance |
| 21:11:51 | dbussink | for example |
| 21:12:08 | sbryant_work | dbussink: private? |
| 21:12:20 | dbussink | sbryant_work: we only have private here, one system for all |
| 21:12:23 | slava | never mind, I was just trying to make a joke |
| 21:12:34 | dbussink | a obligated base insurance and optional additional stuff |
| 21:12:49 | dbussink | slava: hehe, wel just use the free coffee machines at work ;) |
| 21:12:57 | dbussink | although i don't drink coffee myself :p |
| 21:13:16 | dbussink | but if hard cash is the goal, don't move the eu :) |
| 21:13:27 | sbryant_work | dbussink: well, I payed something like $180 here for really bad insurance. |
| 21:13:33 | sbryant_work | So that's got to be at least better than that. |
| 21:13:34 | dbussink | i've heard stories about for example spain which is a lot worse than here |
| 21:13:54 | dbussink | you can just get a living with development tuff |
| 21:13:59 | sbryant_work | I'm looking for a place to work where there are smart people. |
| 21:14:07 | sbryant_work | if I can't learn from my environment I get bored. |
| 21:14:09 | dbussink | some people i talked to who worked in barcelona all had customers outside spain |
| 21:14:15 | dbussink | because they paid decent money |
| 21:14:15 | slava | what do you pay for broadband and how good is it? |
| 21:14:33 | dbussink | i pay 30 or something i think a month |
| 21:14:40 | dbussink | 8 mbit |
| 21:14:44 | sbryant_work | Insane. |
| 21:14:56 | dbussink | sbryant_work: as on? |
| 21:14:58 | dbussink | as in? |
| 21:15:02 | dbussink | cheap or expensive? |
| 21:15:06 | sbryant_work | cheap. |
| 21:15:16 | dbussink | if you're lucky and live in the right places you can get a lot better |
| 21:15:19 | sbryant_work | I pay something like 150 for cable and internet. |
| 21:15:26 | dbussink | i pay 16 for cable |
| 21:15:33 | sbryant_work | yeah that's insanely cheap. |
| 21:15:37 | dbussink | which gives me way more than enough crap on the tv :p |
| 21:15:43 | sbryant_work | I don't even watch it. |
| 21:15:58 | sbryant_work | I have this huge television for when people come over and want to chill out. |
| 21:16:05 | sbryant_work | And that's the only reason I have it. |
| 21:16:34 | sbryant_work | But 46 for internet and cable is fantastic. |
| 21:16:53 | sbryant_work | And it's kind of faster? Comcast has this stupid bandwidth throttling feature. |
| 21:16:56 | dbussink | you can get cheaper if you don't care about stuff like guaranteed static ip etc. |
| 21:17:03 | dbussink | i always have full speed |
| 21:17:13 | dbussink | around 800 KB/s downloading of stuff |
| 21:17:15 | sbryant_work | First connection gets 12+Mb for the first 10MB. |
| 21:17:27 | sbryant_work | Then it's throttled down to 6. |
| 21:17:28 | slava | comcast sucks |
| 21:17:33 | dbussink | this works how it should :P |
| 21:17:40 | dbussink | two downloads is 400 each |
| 21:17:40 | sbryant_work | slava: no shit. |
| 21:18:02 | sbryant_work | slava: I live in the city and I have no access to U-Verse or Docsis 3.0 or any fiber |
| 21:18:14 | sbryant_work | And I live right next to level3 a tier 1 ISP. |
| 21:18:33 | sbryant_work | dbussink: bandwidth caps? |
| 21:18:43 | dbussink | sbryant_work: no |
| 21:18:47 | sbryant_work | Hooray. |
| 21:19:14 | sbryant_work | I've never hit bandwidth caps but just knowing they're there is infuriating. |
| 21:19:40 | dbussink | it's officially all FUP, but i've never heard of anyone who was contacted about it |
| 21:21:54 | sbryant_work | FUP? |
| 21:22:36 | dbussink | sbryant_work: fair use policy |
| 21:23:02 | dbussink | basically so they have something to complain about to you if you download full bandwidth 24/7 |
| 21:31:55 | ddub | hey they sold me unlimited internet! |
| 21:32:28 | ddub | I was upset but willing to deal with the limitations imposed by physics, but I'll be damned if I'm going to sit still and let them impose limitations based on scarcity of bandwidth! |
| 21:33:51 | sbryant_work | that damn pesky speed of light limitation. |
| 21:34:12 | ddub | I know |
| 22:11:05 | evan | even if we had instantanious, unlimited data transfer technology |
| 22:11:18 | evan | the telecos would try and figure out a way to say "but we're doing A LOT to give you this!!" |
| 22:11:41 | ddub | I had a rather odd discussion a while back with a friend |
| 22:11:59 | ddub | he basically said something like "wouldn't it be rad if we had teleporters like star trek" |
| 22:12:00 | sbryant_work | evan: no kidding. I hate their victim strategy. |
| 22:12:42 | ddub | and I turned it into this discussion on the ramifications of the teleporter on society, commerce, and politics |
| 22:12:48 | evan | yes |
| 22:12:56 | evan | the philosophy of teleporting is complex. |
| 22:12:57 | ddub | I don't know if that is more or less geeky than saying 'yes, totally rad!' |
| 22:13:11 | evan | is the ego on the receiver side the same as the ego on the sending side? |
| 22:13:21 | evan | yes, it acts the same |
| 22:13:43 | evan | but did the person on the sending side cease to be? |
| 22:18:11 | brixen | evan: the MethodTable cleaned up a lot of the ruby code nicely |
| 22:18:21 | evan | yeah |
| 22:18:41 | evan | you see i've provided 3 iterators too |
| 22:18:59 | brixen | just looking through the commit now |
| 22:18:59 | ddub | evan: there was an outer limits where the teleporter was basically an instantaneously created clone in another locatoin |
| 22:19:05 | evan | so do avoid having to create temp Arrays in order to manipulate the contents of a MT |
| 22:19:09 | evan | s/do/to/ |
| 22:19:14 | brixen | cool |
| 22:19:16 | ddub | and the teleporter engineer was basically responsible for killing the person on the originating side |
| 22:19:28 | evan | right |
| 22:19:33 | evan | that seems crappy. |
| 22:19:59 | evan | I can understant that the ego of a person is really just a very complex state |
| 22:20:02 | brixen | Array#at and Array#[] account for ~1.2sec of 8sec to run rails -h |
| 22:20:08 | ddub | the particular story was around a communications failure right after teleportation |
| 22:20:15 | evan | but it makes me uneasy |
| 22:20:20 | ddub | so they weren't able to prove that the person arrived safely for one week |
| 22:20:46 | evan | brixen: really? wow. |
| 22:20:53 | evan | i wonder what forms. |
| 22:20:57 | evan | it must be using a Range or something |
| 22:21:13 | evan | the trivial fixnum forms are handled by a prim |
| 22:23:37 | brixen | evan: ok, I see the iterators, #each, #each_entry, #filter_entries |
| 22:23:50 | evan | yep |
| 22:24:31 | evan | brixen: did you redirect the output of the benchs to a file? |
| 22:24:34 | evan | if so, where |
| 22:24:36 | evan | i'm debugging one now. |
| 22:25:03 | brixen | it was overwriting the cron log file |
| 22:25:08 | brixen | I fixed that last night |
| 22:25:09 | evan | wheres that |
| 22:25:20 | brixen | I don't have logs for those days |
| 22:25:27 | evan | hm... |
| 22:25:27 | evan | ok. |
| 22:25:34 | brixen | all that showed up in the log for today is the timeout abort |
| 22:25:44 | brixen | basically, the spec run lasted more than 2500 sec |
| 22:25:56 | brixen | well, the 6 spec runs rather |
| 22:26:19 | brixen | evan: here's the rails -h profile I was looking at http://gist.github.com/136177 |
| 22:26:51 | boyscout | Fixed -S option parsing. - 4663ea2 - Brian Ford |
| 22:26:51 | boyscout | Fixed processing options with optional arguments. - 6d15476 - Brian Ford |
| 22:26:51 | boyscout | Properly rescue SystemExit in Loader. - aa80d8b - Brian Ford |
| 22:27:12 | brixen | and now you can run that too :) bin/rbx -Pcalls -S rails -h |
| 22:27:47 | evan | brixen: rad |
| 22:27:47 | evan | ok |
| 22:27:52 | brixen | still working out kinks in loader code |
| 22:27:53 | evan | lets do this: |
| 22:27:56 | ddub | brixen: I'm still thinking about writing a parser for ruby |
| 22:27:57 | evan | this is our hit list. |
| 22:28:04 | evan | if anyone one wants to help with rubinius |
| 22:28:10 | ddub | there just isn't a definition of 'what is valid ruby' other than grammar.y |
| 22:28:12 | evan | make this list change! |
| 22:28:14 | ddub | which sucks butt |
| 22:28:16 | evan | make the times go down |
| 22:28:54 | evan | so everyone, focus on making the ruby code in these methods better |
| 22:29:00 | brixen | ddub: I'm looking forward to see it :) |
| 22:29:01 | evan | i'm going to focus on making the JIT run them better |
| 22:29:07 | boyscout | CI: aa80d8b success. 2733 files, 10853 examples, 33891 expectations, 1 failure, 0 errors |
| 22:29:09 | evan | for instance, Kernel#equal? |
| 22:29:15 | brixen | failure! |
| 22:29:16 | evan | i'll teach the JIT how to make that ultra fast |
| 22:29:20 | ddub | brixen: I need better resources or else it probably won't happen |
| 22:29:34 | brixen | evan: ok, I'm going to get the Hash stuff in |
| 22:29:41 | brixen | got sidetracked fixing the loader |
| 22:29:47 | brixen | well, not really sidetracked.. |
| 22:29:52 | evan | k |
| 22:29:57 | evan | fix that failure! |
| 22:30:27 | brixen | we need to fix that the failure doesn't get reported as a CI failure |
| 22:30:34 | ddub | teaches the JIT how to fail more discreetly |
| 22:30:43 | brixen | ah, that damn actor spec |
| 22:30:52 | brixen | actors are such high drama |
| 22:31:04 | brixen | boots actors from rubinius' stage |
| 22:31:49 | evan | 0 is stdout |
| 22:31:50 | evan | right? |
| 22:32:44 | evan | no, 1. |
| 22:33:09 | brixen | in, out, err right |
| 22:33:13 | brixen | 0, 1, 2 |
| 22:33:40 | evan | damn |
| 22:33:45 | evan | i tried to redirect stdout within gdb |
| 22:34:50 | evan | WOO |
| 22:34:51 | evan | it worked! |
| 22:34:56 | evan | i had the arguments to dup2() backwards |
| 22:35:00 | evan | the manpage for dup2 sucks. |
| 22:35:23 | brixen | how'd you do it? |
| 22:35:39 | brixen | since I always forget when I attach and wonder where my output is going |
| 22:35:48 | evan | A jedi can not reveal all his tricks! |
| 22:35:49 | evan | :D |
| 22:35:51 | evan | jk |
| 22:35:52 | brixen | hah |
| 22:36:10 | evan | p creat("/tmp/whatever", 00700) |
| 22:36:26 | evan | that shows you the fd, say, 79 |
| 22:36:32 | evan | p dup2(79, 1) |
| 22:36:36 | brixen | sweet |
| 22:36:45 | evan | creat is just open with the creat flag set |
| 22:37:50 | brixen | and a ridiculous spelling |
| 22:37:56 | evan | yeah |
| 22:37:58 | evan | wtf unix |
| 22:38:06 | evan | the e doesn't cost extra |
| 22:38:09 | evan | i promise. |
| 22:38:36 | brixen | but you can only use them once, and create has 2 |
| 22:38:49 | brixen | once or not at all |
| 22:38:54 | evan | hah |
| 22:39:07 | brixen | that's all the bits you have for a test |
| 22:39:14 | evan | "the keys on my IBM keyboard work better if i only use a letter once per word" |
| 22:39:17 | brixen | give me an 'a' |
| 22:39:25 | brixen | if 0 'a' else '' |
| 22:39:26 | evan | Oh i'm sorry |
| 22:39:27 | evan | spin again? |
| 22:39:33 | evan | </wheel-of-fortune> |
| 22:39:55 | evan | btw, is it just me, or does it seem like wheel of fortune should have a pirate theme |
| 22:40:04 | evan | YARR THIS BE YAR WHEEL OF FORTUNE! |
| 22:40:19 | brixen | heh |
| 22:40:35 | brixen | unix words would be a great theme for a wheel of fortune show |
| 22:40:50 | brixen | you'd have to teach 90% of the audience what unix is first |
| 22:40:53 | brixen | minor hurdle |
| 22:41:12 | evan | "I'd like to solve the puzzle: chmod it to 0700" |
| 22:41:46 | brixen | heh |
| 22:42:37 | evan | perhaps i watched too much wheel of fortune as a kid. |
| 22:43:03 | brixen | great show |
| 22:43:24 | brixen | who wouldn't want to watch vanna |
| 22:43:33 | evan | true enough |
| 22:43:36 | evan | and man, she's still on to |
| 22:43:37 | evan | too |
| 22:43:45 | brixen | heh, amazing |
| 22:43:59 | evan | even though they have LCDs for the letters |
| 22:44:02 | evan | which is fucking hilarious |
| 22:44:30 | brixen | ohh yeah, she just touches them now |
| 22:44:35 | evan | yeah |
| 22:44:41 | brixen | I guess I have seen it in the past 10 years |
| 22:44:47 | evan | hah |
| 22:44:49 | evan | GOTCHA |
| 22:44:55 | brixen | man, turning those letters was hard |
| 22:45:02 | brixen | she was probably getting RSI |
| 22:45:10 | evan | i'm sure she's got good health care |
| 22:45:19 | brixen | let's hope so! |
| 22:46:37 | brixen | evan: you see where Kernel#=== is on that profile output? |
| 22:47:55 | evan | yeah |
| 22:48:01 | evan | because it's just redispatching to kind_of? internally |
| 22:48:05 | evan | oh wait. |
| 22:48:16 | evan | Kernel#===? not Module#=== |
| 22:48:17 | evan | ... |
| 22:48:41 | evan | oh huh. |
| 22:49:05 | evan | I wonder whats hitting it |
| 22:49:11 | brixen | yeah me too |
| 22:49:17 | evan | do we override === on String? |
| 22:49:17 | brixen | I was surprised to see it |
| 22:49:18 | evan | maybe thats it |
| 22:49:19 | evan | we need to |
| 22:49:34 | evan | ah yep |
| 22:49:36 | evan | i don't think we do |
| 22:49:42 | evan | we need to alias == to === in String |
| 22:49:51 | evan | so we don't have to redispatch to it |
| 22:50:12 | brixen | k |
| 22:50:38 | brixen | evan: do you have rails gem installed? |
| 22:50:50 | evan | I believe so, yes. |
| 22:51:03 | brixen | do you get a bt for bin/rbx -S rails -h |
| 22:51:16 | evan | a bt of what? |
| 22:51:23 | brixen | backtrace |
| 22:51:25 | brixen | exception |
| 22:51:29 | evan | there is one? |
| 22:51:38 | brixen | yeah |
| 22:51:42 | brixen | well, I'm seeing one |
| 22:51:43 | evan | sure |
| 22:51:44 | evan | one sec. |
| 22:51:46 | evan | ah yep. |
| 22:51:52 | evan | ah hehe |
| 22:52:00 | evan | my MethodTable probably did this. |
| 22:52:01 | evan | one sec. |
| 22:56:32 | evan | hm.. |
| 23:01:10 | evan | wtf. |
| 23:01:28 | evan | why is this failing.... |
| 23:14:28 | evan | oh, it's undef'd already... |
| 23:14:36 | evan | hm. |
| 23:36:09 | tmornini | Hey guys, I'm getting a build error on HEAD: Don't know how to build task 'vm/builtin/methodvisibility.hpp' |
| 23:36:20 | brixen | try rake clean |
| 23:36:25 | brixen | the file got removed |
| 23:36:50 | tmornini | Trying! |
| 23:36:53 | brixen | heh |
| 23:36:59 | brixen | it'll work, I swear :) |
| 23:37:13 | brixen | need to rewrite the build tasks ;) |
| 23:37:33 | tmornini | I'm curious, why do you build -O2 -vs- -O3? |
| 23:37:58 | brixen | I believe we had issues with -O3 at one point |
| 23:38:18 | brixen | could try it |
| 23:38:35 | tmornini | I'll give it a shot. |
| 23:41:38 | tmornini | rake clean built, but massive errors on specs |
| 23:41:57 | brixen | hm |
| 23:42:02 | brixen | could you pastie it |
| 23:42:40 | tmornini | Weird! 2nd invocation runs fine! |
| 23:42:55 | tmornini | Well, runs way better. |
| 23:43:00 | tmornini | Will pastie. |
| 23:43:02 | brixen | k |
| 23:43:32 | tmornini | http://gist.github.com/136210 |
| 23:44:14 | brixen | what does build.sh do? |
| 23:44:28 | tmornini | Sorry. |
| 23:44:29 | tmornini | git pull; RBX_LLVM=1 rake build; bin/mspec ci -B full -T -Xjit.enabled |
| 23:44:31 | brixen | did you rake clean or rake vm:clean? |
| 23:44:35 | tmornini | rake clean |
| 23:44:44 | brixen | k |
| 23:44:55 | brixen | could you try without the jit enabled? |
| 23:44:55 | evan | -O3 performs worse. |
| 23:45:06 | tmornini | Really? That's interesting! |
| 23:45:22 | evan | because gcc does a crappy job figuring out what to inline in the interpreter |
| 23:45:37 | tmornini | I'll try -Os, which produces surprising results some times. :-) |
| 23:46:08 | brixen | tmornini: I think you have stale rbc files in there |
| 23:46:14 | brixen | could you do a rake clean again |
| 23:46:34 | tmornini | OK |
| 23:47:12 | brixen | running a full ci with the jit atm |
| 23:48:51 | brixen | hmm, full ci with jit ran ok |
| 23:49:31 | tmornini | Ok, I'll sort out. |
| 23:49:58 | brixen | rake clean should remove all .rbc files |
| 23:50:08 | brixen | but you could run find after to ensure it did |
| 23:53:05 | evan | hm wait |
| 23:53:16 | evan | is this a bug in BlankSlate that we masked... |
| 23:54:07 | tmornini | building again, almost done. |
| 23:54:18 | evan | yeah, it must be. |
| 23:54:31 | evan | so i fixed MethodTable and exposed this bug. |
| 23:54:39 | tmornini | Aha, I've validated my usefulness. :-) |
| 23:54:41 | brixen | evan: ah! I was wondering about that |
| 23:54:51 | tmornini | grep reveals several instances of -O2. Which is the root? |
| 23:54:56 | evan | tmornini: not your problem, sorry. |
| 23:54:59 | evan | something else. |
| 23:55:17 | tmornini | Ouch! Rewinding self-validation sucks... |
| 23:55:43 | evan | basically, BlankSlate has a bug |
| 23:55:50 | evan | if a method that it's already undef'd reappears |
| 23:55:51 | evan | it breaks |
| 23:55:57 | evan | in this case, we've got our own Kernel#breakpoint |
| 23:56:05 | evan | that it undefs at the beginning |
| 23:56:13 | evan | then rails adds it's own Kernel#breakpoint |
| 23:56:22 | evan | and BlankSlate blows up. |
| 23:56:27 | evan | so i'm going to remove our Kernel#breakpoint |
| 23:57:17 | brixen | hm |
| 23:57:35 | evan | it's busted anyway. |
| 23:57:36 | brixen | maybe we should just provide a BlankSlate that works right |
| 23:57:37 | evan | it uses MethodContext |
| 23:57:40 | brixen | ahh |
| 23:57:46 | evan | thats certainly not a bad idea |
| 23:57:49 | evan | but i'll fix this for now anyway |
| 23:58:46 | evan | great |
| 23:58:53 | evan | more breakage. |
| 23:58:59 | evan | this time with something a bit more critical |
| 23:59:02 | evan | Kernel#metaclass |