Show enters and exits. Hide enters and exits.
| 00:01:34 | jero5 | brixen: there's an alternative debugger at http://github.com/purity/rubinius/tree. it's not high level so it doesn't print object contents. it will at least print object metadata though once those commands are finished. it has a decent number of breakpoint options, although step can be quirky. |
| 00:10:13 | rue | That is a pretty succint activation |
| 00:16:19 | brixen | jero5: interesting |
| 00:16:38 | brixen | jero5: are you working on that? |
| 00:17:10 | jero5 | yeah |
| 00:18:35 | brixen | curious, why do it in cpp? |
| 00:18:45 | rue | Keep it up! Me, I am going to read some Dickens and then perform the act of Core Sleep |
| 00:21:22 | jero5 | i guess i'm not skilled enough to do it mostly in ruby and only a few primitives in cpp, yet :) |
| 00:21:43 | evan | jero5: feel free to keep working on it in cpp |
| 00:21:54 | evan | are you done with it? |
| 00:22:32 | brixen | jero5: that's cool, I was just curious |
| 00:23:18 | evan | jero5: i don't follow why there are files |
| 00:25:49 | brixen | I don't like this _handle convention all over capi, we already know VALUE is a handle :/ |
| 00:26:14 | evan | true |
| 00:31:59 | jero5 | evan: i only have the object-local and object-stack commands left to do of the planned features. i think i just used files because they're simple and it seemed like an easy way to centralize multiple rbx processes. |
| 00:32:23 | evan | why not named pipes? |
| 00:32:27 | evan | or normal pipes. |
| 00:32:57 | evan | using files for communication always seems like a hack to me |
| 00:35:19 | jero5 | it might be hackish then. i can't think of any reason files are superior to pipes at the moment. |
| 00:36:11 | evan | i always worry about the file being sync'd between the reader and writer processes |
| 00:38:15 | jero5 | yeah, differing sleep times is probably not optimal |
| 00:38:29 | evan | using pipes lets you use select() as well |
| 00:38:31 | evan | to detect data |
| 00:38:39 | evan | rather than polling on data in the file |
| 00:38:56 | evan | macournoyer: gooooood evening |
| 00:39:09 | macournoyer | hey evan what's up? |
| 00:40:15 | evan | watchin' mythbusters |
| 00:40:21 | evan | looking for a fridge and washing machine |
| 00:40:41 | macournoyer | oh you moving? |
| 00:40:58 | evan | yep |
| 00:41:04 | evan | finally closed on a new condo |
| 00:41:21 | macournoyer | wooh congrats! |
| 00:41:24 | evan | thanks! |
| 00:41:51 | evan | we've started to move stuff already |
| 00:42:14 | macournoyer | cool |
| 00:42:23 | macournoyer | I'm moving to my new house on mid june |
| 00:42:27 | evan | nice! |
| 00:42:36 | macournoyer | ya :) |
| 00:43:27 | macournoyer | hey, I'm looking at ideas on how to implement rescue/ensure and non local returns |
| 00:43:38 | macournoyer | could you point me somewhere in your code for that |
| 00:43:45 | evan | sure |
| 00:44:00 | evan | the current logic is pretty easy |
| 00:44:23 | evan | it's faster for me to explain |
| 00:44:35 | macournoyer | not sure I like how YARV does it, maybe there's some other way |
| 00:44:39 | macournoyer | you have a catch table? |
| 00:44:43 | evan | used to |
| 00:44:46 | evan | but not anymore |
| 00:44:59 | macournoyer | and you use C++ specific features? |
| 00:45:03 | evan | not at all |
| 00:45:07 | macournoyer | could I copy your design? |
| 00:45:11 | evan | very simple actually |
| 00:45:13 | evan | surely |
| 00:45:16 | macournoyer | awesome! |
| 00:45:17 | evan | it's easy |
| 00:45:25 | evan | whene there is an exception, you return NULL |
| 00:45:53 | macournoyer | Qfalse ? |
| 00:45:57 | evan | and so anything that might raise an exception, you need to check the return value for NULL |
| 00:46:00 | evan | no, NULL itself. |
| 00:46:04 | evan | well |
| 00:46:11 | evan | you want to use a value that is impossible to be returned normally |
| 00:46:29 | macournoyer | ok |
| 00:46:42 | evan | so you'd do something like |
| 00:47:12 | evan | if(send_method() == exception_is_present_value) handle_exception(); |
| 00:47:25 | evan | in rubinius, exception_is_present_value is NULL |
| 00:47:42 | macournoyer | ok |
| 00:48:03 | evan | so, there are 2 pieces of data that are thread local |
| 00:48:03 | macournoyer | so that's in your instruction to send a message too? |
| 00:48:35 | evan | well, here's what i do |
| 00:48:36 | macournoyer | I mean instruction as opcode implementation |
| 00:48:41 | evan | right |
| 00:48:51 | evan | the instruction detects there is an exception, and just propgates it |
| 00:48:55 | evan | ie, returns NULL |
| 00:49:13 | evan | the magic for the interpreter occurs in vmmethod.cpp |
| 00:49:18 | evan | in run_interpreter |
| 00:49:53 | evan | it detects an exception handle attempts to handle it |
| 00:50:09 | evan | to do that, it checks the 2 thread local values |
| 00:50:14 | evan | raise_reason and raise_value |
| 00:50:31 | macournoyer | ok, I see the switch |
| 00:50:39 | evan | raise_reason can be Exception, Break, Return, or Exit |
| 00:51:05 | evan | you can leave out Exit |
| 00:51:08 | evan | and just implement the first 3 |
| 00:51:13 | macournoyer | do you use longjmp? |
| 00:51:16 | evan | nope |
| 00:51:22 | macournoyer | nice |
| 00:51:47 | evan | the exception unwinds the call stack using explicit checks |
| 00:52:45 | evan | which means that all code that invokes code that might raise an exception has to be aware of that |
| 00:52:49 | evan | and check if an exception has been raised |
| 00:53:00 | evan | this, btw, is also how Python does it |
| 00:53:14 | macournoyer | or else, the exception is ignored... i see |
| 00:53:20 | evan | right |
| 00:53:30 | evan | it's got some nice features |
| 00:53:32 | evan | it's very portable |
| 00:54:04 | macournoyer | yes, very elegant, I like it |
| 00:54:09 | evan | and it's easy to organize the check code so that the CPUs branch prediction makes the check almost fere |
| 00:54:13 | evan | free |
| 00:54:28 | macournoyer | just w/ unlikely macro? |
| 00:54:53 | evan | yeah |
| 00:55:05 | evan | Object* val = send(...); |
| 00:55:11 | evan | if(unlikely(val == NULL)) handle(); |
| 00:56:07 | macournoyer | awesome! |
| 00:56:12 | macournoyer | that's what I'll do, thx! |
| 00:56:17 | evan | no prob! |
| 00:56:29 | evan | hopefully i'll be able to show you soon also |
| 00:56:43 | evan | that this scheme is really nice for JIT too |
| 00:57:01 | evan | because of the other part of the equation |
| 00:57:04 | evan | dynamic unwind info |
| 00:57:34 | macournoyer | oye, you lost me at dynamic unwind |
| 00:57:37 | renard | hi, I am a newbie to irc, pardon if I breach the proper manners |
| 00:57:37 | evan | ok |
| 00:57:45 | evan | renard: sure, wassup? |
| 00:58:10 | renard | Ii would like to ask about installing rubinius |
| 00:58:26 | evan | macournoyer: at a 'begin', you emit a setup_unwind instruction |
| 00:58:45 | evan | renard: ok, it's not really at a stage where it can be installed |
| 00:58:55 | renard | I have read the instructions and I do have the prequisites |
| 00:59:44 | renard | my specific question is how to install rubinius in a specific directory |
| 00:59:55 | evan | we don't have that ability right now. |
| 01:00:00 | renard | I am on a Mac |
| 01:00:23 | evan | we've not written any code to do that |
| 01:00:40 | renard | so where does it install by default |
| 01:00:49 | evan | it doesn't. |
| 01:00:59 | brixen | renard: just build it and run it from the build dir |
| 01:00:59 | evan | there is no commands to install it |
| 01:01:07 | brixen | there are, but it is broken |
| 01:01:13 | brixen | don't try to install right now |
| 01:01:36 | renard | pardon me what does rake install do? |
| 01:01:38 | brixen | there is no need to install |
| 01:01:44 | brixen | renard: it is broken right now |
| 01:02:03 | macournoyer | you can clone the repo where you want, compile and add ./bin to your PATH |
| 01:02:13 | renard | okay thank you I will wait till its works |
| 01:02:16 | macournoyer | will be 'installed' |
| 01:02:27 | brixen | right, there is no need to install it |
| 01:02:36 | rue | brixen: Yeah, see, it makes sense when you compose code like `object = object_from(handle);`, but since, apparently, we want to move *away* from naturally flowing code, it is less graceful. |
| 01:03:30 | brixen | rue: there's tons of places it's just passed through to rb_funcal |
| 01:03:36 | brixen | mostly it's noise |
| 01:05:49 | rue | Yes, I am sure it is. |
| 01:15:41 | evan | brb, i need to reset my sarcasm detector. |
| 01:21:18 | brixen | cool, float spec using bigdecimal passed |
| 01:21:31 | brixen | why we have stdlib specs in core is another matter |
| 01:24:32 | brixen | sweet, most of the bigdecimal specs passing |
| 01:54:12 | evan | brixen: yay! |
| 01:54:36 | brixen | yeah, pretty cool |
| 01:57:32 | jero5 | evan: a benefit of files might be that you could theoretically write out a bunch of commands "offline". so it would be easier to issue a repeatable sequence of commands. or even to replay a previous session maybe. not sure that would ever be useful though. |
| 01:58:26 | evan | hm, interesting. |
| 01:58:39 | evan | i'm not sure how useful that would be |
| 01:58:52 | evan | i've never had that ability to debug |
| 01:59:02 | evan | and can't say i've ever thought it would be useful |
| 01:59:10 | evan | but i dunno. |
| 02:34:15 | evan | jero5: something really interesting to consider |
| 02:34:33 | evan | jero5: would be to intergrate an existing debug API at the C++ level |
| 02:35:56 | evan | I think there is one called xdebug |
| 02:35:56 | evan | anyway, bbiab. |
| 02:47:20 | seydar | brixen: goruco? |
| 02:53:03 | brixen | seydar: unfortunately not this time |
| 02:53:48 | seydar | /kick brixen GTFO |
| 02:53:54 | brixen | heh |
| 02:53:56 | brixen | sorry man |
| 02:54:19 | seydar | worries, man. Lots of worries |
| 02:55:08 | seydar | brixen: you're in SF, right? |
| 02:55:25 | brixen | seydar: nah, Portland OR |
| 02:55:46 | seydar | wait, who lives in SF then? |
| 02:55:58 | brixen | lots of people |
| 02:56:00 | seydar | not to be creepy or anything |
| 02:56:00 | brixen | :) |
| 02:56:25 | seydar | my boss decided to take the term off of school and he bought his ticket to SF today. He leaves on wednesday :-| |
| 02:56:31 | brixen | evan and I have to hold down opposite ends of the west coast |
| 02:56:46 | brixen | otherwise all the brains in SF will cause a big dip in the earth |
| 02:57:05 | seydar | hahaha it's hard for me to think that any place can hold more than 5k people |
| 02:57:26 | seydar | headius: you really do look like my bio teacher, fyi |
| 02:58:44 | brixen | seydar: btw, you've got rbx building on your ppc, right? |
| 02:59:29 | seydar | :-( |
| 02:59:37 | seydar | lemme try again. it's been a few weeks |
| 02:59:57 | brixen | evan made the dlmalloc optional I think |
| 03:00:01 | brixen | le'me check.. |
| 03:00:09 | seydar | if i get paid in the next month what i'm supposed to get paid, i'll be getting an intel mac and living the good life |
| 03:00:37 | seydar | brixen: gah! bedtime and a merge. i'll fill you in tomorrow, k? |
| 07:12:59 | rue | Dust specs |
| 07:13:05 | rue | it "floats around" |
| 07:41:54 | tilman | rue: do you happen to know why Time::time_switch creates a new array rather than filling the existing one? |
| 07:59:56 | rue | No, maybe just duplication from some other method |
| 08:00:05 | rue | The commit does not seem to have any details |
| 08:01:56 | tilman | k |
| 08:52:36 | tilman | http://f7d322d6c71e36c6.paste.se/ o_O? |
| 08:52:51 | tilman | oh boy |
| 08:53:07 | tilman | i clearly didn't have enough sleep or caffeine |
| 09:01:33 | dbussink | tilman: that explains the previous question i guess :) |
| 09:01:43 | tilman | yes :] |
| 09:02:06 | tilman | i thought i was dup'ing time objects :D |
| 10:44:38 | tilman | why does eg kernel/common/kernel.rb not depend on time.rb even though it references Time.now? |
| 10:44:55 | tilman | depend on as in "# depends on: time.rb" :) |
| 10:45:56 | rue | tilman: The dependency is only required if the code is needed when executing the file itself |
| 10:46:06 | rue | (If it is, then, yes, it should be there) |
| 10:47:05 | tilman | runtime/common/load_order.txt has time.rbc after kernel.rbc |
| 10:47:09 | tilman | so i guess it isn't needed |
| 10:47:38 | tilman | i was a bit worried that moving that gettimeofday call to Time#initialize (in common/) might break things |
| 10:48:02 | rue | No, that should be fine |
| 10:48:10 | tilman | great |
| 10:48:17 | tilman | i have a smaller patch than last night, too |
| 10:48:28 | rue | If you had something like `module Kernel; @@moomin = Time.now; ...`, you would need to have the dependency |
| 10:48:35 | tilman | i see |
| 10:48:58 | rue | Because that code executes at kernel load time |
| 10:49:21 | tilman | right |
| 10:50:12 | rue | The #scala people are weird. |
| 10:50:29 | tilman | weird how? |
| 10:52:40 | rue | I dunno, just..weird. |
| 10:52:55 | tilman | hehe |
| 10:54:32 | rue | I think emblematically they seem to be very averse to having public logs for some undefinable reason |
| 10:54:43 | rue | Nice folks mainly, mind you |
| 10:55:09 | tilman | what kind of logs? |
| 10:55:17 | tilman | irc or vcs? :p |
| 10:56:57 | rue | IRC |
| 10:57:30 | rue | There is still very little saturation of Scala info on the 'Net, so they would be handy. |
| 10:57:35 | rue | But I have digressed. |
| 10:57:42 | rue | tilman: You going to EuRuKo? |
| 10:57:49 | tilman | nope |
| 10:58:14 | tilman | never attended a ruby conference |
| 11:05:07 | malumalu | hm, did anyone ever try to apply ssa to the sexps and optimize the bytecode? |
| 11:08:54 | boyscout | Time#gettimeofday and Time#time_switch are only called when needed now. - 7ac5cdc - Tilman Sauerbeck |
| 11:12:37 | tilman | come on, tell me it works on osx as well |
| 11:12:59 | boyscout | CI: 7ac5cdc success. 1501 files, 7214 examples, 23623 expectations, 0 failures, 0 errors |
| 11:14:06 | tilman | thank you |
| 12:48:48 | boyscout | Don't stat rb/rbc files twice in Compiler::Utils.single_load. - e9da5ae - Tilman Sauerbeck |
| 12:53:04 | boyscout | CI: e9da5ae success. 1501 files, 7214 examples, 23623 expectations, 0 failures, 0 errors |
| 16:11:43 | Rich_Morin | In case anyone here is interested, Allison Randal will be talking about Parrot at BALUG on the 21st - http://www.balug.org |
| 16:29:13 | evan | morning. |
| 16:31:10 | brixen | morning |
| 16:31:20 | brixen | no here's a bit of humor |
| 16:31:24 | brixen | er so |
| 16:31:43 | brixen | I imported 1.9's bigdecimal because it was cleaned up a lot |
| 16:31:52 | brixen | turns out, it fails over 40 tests |
| 16:32:10 | brixen | so of the 67 failures in rbx, 40+ are just 1.9 |
| 16:32:18 | brixen | oh mri, you so... |
| 16:32:22 | evan | weeee |
| 16:32:38 | rue | Evening |
| 16:33:33 | evan | well, new office is setup |
| 16:33:46 | brixen | nice |
| 16:39:11 | rue | Pics or it did not happen. |
| 16:39:24 | rue | And I can tell stuff by the pixels. |
| 16:40:09 | evan | pic is on facebook |
| 16:40:16 | evan | do you have facebook access? |
| 16:40:45 | rue | Eew no, I believe you, I believe you! |
| 16:40:59 | evan | hah |
| 16:41:03 | evan | one sec. |
| 16:41:28 | therealadam | evan: I need an action shot |
| 16:41:49 | evan | that will be hard |
| 16:41:52 | evan | i'm the only one here |
| 16:41:57 | evan | even fog is back at the apartment |
| 16:43:13 | rue | Do phone cameras usually have a timer function? |
| 16:43:28 | evan | it's hard to prop them up |
| 16:43:32 | evan | but i shall check.. |
| 16:45:07 | therealadam | evan: just do one like me |
| 16:45:08 | therealadam | http://www.flickr.com/photos/therealadam/3438054271/ |
| 16:45:23 | evan | http://skitch.com/evanphx/bmt42/facebook-my-photos-mobile-uploads |
| 16:45:38 | evan | oh noes! |
| 16:45:39 | evan | cat attack! |
| 16:45:45 | evan | activate the spike ball! |
| 16:45:55 | therealadam | actually I attacked her |
| 16:46:03 | evan | heh |
| 16:46:09 | evan | so, the only thing in the loft pretty much is my desk now |
| 16:46:25 | evan | so the "action shot" from my isight camera makes it look like i'm in an empty studio |
| 16:47:41 | therealadam | heh |
| 16:47:45 | evan | action shot! |
| 16:47:46 | evan | http://skitch.com/evanphx/bmt5b/photo-booth |
| 16:48:00 | therealadam | well played |
| 16:48:09 | evan | i've got another good one |
| 16:48:10 | evan | one sec. |
| 16:48:45 | rue | That layout looks really nice. |
| 16:50:32 | evan | yeah |
| 16:50:38 | evan | the plan is to get a screen or something |
| 16:50:46 | evan | to go behind where my chair is |
| 16:50:50 | evan | on the other side of the window |
| 16:50:55 | evan | so I actually have an office area |
| 16:51:14 | evan | action shot #2: http://gallery.me.com/evanphx#100046/IMG_0114&bgcolor=black |
| 16:51:17 | evan | that was last night |
| 16:51:24 | evan | before I setup the desk |
| 16:52:00 | brixen | looks nice! |
| 16:52:15 | evan | yeah! |
| 16:52:23 | therealadam | brilliant |
| 16:52:31 | brixen | lofts are the best |
| 16:52:35 | therealadam | that's your easter action shot, clearly |
| 16:52:49 | evan | look at me! I'm jesus back from spikey ball land! |
| 16:53:49 | evan | brixen: we brought over a table and chair for ya to work at :D |
| 16:53:53 | evan | it's just not in the picture |
| 16:55:51 | brixen | yay, I won't be sitting on the floor :) |
| 16:56:11 | evan | :D |
| 16:56:16 | brixen | so, crazy bit of mri trivia: '+' is a symbol |
| 16:56:31 | brixen | so is '-', '*', '/' |
| 16:56:49 | brixen | so this code does an rb_funcall to '+' |
| 16:57:12 | binary42 | brixen: aren't all valid method names also symbols? |
| 16:57:23 | binary42 | :-@.class #=> Symbol |
| 16:57:28 | brixen | binary42: that's not an rb_intern("+") |
| 16:57:34 | binary42 | Ah. |
| 16:57:35 | brixen | it's just a C char |
| 16:57:44 | brixen | crazytown |
| 16:57:52 | binary42 | Oh... now that is trivia. |
| 16:58:02 | brixen | ranks in the category of short variable names for speed :) |
| 16:58:08 | evan | oh right |
| 16:58:17 | evan | if you check out the parser |
| 16:58:19 | evan | you'll see why |
| 16:58:27 | evan | it will take you 2 weeks to detect the code though |
| 16:58:31 | evan | so let me fast forward |
| 16:58:34 | brixen | heh |
| 16:58:45 | evan | there is an array of operators |
| 16:58:56 | evan | because the parser itself deals in IDs for everything |
| 16:59:13 | evan | the supported operators are automatically mapped as IDs directly |
| 16:59:23 | brixen | makes sense |
| 16:59:33 | evan | they're basically special cased |
| 16:59:40 | brixen | it's great for writing portable code too :) |
| 16:59:47 | evan | hah |
| 16:59:54 | evan | whatable code? |
| 16:59:56 | evan | whats that? |
| 17:00:00 | brixen | hah |
| 17:10:56 | rue | At least they are not doing the mapping directly from the ASCII character |
| 17:12:03 | rue | Omitting join/part messages is nice. |
| 17:15:34 | tilman | evan: can i remove the c++ Marshaller class? it's not used these days |
| 17:19:17 | evan | tilman: yeah, i think thats ok. |
| 17:22:52 | rue | Action shot: http://the-lang.org/images/irc.png |
| 17:24:58 | evan | :D |
| 17:38:08 | tilman | alright |
| 17:39:59 | boyscout | Remove timeval from being an Array - 8da7aa1 - Evan Phoenix |
| 17:39:59 | boyscout | Improve type safety - 5306f8c - Evan Phoenix |
| 17:40:11 | evan | tilman: I couldn't resist finally fixing that. |
| 17:40:19 | evan | having timeval be an Array was stupid. |
| 17:42:09 | tilman | :) |
| 17:42:46 | tilman | evan: i wondered whether Time::time_switch needs to always run Array::create rather than just fill the existing array |
| 17:42:54 | evan | no clue |
| 17:43:00 | evan | i forget who wrote this code originally |
| 17:43:13 | evan | and why they used an array for timeval |
| 17:43:18 | tilman | i wrote parts of it (before the c++ port) |
| 17:43:36 | tilman | not sure about timeval :D |
| 17:44:44 | boyscout | CI: 5306f8c success. 1501 files, 7214 examples, 23623 expectations, 0 failures, 0 errors |
| 17:44:59 | tilman | evan: i'll merge in my rbc patch series then, okay? |
| 17:45:11 | evan | well |
| 17:45:23 | evan | brixen commented on it before |
| 17:45:27 | evan | so i'd like him to weigh in |
| 17:45:31 | evan | before doing so. |
| 17:45:38 | tilman | okay |
| 17:48:42 | brixen | evan: if you think it's better, that's cool |
| 17:49:13 | evan | tilman: since you're updating it, would ya mind updating the .txt file about it too? |
| 17:49:19 | brixen | if I have to debug rbcs, I'll send them to tilman :) |
| 17:49:46 | tilman | brixen: if you have to debug rbcs, you can run them through lib/bin/describe_rbc |
| 17:50:01 | tilman | brixen: which will give you the same output as we use currently :) |
| 17:50:14 | tilman | but feel free to send them to me, too |
| 17:50:18 | tilman | evan: sure |
| 17:50:19 | brixen | cool |
| 17:50:24 | brixen | sweet! 51 files, 242 examples, 2985 expectations, 16 failures, 3 errors |
| 17:50:30 | brixen | that's bigdecimal |
| 17:57:23 | evan | woop woop! |
| 17:57:40 | evan | tilman: go ahead and merge it in |
| 17:57:53 | evan | tilman: please also update the doc about the rbc format |
| 17:58:36 | tilman | will do |
| 17:58:48 | tilman | not tonight, but in the next few days |
| 17:59:01 | evan | ok. |