Show enters and exits. Hide enters and exits.
| 00:00:11 | brixen | Defiler: like this: http://rafb.net/p/4dX3tt23.html |
| 00:00:15 | agardiner | just be something like label1..labeln though |
| 00:00:35 | Defiler | brixen: Yeah, exactly that |
| 00:00:38 | brixen | agardiner: would be helpful I think |
| 00:00:49 | brixen | agardiner: OTOH, goto is unconditional |
| 00:00:58 | brixen | so you can just jump and find out after the fact :) |
| 00:01:07 | Defiler | That last commit of mine is totally badass |
| 00:01:14 | Defiler | I am pretty happy with it |
| 00:01:19 | brixen | heh nice |
| 00:01:49 | brixen | agardiner: ok, while in wish list mode, any chance of setting display to opcodes, like gdb has? |
| 00:02:17 | agardiner | hehe, sure |
| 00:02:26 | agardiner | you mean the auto-display of the current line? |
| 00:02:29 | brixen | that would be super helpful |
| 00:02:40 | brixen | yeah, but opcodes rather than source |
| 00:02:45 | agardiner | yeah, right |
| 00:02:57 | agardiner | i can do two things that would make this better, i think |
| 00:03:03 | brixen | e.g. for debugging a line like this: ((data.strip! || data).tr!("\n", " ") || data).squeeze! |
| 00:03:04 | agardiner | 1) let you set the mode |
| 00:03:22 | agardiner | 2) default intelligently, based on the type of step you take |
| 00:03:33 | agardiner | so if you step by line, show the Ruby source |
| 00:03:36 | brixen | ohh #2 would be da bomb :) |
| 00:03:43 | agardiner | and if you step by instruction, show the decode |
| 00:03:51 | brixen | yes please :D |
| 00:04:04 | agardiner | right, will do! :-D |
| 00:04:11 | brixen | heh, many thanks |
| 00:05:40 | zenspider | wtf??? |
| 00:06:09 | zenspider | my latest pull is dying on unable to load complier/init because it is executing through a symlink |
| 00:08:21 | brixen | agardiner: would you have a minute? |
| 00:08:28 | agardiner | sure, what's up? |
| 00:08:34 | rmm5t enters the room. | |
| 00:08:36 | brixen | one sec.. |
| 00:09:20 | rubuildius_ppc | Wilson Bilkovich: a9f5d7ad4; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; |
| 00:09:26 | brixen | agardiner: I was going to give you a paste, but this might be faster.. |
| 00:09:40 | brixen | shotgun/rubinius benchmark/yarv/bm_so_count_words.rb |
| 00:09:54 | AndrewO leaves the room. | |
| 00:10:13 | agardiner | er... i'm vm-less today, so i can't run that |
| 00:10:45 | brixen | ahh, ok |
| 00:11:27 | brixen | looks like meta_send_op_plus got converted to meta_send_op_minus in this code: nc += data.length |
| 00:11:39 | brixen | I'll track it down |
| 00:12:27 | agardiner | huh? you saying the compiled bytecode changed, or the meta_send_plus is behaving like meta_send_minus? |
| 00:13:08 | brixen | I'm running describe now, I'll know in a sec |
| 00:13:13 | zenspider | http://rafb.net/p/YmxVxv76.html huh??? |
| 00:13:20 | brixen | agardiner: look at this: http://rafb.net/p/SCdsBa97.html |
| 00:13:26 | brixen | agardiner: toward the bottom |
| 00:13:29 | zenspider | I can't run outside of the rubinius dir anymore... worked at noon |
| 00:14:26 | RyanTM leaves the room. | |
| 00:15:06 | brixen | agardiner: it's something else, I got confused by the narrow viewport in the debugger |
| 00:15:33 | agardiner | ah, ok |
| 00:15:42 | RyanTM enters the room. | |
| 00:16:12 | brixen | agardiner: it's trying to do meta_send_op_minus on a String, but it's not related to the nc += ... line |
| 00:17:45 | agardiner | hmm... i think another handy thing in the debugger would be a 'merged' source listing |
| 00:17:53 | zenspider | anyone else seeing this? |
| 00:17:54 | agardiner | showing the Ruby source and the decode interleaved |
| 00:18:11 | rmm5t leaves the room. | |
| 00:18:45 | brixen | agardiner: that would be really nice |
| 00:18:51 | brixen | zenspider: what's the repro command? |
| 00:20:26 | zenspider | brixen: ~/Work/git/rubinius/shotgun/rubinius -e 'p 1 + 1'; cd ..; ~/Work/git/rubinius/shotgun/rubinius -e 'p 1 + 1' |
| 00:22:27 | brixen | zenspider: yeah, I get it, I'm one back from HEAD |
| 00:22:57 | yipstar leaves the room. | |
| 00:23:17 | zenspider | k. I think we might have found it. |
| 00:25:25 | Defiler | You know who broke it? |
| 00:25:26 | Defiler | YOU PEOPLE |
| 00:27:32 | zenspider | pushing... |
| 00:28:25 | zenspider | god I hate git |
| 00:28:30 | boyscout | 1 commit by Ryan Davis |
| 00:28:31 | boyscout | * Fixed pathing issues for RUBYLIB env var; 9466ca2 |
| 00:30:35 | brixen | zenspider: git I hate god sounds more interesting to me :P |
| 00:31:14 | MenTaLguY | zenspider: you're not doing the whole "Rubinius workflow" thing, are you? |
| 00:31:16 | brixen | Defiler: did you do some work with the n.times {} construct in the compiler recently? |
| 00:31:22 | MenTaLguY | zenspider: I think it's enough to make anyone hate git :P |
| 00:31:40 | zenspider | MenTaLguY: I'm not? |
| 00:31:53 | Defiler | brixen: I have a ticket for fixing it, but I haven't touched it since evan added it, personally |
| 00:32:04 | brixen | ohh, # off hand? |
| 00:32:16 | MenTaLguY | zenspider: I dunno, you tell me? |
| 00:32:18 | zenspider | YAY! constant definition is fixed! miniunit passes! |
| 00:32:30 | zenspider | yes, I am? |
| 00:32:30 | Defiler | brixen: Yeah, it is.. uhh.. |
| 00:32:37 | MenTaLguY | ah |
| 00:32:40 | brixen | Defiler: I can find it |
| 00:32:41 | TheVoice leaves the room. | |
| 00:32:56 | Defiler | http://rubinius.lighthouseapp.com/projects/5089/tickets/369-next-causes-integer-times-to-lose-coun t |
| 00:32:59 | MenTaLguY | zenspider: most of the time you can just work in master and push from there and forget all about the Rubinius rake stuff |
| 00:33:14 | MenTaLguY | git-fetch and git-rebase if you want to linearize your history before pushing |
| 00:33:28 | MenTaLguY | if you merge, just be sure to git-commit --amend to give it a meaningful commit message |
| 00:34:12 | brixen | keeping a linear history is very helpful, IMO |
| 00:34:36 | brixen | I dunno what's so horrible about git:update and git:push |
| 00:34:41 | Defiler | Yeah, I don't use branches much.. I just do git fetch && git rebase origin |
| 00:34:42 | TheVoice enters the room. | |
| 00:34:59 | Defiler | Also, I use git commit -a -v a lot |
| 00:34:59 | zenspider | MenTaLguY: yeah. but I'm still using git, which is the problem in my case. |
| 00:35:10 | MenTaLguY | what sort of troubles are you hitting in particular? |
| 00:35:12 | zenspider | ok... we go eat now. I have another green box based on our work today |
| 00:35:23 | zenspider | http://www.zenspider.com/~ryand/dashboard/ YAY |
| 00:35:30 | MenTaLguY | congrats!~ |
| 00:35:59 | zenspider | later folks |
| 00:36:11 | Defiler | Same here. Food time |
| 00:39:17 | rubuildius_ppc | Ryan Davis: 9466ca2b0; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; |
| 00:46:41 | dgtized | ok, question does anyone care if the Bytecode::Compiler::Primitives constant disappears entirely? |
| 00:48:30 | dgtized | it get used outside of ShotgunPrimitives, but I wondered if anyone cared about it anywhere else? A full grep of the project comes up with nothing. |
| 00:48:47 | dgtized | sorry it doesn't get used anywhere else, does anyone intend to use it anywhere else? |
| 00:52:23 | brixen | dgtized_: do you have to remove it to get rid of the primitive_names? if not, I'd run it by evan first |
| 00:53:21 | agardiner | dgtized_: yes, i care |
| 00:53:37 | agardiner | i need that in the debugger to convert a primitive index to its namre |
| 00:54:16 | agardiner | oh, hang on... i'm confusing it with Rubinius::Primitives, i think |
| 00:56:03 | dgtized | yea it still does a call to cpu_populate_prim_names so the names are still about |
| 00:56:27 | aotearoa enters the room. | |
| 00:56:33 | agardiner | yeah, i use Rubinius::Primitives, which is what any other code should use as well |
| 00:56:57 | dgtized | k, and that just uses the raw C lookup table I presume? |
| 00:57:20 | agardiner | hehe, it used to be a hash, but i guess its been changed recently |
| 00:57:56 | agardiner | but yes, thats what it uses |
| 01:02:30 | jrun leaves the room. | |
| 01:02:39 | jrun enters the room. | |
| 01:04:42 | jrun leaves the room. | |
| 01:05:10 | jrun enters the room. | |
| 01:06:55 | jrun_ enters the room. | |
| 01:06:55 | jrun leaves the room. | |
| 01:08:56 | dgtized | ok I have local changes, but I got a seg fault earlier before I made them but it didn't reappear, so I went a head and made changes, I think something is finicky somewhere |
| 01:09:21 | dgtized | and running specs again on my changes I don't get the segfault so it's not deterministic |
| 01:10:00 | benburkert enters the room. | |
| 01:13:40 | boyscout | 2 commits by Charles Comstock |
| 01:13:41 | boyscout | * nuked primitive_names by adding a class var macro to ShotgunPrimitives; dd4304f |
| 01:13:42 | boyscout | * refactor generate_select use Bytecode::Compiler::Primitives in one place, and each ...; 2ddabcc |
| 01:16:36 | radarek enters the room. | |
| 01:17:29 | aotearoa_ enters the room. | |
| 01:17:49 | imajes leaves the room. | |
| 01:20:26 | benburkert_ enters the room. | |
| 01:20:48 | jrun_ leaves the room. | |
| 01:23:39 | ubiquitous enters the room. | |
| 01:23:54 | rubuildius_ppc | Charles Comstock: dd4304f14; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; |
| 01:24:20 | RyanTM leaves the room. | |
| 01:25:24 | nicksieger leaves the room. | |
| 01:25:32 | RyanTM enters the room. | |
| 01:25:57 | aotearoa leaves the room. | |
| 01:28:16 | jrun enters the room. | |
| 01:28:27 | headius leaves the room. | |
| 01:30:29 | TheVoice leaves the room. | |
| 01:33:14 | jrun leaves the room. | |
| 01:33:35 | jrun enters the room. | |
| 01:37:09 | wifelette leaves the room. | |
| 01:37:26 | wifelette enters the room. | |
| 01:37:33 | benburkert leaves the room. | |
| 01:40:52 | TheVoice enters the room. | |
| 01:43:12 | rmm5t enters the room. | |
| 01:45:54 | enebo leaves the room. | |
| 01:51:14 | TheVoice leaves the room. | |
| 01:51:25 | TheVoice enters the room. | |
| 02:03:44 | _martinS_ enters the room. | |
| 02:04:20 | radarek leaves the room. | |
| 02:04:55 | rubymaverick enters the room. | |
| 02:11:57 | crafterm | Defiler: looks like theres been a few changes to the loader preventing it rubinius.local.bin running directly |
| 02:12:25 | crafterm | one is related to the search_path inside of main.c, the other is the $LOAD_PATH for stdlib and lib |
| 02:17:36 | AndrewO enters the room. | |
| 02:29:48 | xif leaves the room. | |
| 02:30:19 | d2dchat enters the room. | |
| 02:37:34 | benburkert enters the room. | |
| 02:44:34 | zuwiki enters the room. | |
| 02:46:19 | VVSiz_ enters the room. | |
| 02:49:14 | agardiner leaves the room. | |
| 02:52:44 | xif enters the room. | |
| 02:53:49 | xif leaves the room. | |
| 02:54:18 | agardiner enters the room. | |
| 02:54:30 | xif enters the room. | |
| 02:56:43 | benburkert leaves the room. | |
| 02:57:34 | xif leaves the room. | |
| 03:02:29 | TheVoice leaves the room. | |
| 03:02:29 | GMFlash leaves the room. | |
| 03:02:29 | geekounet leaves the room. | |
| 03:02:29 | jero5 leaves the room. | |
| 03:02:29 | rubuildius_ppc leaves the room. | |
| 03:02:29 | kAworu leaves the room. | |
| 03:02:29 | tmornini leaves the room. | |
| 03:02:29 | lopex leaves the room. | |
| 03:02:29 | ko1_away leaves the room. | |
| 03:02:29 | cout leaves the room. | |
| 03:02:29 | nitay leaves the room. | |
| 03:02:29 | wycats leaves the room. | |
| 03:02:29 | lenbust leaves the room. | |
| 03:02:29 | rudebwoy leaves the room. | |
| 03:02:29 | ezmobius leaves the room. | |
| 03:02:29 | fearoffish leaves the room. | |
| 03:03:12 | TheVoice enters the room. | |
| 03:03:12 | geekounet enters the room. | |
| 03:03:12 | ezmobius enters the room. | |
| 03:03:12 | wycats enters the room. | |
| 03:03:12 | tmornini enters the room. | |
| 03:03:12 | lopex enters the room. | |
| 03:03:12 | rubuildius_ppc enters the room. | |
| 03:03:12 | jero5 enters the room. | |
| 03:03:12 | kAworu enters the room. | |
| 03:03:12 | rudebwoy enters the room. | |
| 03:03:12 | lenbust enters the room. | |
| 03:03:12 | nitay enters the room. | |
| 03:03:12 | cout enters the room. | |
| 03:03:12 | fearoffish enters the room. | |
| 03:03:12 | ko1_away enters the room. | |
| 03:04:19 | GMFlash enters the room. | |
| 03:04:26 | GMFlash leaves the room. | |
| 03:04:32 | GMFlash enters the room. | |
| 03:04:39 | VVSiz leaves the room. | |
| 03:05:03 | bitbckt enters the room. | |
| 03:06:00 | TheVoice leaves the room. | |
| 03:06:48 | GMFlash leaves the room. | |
| 03:07:11 | cavalle enters the room. | |
| 03:08:53 | xif enters the room. | |
| 03:09:13 | xif leaves the room. | |
| 03:09:44 | xif enters the room. | |
| 03:09:54 | GMFlash enters the room. | |
| 03:15:59 | binary42 enters the room. | |
| 03:17:38 | dewd leaves the room. | |
| 03:23:17 | cavalle_ leaves the room. | |
| 03:26:56 | rue | Moogleroo |
| 03:44:41 | jrun leaves the room. | |
| 03:44:55 | Defiler | Hey, WEBrick runs |
| 03:44:57 | Defiler | I had no idea |
| 03:45:34 | brixen | Defiler: you deep into anything? |
| 03:47:56 | Defiler | Not really, no |
| 03:48:39 | brixen | want to take a look at something with me? |
| 03:50:40 | brixen | it fun :P |
| 03:50:42 | brixen | it's |
| 03:53:04 | Defiler | Sure. The WiFi here is freaking slow, though, so there might be some delay |
| 03:53:32 | dkubb enters the room. | |
| 03:53:35 | brixen | ok |
| 03:53:50 | brixen | http://rafb.net/p/5Mg8kO86.html |
| 03:53:57 | Defiler | Actually, got an idea |
| 03:54:02 | brixen | those 3 cases cover 1 of your tickets and 1 of mine |
| 03:54:44 | Defiler | I am going to walk back to Eric's place and use the much-better internet there |
| 03:54:54 | Defiler | I believe that takes me about 10 minutes |
| 03:54:57 | brixen | well, it can wait |
| 03:59:25 | benburkert enters the room. | |
| 04:02:46 | jinjing enters the room. | |
| 04:05:27 | headius enters the room. | |
| 04:06:30 | headius leaves the room. | |
| 04:07:00 | headius enters the room. | |
| 04:10:05 | AndrewO leaves the room. | |
| 04:22:19 | benburkert leaves the room. | |
| 04:23:56 | Defiler | brixen: OK, ready to hack again |
| 04:26:05 | brixen | ok, one sec |
| 04:26:34 | Defiler | So, which tickets (other than the one I linked earlier) are related to this? |
| 04:27:30 | brixen | #339 |
| 04:27:57 | brixen | so, first off, I distilled your and my ticket down to these cases: http://rafb.net/p/5Mg8kO86.html |
| 04:28:19 | brixen | the "funner" one we could spec on #next |
| 04:28:27 | brixen | I don't know where to spec the other two |
| 04:28:45 | brixen | this makes all 3 cases pass: http://rafb.net/p/UUltGb74.html |
| 04:29:07 | brixen | but it concerns me that there might be other weirdness lurking out there |
| 04:29:24 | brixen | I wonder if the way to fix this "right" is to introduce a local for the loop counter |
| 04:29:31 | brixen | but I have no idea how to do that |
| 04:29:46 | brixen | also, for your reading pleasure: http://rafb.net/p/yQcqml71.html |
| 04:30:42 | brixen | the "funnest" case is in that debug paste, it leaves an extra obj on the stack |
| 04:30:53 | Defiler | Aah |
| 04:30:58 | brixen | the other two will fail without the sub.dup |
| 04:31:03 | brixen | the last will fail without the pop |
| 04:31:07 | brixen | before/after the block |
| 04:32:12 | Defiler | Ryan had a really good idea for a compiler spec techique that would make this really clean |
| 04:32:20 | Defiler | I am planning on looking into that this week |
| 04:32:20 | brixen | oh good! :) |
| 04:33:13 | brixen | so, do you think this fix is good, or should we do the local var route? |
| 04:33:44 | brixen | I could put all 3 of these cases on the #times spec, actually |
| 04:33:52 | brixen | kind of weird, but not terribly so |
| 04:34:31 | Defiler | Let me look at it in context. Just a sec. |
| 04:34:36 | brixen | k |
| 04:35:01 | TheVoice enters the room. | |
| 04:35:45 | brixen | btw, the debugger is freaking awesome |
| 04:35:48 | Defiler | Man, this uses so many obscure compiler methods |
| 04:36:07 | brixen | the #times plugin? |
| 04:36:11 | Defiler | Yeah |
| 04:36:34 | brixen | heh, they're all obscure to me, I spend very little time there so far |
| 04:36:53 | brixen | that'll be changing ;) |
| 04:37:13 | agardiner | hehe |
| 04:37:17 | Defiler | Why is this local called 'sub'? |
| 04:37:24 | brixen | heh, dunno |
| 04:37:32 | brixen | agardiner: mate, I *love* the debugger! |
| 04:37:48 | agardiner | and i *love* seeing your pasties using it! :-D |
| 04:37:53 | brixen | agardiner: thinking about it, I |
| 04:37:56 | brixen | dang |
| 04:38:00 | Defiler | brixen: Your fix looks good to me |
| 04:38:04 | brixen | I'm sure the mixed-mode display would be best |
| 04:38:17 | brixen | Defiler: ok, I'll put in the specs and commit |
| 04:38:24 | Defiler | Cool |
| 04:38:24 | brixen | Defiler: so, you don't think a local var is the way to go? |
| 04:38:39 | Defiler | How does that make this easier? |
| 04:38:47 | Defiler | (ready to believe that it does, just don't see it immediately) |
| 04:38:52 | brixen | well, you never worry about stack depth |
| 04:39:02 | brixen | and it can't be that many more ops |
| 04:39:14 | lopex leaves the room. | |
| 04:39:14 | brixen | you'd have to push the local for each - op |
| 04:39:22 | brixen | but you're duping and swapping now |
| 04:39:37 | Defiler | I think we should go with the local, and add support for the block argument |
| 04:39:47 | agardiner | i dislike the use of "special" locals/vars... (including @lre) |
| 04:39:52 | Defiler | ..and just push it up into a real local. I doubt anyone will notice |
| 04:40:07 | brixen | Defiler: well, I dunno how to do that :P |
| 04:40:13 | brixen | agardiner: what would you do in this case? |
| 04:40:26 | rmm5t leaves the room. | |
| 04:40:43 | Defiler | brixen: Basically you just put the 'while' version of the code in a file, run describe on it, and make this plugin emit those same instructions |
| 04:40:43 | brixen | Defiler: oh, you mean also optimize when the block takes an arg? |
| 04:40:46 | agardiner | i'd probably stick with what you have... i have a plan one day to try to optimise away some of the dup/pop stuff |
| 04:40:47 | Defiler | Yeah |
| 04:41:47 | brixen | so, does this current method make the block arg case impossible? |
| 04:41:53 | agardiner | but i see it as greatly preferable to use the stack instead of special locals |
| 04:41:54 | brixen | I wasn't clear why it's not optimized |
| 04:42:16 | brixen | well, this is a good fix for the interim, closes 2 tickets :) |
| 04:42:27 | agardiner | to the point i'd add new ops to make manipulation of the stack easier if necessary |
| 04:42:33 | headius | evening |
| 04:42:44 | brixen | agardiner: makes sense |
| 04:43:17 | brixen | Defiler: how about if I make a new ticket to optimize with a block arg? |
| 04:43:19 | headius | what do you mean by "#times plugin" btw? |
| 04:43:22 | Defiler | brixen: Yeah, doing this as a plugin was premature in my opinion anyway |
| 04:43:30 | Defiler | brixen: Sure, do that, but don't mark it 1.0pre |
| 04:43:38 | headius | you guys implementing compiler extensions for specific methods? |
| 04:43:52 | Defiler | headius: We have a compiler plugin that unrolls Fixnum#times into the equivalent while loop to avoid creating a bunch of BlockContexts |
| 04:43:58 | brixen | Defiler: ok |
| 04:44:04 | Defiler | ..but it was getting screwed up by 'next' |
| 04:44:06 | headius | ok, so you're cheating like Ruby 1.9 |
| 04:44:09 | headius | :) |
| 04:44:10 | Defiler | So brixen just fixed it |
| 04:44:22 | Defiler | Cheating is good |
| 04:44:29 | headius | hey, whatever floats your boat |
| 04:44:35 | Defiler | Exactly |
| 04:44:37 | Defiler | I am the law |
| 04:44:56 | Defiler | http://supremetyrant.com/misc/hello_my_name_is.png |
| 04:45:08 | brixen | headius: what's being "cheated"? |
| 04:45:44 | brixen | if rewriting code/order/etc is cheating, most compilers cheat |
| 04:45:53 | headius | I just didn't expect you guys were going to start implementing a bunch of method-specific optimizations |
| 04:46:11 | brixen | yep, this marks the start of an avalanche |
| 04:46:21 | TheVoice leaves the room. | |
| 04:46:22 | brixen | method-specific ftw :P |
| 04:46:29 | Defiler | headius: evan added this specific one on a whim, mostly to see how much of a difference it made |
| 04:46:39 | Defiler | I doubt we are going to end up with a whole portfolio of them |
| 04:46:44 | brixen | yeah, this isn't starting to implement a bunch |
| 04:46:45 | agardiner | headius: easy for you to say, when you've got JIT inlining! :-D |
| 04:46:51 | headius | I think I heard that said about primitives too |
| 04:47:13 | headius | just givin you guys some grief :) |
| 04:47:18 | brixen | well, our primitives still fit in a couple pages |
| 04:47:21 | Defiler | Sounds like someone needs some Quiet Time :) |
| 04:47:31 | brixen | I wonder how many trees would be needed to print that java code :P |
| 04:47:50 | headius | you and your LOC |
| 04:48:41 | brixen | well, I know that emperically, programmers tend to write about the same loc in any language, so yes, loc concerns me when it comes to semantic density |
| 04:48:53 | brixen | comprehension, maintainability, etc |
| 04:49:13 | brixen | and I just like ruby better :P |
| 04:49:49 | headius | yeah, well, there's a reason I'm working on duby |
| 04:50:13 | brixen | yeah, I was going to say :P |
| 04:50:45 | brixen | hopefully we can find common ground and end up with garnet |
| 04:50:52 | brixen | duby sounds horrible :P |
| 04:51:34 | Defiler | That or we can duel to death on the sands of the Circus Maximus |
| 04:51:36 | Defiler | Either way is fine |
| 04:51:44 | brixen | heh |
| 04:52:05 | brixen | going to see cirque du soleil, corteo tomorrow night |
| 04:53:08 | headius | yeah, I got tired of waiting for garnet to appear |
| 04:53:33 | zenspider | so... instead of helping out on garnet... riiight |
| 04:53:34 | headius | I don't think evan was ever very interested in a higher-level ruby subset like this though, he always talked about it being more like slang |
| 04:53:42 | headius | zenspider: hey, I don't see you doing anything |
| 04:54:17 | dancroak enters the room. | |
| 04:54:23 | headius | I'm totally up for coming up with something in common |
| 04:55:20 | brixen | well, I was looking at rpython again today, didn't realize it before but, iiuc, it runs the code and then generates the type info etc to create the rpython stuff |
| 04:55:25 | brixen | that's rather interesting |
| 04:55:35 | brixen | so, I don't think it uses annotations |
| 04:55:40 | headius | yes |
| 04:55:48 | brixen | but I haven't read through the paper yet |
| 04:55:54 | TheVoice enters the room. | |
| 04:56:06 | headius | it doesn't use annotations, but it has a much longer pipeline |
| 04:56:24 | brixen | hmm |
| 04:56:34 | headius | I've been talking with the pypy guys on and off for a few months |
| 04:56:53 | brixen | well, 2 edged-swoard a bit, since annotations make it clearer, but they are ugly |
| 04:57:33 | headius | well, I'm up for ways to make them nicer |
| 04:57:39 | headius | we're willing to adjust the grammar too |
| 04:57:46 | brixen | what I'm most curious about is: how will the proposed work for the jvm make jruby run faster? |
| 04:57:50 | zenspider | yeah. we talked to them 2 years ago at DLS and I didn't really like their approach. It is interesting, but I wouldn't want ot depend on it myself. |
| 04:57:58 | brixen | if the jvm is already very suited for this type of code |
| 04:58:26 | brixen | zenspider: would you prefer annotations for a static-typed subset of Ruby? |
| 04:59:04 | headius | the proposed work for the JVM allows us to wipe out our manual call-site optimization completely, among other things |
| 04:59:25 | headius | it allows JRuby as a runtime to enlist in hotspot's method selection and optimization logic directly |
| 04:59:53 | headius | right now we have to go through contortions to make code look like something hotspot can recognize as optimizable Java invocation |
| 05:00:33 | zenspider | brixen: no, I don't like annotations either. I think they're ugly. I prefer self's approach more. it may be more work under the covers, but I think it is cleaner and more objective |
| 05:00:43 | brixen | zenspider: yeah, agreed |
| 05:03:29 | headius | well, annotations are a pragmatic way to get it working well now |
| 05:04:19 | bitbckt leaves the room. | |
| 05:06:54 | headius | is the intent to still have garnet be something slang-like? |
| 05:07:20 | headius | I talked with evan about this a few times, but something that low-level would be mostly useless on the JVM for example |
| 05:08:22 | brixen | well, I doubt garnet will be ruby -> C translator, but I think that's what evan initially conceived of |
| 05:08:40 | mediogre enters the room. | |
| 05:09:10 | rue | He as looking into LLVM last I heard |
| 05:09:50 | brixen | yeah, something that is able to do rtcg or at least cg directly in some form |
| 05:10:31 | headius | rtcg...realtime code generation? |
| 05:10:39 | brixen | yeah, run-time |
| 05:10:45 | headius | run-time, got it |
| 05:11:02 | brixen | headius: I guess what I think is this: if the jvm will make the current approach so much faster, duby seems to be a waste of time |
| 05:11:27 | headius | I can't expect people to run JDK 7 alphas |
| 05:11:28 | brixen | since people won't use it for apps, and it would take a lot of time to rewrite what you already have |
| 05:11:39 | headius | there's production apps using JRuby right now |
| 05:12:00 | headius | I guarantee they wouldn't run JDK7 in the next few months, much less the next year or two |
| 05:12:33 | headius | and dude, I've spent all of ten hours on it |
| 05:12:55 | brixen | well, seems you'd be in much the same place as this: http://www.mail-archive.com/pypy-dev@codespeak.net/msg03239.html |
| 05:12:57 | headius | in ten hours it can compile some basic algorithms already, with only a few type declarations |
| 05:14:04 | headius | and at the risk of sounding a bit snarky, you guys obviously see the benefit of writing portions in a static typed language, what with adding more primitives all the time |
| 05:15:21 | Defiler | Please, we would never think you were snarky on IRC |
| 05:15:41 | headius | it's not for lack of trying! :) |
| 05:16:06 | headius | if you guys weren't so convinced you're right about everything, perhaps I wouldn't have to be snarky so often |
| 05:16:24 | headius | ANYway |
| 05:16:33 | rue | Hm, FF3b4 is faster |
| 05:17:05 | dgtized | now now, no bickering in the ruby implementations car, it needs to keep moving forward, no driving back |
| 05:17:09 | headius | honestly I would love to find common ground, especially if you can come up with a good way to make it perform well without static type declarations |
| 05:17:45 | rue | It depends on the rules |
| 05:18:37 | rue | For example, Cuby may require that a variable never changes type |
| 05:19:07 | headius | so would it try to statically determine it? |
| 05:19:21 | headius | because if it's deferred until runtime it still runs into most of the same problems |
| 05:19:21 | dgtized | it's a pain in the ass, but how much type check advantage do you get with pulling erlang's trick of unmutable variables? |
| 05:19:34 | dgtized | for VM/kernel code only? |
| 05:19:52 | dgtized | sorry immutable, not unmutable |
| 05:20:11 | headius | dgtized_: doesn't really help you that much here...the cost is that you can't determine ahead of time what methods you're going to call, and delaying type determination until runtime keeps that problem there |
| 05:20:43 | dgtized | except it seems like it makes all types an easier constant propegation rule |
| 05:20:58 | headius | sure, if you're optimizing at runtime that helps |
| 05:21:18 | headius | neither cuby/garnet or duby are bound at runtime |
| 05:21:29 | _martinS_ leaves the room. | |
| 05:21:37 | headius | or at least, what I understood of garnet was that it would be statically translated |
| 05:21:44 | rue | headius: Each variable must be initialised to a known value at some point |
| 05:21:52 | rue | To a known type, rather |
| 05:22:00 | Defiler | Garnet is now officially planned to be whatever makes you least happy :) |
| 05:22:00 | headius | rue: so it infers from assigned values |
| 05:22:08 | Defiler | We had a little come-to-Jesus meeting just now |
| 05:22:34 | rue | headius: Well, in my purely hypothetical example :P |
| 05:22:43 | headius | rue: it makes sense to me |
| 05:23:01 | headius | for literal values that's easy, but for method calls you need to inspect more of the system |
| 05:23:11 | rue | Sure |
| 05:23:16 | headius | Defiler: in the spirit of cooperation, naturally! |
| 05:23:34 | Defiler | Yes that was what I meant to say, yes |
| 05:24:40 | rue | headius: That will of course depend on the rest of the rules but yeah |
| 05:24:42 | headius | I am going to eliminate the need to declare a return type, since that can be inferred |
| 05:25:21 | headius | I've also been trying to think of how garnet would get type information for C functions it's calling |
| 05:25:27 | headius | you'd have to inspect header files or something |
| 05:25:40 | rue | The only hurdle is the method lookup but since we (theoretically) know the type of all objects, we can determine which method is being called |
| 05:25:52 | headius | right, for everything implemented in garnet |
| 05:25:57 | headius | the C thing though? |
| 05:26:10 | headius | presumably the garnet-based code will want to call C functions directly |
| 05:26:14 | brixen | we have pieces of that already |
| 05:26:37 | rue | Yeah, just reuse the FFI model? |
| 05:26:46 | headius | well, you have to provide all the types in FFI |
| 05:26:52 | brixen | this is a quite polished tool, we can get ideas from: http://www.haskell.org/ghc/docs/latest/html/users_guide/hsc2hs.html |
| 05:27:01 | rue | I suppose you could try to infer them |
| 05:27:05 | brixen | we already use cpp to parse the headers, like haskell's tool |
| 05:27:24 | brixen | we already have all types defined in the C headers |
| 05:27:28 | brixen | TypesGenerator |
| 05:27:37 | headius | ok, that's good |
| 05:27:51 | brixen | our FFI layer is kick-ass |
| 05:27:56 | brixen | while we're all here bragging :P |
| 05:28:06 | headius | yes yes, again, this is what gets you guys the snark |
| 05:28:25 | brixen | well, a bit of a chiken-egg case I'd say |
| 05:28:45 | brixen | I can't remember how many comments about how great the jvm is and what a waste of time our existence is :P |
| 05:28:50 | Defiler | Yeah, the snark is really helpful. Thank you for your ongoing service in this matter. |
| 05:29:06 | headius | I've never said anything of the sort |
| 05:29:09 | zenspider | truly |
| 05:29:10 | wycats | volunteers to provide additional snark |
| 05:29:12 | Defiler | hahahahahahahahahhahahahaahhahahahahahahahahahaahaa |
| 05:29:14 | Defiler | hahshahsahshara8rasdasrw4 |
| 05:29:15 | brixen | dare me to go to the logs? |
| 05:29:19 | Defiler | OK, sorry.. keyboard error there |
| 05:29:29 | headius | that your stuff is a waste of time? hell no I haven't |
| 05:29:40 | headius | and I don't believe that for a minute |
| 05:29:45 | brixen | that writing a VM when jvm exists? |
| 05:29:45 | wycats | bows at the alter of the JVM |
| 05:29:48 | brixen | ok, you've dared me |
| 05:29:48 | zenspider | Defiler: yeah. you type too fast and that happens |
| 05:30:18 | Defiler | Click here to get your free credit score |
| 05:30:37 | wycats | Whaaaat? A virus? |
| 05:31:57 | headius | so yeah, if you can inspect all the headers for stuff you're calling you could do a full-system type inference |
| 05:32:05 | zenspider | brixen: good luck filtering through all the jvm references |
| 05:32:17 | wycats | lol |
| 05:32:30 | Defiler | Here I will help you JVM out a little JVM because I am such a pal. |
| 05:33:26 | headius | I almost understood that |
| 05:34:20 | binary42_ enters the room. | |
| 05:34:21 | binary42 leaves the room. | |
| 05:34:55 | headius | ideally whatever inference engine we'd come up with could be shared too |
| 05:35:47 | headius | hmmm |
| 05:37:57 | mkescher leaves the room. | |
| 05:39:14 | headius | what state is the garnet/cuby stuff in right now? |
| 05:41:40 | Defiler | It is totally awesome. Like.. JVM9 |
| 05:41:58 | headius | hmm, was it expunged from the codebase? |
| 05:42:10 | headius | I can't find any of it anymore...I thought there was still something around |
| 05:42:27 | brixen | it's written in a dialect of ruby that is invisible on certain monitors |
| 05:43:00 | agardiner | its under shotgun/lib/garnet iirc |
| 05:43:00 | brixen | on other monitors, certain files show up under lib/compiler/garnet |
| 05:43:45 | headius | ahh, under compiler |
| 05:43:46 | headius | ok |
| 05:44:31 | headius | hmmm |
| 05:45:54 | headius | this is all of it? |
| 05:46:03 | wycats | it depends if you have the JVM installed |
| 05:46:57 | headius | the approach is similar to what I'm doing |
| 05:47:04 | dancroak leaves the room. | |
| 05:47:10 | headius | heheh, even some similar error messages for node types that aren't supported |
| 05:48:07 | headius | yeah, this isn't really as low-level as I thought, we could certainly meet in the middle |
| 05:49:37 | headius | heh |
| 05:49:37 | headius | declare 'allocate' => 'OBJECT' |
| 05:49:41 | headius | type annotations! |
| 05:49:44 | headius | huzzah |
| 05:50:25 | headius | so yeah, if we came up with a common set of type names for the low-level types, the same approach would work for both |
| 05:50:35 | robinhoode leaves the room. | |
| 05:54:03 | RyanTM leaves the room. | |
| 05:54:03 | tizianobis enters the room. | |
| 05:54:46 | agardiner leaves the room. | |
| 05:58:20 | headius | any of you ever monkey with the garnet stuff? |
| 05:58:54 | headius | it generates C code...I was thinking about the same approach for my stuff, since the java compilers do a better job of method selection than I would |
| 05:59:27 | headius | right now the compiler reflectively inspects the target types and methods |
| 06:00:33 | tizianobis_ enters the room. | |
| 06:00:42 | tarcieri | boggles at the idea of static C code generation from a Ruby subset |
| 06:01:05 | binary42_ leaves the room. | |
| 06:01:06 | tarcieri | how much do you have to get rid of to make that possible? |
| 06:01:31 | headius | I dunno, I don't think you have to get rid of too much |
| 06:01:35 | Defiler | :defs, maybe :sclass, definitely eval |
| 06:01:42 | headius | I'm statically generating JVM bytecode |
| 06:01:43 | tarcieri | define_method? |
| 06:01:57 | Defiler | Yeah, but define_method is already useless, so that's not much of a loss |
| 06:01:58 | headius | Defiler: defs I can do as class methods...that's one area where there's going to be some contention |
| 06:02:06 | headius | yeah, screw define_method |
| 06:02:12 | tarcieri | how do you handle procs? |
| 06:02:12 | headius | but it's a method anyway, so you can just say "no" |
| 06:02:15 | zenspider | tarcieri: it isn't that hard for algorithmic stuff |
| 06:02:34 | headius | procs would either have to be treated as a function pointer or tossed |
| 06:02:39 | Defiler | headius: How can def @foo.baz be a class method? Name mangling? |
| 06:02:40 | headius | and they probably couldn't be closures |
| 06:02:52 | tarcieri | a function pointer which encloses its lexical scope? |
| 06:02:52 | headius | Defiler: well, let's say "limited" desf |
| 06:02:53 | headius | defs |
| 06:03:01 | headius | like only def self.whatever |
| 06:03:03 | Defiler | binding has to go into a deep hole and be covered with fire |
| 06:03:09 | tarcieri | hahaha |
| 06:03:11 | Defiler | OK |
| 06:03:15 | zenspider | tarcieri: we've had that for 2+ years now |
| 06:03:27 | tarcieri | zenspider: how? |
| 06:03:41 | headius | that's one confusion I have with how to do the java plugin for ruby inline too...right now it requires the generated methods be static (class) methods |
| 06:03:49 | tarcieri | do you still have some sort of garbage collector? |
| 06:03:59 | zenspider | headius: why? |
| 06:04:13 | headius | zenspider: why does it require they be static methods, or why am I confused? |
| 06:04:26 | headius | they're static methods because that's the appropriate analog for C functions |
| 06:04:33 | tmornini leaves the room. | |
| 06:04:37 | zenspider | oh. I know why you're confused... I was wondering about the static methods |
| 06:04:53 | headius | well, that was nice |
| 06:05:08 | headius | tarcieri: you'd use this sort of thing to implement lower-level stuff |
| 06:05:20 | headius | the GC question is a really good point though, I hadn't thought about that |
| 06:05:30 | zenspider | tarcieri: how what? it is not that hard to write a translator from static ruby to C... we used parse tree to grab the ast, did some normalization, type inference, and then translated down to static C |
| 06:05:33 | tarcieri | well yeah, I mean I get the point |
| 06:05:47 | tarcieri | zenspider: how do you solve the funarg problem without a garbage collector? |
| 06:05:59 | headius | you'd probably want garnet to generate something that calls into the same memory alloc routines, no? |
| 06:06:38 | zenspider | tarcieri: funarg? |
| 06:06:57 | headius | I'm not sure how garnet would fit in with green threading either |
| 06:06:59 | headius | hmmm |
| 06:07:01 | tarcieri | a method which returns a proc which encloses the scope of the method before returning the proc |
| 06:07:03 | Defiler | We would need to be able to track an object from creation to scope-out in a static way |
| 06:07:04 | tarcieri | for example |
| 06:07:07 | tarcieri | do you just disallow that? |
| 06:07:11 | Defiler | Then we could just emit 'free' when needed |
| 06:07:14 | headius | Defiler: reference counting? :) |
| 06:07:35 | tarcieri | something which explicitly violates downward closure semantics |
| 06:07:37 | headius | yeah, I suppose that's a decision we'd have to think about early on |
| 06:07:47 | Defiler | If we ban a strategic set of features, I suspect it can be done without runtime tracking of anything |
| 06:07:53 | zenspider | tarcieri: I solve that problem by not allowing it |
| 06:07:59 | tarcieri | okay, cool |
| 06:08:00 | tarcieri | heh |
| 06:08:01 | headius | if code written in garnet needs to do memory management it would map really weird to a GCed environment |
| 06:08:04 | tarcieri | just wondering |
| 06:08:05 | Defiler | Also, we need to think hard about how to handle contravariant types |
| 06:08:10 | zenspider | works great |
| 06:08:17 | tarcieri | yeah, for sure |
| 06:08:18 | Defiler | Specifically, return values in subclasses are tricky |
| 06:08:49 | TheVoice leaves the room. | |
| 06:09:12 | headius | in my case I'm planning to emit normal Java class hierarchies, so i'm banking on that model covering most of those issues |
| 06:09:42 | headius | the disconnect between garnet looking OO and generating C code seems a little sticky |
| 06:10:22 | Defiler | Why? |
| 06:10:22 | headius | zenspider: do you handle classes, ivars, etc? |
| 06:10:29 | headius | Defiler: classes, ivars, etc :) |
| 06:10:31 | wifelette leaves the room. | |
| 06:10:50 | Defiler | a class is just a C type |
| 06:11:02 | headius | I think if you wanted to represent those you'd want to generate a struct for it |
| 06:11:03 | headius | yeah |
| 06:11:04 | Defiler | ivars can just be set/get pairs of functions |
| 06:11:17 | Defiler | function pointers in the struct, even. heh |
| 06:11:18 | headius | nah, just make them struct fields and be done with it |
| 06:12:21 | Defiler | troo |
| 06:12:23 | headius | that's another question...seems like you'd want all ivars to be declared in garnet |
| 06:12:40 | headius | ao maybe the compiler looks for attr* to determine the struct |
| 06:12:41 | Defiler | They should be in regular Ruby already |
| 06:12:49 | Defiler | That or the warning should go away |
| 06:13:14 | headius | yeah, the hash for ivars is one reason a lot of code has perf issues |
| 06:13:19 | headius | you can reduce it but not eliminate it |
| 06:13:39 | headius | even you guys ended up making specific ivars indexed |
| 06:13:57 | headius | I think the problem is the fact that you don't have to declare them |
| 06:14:13 | headius | so any piece of code, possibly in subclasses, can add ivars at any time |
| 06:14:33 | Defiler | Yeah, that has to go |
| 06:14:45 | headius | evan and I have both tried to come up with clever ways to eliminate the lookup |
| 06:16:36 | tizianobis leaves the room. | |
| 06:20:00 | wycats leaves the room. | |
| 06:28:50 | tizianobis_ leaves the room. | |
| 06:31:30 | ezmobius leaves the room. | |
| 06:39:10 | rue | headius: You should try to come up with stupid ways to do it for a change |
| 06:40:30 | headius | there's an idea |
| 06:47:03 | rue | Ew, smooth scrolling sucks |
| 06:47:21 | rue | headius: Seriously, though.. we will figure out the dumbest possible way to do it and run with it |
| 06:47:27 | rue | It will be an instant success! |
| 06:47:57 | headius | well, the numbering of core ivars is a step in the right direction |
| 06:48:08 | headius | for most core class state in JRuby we obviously just use Java fields |
| 06:51:43 | headius leaves the room. | |
| 06:51:57 | headius enters the room. | |
| 06:55:15 | be9 enters the room. | |
| 07:02:47 | lachie leaves the room. | |
| 07:03:24 | lachie enters the room. | |
| 07:06:54 | wycats enters the room. | |
| 07:14:49 | w1rele55 enters the room. | |
| 07:28:48 | wifelette enters the room. | |
| 07:29:19 | wycats leaves the room. | |
| 07:31:38 | random8r enters the room. | |
| 07:36:07 | wycats enters the room. | |
| 07:39:28 | wycats leaves the room. | |
| 07:44:03 | headius leaves the room. | |
| 07:54:12 | aotearoa_ leaves the room. | |
| 07:55:00 | perplexes leaves the room. | |
| 08:11:20 | benburkert enters the room. | |
| 08:14:34 | thehcdreamer enters the room. | |
| 08:30:39 | gnufied enters the room. | |
| 08:39:28 | octopod enters the room. | |
| 08:41:21 | lachie leaves the room. | |
| 08:41:40 | lachie enters the room. | |
| 08:51:45 | octopod_ enters the room. | |
| 08:54:27 | dbussink | morning! |
| 09:00:09 | kamal_fariz | morning |
| 09:00:14 | VVSiz | morning! |
| 09:00:51 | kamal_fariz | i'm lying .. it's actually 5PM |
| 09:07:02 | dbussink | hmm, that still leaves quite some countries :) |
| 09:07:16 | octopod leaves the room. | |
| 09:07:47 | benburkert leaves the room. | |
| 09:10:47 | benburkert enters the room. | |
| 09:13:26 | dbussink | kamal_fariz: malaysia? |
| 09:13:41 | kamal_fariz | dbussink: yep |
| 09:13:57 | dbussink | had to jump through some hoops to find that :p |
| 09:14:21 | kamal_fariz | i'm impressed by maxmind's ip to location lookup |
| 09:14:26 | kamal_fariz | does a pretty good job |
| 09:14:56 | dbussink | ah, well, didn't use that |
| 09:21:04 | Arjen_ enters the room. | |
| 09:24:27 | crossblaim enters the room. | |
| 09:29:28 | JimMc enters the room. | |
| 09:30:05 | boyscout | 1 commit by Tom Mornini |
| 09:30:06 | boyscout | * Prevent bin/bm from crashing on long test names, and reduce loop counts on; 91a8226 |
| 09:31:03 | dbussink | tom, you in here? |
| 09:33:45 | kamal_fariz | shhh, he's committing while he's sleeping |
| 09:36:21 | dbussink | well, i was wondering whether that benchmark did work in mri, because if it does, we need to fix something in rubinius |
| 09:36:26 | dbussink | and not in ./bin/bm |
| 09:43:52 | benburkert leaves the room. | |
| 09:44:25 | rubuildius_ppc | Tom Mornini: 91a822655; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; |
| 10:00:39 | cavalle leaves the room. | |
| 10:01:27 | cavalle enters the room. | |
| 10:05:57 | crossblaim leaves the room. | |
| 10:19:37 | cavalle leaves the room. | |
| 10:23:06 | jinjing leaves the room. | |
| 10:24:18 | _mutle enters the room. | |
| 10:24:53 | _mutle leaves the room. | |
| 10:24:59 | _mutle enters the room. | |
| 10:25:28 | Fullmoon enters the room. | |
| 10:30:48 | GMFlash leaves the room. | |
| 10:41:18 | mutle leaves the room. | |
| 10:46:14 | jacen_ leaves the room. | |
| 10:47:00 | cavalle enters the room. | |
| 10:49:11 | binary42 enters the room. | |
| 10:57:00 | dbussink | woot, i actually bought my first car :) |
| 11:00:46 | be9 | dbussink: grats. which is it? |
| 11:00:54 | dbussink | a renault clio |
| 11:01:29 | be9 | dbussink: cool. sport version? |
| 11:01:40 | dbussink | no, expression |
| 11:01:58 | dbussink | but it was pretty cheap and only ran 40k km's, so that's the main reason i bought it |
| 11:02:15 | dbussink | be9: http://www.autotrack.nl/car-img/of01/s055/of01_0004997055.jpg |
| 11:02:40 | chris2 enters the room. | |
| 11:04:30 | be9 | dbussink: so, how's the gasoline priced in netherlands? |
| 11:04:58 | dbussink | be9: ridiculously expensive :P |
| 11:05:52 | dbussink | 1.40 euro / liter |
| 11:06:34 | be9 | dbussink: hmm. we have something like 0.60 euro/liter here |
| 11:07:15 | dbussink | for us people, that's $8.20 / gallon with the current euro / dollar exchange rate |
| 11:08:10 | dbussink | be9: that's in russia isn't it? |
| 11:08:16 | be9 | dbussink: yep |
| 11:09:22 | be9 | dbussink: your clio ain't gonna eat much :) |
| 11:10:04 | dbussink | that's also one of the reasons, didn't feel like buying a 3.0 liter gas guzzler :P |
| 11:10:30 | dbussink | and small cars are a lot cheaper in taxes and insurance |
| 11:11:21 | be9 | has just paid the car tax for 2007 |
| 11:11:48 | crafterm leaves the room. | |
| 11:14:21 | be9 | and how is it with the parking space? |
| 11:14:37 | dbussink | here it's no problem |
| 11:15:00 | dbussink | there's always a spot free here somewhere around my appartment building |
| 11:15:56 | dbussink | in amsterdam parking space is more expensive per m2 than building space :P |
| 11:16:39 | be9 | that's good. so I wish you good luck with your clio |
| 11:19:24 | dbussink | hehe, probably gonna be fine |
| 11:19:32 | dbussink | hmm, our string performance is really crap :( |
| 11:20:58 | be9 | dbussink: is it any specific benchmark you run? |
| 11:21:26 | dbussink | the standard one we have, it's in benchmark/rubinius/bm_string.rb |
| 11:23:35 | obvio enters the room. | |
| 11:27:09 | crafterm enters the room. | |
| 11:27:12 | crossblaim enters the room. | |
| 11:27:33 | radarek enters the room. | |
| 11:29:50 | crafterm leaves the room. | |
| 11:31:19 | lachie leaves the room. | |
| 11:33:49 | crafterm enters the room. | |
| 11:33:53 | dctanner enters the room. | |
| 11:35:41 | crafterm leaves the room. | |
| 11:39:08 | _martinS_ enters the room. | |
| 11:50:01 | dewd enters the room. | |
| 11:58:25 | webmat enters the room. | |
| 11:59:00 | d2dchat leaves the room. | |
| 12:03:57 | mutle leaves the room. | |
| 12:04:12 | mutle enters the room. | |
| 12:04:25 | wdperson enters the room. | |
| 12:18:44 | imajes enters the room. | |
| 12:21:16 | rubymaverick leaves the room. | |
| 12:26:33 | Fullmoon leaves the room. | |
| 12:26:43 | chris2 leaves the room. | |
| 12:31:00 | crossblaim leaves the room. | |
| 12:52:30 | d2dchat enters the room. | |
| 12:54:12 | be9 | what's that? "zip error: Zip file structure invalid (load_spec_rba.rba)" |
| 12:55:30 | ragnard enters the room. | |
| 12:55:42 | crossblaim enters the room. | |
| 12:56:26 | dbussink | that's weird, because rba is not zipped anymore afaik |
| 12:58:00 | tizianobis_ enters the room. | |
| 12:59:09 | be9 | dbussink: ok, trying with the latest HEAD |
| 13:00:52 | be9 | huh, new stuff: /home/od/work/rubinius/lib/rbconfig.rb:9: uninitialized constant Config::Rubinius (NameError) |
| 13:02:25 | be9 | I'm currently updating my cmakebuild branch and thought I missed something. Now I run master branch and see the same |
| 13:04:59 | dbussink | that's strange, because it works ok for me |
| 13:10:02 | tizianobis_ enters the room. | |
| 13:11:43 | ttmrichter enters the room. | |
| 13:12:06 | tizianobis leaves the room. | |
| 13:15:39 | be9 | works on all platforms? |
| 13:16:23 | dbussink | yeah, afaik i know it does |
| 13:16:36 | dbussink | tested on os x, linux, freebsd and openbsd |
| 13:18:11 | ttmrichter leaves the room. | |
| 13:20:31 | rubymaverick enters the room. | |
| 13:21:12 | RyanTM enters the room. | |
| 13:27:31 | wmoxam enters the room. | |
| 13:28:14 | be9 | Ar::Error: "./spec/core/kernel/../../ruby/1.8/fixtures/require/require_spec_rba.rba is not an archive file" |
| 13:28:34 | be9 | this file is indeed a zip archive |
| 13:31:03 | dbussink | try rm -rf spec && git checkout spec |
| 13:31:16 | dbussink | there are some files that keep lingering in there that should be removed |
| 13:32:21 | GMFlash enters the room. | |
| 13:33:13 | be9 | same shit with Config::Rubinius |
| 13:34:00 | be9 | it shows up on gem tests |
| 13:34:20 | dbussink | ./bin/mspec ci runs ok? |
| 13:34:29 | dbussink | or does it bork before that? |
| 13:35:29 | be9 | I run "rake spec" |
| 13:35:51 | dbussink | hmm, works fine here |
| 13:36:06 | dbussink | ./shotgun/rubinius works ok? |
| 13:36:20 | be9 | yes |
| 13:36:46 | be9 | most tests pass ok also, it's a screenful of dots when it blows up |
| 13:36:55 | dbussink | how weird then |
| 13:37:03 | dbussink | and a clean clone? |
| 13:37:07 | dbussink | does that work ok? |
| 13:37:28 | be9 | dbussink: haven't tried yet |
| 13:38:12 | ttmrichter enters the room. | |
| 13:38:59 | ttmrichter leaves the room. | |
| 13:39:11 | ubiquitous leaves the room. | |
| 13:39:34 | be9 | when I do require 'rbconfig' by hand (in irb), it works |
| 13:39:41 | tizianobis leaves the room. | |
| 13:39:47 | dbussink | hmm, isn't something run by mri? |
| 13:40:37 | be9 | oh damn! from /usr/lib64/ruby/site_ruby/auto_gem.rb:5:in `require' |
| 13:41:02 | be9 | how come MRI pops in? |
| 13:41:40 | dbussink | really no idea |
| 13:41:52 | dbussink | what version do you have installed? |
| 13:41:58 | be9 | of what? |
| 13:42:28 | dbussink | mri |
| 13:42:39 | dbussink | and could you pastie a trace? |
| 13:43:17 | be9 | BTW is there a script to pastie from the command line? |
| 13:45:04 | dbussink | i think someone made that for himself |
| 13:53:05 | cavalle leaves the room. | |
| 13:54:25 | ragnard leaves the room. | |
| 13:54:37 | AndrewO enters the room. | |
| 13:55:02 | probablycorey enters the room. | |
| 13:55:40 | olabini enters the room. | |
| 13:55:42 | be9 | found one: http://pastie.caboo.se/164374 |
| 13:58:25 | ttmrichter enters the room. | |
| 13:59:48 | dbussink | hmm, pastie doesn't work here |
| 13:59:53 | dbussink | service unavailable |
| 14:02:54 | be9 | so, the first spec to boom is spec/subtend/array_spec.rb |
| 14:03:54 | headius enters the room. | |
| 14:04:12 | dbussink | weird stuff |
| 14:07:11 | be9 | http://nopaste.org/p/a5ZjIUQpab |
| 14:09:02 | dbussink | guess there's something wrong with your codebase then |
| 14:09:10 | dbussink | or is this a clean clone? |
| 14:10:09 | dbussink | did you ever install rubinius? |
| 14:10:53 | be9 | never |
| 14:11:12 | dbussink | but could you try with a clean clone then? |
| 14:11:57 | be9 | this is not easy with my connection |
| 14:13:35 | be9 | this can be connected with recent rubygems import |
| 14:14:37 | headius leaves the room. | |
| 14:15:02 | enebo enters the room. | |
| 14:23:21 | dancroak enters the room. | |
| 14:24:40 | dancroak leaves the room. | |
| 14:27:24 | imajes leaves the room. | |
| 14:29:20 | imajes enters the room. | |
| 14:34:50 | be9 | ok, found it :) |
| 14:35:13 | be9 | rubygems on gentoo add RUBYOPT="-rautogem" to environment on boot |
| 14:35:31 | be9 | i.e. "-rauto_gem" |
| 14:36:27 | be9 | this somehow got picked up by rbx, /usr/lib64/ruby/* stuff was loaded and messed up |
| 14:39:26 | cavalle enters the room. | |
| 14:39:31 | RyanTM leaves the room. | |
| 14:40:17 | RyanTM enters the room. | |
| 14:42:01 | be9 | huh, seems it has been loaded for a long time, but since there was no 'rubygems', it did nothing. now with appearance of 'rubygems' it sorta "activated" |
| 14:43:56 | binary42 leaves the room. | |
| 14:45:41 | skaar enters the room. | |
| 14:46:14 | Fullmoon enters the room. | |
| 14:46:48 | dbussink | that's pretty nasty |
| 14:48:13 | be9 | still can't find where RUBYOPT gets in, as it's the MRI stuff |
| 14:52:56 | olabini leaves the room. | |
| 14:57:35 | dbussink | probably rake itself then |
| 14:57:42 | dbussink | which is run by mri of course |
| 14:59:16 | be9 | it remains even without rake |
| 14:59:33 | agile leaves the room. | |
| 15:01:58 | be9 | some socket stuff still hangs for long time |
| 15:02:09 | dbussink | strange, any spec specific? |
| 15:02:21 | dbussink | because the long waits were in the ipaddr specs |
| 15:02:34 | dbussink | and i fixed those and tested it pretty well on linux too |
| 15:02:51 | be9 | will rerun in verbose mode |
| 15:03:14 | headius enters the room. | |
| 15:03:14 | headius | I had a dream about garnet last night |
| 15:05:23 | dbussink | inspirational or disturbing? :P |
| 15:05:43 | be9 | maybe a horror one? :D |
| 15:07:54 | be9 | damn, it doesn't hang in verbose mode |
| 15:08:18 | headius | I think it was inspirational |
| 15:08:31 | headius | but halfway through I woke up to a big cat sitting on my chest |
| 15:13:19 | dbussink | be9: could be a dns / network lag that caused it |
| 15:15:30 | be9 | dbussink: yeah, maybe. i'm on a several kmeters radio link here |
| 15:16:31 | djwhitt | be9: radio link? |
| 15:16:35 | boyscout | 1 commit by oleg dashevskii |
| 15:16:36 | boyscout | * Clean more stuff.; fed2be2 |
| 15:18:50 | be9 | djwhitt: long-distance wifi actually, with special RF equipment |
| 15:19:09 | dbussink | be9: then that's probably the cause of the hang :p |
| 15:20:01 | djwhitt | be9: interesting, is that from an ISP or something you rigged up yourself? |
| 15:24:11 | be9 | djwhitt: no, it was our local sysadmin who did that. ISP still shows no interest to connect our apartment house with fiber channel |
| 15:28:15 | jinjing enters the room. | |
| 15:29:14 | rubuildius_ppc | oleg dashevskii: fed2be2cb; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/164420 |
| 15:32:15 | GMFlash leaves the room. | |
| 15:37:13 | boyscout | 1 commit by oleg dashevskii |
| 15:37:14 | boyscout | * Remove unused variables in ffi.c; ed24090 |
| 15:37:38 | GMFlash enters the room. | |
| 15:38:57 | KirinDave enters the room. | |
| 15:49:09 | rubuildius_ppc | oleg dashevskii: ed2409027; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/164427 |
| 15:50:39 | dctanner enters the room. | |
| 15:52:59 | AndrewO leaves the room. | |
| 15:54:29 | gnufied leaves the room. | |
| 16:00:17 | perplexes enters the room. | |
| 16:03:41 | dbussink | anyone interested in some valgrind callgrind output to look at? |
| 16:04:04 | dbussink | just ran some and trying to interpret the results |
| 16:04:41 | jinjing leaves the room. | |
| 16:04:52 | jinjing enters the room. | |
| 16:04:56 | srbaker enters the room. | |
| 16:06:29 | wellsj__ enters the room. | |
| 16:06:57 | wellsj__ leaves the room. | |
| 16:07:24 | jbwiv__ enters the room. | |
| 16:07:34 | srbaker leaves the room. | |
| 16:08:36 | dc_ leaves the room. | |
| 16:13:23 | jbwiv__ leaves the room. | |
| 16:13:40 | jbwiv__ enters the room. | |
| 16:17:20 | enebo leaves the room. | |
| 16:17:51 | srbaker enters the room. | |
| 16:35:49 | enebo enters the room. | |
| 16:41:02 | cavalle leaves the room. | |
| 16:41:14 | wmoxam leaves the room. | |
| 16:42:38 | KirinDave leaves the room. | |
| 16:44:20 | probablycorey leaves the room. | |
| 16:48:40 | wmoxam enters the room. | |
| 16:50:26 | tizianobis_ enters the room. | |
| 16:54:40 | benburkert enters the room. | |
| 16:56:27 | perdix enters the room. | |
| 16:59:36 | Fullmoon leaves the room. | |
| 17:02:14 | srbaker leaves the room. | |
| 17:02:54 | srbaker enters the room. | |
| 17:03:40 | probablycorey enters the room. | |
| 17:04:20 | tizianobis_ enters the room. | |
| 17:08:12 | wycats enters the room. | |
| 17:08:46 | tizianobis__ enters the room. | |
| 17:09:28 | macournoyer enters the room. | |
| 17:11:19 | lopex enters the room. | |
| 17:12:14 | tizianobis___ enters the room. | |
| 17:20:22 | tizianobis leaves the room. | |
| 17:20:42 | probablycorey leaves the room. | |
| 17:22:10 | probablycorey enters the room. | |
| 17:26:43 | tizianobis_ leaves the room. | |
| 17:28:50 | tizianobis__ leaves the room. | |
| 17:28:54 | tizianobis____ enters the room. | |
| 17:30:45 | tizianobis___ leaves the room. | |
| 17:32:37 | probablycorey leaves the room. | |
| 17:33:12 | probablycorey enters the room. | |
| 17:34:41 | wifelette leaves the room. | |
| 17:34:57 | dctanner_ enters the room. | |
| 17:35:16 | dctanner leaves the room. | |
| 17:35:20 | agile enters the room. | |
| 17:37:32 | agilista enters the room. | |
| 17:38:00 | benburkert leaves the room. | |
| 17:38:32 | agilista leaves the room. | |
| 17:38:49 | agile enters the room. | |
| 17:39:48 | dctanner_ leaves the room. | |
| 17:40:03 | dctanner enters the room. | |
| 17:40:56 | enebo leaves the room. | |
| 17:41:21 | AndrewO enters the room. | |
| 17:41:58 | obvio leaves the room. | |
| 17:42:02 | jwall_ leaves the room. | |
| 17:43:37 | headius leaves the room. | |
| 17:43:42 | jinjing leaves the room. | |
| 17:43:58 | jinjing enters the room. | |
| 17:45:39 | dbussink | Defiler: awake? |
| 17:46:03 | Defiler | Indeed |
| 17:46:34 | dbussink | ah, i've been playing a bit with valgrind profiling |
| 17:46:55 | Defiler | Cool. I've pretty much permanently had that on my list of things to get proficient with |
| 17:47:36 | dbussink | i can send you the result if you want |
| 17:47:55 | dbussink | it's a profile from the bm_stat benchmark, i was trying to look at what made ffi so slow |
| 17:48:22 | dbussink | it also had some memory leaking too btw |
| 17:48:50 | Defiler | leak bad |
| 17:49:47 | probablycorey leaves the room. | |
| 17:50:15 | dbussink | Defiler: http://pastie.caboo.se/164490 |
| 17:50:19 | GMFlash leaves the room. | |
| 17:50:47 | wifelette enters the room. | |
| 17:50:57 | dbussink | i can mail you a .out file for callgrind of the same benchmark |
| 17:51:34 | brixen | Defiler: btw, celebration was premature, the times plugin was not returning the receiver of #times, it was pushing self (which in this case was 'main') and returning |
| 17:51:42 | probablycorey enters the room. | |
| 17:52:00 | Defiler | brixen: Well, that sounds like a straightforward fix. Heh |
| 17:52:06 | brixen | Defiler: still trying to get it to work, but we may need the local var |
| 17:52:09 | brixen | heh, it's not :P |
| 17:52:31 | brixen | I still cannot determine if the top of the stack is an invariant with that inlined block |
| 17:53:11 | Defiler | Why wouldn't it be? |
| 17:53:30 | Defiler | It is a 'call', so it should be the receiver always, right? |
| 17:53:41 | brixen | 'it' ? |
| 17:54:27 | tizianobis____ enters the room. | |
| 17:54:45 | brixen | the problem is, the bytecodes for the block are inlined right there, and they affect what is on the stack |
| 17:54:54 | KirinDave enters the room. | |
| 17:55:11 | evan | allo |
| 17:55:12 | brixen | e.g. if a git is on the stack, excuting that will pop one, but a while xxx .. end will leave one |
| 17:55:17 | evan | i'm back in LA |
| 17:55:19 | brixen | evan: hello! |
| 17:55:21 | brixen | wb |
| 17:55:21 | dbussink | evan: had a good trip? |
| 17:55:33 | evan | yeah, lots of fun. |
| 17:55:52 | evan | and it's still 1.5 hours before I took off from .au |
| 17:55:59 | evan | ahh.. livin' in the past... |
| 17:56:04 | brixen | heh |
| 17:56:10 | dbussink | time travel! |
| 17:56:22 | Defiler | evan: So you came back separately from drbrain? |
| 17:56:28 | evan | yeah |
| 17:56:34 | evan | we didn't fly out together either |
| 17:56:53 | dbussink | brixen: i'm profiling the File.stat stuff, to see why it's so slow |
| 17:57:05 | dbussink | brixen: interested in the callgrind output? |
| 17:57:13 | brixen | dbussink: saw that, good times |
| 17:57:22 | brixen | dbussink: kind of wrapped up in something atm |
| 17:57:45 | dbussink | problems is i don't really know how it should look, so that makes it hard :) |
| 17:58:03 | brixen | yeah, only slightly familiar with valgrind |
| 17:58:41 | dbussink | this information is probably useful for someone with intricate knowledge in the vm |
| 17:58:43 |