Show enters and exits. Hide enters and exits.
| 00:00:13 | nerdshark | haha |
| 00:00:15 | bakkdoor | nerdshark: it's still far from "done" (whatever that means :P) |
| 00:00:23 | nerdshark | bakkdoor: if you really wanted it to be fancy, support spaces in symbol names :p |
| 00:00:26 | nerdshark | j/k |
| 00:00:33 | bakkdoor | but it has quite some stuff working already.. |
| 00:00:45 | nerdshark | actually it looks really cool |
| 00:00:49 | bakkdoor | nerdshark: actually i've thought about that but hmmpf... naah :P kinda hard to parse i think |
| 00:01:09 | nerdshark | haha |
| 00:01:13 | nerdshark | yeah, i wouldn't bother with it |
| 00:01:21 | bakkdoor | thanks :) although syntax is still very open for discussion.there are some things i haven't fully decided on yet |
| 00:01:46 | nerdshark | are the .'s method call operators? |
| 00:02:27 | nerdshark | as in "arr map: :doubled . inspect println;" |
| 00:02:55 | bakkdoor | no theyre grouping operators.. "." is the opposite to "$", the latter was copied from haskell. there's a short explanation on the github wiki here: http://wiki.github.com/bakkdoor/fancy/basic-syntax |
| 00:03:02 | nerdshark | oic |
| 00:03:05 | nerdshark | also ew haskell :x |
| 00:03:17 | bakkdoor | nerdshark: thats basically equivalent to: (arr map: :doubled) inspect println |
| 00:03:39 | nerdshark | oic |
| 00:03:42 | bakkdoor | nerdshark: "." interprets everything left of it as one expression and everything right of it as a message send to that expression |
| 00:03:54 | nerdshark | ahhhh okay now it it makes sense |
| 00:04:05 | bakkdoor | nerdshark: $ does the opposite. reduces the overall amount of parenthesis you need in your code |
| 00:04:06 | evan | bakkdoor: have you started putting it on rubinius? |
| 00:04:19 | nerdshark | i see that the results of all expressiosn are objects, so "inspect println" is being sent to the result of the first expression |
| 00:04:37 | nerdshark | expressions* |
| 00:04:47 | bakkdoor | evan: not yet. whats missing is the codegeneration stuff.. which i'm going to port from ruby to fancy soon. i've got s-expression output for fancy code working |
| 00:04:58 | evan | bakkdoor: rad! |
| 00:05:09 | evan | is your plan to have it sort of working by next week? |
| 00:05:27 | bakkdoor | evan: i wish but i don't think i'll have the time to get it that far.. |
| 00:05:29 | bakkdoor | maybe in parts |
| 00:05:33 | evan | ok, just curious. |
| 00:05:35 | evan | at any rate |
| 00:05:36 | bakkdoor | :) |
| 00:05:40 | evan | i'm thinking about making some more rubinius t-shirts |
| 00:05:46 | evan | if you port your language to rubinius |
| 00:05:48 | evan | you get one for free. |
| 00:05:49 | bakkdoor | it kinda was my plan but i had lots of other stuff to do as well recently |
| 00:05:54 | evan | open offer to anyone! |
| 00:05:56 | bakkdoor | cool :D |
| 00:06:05 | bakkdoor | i'll gratefully take one :) |
| 00:06:08 | evan | bakkdoor: yeah, np, life is crazy that way. |
| 00:06:15 | nerdshark | bakkdoor: okay, now i understand what's going on |
| 00:06:16 | bakkdoor | yeah :) |
| 00:06:18 | evan | i'm excited about it no matter what! |
| 00:06:19 | nerdshark | $ is awesome |
| 00:06:20 | bakkdoor | nerdshark: great :) |
| 00:06:53 | evan | bakkdoor: i'm started adding some tools for building languages on rubinius |
| 00:06:57 | evan | that we can talk about |
| 00:06:58 | bakkdoor | nerdshark: yeah it helps :) haskell has it for the same reasons (function application uses space instead of parens.. which makes explicit grouping necessary) |
| 00:07:03 | evan | languages other than ruby |
| 00:07:44 | bakkdoor | evan: cool. btw, you live in l.a. right? i'll be in orange county visiting my family after oscon. if you'd like we could meet or whatever. |
| 00:07:45 | nerdshark | so i guess rubinius is aiming to be a dynamic language VM on top of llvm, right? |
| 00:08:03 | evan | bakkdoor: what days? |
| 00:08:13 | evan | nerdshark: we're not "on top of LLVM" |
| 00:08:23 | slava | nerdshark: "aiming" is a bit odd, it already is that |
| 00:08:24 | bakkdoor | evan: i'll be there from jul 24 - august 17th |
| 00:08:24 | evan | LLVM is just used for the JIT |
| 00:08:30 | nerdshark | ah okay |
| 00:08:37 | nerdshark | is a noob to the project |
| 00:08:39 | evan | LLVM doesn't actually provide almost any VM features you'd expect |
| 00:09:00 | evan | bakkdoor: ah ok! so a little while. will you have a car? |
| 00:09:15 | bakkdoor | evan: probably not. but there are buses ;) |
| 00:09:24 | evan | LA to OC on the bus would be... not fun. |
| 00:09:34 | evan | we'll work something out though. |
| 00:09:43 | evan | we could work on getting fancy on rubinius |
| 00:09:46 | bakkdoor | evan: hm yeah but probably easier for me since i've never driven there by car before :P |
| 00:09:54 | bakkdoor | evan: great! would love to :) |
| 00:10:30 | evan | bakkdoor: maybe thursday in 2 weeks? |
| 00:10:44 | evan | i could drive down to OC for the day, we'll need to figure out a nice place to work is all. |
| 00:10:55 | evan | abby works late thursday, so I can stay later. |
| 00:12:15 | evan | bakkdoor: let me know. i'm out of town the 4th to the 11th of august. |
| 00:14:06 | bakkdoor | evan: sure. we can make up a date once i'm there but thursday in two weeks seems fine for now |
| 00:14:23 | evan | ok |
| 00:14:25 | evan | cool. |
| 00:14:28 | bakkdoor | yup :) |
| 00:14:54 | evan | are you doing fancy dev under OS X? |
| 00:15:23 | bakkdoor | no, linux (ubuntu). but fancy builds fine under os x, i have an older iMac here and tested it :) |
| 00:15:36 | bakkdoor | why? :) |
| 00:16:20 | evan | just curious |
| 00:16:42 | bakkdoor | ah ok |
| 00:17:52 | evan | you live in germany, yes? |
| 00:17:58 | bakkdoor | yeah, correct |
| 00:18:10 | evan | i'm building a picture of you |
| 00:18:15 | evan | a germany on a linux laptop |
| 00:18:16 | evan | thats it so far. |
| 00:18:18 | evan | :D |
| 00:18:19 | evan | er. |
| 00:18:20 | evan | german. |
| 00:18:23 | evan | ha. |
| 00:18:37 | bakkdoor | haha lol :D |
| 00:18:59 | bakkdoor | i think there's a picture of me up at the oscon site ;) |
| 00:19:14 | evan | runs to look |
| 00:19:47 | bakkdoor | hides |
| 00:20:21 | evan | a mustached german! |
| 00:20:25 | evan | we'll get along famously. |
| 00:20:25 | bakkdoor | :D |
| 00:20:48 | bakkdoor | actually, i'm half german, half mexican (which is why i have family in oc) ;) |
| 00:21:01 | evan | and why you have a mustache! |
| 00:21:05 | bakkdoor | correct. :D |
| 00:21:07 | evan | I can say that since I live in LA. |
| 00:21:15 | bakkdoor | hehe yeah :) |
| 00:22:42 | boyscout | Add spec for IO.popen + stat - de23d68 - Evan Phoenix |
| 00:22:42 | boyscout | Cleanup IO.popen and IO::BidirectionalPipe - a14afd1 - Evan Phoenix |
| 00:22:58 | bakkdoor | btw, if anyone dares to try out fancy himself, i'm happy for any feedback and criticism. sometimes it's hard to see the obvious problems when you're working on it all the time and don't have a newcomer's perspective on things.. |
| 00:23:05 | evan | bakkdoor: I'm guessing you need to get your fill of real mexican food, and thus the trip to OC. |
| 00:23:07 | evan | :D |
| 00:23:21 | bakkdoor | evan: haha, right :P |
| 00:23:28 | evan | whenever I travel outside southern california, i'm always craving real tacos after a couple weeks. |
| 00:23:33 | bakkdoor | my grandma can cook really good :) |
| 00:23:44 | bakkdoor | yum |
| 00:24:34 | slava | evan: are there real tacos in the bay area? |
| 00:24:41 | bakkdoor | actually my grandma paid for my flight to portland so visiting her is the least i can do ;) besides, oregon and california are close by. |
| 00:24:48 | evan | slava: yeah, you can get them. |
| 00:24:54 | slava | phew |
| 00:24:56 | evan | not as well as LA/OC/SD |
| 00:24:59 | slava | heh |
| 00:25:03 | evan | head up to the mission |
| 00:25:12 | evan | mission burritos are a thing there |
| 00:25:19 | evan | but i'm betting there are some real taco places. |
| 00:25:40 | evan | abby and I go to a fish taco place in LA that is just a guy under a tarp |
| 00:25:42 | evan | it's awesome. |
| 00:25:50 | bakkdoor | sounds great :D |
| 00:25:52 | evan | he's only know via twitter. |
| 00:26:19 | evan | http://twitter.com/rickysfishtacos |
| 00:26:29 | evan | thats how he's gotten like 95% of his business |
| 00:26:44 | bakkdoor | :D nice background picture :) |
| 00:26:44 | evan | he's a florist on the weekdays, fish taco artist on the weekends. |
| 00:27:33 | bakkdoor | http://akaida.tumblr.com/post/791229318/rickysfishtacos |
| 00:27:34 | bakkdoor | ! |
| 00:27:51 | evan | yep! |
| 00:28:15 | evan | this is his new location |
| 00:28:17 | evan | too |
| 00:28:31 | evan | his old location was in front of some 2nd hand shop on the sidewalk |
| 00:29:19 | evan | if you drive up |
| 00:29:20 | evan | we can go! |
| 00:30:15 | bakkdoor | evan: sure! a good reason for me to come visit you in l.a. :) |
| 00:30:43 | evan | if you drive on the autoban, you can drive from OC to LA :D |
| 00:31:04 | boyscout | CI: rubinius: a14afd1 successful: 3500 files, 14324 examples, 42088 expectations, 0 failures, 0 errors |
| 00:32:09 | bakkdoor | evan: actually going by bus isn't that bad. 45m drive, costs only $8.50 |
| 00:32:21 | evan | sure, up to you |
| 00:32:25 | evan | you could actually take the train up |
| 00:32:29 | evan | and i can pick you up at union station |
| 00:32:31 | bakkdoor | evan: problem is i don't have a international driver's license.. |
| 00:32:47 | evan | thats probably easist and fastest |
| 00:32:50 | bakkdoor | so i think i'm not allowed to drive |
| 00:32:54 | evan | ok |
| 00:32:57 | bakkdoor | yeah, i'll see what's best :) |
| 00:33:08 | slava | I've driven in the US and NZ with a Canadian license |
| 00:33:16 | slava | you don't need an international one in some cases at least |
| 00:33:19 | evan | i've driven in France with a US license |
| 00:33:20 | slava | make surey ou check |
| 00:33:23 | evan | in a rental car. |
| 00:33:24 | slava | instead of just assuming you can.t |
| 00:33:46 | evan | i don't know if the rental car changes it. it might. |
| 00:33:49 | slava | oh |
| 00:33:56 | slava | you might be right |
| 00:33:57 | evan | i've driven a lot in Canada with my US license |
| 00:34:19 | bakkdoor | slava: alright, i might. but i think taking bus or train makes things alot easier for me. i've never driven in the us before and have no idea which way to go etc. ^^ |
| 00:34:21 | evan | but that might be covered under NAFTA |
| 00:34:26 | slava | bakkdoor: public transport sucks in the US |
| 00:34:51 | bakkdoor | slava: yeah... well i'll see but thanks for the advice |
| 00:35:02 | slava | unless you live in a heavily urbanized area, you need a car |
| 00:35:23 | bakkdoor | true. but oc and la are heavily urbanized i'd argue :P |
| 00:35:24 | evan | slava: he can get from OC to LA on the train pretty easily |
| 00:35:26 | evan | slava: don't worry :D |
| 00:35:32 | bakkdoor | i'll be fine :D |
| 00:35:40 | evan | bakkdoor: ^5 |
| 00:35:56 | bakkdoor | ^5 ? |
| 00:36:03 | evan | high five! |
| 00:36:09 | bakkdoor | ah right :D |
| 00:37:34 | bakkdoor | the greyhound bus for example leaves around every hour. don't know if the station is near your place though |
| 00:37:48 | evan | well, if you get into LA proper |
| 00:37:48 | slava | don't get shot at the grayhound bus station in LA |
| 00:37:50 | evan | i can pick you up |
| 00:37:52 | evan | thats no problem. |
| 00:37:56 | bakkdoor | evan: alright, cool |
| 00:38:06 | bakkdoor | slava: get shot? oO |
| 00:38:14 | bakkdoor | i've been there before, didn't get shot yet :P |
| 00:38:53 | bakkdoor | if i have to, i'll try to dodge the bullets :P |
| 00:40:04 | evan | slava just likes to poke fun at me. |
| 00:40:05 | evan | :) |
| 00:40:17 | evan | actually, violent crime wise, LA is doing great. |
| 00:40:22 | evan | 30 year low |
| 00:40:24 | slava | evan lives in compton |
| 00:40:35 | evan | no, i don't. i just eat there. |
| 00:40:38 | evan | sometimes. |
| 00:40:52 | slava | is that where you get the best tacos? |
| 00:40:53 | evan | I live in hollywood. |
| 00:41:02 | evan | nah |
| 00:41:09 | evan | best taco is a subjective thing in LA |
| 00:41:27 | evan | rickys is in silverlake, a few miles east of me |
| 00:45:06 | boyscout | Move Hash#setup to Hash#__setup__ to allow overriding - d066fa0 - Tim Carey-Smith |
| 00:53:12 | bakkdoor | btw, rubinius has several concurrency related abstractions right? i remember reading something about actors and also channels (and of course threads). am i correct? |
| 00:53:34 | boyscout | CI: rubinius: d066fa0 successful: 3500 files, 14324 examples, 42088 expectations, 0 failures, 0 errors |
| 00:53:36 | brixen | yes |
| 00:53:41 | evan | actors haven't recieved much love as of late |
| 00:53:45 | brixen | although, ... yes |
| 00:53:46 | evan | but Channels and Threads work great |
| 00:53:47 | brixen | heh |
| 00:54:09 | bakkdoor | cool. just wondering.. are actors implemented using channels? |
| 00:54:30 | evan | thats a good question! |
| 00:54:34 | evan | looks for the answer. |
| 00:54:37 | evan | tarcieri wrote it |
| 00:54:39 | bakkdoor | :D |
| 00:54:40 | evan | we should ask him! |
| 00:54:49 | bakkdoor | ok! |
| 00:54:51 | evan | oh wait, no |
| 00:54:55 | evan | mentalguy did. |
| 00:55:01 | evan | i think they both worked on it. |
| 00:55:12 | bakkdoor | alright |
| 00:55:49 | boyscout | Reworked BasicBlock stack verification. - e85cdd1 - Brian Ford |
| 00:55:49 | boyscout | Fixed pack specs for 'Xx'. - 5eeb724 - Brian Ford |
| 00:55:49 | boyscout | Fixed pack specs for @. - 2b8dd45 - Brian Ford |
| 00:56:23 | tarcieri | I only wrote the inter-VM actors |
| 00:56:28 | tarcieri | MenTaLguY wrote the rest |
| 00:56:35 | brixen | evan: I wonder whether taking @generator out of BB would be good |
| 00:56:36 | evan | bakkdoor: looks like it should work fine |
| 00:56:49 | evan | i didn't change the Rubinius::Channel API since it was written |
| 00:56:57 | bakkdoor | evan: alright cool. i'm looking at it right now as well |
| 00:56:58 | evan | and that appears to be the primary thing it needs. |
| 00:56:58 | brixen | evan: that change shave 2 of 105 young collections compiling all of lib |
| 00:57:15 | evan | nice. |
| 00:57:20 | evan | why take it out? |
| 00:57:29 | brixen | evan: that change being not using [] for BB edges |
| 00:57:38 | brixen | reduce the size of a BB instance |
| 00:57:47 | brixen | since it should pack the ivars |
| 00:57:54 | evan | bakkdoor: oh, there are few things that won't work |
| 00:57:59 | evan | that I need to fix |
| 00:58:03 | evan | give me a sec |
| 00:58:08 | evan | maybe i can fix 'em real quick. |
| 00:58:17 | bakkdoor | :D |
| 00:58:26 | tarcieri | do the inter-VM actors still work? :) |
| 00:58:32 | brixen | halorgium: your nasty file will compile now |
| 00:58:35 | tarcieri | suppose I could try to find my spec and see if it's still there/not commented out |
| 00:58:38 | evan | tarcieri: MVM is still busted |
| 00:58:41 | tarcieri | oh |
| 00:58:41 | tarcieri | heh |
| 00:58:41 | evan | tarcieri: i need to fix that. |
| 00:58:42 | tarcieri | ok |
| 00:58:57 | bakkdoor | no need to hurry. just asked because i want fancy to have actors built-in. and it would be nice if i could just use whats there once it's running on rubinius ;) |
| 00:59:12 | tarcieri | did all of the Ruby implementers ever agree on a common MVM API? |
| 00:59:16 | tarcieri | or did that just go by the wayside? |
| 00:59:37 | evan | bakkdoor: we'll get something nice working |
| 00:59:44 | bakkdoor | evan: great :) |
| 00:59:51 | tarcieri | now that you have native threads (if you ever get rid of the GIL) it's kind of moot though... |
| 00:59:52 | evan | tarcieri: everyone was ok with my original API |
| 00:59:56 | tarcieri | nice |
| 01:00:00 | evan | there was a discussion about VM.fork |
| 01:00:01 | ko1_away | tarcieri: maybe not agreed... |
| 01:00:08 | evan | ko1_away: hi! |
| 01:00:12 | tarcieri | ohai there ko1 |
| 01:00:14 | ko1_away | evan: hi |
| 01:00:37 | tarcieri | ko1_away: do you have any plans to get rid of the GVL? |
| 01:00:41 | ko1_away | i'm planing to restart mvm project on CRuby, including inter-VM communication |
| 01:00:56 | evan | ko1_away: maybe we should discuss the ruby API again then |
| 01:00:58 | evan | it was pretty easy |
| 01:01:10 | evan | there was really just VM#send and VM.receive |
| 01:01:19 | ko1_away | tarcieri: no. my policy is that: parallel "Thread" is evil |
| 01:01:22 | evan | the 2 discussion points were what kind of things could be passed |
| 01:01:22 | tarcieri | heh |
| 01:01:23 | tarcieri | ok |
| 01:01:30 | evan | and if VM.fork could be implemented |
| 01:01:37 | tarcieri | ko1_away: there are ways to make them less evil :) I should talk to MenTaLguY about that |
| 01:02:04 | ko1_away | evan: I agree about "simple inter-VM communication API" such as Queue |
| 01:02:15 | ko1_away | evan: i'm not sure about VM.fork |
| 01:02:19 | evan | yeah |
| 01:02:20 | evan | me neither |
| 01:02:24 | tarcieri | heh @ VM.fork |
| 01:02:27 | ko1_away | evan: it's cool, but seems complex |
| 01:02:28 | tarcieri | that's just plain evil |
| 01:02:31 | evan | it would be a lot harder |
| 01:02:34 | tarcieri | s/evil/crazy/ |
| 01:02:55 | evan | vm = VM.new "-e '....'" |
| 01:03:02 | evan | is pretty easy. |
| 01:03:03 | tarcieri | where -e is eval? |
| 01:03:07 | evan | yeah |
| 01:03:10 | tarcieri | yeah cool |
| 01:03:11 | evan | the string is the argv of the new VM |
| 01:03:24 | tarcieri | that's pretty much one of two interfaces Erlang gives you |
| 01:03:27 | tarcieri | for bootstrapping new nodes |
| 01:03:31 | tarcieri | the other is apply |
| 01:03:31 | tarcieri | heh |
| 01:03:41 | evan | tarcieri: apply would be like fork |
| 01:03:42 | evan | i'm assuming |
| 01:03:47 | tarcieri | ? |
| 01:03:51 | evan | no? |
| 01:03:58 | tarcieri | like fork how? |
| 01:04:05 | evan | nevermind |
| 01:04:08 | evan | what does apply do? |
| 01:04:19 | tarcieri | apply takes the name of a module, a function of that module to call, and the arguments |
| 01:04:48 | evan | and runs them in a new node? |
| 01:04:55 | tarcieri | yes |
| 01:04:58 | evan | where does it get the implementation of the function? |
| 01:05:05 | evan | loads it from a file? |
| 01:05:15 | tarcieri | if you use apply, it would have to be one of the functions in the load path of that node when it booted |
| 01:05:24 | evan | gotcha |
| 01:05:24 | tarcieri | i.e. a standard library function, or code that was already present on that node |
| 01:05:32 | evan | supporting that would be pretty easy |
| 01:05:48 | ko1_away | evan: we already implement such creation API on CRuby, and queue model communication |
| 01:05:54 | evan | VM.new "foo.rb", "Blah", "run_this" |
| 01:06:07 | evan | ko1_away: are they exposed in ruby methods? |
| 01:07:05 | ko1_away | evan: yes |
| 01:07:20 | tarcieri | evan: an example in Rubyland would be node.apply :Kernel, :load, "myfile.rb" |
| 01:07:37 | boyscout | CI: rubinius: 2b8dd45 successful: 3502 files, 14347 examples, 42111 expectations, 0 failures, 0 errors |
| 01:07:39 | evan | ko1_away: where at? i'd like to look at them |
| 01:08:10 | ko1_away | http://github.com/nobu/ruby |
| 01:08:19 | ko1_away | evan: but not documented :( |
| 01:08:44 | evan | ko1_away: thats fine, what files are the methods defined? |
| 01:08:56 | evan | i can follow the C code. |
| 01:09:42 | ko1_away | evan: i'm searching now :) |
| 01:09:45 | evan | ok! |
| 01:12:17 | evan | ko1_away: is it mvm.c in the mvm branch? |
| 01:13:52 | ko1_away | evan: i also thought so, and look first. but no ruby level method |
| 01:14:05 | evan | ok |
| 01:14:16 | evan | well, sounds like you are going to restart working on it anyway |
| 01:14:24 | evan | and seems like we agree on the API mostly |
| 01:14:30 | evan | i'll probably play with adding it in again |
| 01:14:37 | evan | and we can go from there |
| 01:16:18 | ko1_away | yea |
| 01:20:55 | evan | ko1_away: do you have the summer off from being a professor? |
| 01:22:21 | ko1_away | no |
| 01:22:52 | ko1_away | however, i got chance to go foreign research institue in 2 months |
| 01:23:24 | evan | has that been fun? |
| 01:23:30 | ko1_away | so i hope to concentrate to VM implementation |
| 01:23:41 | evan | when do you go? |
| 01:23:58 | ko1_away | maybe > fun |
| 01:24:06 | ko1_away | England |
| 01:24:32 | ko1_away | I will go to help HornetsEye guy |
| 01:24:58 | evan | interesting! |
| 01:25:12 | evan | going to try and add VM features to make it better? |
| 01:25:20 | ko1_away | YES |
| 01:25:26 | evan | fun! |
| 01:25:40 | evan | when do you start that? |
| 01:25:50 | ko1_away | he made a JIT with libjit on his DSL in Ruby |
| 01:26:05 | evan | oh yes! he talked about it at rubyconf I believe |
| 01:26:06 | ko1_away | this Sep to Oct |
| 01:26:26 | ko1_away | yes, I get to know him at rubyconf |
| 01:27:03 | evan | well, that should be fun :) |
| 01:28:06 | ko1_away | yea |
| 01:28:20 | ko1_away | (1) parallel something |
| 01:28:30 | ko1_away | (1-1) parallel sweep (maybe easy) |
| 01:28:40 | ko1_away | (1-2) fine grain parallel execution support |
| 01:28:50 | ko1_away | (2) JIT compilation / VM introspection |
| 01:28:58 | ko1_away | are topic i'm thinking |
| 01:29:05 | ko1_away | s/topic/topics/ |
| 01:29:13 | evan | is 1-2 allowing ruby code to run with the GVL unlocked? |
| 01:29:36 | ko1_away | some heavy tasks like NArray manipuration, etc |
| 01:29:55 | ko1_away | Ruby programmer should not consider about parallel execution |
| 01:29:59 | ko1_away | I believe |
| 01:30:31 | evan | so would this allow some C code within NArray to run in parallel? |
| 01:30:42 | ko1_away | YES |
| 01:30:48 | evan | ah! |
| 01:30:50 | evan | cool. |
| 01:31:02 | ko1_away | i want to make a framework to create in easy way |
| 01:31:06 | evan | have you thought much about 2, the JIT, yet? |
| 01:31:16 | ko1_away | not yeat |
| 01:31:33 | evan | if you have questions, i'm happy to answer them about the Rubinius JIT |
| 01:31:34 | ko1_away | we are working on AOT compilation, ruby to C |
| 01:31:49 | ko1_away | LLVM! |
| 01:31:56 | evan | yep! |
| 01:32:07 | evan | cool! |
| 01:32:13 | evan | are you using LLVM in the AOT? |
| 01:32:18 | ko1_away | no |
| 01:32:36 | evan | ah ok. YARV bytecode to C I assume? |
| 01:32:37 | ko1_away | YARV bytecode sequence to C source code |
| 01:32:40 | ko1_away | YES |
| 01:32:42 | evan | :D |
| 01:33:02 | ko1_away | but no greate performance improvement, |
| 01:33:18 | ko1_away | about x1.5 speedup |
| 01:33:24 | evan | yes, method dispatch is probably the slowest part then |
| 01:33:27 | ko1_away | in naive impl. |
| 01:34:07 | ko1_away | we'll try profiler/type inference approach to generate more optimized one |
| 01:35:29 | evan | interesting! |
| 01:35:34 | evan | thats very much like the Rubinius JIT |
| 01:35:51 | ko1_away | you are doing profiler based one? |
| 01:36:03 | evan | yes, the current Rubinius JIT uses type feedback |
| 01:36:16 | evan | interpreter builds profiling info about every method call site |
| 01:36:20 | ko1_away | ah, JIT compilation is profiler based. silly comment |
| 01:36:23 | ko1_away | sorry |
| 01:36:29 | evan | no problem. :) |
| 01:38:47 | ko1_away | our problem consciousness is portability |
| 01:39:24 | ko1_away | LLVM is mostly portable, but not enough (in our research) |
| 01:39:41 | halorgium | brixen: w00t |
| 01:39:49 | ko1_away | so we use C |
| 01:40:28 | evan | yes |
| 01:40:39 | evan | LLVM IR is not portable |
| 01:40:57 | ko1_away | however, good for MacOSX environment :) |
| 01:41:02 | evan | mainly because of the integer size stuff |
| 01:41:13 | evan | yes! |
| 01:41:31 | evan | if you are careful, you can be portable |
| 01:41:32 | ko1_away | integer size stuff, heh |
| 01:42:07 | ko1_away | LLVM is heavy for embedded devices (not smart phone :), i think |
| 01:42:30 | evan | LLVM is big, yes. |
| 01:42:56 | evan | to use at runtime, the JIT is very complete, but also not as fast as very simple JIT |
| 01:43:07 | ko1_away | I see. |
| 01:43:25 | evan | but the x86 code it outputs is great |
| 01:43:28 | evan | it's very smart. |
| 01:43:46 | ko1_away | LLVM output? or your effort? |
| 01:43:52 | evan | LLVM output |
| 01:44:02 | ko1_away | i see |
| 01:44:08 | evan | I give LLVM data as it's IR |
| 01:44:16 | evan | and it chews on it and spits out x86 machine code |
| 01:47:36 | evan | ko1_away: soon I want to write some docs and diagrams of the Rubinius JIT system. |
| 01:51:34 | ko1_away | evan: cool! |
| 01:51:50 | ko1_away | i love to read it. |
| 01:52:36 | evan | wonderful! |
| 01:52:46 | evan | I saw http://harmony.apache.org/subcomponents/drlvm/JIT.html |
| 01:52:52 | evan | and got very jealous |
| 01:53:37 | ko1_away | what is DRLVM Jitrino ? |
| 01:54:08 | evan | I guess it's a JVM that Apache has built |
| 01:54:18 | evan | they have nice documents about the different parts |
| 01:54:29 | ko1_away | wow |
| 01:54:42 | ko1_away | there are many many JVM impls. |
| 01:54:55 | nerdshark | yep |
| 01:55:35 | evan | ko1_away: yes! even more than ruby! |
| 01:55:45 | ko1_away | :) |
| 02:05:51 | ko1_away | evan: http://github.com/nobu/ruby/blob/mvm/vm.c InitVM_VM |
| 02:05:59 | ko1_away | nobu teach me |
| 02:06:31 | evan | :D |
| 02:06:32 | evan | ah ok! |
| 02:06:41 | evan | I shall copy this API |
| 02:07:02 | ko1_away | not mature... |
| 02:07:33 | evan | thats ok |
| 02:07:35 | evan | it seems to be simple |
| 02:07:37 | evan | which is good. |
| 02:07:44 | evan | we can always change it |
| 02:07:51 | evan | I see it using the queue |
| 02:08:14 | ko1_away | we need sample/killer application using MVM |
| 02:08:31 | evan | perhaps a webserver? |
| 02:08:40 | evan | that can load balance connections between VMs |
| 02:08:47 | evan | that seems natural. |
| 02:08:54 | ko1_away | yes |
| 02:10:22 | ko1_away | evan: BTW, you will not attend this year RubyKaigi? |
| 02:10:43 | evan | sadly I do not think so right now |
| 02:10:47 | evan | but that might change. |
| 02:11:23 | ko1_away | evan: i see. i hope we can meet at RubyKaigi. |
| 02:11:34 | evan | yes, me too. |
| 02:13:25 | evan | ko1_away: if you ever want to discuss these things, i'm always available by email |
| 02:13:32 | evan | I know it can be easier to discuss longer ideas via email |
| 02:13:39 | evan | skype too :D |
| 02:13:46 | evan | for video chat |
| 02:16:04 | ko1_away | thanks |
| 02:16:50 | ko1_away | i want to summerize about it before discuss. |
| 02:16:57 | evan | sure. |
| 02:17:04 | evan | oh, I see "How Did Yarv2llvm Fail" on the kaigi schedule. |
| 02:17:08 | evan | i did not realize he had given up |
| 02:17:51 | ko1_away | hehe |
| 02:18:19 | ko1_away | he have restarted his YARV JIT with LLVM project at scratch |
| 02:18:47 | evan | ah |
| 02:19:12 | evan | I should ask him to help with the Rubinius JIT! :D |
| 02:19:18 | ko1_away | haha |
| 02:19:52 | ko1_away | i will ask him |
| 02:20:11 | evan | :D |
| 02:22:09 | evan | ko1_away: it has been great talking with you. I must go off to jog now. |
| 02:22:33 | evan | i'll try to bring up more topics so we can talk more! |
| 03:49:45 | jakedouglas | evan: thanks for fixing the bidirectional pipe stuff |
| 03:49:51 | evan | np |
| 03:50:39 | jakedouglas | interestingly, i was getting the uninitialized stream error intermittently, not all the time (using #sync=) |
| 03:50:55 | jakedouglas | do you know why that would have been? |
| 03:52:17 | evan | eh? |
| 03:52:24 | evan | you were getting it doing what? |
| 03:52:28 | evan | .stat? |
| 03:52:37 | jakedouglas | io.sync = true |
| 03:52:51 | evan | where did io come from? |
| 03:53:02 | jakedouglas | IO.popen(…) {|io| … } |
| 03:53:08 | jakedouglas | is this a separate issue? |
| 03:53:18 | jakedouglas | i just remember that it was succeeding some of the time |
| 03:53:37 | jakedouglas | its a script in my app |
| 03:53:53 | evan | no clue |
| 03:53:54 | evan | honestly. |
| 03:54:00 | evan | it should always work or never work |
| 03:54:13 | evan | maybe there was a timing issue with the process |
| 03:54:18 | jakedouglas | heh ok. ill let you know if its still a problem next time i rebuild rvm. |
| 03:54:26 | evan | k |
| 03:54:38 | jakedouglas | err |
| 03:54:43 | jakedouglas | rebuild rbx. with rvm. yeah. |
| 03:55:07 | evan | I gotcha. |
| 04:06:11 | jakedouglas | is there a way to determine the allocation site of an object in rbx? |
| 04:06:50 | brixen | not that I know of |
| 04:07:08 | brixen | yet :) |
| 04:07:27 | evan | no, not yet |
| 04:07:28 | evan | soon. |
| 04:11:00 | jakedouglas | k. anything i can do to help that? |
| 04:12:04 | evan | not particularly, no. |
| 04:12:07 | jakedouglas | k |
| 04:12:16 | evan | i have to wire in some event framework into the allocation system of the VM |
| 04:12:21 | evan | 100% C++ |
| 04:14:15 | jakedouglas | i have written some C++. you probably don't want it in your codebase though :p |
| 04:17:18 | evan | heh |
| 04:21:31 | jakedouglas | hmm. i am not sure where next to look with this TypeError i get in script/console |
| 04:28:24 | jakedouglas | told myself i wouldnt stay up late messing around with rubinius again tonight. see you guys in the morning :p |
| 04:32:49 | evan | :) |
| 06:12:37 | evan | rad. i've got unwind information being synthesized properly when calling out to uncommon_interpreter |
| 06:12:48 | evan | so we can deoptimize with an exception handler |
| 06:15:01 | brixen | sweet! |
| 06:15:12 | brixen | that's excellent |
| 06:15:22 | brixen | so now you can inline cm's with exceptions? |
| 06:20:21 | evan | thats the plan! |
| 06:20:28 | brixen | yay! |
| 06:24:09 | evan | brixen: so, we've got ANOTHER interpreter now |
| 06:24:09 | evan | :) |
| 06:24:15 | evan | i just can't stop! |
| 06:24:19 | brixen | no kidding |
| 06:24:22 | evan | debugging_interpreter_continue |
| 06:24:32 | brixen | were goingto need a registry soon |
| 06:24:45 | evan | is used to continue a normal interpreted method in debugging mode |
| 06:24:49 | brixen | and probably an IntepreterFactoryInterpreter at some point |
| 06:24:53 | evan | hah |
| 06:25:10 | evan | if it have methods like #hola! then i'm fine with that. |
| 06:25:16 | brixen | heh |
| 06:29:16 | evan | man though |
| 06:29:35 | evan | i've got to write some ridiculous code to put things on the stack when a begin starts |
| 06:29:39 | evan | like |
| 06:29:44 | evan | 10 + (begin .... end) |
| 06:30:21 | brixen | um, what? |
| 06:30:34 | evan | when we do setup_unwind |
| 06:30:38 | evan | we record the stack depth |
| 06:30:54 | evan | so that when the rescue runs, we can restore the stack depth we were at before the begin code was run |
| 06:31:07 | brixen | ah yes |
| 06:31:09 | evan | remember, i used to reset the stack to -1 |
| 06:31:14 | evan | which breaks code like this |
| 06:31:29 | evan | because the rescue can leave a value |
| 06:31:33 | evan | and then the expression continues |
| 06:31:41 | brixen | gotcha |
| 06:31:51 | evan | 10 + (begin; raise "stupid"; rescue; 2; end) # => 12 |
| 06:32:13 | brixen | yes, fascinating use cases for such code |
| 06:32:20 | brixen | don't let tarcieri see it |
| 06:32:29 | brixen | he's on a roll tonight about twitter :) |
| 06:32:29 | evan | hah |
| 06:32:34 | evan | so i've noticed! |
| 06:32:41 | evan | something in his coffee this evening |
| 06:32:47 | brixen | heh |
| 06:35:41 | brixen | evan: so, I parsed your sentence like this http://skitch.com/brixen/dc37r/brian-yumiko |
| 06:36:21 | brixen | I thought you were saying you had to write code like "10 + (begin...end)" to put things on the stack |
| 06:36:23 | evan | ok.. |
| 06:36:35 | evan | i was! |
| 06:36:41 | brixen | and that was related somehow to debugging_interpreter_continue |
| 06:36:45 | evan | oh |
| 06:36:46 | evan | no. |
| 06:36:47 | evan | unrelated. |
| 06:36:48 | brixen | needless to say, I was loling |
| 06:36:50 | brixen | heh |
| 06:37:34 | evan | what day is the ride? |
| 06:37:49 | brixen | sat starting at about 5:45 am |
| 06:37:52 | brixen | 100 mi |
| 06:37:57 | brixen | sunday again |
| 06:38:09 | evan | gotcha |
| 06:38:16 | brixen | we're driving up tomorrow |
| 06:38:17 | evan | how long you think 100m will take ya? |
| 06:38:32 | evan | what time you head up tomorrow? |
| 06:38:33 | brixen | I think I could do it in about 8 hrs, but we'll probably take ~11 |
| 06:38:55 | brixen | getting the truck at 10, then some quick errands and we'll try to be in seattle before 4 |
| 06:39:02 | evan | nice |
| 06:39:05 | brixen | hopefully beat friday rush hour |
| 06:39:07 | evan | well, don't kill yourself! |
| 06:39:19 | evan | off to go read. |
| 06:39:19 | brixen | drop the bikes off and the truck |
| 06:39:21 | brixen | and chill |
| 06:39:24 | evan | sounds good. |
| 06:39:25 | brixen | ok! |
| 06:39:29 | evan | see ya on monday |
| 06:39:34 | brixen | ok |
| 06:39:37 | brixen | have a nice weekend |
| 06:39:43 | evan | unless you want to facetime me from the road :D |
| 06:39:50 | evan | oh, no wifi. |
| 06:39:51 | brixen | heh, I will if I get wifi |
| 06:39:52 | evan | nevermind! |
| 06:39:55 | evan | :D |
| 06:40:02 | evan | ok, see ya! |
| 06:40:03 | brixen | maybe there will be at one of the stops |
| 06:40:09 | brixen | I'll post some pics to twitter |
| 06:40:11 | brixen | see ya! |
| 12:42:04 | JamesKilton | Is there anything in Rubinius proper that uses st.h ? I see it included by mri/compat.h, but I don't see anything that includes *that* file |
| 12:45:20 | kronos_vano | JamesKilton, I think gems can include the header |
| 12:45:40 | JamesKilton | it doesn't compile |
| 12:48:27 | JamesKilton | I'll have to go w/ what syck does, include st.h and st.c in my library directly |
| 16:04:54 | brixen | evan: this is the abort on ppc http://gist.github.com/478545 |
| 16:05:11 | brixen | do we perhaps need to regen the llvm type info for the jit? |
| 16:05:22 | evan | yikes |
| 16:05:24 | evan | yeah |
| 16:05:29 | evan | well |
| 16:05:37 | evan | or recompile llvm for ppc |
| 16:05:43 | evan | that backtrace makes no sense |
| 16:05:44 | brixen | I did compile from source |
| 16:05:52 | brixen | ok, le'me get a gdb one |
| 16:06:14 | evan | there is no way llvm::SelectionDag::setRoot can call rubinius::ObjectMemory::new_object_typed |
| 16:07:26 | brixen | yeah, that was pretty odd |
| 16:08:10 | brixen | ok, this one is in inflated header |
| 16:08:30 | evan | thats better |
| 16:08:58 | brixen | http://gist.github.com/478545 |
| 16:11:09 | JamesKilton | evan: Is there a RHash replacement in rbx or is it gone altogether? |
| 16:11:17 | evan | no |
| 16:11:21 | evan | it's gone altogether |
| 16:11:25 | evan | there can be no replacement |
| 16:11:44 | JamesKilton | that's what I thought just wanted to be sure |
| 16:11:48 | evan | we've tried to provide functions for all opuerations you'd do with RHASH() |
| 16:12:40 | JamesKilton | ya i'll need to reimplement this class completely then, it expects to BE an RHash |
| 16:14:18 | goyox86 | oh man i just watched the Yehuda at RailsConf '10, is really motivational :] |
| 16:14:28 | brixen | goyox86: totally! :) |
| 16:16:20 | goyox86 | brixen,evan: How long did you worked alone in rbx? |
| 16:16:53 | brixen | goyox86: I never worked alone on it, I had evan with me the whole time :) |
| 16:16:54 | goyox86 | with no people's help? |
| 16:17:19 | brixen | I think evan worked on it almost a year before pushing the code public |
| 16:17:23 | brixen | maybe less |
| 16:17:58 | evan | goyox86: i worked on rubinius solo from christmas 2005 til november 2006 |
| 16:19:31 | goyox86 | i say this, coz these days i was a litte down, coz rbx in pretty big stuff, i've been reading and reading and reading , and say readinga lot of rbx code, and i told myself: "wtf can do here?, there are pretty complex stuuf" |
| 16:19:48 | jakedouglas | you too huh |
| 16:20:25 | evan | goyox86: you mean, rbx seems huge and complex and hard to help with? |
| 16:21:02 | goyox86 | and recently i found out that, i needed to start with some easy, just fixing some specs, and everything started to be FUN! |
| 16:21:20 | evan | yeah! |
| 16:21:24 | evan | thats what I was going to suggest. |
| 16:21:31 | evan | there are a lot of moving parts |
| 16:21:36 | evan | because it's a sophisticated program |
| 16:21:46 | evan | but we've got a lot of easy doorways to walk through to get started |
| 16:23:31 | goyox86 | evan: yup!, and heh i just submitted 2 patches :), no big stuff but i just wanted to be part of the implmentation of this project, from one way or another |
| 16:24:27 | evan | thats the best way to start |
| 16:24:32 | evan | those little patches |
| 16:24:46 | evan | if you stick with it, the patches grow as your knowledge grows |
| 16:25:53 | goyox86 | and i'm pretty sure rbx will become one of the most used ruby runtimes and as i was reading yesterday, become a platform to implement other languages on it! |
| 16:26:01 | goyox86 | like fancy-lang! |
| 16:26:08 | evan | :D |
| 16:26:18 | evan | yeah, that delights me to no end |
| 16:26:26 | evan | that people are seeing it as a fun playground. |
| 16:26:31 | goyox86 | congrats all of you man! |
| 16:26:49 | goyox86 | going to lunch! |
| 16:26:54 | goyox86 | se yaa! |
| 16:27:14 | evan | :D |
| 16:27:15 | evan | bye! |
| 20:23:05 | goyox86 | people i'm working on making pass File specs, but i need to do some ruby debug how do i achieve it? |
| 20:24:03 | evan | goyox86: what is your question? |
| 20:24:05 | evan | how to debug? |
| 20:24:10 | goyox86 | since i know the Debugger, is not finished, at least movement (step in, step out) |
| 20:24:30 | evan | you can use the debugger |
| 20:24:36 | evan | might work fine for your purposes |
| 20:24:40 | goyox86 | yep ruby code, from kernel |
| 20:24:41 | evan | require 'debugger' |
| 20:24:43 | evan | Debugger.start |
| 20:24:50 | evan | then you can set breakpoints and continue |
| 20:24:52 | evan | and inspect |
| 20:25:20 | goyox86 | yep brixen explained me it, a few days ago :], ok |
| 20:26:06 | goyox86 | you only use gdb for vm debug? |
| 20:26:11 | evan | yep |
| 20:26:39 | goyox86 | ok thx evan |
| 20:37:26 | dbussink | evan: i was looking at some tags, but how should we go about not allowing :initialize to be sent to an already initialized class? |
| 20:37:41 | evan | we don't |
| 20:37:43 | evan | MRI doesn't. |
| 20:38:17 | dbussink | well, mri raises a typerror on stuff like Fixnum.send :initialize |
| 20:38:20 | dbussink | rbx crashes on it |
| 20:38:35 | evan | thats not again |
| 20:38:41 | evan | oh wait |
| 20:38:44 | evan | THE CLASS? |
| 20:38:47 | evan | or instances? |
| 20:38:51 | dbussink | the class :) |
| 20:38:57 | dbussink | class Obj; end |
| 20:39:00 | evan | thats just something Class#initialize should handle |
| 20:39:04 | dbussink | Obj.send :initialize => TypeError |
| 20:39:19 | evan | raising TypeError if it sees it's already initialized |
| 20:39:32 | dbussink | but is there any way to easily see if it's already initialized? |
| 20:39:49 | dbussink | any flag / specific thing set up? |
| 20:40:01 | evan | i'd just check if @method_table is a MethodTable |
| 20:40:04 | evan | if so, raise TypeError |
| 20:41:10 | dbussink | ok, i'll play with that then |
| 20:41:20 | evan | k |
| 20:42:56 | dbussink | evan: hmm, looks like method_table is already there at that point |
| 20:44:31 | evan | well, use something |
| 20:51:51 | dbussink | evan: this seems to work, makes sense to you? https://gist.github.com/72d4617b15533b502155 |
| 20:52:18 | evan | should be |
| 20:52:31 | evan | raise TypeError, "already initialize" if @instancetype |
| 20:52:31 | evan | raise TypeError, "already initialize" if @instance_type |
| 20:52:45 | evan | don't use Exception#new unless you really must. |
| 20:53:12 | jakedouglas | evan: why is that? just to be consistent? |
| 20:53:15 | dbussink | evan: do you also prefer using @ instead of the accessor? |
| 20:53:20 | evan | jakedouglas: yep. |
| 20:53:27 | evan | also |
| 20:53:31 | evan | raise Blah.new("") |
| 20:53:48 | evan | is less efficent than 'raise Blah, ""' |
| 20:53:52 | evan | because of teh protocol of rais |
| 20:53:52 | evan | raise |
| 20:53:56 | jakedouglas | i see |
| 20:53:58 | evan | always sends #exception to the 1st argument |
| 20:54:04 | evan | which, in the case of Exception#exception |
| 20:54:06 | evan | dups itself |
| 20:54:13 | evan | so you create an object, just to have it dup'd |
| 20:54:32 | evan | dbussink: in this case, yes. |
| 20:54:37 | evan | dbussink: because it's more foolproof. |
| 20:54:43 | evan | someone can't come along and redifine instance_type |
| 20:54:51 | dbussink | hehe, that's tru yeah |
| 20:54:59 | dbussink | someone otherwise probably will :P |
| 20:55:05 | evan | yep! |
| 21:03:48 | dbussink | evan: do you know of any useful case where Class#initialize_copy would be useful in any wya? |
| 21:04:00 | dbussink | there's a spec that it should raise a TypeError too on an initialized class |
| 21:04:03 | evan | when copying a class |
| 21:04:04 | evan | ? |
| 21:04:10 | evan | Foo = Blah.dup |
| 21:04:12 | dbussink | but i have a hard time imagining a useful case |
| 21:04:17 | dbussink | and rubyspec also doesn't have one |
| 21:04:55 | dbussink | ah ok, guess there isn't a rubyspec for that then :) |
| 21:05:27 | evan | guess not! |
| 21:05:30 | evan | I disabled Class#dup actually for a bit |
| 21:05:42 | evan | but there are, strangely, things that need it |
| 21:05:45 | evan | the rails tests for one. |
| 21:06:17 | dbussink | hmm, looks like Class#dup bypasses initialize_copy in mri |
| 21:06:37 | evan | RAD. |
| 21:06:38 | evan | :/ |
| 21:08:55 | dbussink | evan: hmm, looks it might go through it after all, but the @instance_type trick won't work here |
| 21:08:59 | dbussink | since it's already copied |
| 21:09:34 | evan | find out what MRI checks for |
| 21:09:37 | evan | to raise that exception |
| 21:10:19 | dbussink | RCLASS(clone)->super |
| 21:11:19 | evan | ok, you can check @superclass |
| 21:12:52 | dbussink | hmm, already tried that but doesn't work, looks like it's already initialized in rbx at that point |
| 21:13:17 | evan | hm |
| 21:14:21 | dbussink | the object_copy_object is already executing, guess that also copies that information over |
| 21:15:03 | evan | it would, yeah |
| 21:17:32 | slava | what's a blow mage? |
| 21:22:15 | boyscout | Add support for uncommon exits inside exception handlers. - 4b4bd9a - Evan Phoenix |
| 21:22:25 | evan | finally got rid of that wart. |
| 21:27:06 | slava | looks like it was a lot of work |
| 21:27:41 | evan | i suspect you're being facious. |
| 21:27:49 | evan | but the internet is preventing me from knowing for sure. |
| 21:27:58 | slava | just an observation, that's all :) |
| 21:28:09 | slava | http://github.com/evanphx/rubinius/commit/4b4bd9a07da4278c75cdf5d8a462bde39572c1ef |
| 21:28:20 | slava | lots of separate classes got updated with knowledge of exceptions |
| 21:28:43 | evan | i had to propagate the exception type through |
| 21:29:03 | evan | then arrange for some alloca space to write the unwind info |
| 21:29:25 | evan | there is also a little cleanup in there |
| 21:29:32 | evan | of me nuking old commented out code |
| 21:29:33 | dbussink | evan: any other idea how i could fix that Class#initialize_copy spec? |
| 21:29:41 | evan | which spec? |
| 21:29:49 | evan | is it commited? |
| 21:30:02 | dbussink | yeah, it's tagged now |
| 21:30:11 | evan | lets see. |
| 21:30:12 | dbussink | spec/core/ruby/class/initialize_copy_spec.rb |
| 21:30:29 | dbussink | let me push the one i just fixed |
| 21:30:34 | evan | k |
| 21:30:41 | boyscout | Don't allow initializing a class twice - 24ef50e - Dirkjan Bussink |
| 21:30:41 | boyscout | Remove tag for now passing Class#initialize spec - b9f796b - Dirkjan Bussink |
| 21:31:01 | dbussink | so i though, fixing initialize_copy should be easy too |
| 21:31:05 | dbussink | but no luck :( |
| 21:32:41 | evan | lets see... |
| 21:32:44 | boyscout | CI: rubinius: 4b4bd9a successful: 3502 files, 14347 examples, 42111 expectations, 0 failures, 0 errors |
| 21:33:16 | evan | i guess that works for MRI because Object#dup doesn't copy ->super |
| 21:33:59 | evan | dbussink: so, i think we should go non-standard a little here |
| 21:34:30 | evan | hm... |
| 21:35:13 | evan | honestly, i don't know how to support this |
| 21:35:27 | evan | we've got a much more unified object layout |
| 21:35:27 | evan | that Object#dup understands |
| 21:35:37 | evan | so there isn't the case where the object is sort of half initialized |
| 21:35:43 | evan | which is the case that MRI is detecting. |
| 21:35:57 | dbussink | yeah, although the spec hangs and keeps running at 100% cpu |
| 21:36:03 | dbussink | so it's also not working ;) |
| 21:36:11 | evan | huh? |
| 21:36:18 | evan | it just hangs? |
| 21:36:22 | evan | thats really odd. |
| 21:36:38 | dbussink | if i run ./bin/mspec spec/ruby/core/class/initialize_copy_spec.rb it hangs |
| 21:36:41 | evan | it doesn't hanng for me. |
| 21:36:55 | evan | oh wait |
| 21:36:57 | evan | it does |
| 21:37:00 | evan | how odd. |
| 21:37:29 | dbussink | seems to end at some point though |
| 21:37:36 | dbussink | but looks like it crashed, because no output at all |
| 21:37:41 | dbussink | no failed spec |
| 21:37:50 | dbussink | or passed or anything for that matter |
| 21:38:10 | evan | yeah |
| 21:38:18 | evan | oh oh |
| 21:38:23 | evan | I've got it. |
| 21:38:45 | evan | raise TypeError, "already initialized" unless @method_table == other.method_table |
| 21:39:12 | evan | because dup will leave the original reference to orig's MethodTable object |
| 21:39:18 | dbussink | ah ok |
| 21:39:20 | evan | so if they're the same, you know you're there because dup just finished |
| 21:39:27 | evan | and if they're not, you know you shouldn't fuck with it. |
| 21:39:35 | dbussink | ah yeah, that makes sense :) |
| 21:39:52 | dbussink | you're fixing this or should i change it? |
| 21:40:47 | evan | you go for it. |
| 21:41:02 | evan | I think the destabilization in doing |
| 21:41:06 | evan | Object.initialize_copy String |
| 21:56:37 | halorgium | evan: brixen: time to profile this: |
| 21:56:37 | halorgium | rbx -S bundle exec rbx -S merb -r 'puts Time.now' 223.09s user 6.20s system 86% cpu 4:23.80 total |
| 21:57:01 | jakedouglas | heh |
| 21:58:06 | boyscout | Add special Class#initialize_copy to protect it from harm - b73e717 - Dirkjan Bussink |
| 21:58:06 | boyscout | Remove tag for now passing Class#initialize_copy spec - ed96648 - Dirkjan Bussink |
| 21:58:06 | boyscout | Tagged Enumerator#each spec looks stable - d9df3a1 - Dirkjan Bussink |
| 21:58:06 | boyscout | Remove tags for passing String#gsub! specs - 811480e - Dirkjan Bussink |
| 21:58:46 | dbussink | bedtime! |
| 21:58:47 | dbussink | nite |
| 22:06:38 | boyscout | CI: rubinius: 811480e successful: 3502 files, 14350 examples, 42116 expectations, 0 failures, 0 errors |