Index

Show enters and exits. Hide enters and exits.

00:01:34jero5brixen: 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:13rueThat is a pretty succint activation
00:16:19brixenjero5: interesting
00:16:38brixenjero5: are you working on that?
00:17:10jero5yeah
00:18:35brixencurious, why do it in cpp?
00:18:45rueKeep it up! Me, I am going to read some Dickens and then perform the act of Core Sleep
00:21:22jero5i guess i'm not skilled enough to do it mostly in ruby and only a few primitives in cpp, yet :)
00:21:43evanjero5: feel free to keep working on it in cpp
00:21:54evanare you done with it?
00:22:32brixenjero5: that's cool, I was just curious
00:23:18evanjero5: i don't follow why there are files
00:25:49brixenI don't like this _handle convention all over capi, we already know VALUE is a handle :/
00:26:14evantrue
00:31:59jero5evan: 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:23evanwhy not named pipes?
00:32:27evanor normal pipes.
00:32:57evanusing files for communication always seems like a hack to me
00:35:19jero5it might be hackish then. i can't think of any reason files are superior to pipes at the moment.
00:36:11evani always worry about the file being sync'd between the reader and writer processes
00:38:15jero5yeah, differing sleep times is probably not optimal
00:38:29evanusing pipes lets you use select() as well
00:38:31evanto detect data
00:38:39evanrather than polling on data in the file
00:38:56evanmacournoyer: gooooood evening
00:39:09macournoyerhey evan what's up?
00:40:15evanwatchin' mythbusters
00:40:21evanlooking for a fridge and washing machine
00:40:41macournoyeroh you moving?
00:40:58evanyep
00:41:04evanfinally closed on a new condo
00:41:21macournoyerwooh congrats!
00:41:24evanthanks!
00:41:51evanwe've started to move stuff already
00:42:14macournoyercool
00:42:23macournoyerI'm moving to my new house on mid june
00:42:27evannice!
00:42:36macournoyerya :)
00:43:27macournoyerhey, I'm looking at ideas on how to implement rescue/ensure and non local returns
00:43:38macournoyercould you point me somewhere in your code for that
00:43:45evansure
00:44:00evanthe current logic is pretty easy
00:44:23evanit's faster for me to explain
00:44:35macournoyernot sure I like how YARV does it, maybe there's some other way
00:44:39macournoyeryou have a catch table?
00:44:43evanused to
00:44:46evanbut not anymore
00:44:59macournoyerand you use C++ specific features?
00:45:03evannot at all
00:45:07macournoyercould I copy your design?
00:45:11evanvery simple actually
00:45:13evansurely
00:45:16macournoyerawesome!
00:45:17evanit's easy
00:45:25evanwhene there is an exception, you return NULL
00:45:53macournoyerQfalse ?
00:45:57evanand so anything that might raise an exception, you need to check the return value for NULL
00:46:00evanno, NULL itself.
00:46:04evanwell
00:46:11evanyou want to use a value that is impossible to be returned normally
00:46:29macournoyerok
00:46:42evanso you'd do something like
00:47:12evanif(send_method() == exception_is_present_value) handle_exception();
00:47:25evanin rubinius, exception_is_present_value is NULL
00:47:42macournoyerok
00:48:03evanso, there are 2 pieces of data that are thread local
00:48:03macournoyerso that's in your instruction to send a message too?
00:48:35evanwell, here's what i do
00:48:36macournoyerI mean instruction as opcode implementation
00:48:41evanright
00:48:51evanthe instruction detects there is an exception, and just propgates it
00:48:55evanie, returns NULL
00:49:13evanthe magic for the interpreter occurs in vmmethod.cpp
00:49:18evanin run_interpreter
00:49:53evanit detects an exception handle attempts to handle it
00:50:09evanto do that, it checks the 2 thread local values
00:50:14evanraise_reason and raise_value
00:50:31macournoyerok, I see the switch
00:50:39evanraise_reason can be Exception, Break, Return, or Exit
00:51:05evanyou can leave out Exit
00:51:08evanand just implement the first 3
00:51:13macournoyerdo you use longjmp?
00:51:16evannope
00:51:22macournoyernice
00:51:47evanthe exception unwinds the call stack using explicit checks
00:52:45evanwhich means that all code that invokes code that might raise an exception has to be aware of that
00:52:49evanand check if an exception has been raised
00:53:00evanthis, btw, is also how Python does it
00:53:14macournoyeror else, the exception is ignored... i see
00:53:20evanright
00:53:30evanit's got some nice features
00:53:32evanit's very portable
00:54:04macournoyeryes, very elegant, I like it
00:54:09evanand it's easy to organize the check code so that the CPUs branch prediction makes the check almost fere
00:54:13evanfree
00:54:28macournoyerjust w/ unlikely macro?
00:54:53evanyeah
00:55:05evanObject* val = send(...);
00:55:11evanif(unlikely(val == NULL)) handle();
00:56:07macournoyerawesome!
00:56:12macournoyerthat's what I'll do, thx!
00:56:17evanno prob!
00:56:29evanhopefully i'll be able to show you soon also
00:56:43evanthat this scheme is really nice for JIT too
00:57:01evanbecause of the other part of the equation
00:57:04evandynamic unwind info
00:57:34macournoyeroye, you lost me at dynamic unwind
00:57:37renardhi, I am a newbie to irc, pardon if I breach the proper manners
00:57:37evanok
00:57:45evanrenard: sure, wassup?
00:58:10renardIi would like to ask about installing rubinius
00:58:26evanmacournoyer: at a 'begin', you emit a setup_unwind instruction
00:58:45evanrenard: ok, it's not really at a stage where it can be installed
00:58:55renardI have read the instructions and I do have the prequisites
00:59:44renardmy specific question is how to install rubinius in a specific directory
00:59:55evanwe don't have that ability right now.
01:00:00renardI am on a Mac
01:00:23evanwe've not written any code to do that
01:00:40renardso where does it install by default
01:00:49evanit doesn't.
01:00:59brixenrenard: just build it and run it from the build dir
01:00:59evanthere is no commands to install it
01:01:07brixenthere are, but it is broken
01:01:13brixendon't try to install right now
01:01:36renardpardon me what does rake install do?
01:01:38brixenthere is no need to install
01:01:44brixenrenard: it is broken right now
01:02:03macournoyeryou can clone the repo where you want, compile and add ./bin to your PATH
01:02:13renardokay thank you I will wait till its works
01:02:16macournoyerwill be 'installed'
01:02:27brixenright, there is no need to install it
01:02:36ruebrixen: 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:30brixenrue: there's tons of places it's just passed through to rb_funcal
01:03:36brixenmostly it's noise
01:05:49rueYes, I am sure it is.
01:15:41evanbrb, i need to reset my sarcasm detector.
01:21:18brixencool, float spec using bigdecimal passed
01:21:31brixenwhy we have stdlib specs in core is another matter
01:24:32brixensweet, most of the bigdecimal specs passing
01:54:12evanbrixen: yay!
01:54:36brixenyeah, pretty cool
01:57:32jero5evan: 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:26evanhm, interesting.
01:58:39evani'm not sure how useful that would be
01:58:52evani've never had that ability to debug
01:59:02evanand can't say i've ever thought it would be useful
01:59:10evanbut i dunno.
02:34:15evanjero5: something really interesting to consider
02:34:33evanjero5: would be to intergrate an existing debug API at the C++ level
02:35:56evanI think there is one called xdebug
02:35:56evananyway, bbiab.
02:47:20seydarbrixen: goruco?
02:53:03brixenseydar: unfortunately not this time
02:53:48seydar /kick brixen GTFO
02:53:54brixenheh
02:53:56brixensorry man
02:54:19seydarworries, man. Lots of worries
02:55:08seydarbrixen: you're in SF, right?
02:55:25brixenseydar: nah, Portland OR
02:55:46seydarwait, who lives in SF then?
02:55:58brixenlots of people
02:56:00seydarnot to be creepy or anything
02:56:00brixen:)
02:56:25seydarmy boss decided to take the term off of school and he bought his ticket to SF today. He leaves on wednesday :-|
02:56:31brixenevan and I have to hold down opposite ends of the west coast
02:56:46brixenotherwise all the brains in SF will cause a big dip in the earth
02:57:05seydarhahaha it's hard for me to think that any place can hold more than 5k people
02:57:26seydarheadius: you really do look like my bio teacher, fyi
02:58:44brixenseydar: btw, you've got rbx building on your ppc, right?
02:59:29seydar:-(
02:59:37seydarlemme try again. it's been a few weeks
02:59:57brixenevan made the dlmalloc optional I think
03:00:01brixenle'me check..
03:00:09seydarif 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:37seydarbrixen: gah! bedtime and a merge. i'll fill you in tomorrow, k?
07:12:59rueDust specs
07:13:05rueit "floats around"
07:41:54tilmanrue: do you happen to know why Time::time_switch creates a new array rather than filling the existing one?
07:59:56rueNo, maybe just duplication from some other method
08:00:05rueThe commit does not seem to have any details
08:01:56tilmank
08:52:36tilmanhttp://f7d322d6c71e36c6.paste.se/ o_O?
08:52:51tilmanoh boy
08:53:07tilmani clearly didn't have enough sleep or caffeine
09:01:33dbussinktilman: that explains the previous question i guess :)
09:01:43tilmanyes :]
09:02:06tilmani thought i was dup'ing time objects :D
10:44:38tilmanwhy does eg kernel/common/kernel.rb not depend on time.rb even though it references Time.now?
10:44:55tilmandepend on as in "# depends on: time.rb" :)
10:45:56ruetilman: The dependency is only required if the code is needed when executing the file itself
10:46:06rue(If it is, then, yes, it should be there)
10:47:05tilmanruntime/common/load_order.txt has time.rbc after kernel.rbc
10:47:09tilmanso i guess it isn't needed
10:47:38tilmani was a bit worried that moving that gettimeofday call to Time#initialize (in common/) might break things
10:48:02rueNo, that should be fine
10:48:10tilmangreat
10:48:17tilmani have a smaller patch than last night, too
10:48:28rueIf you had something like `module Kernel; @@moomin = Time.now; ...`, you would need to have the dependency
10:48:35tilmani see
10:48:58rueBecause that code executes at kernel load time
10:49:21tilmanright
10:50:12rueThe #scala people are weird.
10:50:29tilmanweird how?
10:52:40rueI dunno, just..weird.
10:52:55tilmanhehe
10:54:32rueI think emblematically they seem to be very averse to having public logs for some undefinable reason
10:54:43rueNice folks mainly, mind you
10:55:09tilmanwhat kind of logs?
10:55:17tilmanirc or vcs? :p
10:56:57rueIRC
10:57:30rueThere is still very little saturation of Scala info on the 'Net, so they would be handy.
10:57:35rueBut I have digressed.
10:57:42ruetilman: You going to EuRuKo?
10:57:49tilmannope
10:58:14tilmannever attended a ruby conference
11:05:07malumaluhm, did anyone ever try to apply ssa to the sexps and optimize the bytecode?
11:08:54boyscoutTime#gettimeofday and Time#time_switch are only called when needed now. - 7ac5cdc - Tilman Sauerbeck
11:12:37tilmancome on, tell me it works on osx as well
11:12:59boyscoutCI: 7ac5cdc success. 1501 files, 7214 examples, 23623 expectations, 0 failures, 0 errors
11:14:06tilmanthank you
12:48:48boyscoutDon't stat rb/rbc files twice in Compiler::Utils.single_load. - e9da5ae - Tilman Sauerbeck
12:53:04boyscoutCI: e9da5ae success. 1501 files, 7214 examples, 23623 expectations, 0 failures, 0 errors
16:11:43Rich_MorinIn case anyone here is interested, Allison Randal will be talking about Parrot at BALUG on the 21st - http://www.balug.org
16:29:13evanmorning.
16:31:10brixenmorning
16:31:20brixenno here's a bit of humor
16:31:24brixener so
16:31:43brixenI imported 1.9's bigdecimal because it was cleaned up a lot
16:31:52brixenturns out, it fails over 40 tests
16:32:10brixenso of the 67 failures in rbx, 40+ are just 1.9
16:32:18brixenoh mri, you so...
16:32:22evanweeee
16:32:38rueEvening
16:33:33evanwell, new office is setup
16:33:46brixennice
16:39:11ruePics or it did not happen.
16:39:24rueAnd I can tell stuff by the pixels.
16:40:09evanpic is on facebook
16:40:16evando you have facebook access?
16:40:45rueEew no, I believe you, I believe you!
16:40:59evanhah
16:41:03evanone sec.
16:41:28therealadamevan: I need an action shot
16:41:49evanthat will be hard
16:41:52evani'm the only one here
16:41:57evaneven fog is back at the apartment
16:43:13rueDo phone cameras usually have a timer function?
16:43:28evanit's hard to prop them up
16:43:32evanbut i shall check..
16:45:07therealadamevan: just do one like me
16:45:08therealadamhttp://www.flickr.com/photos/therealadam/3438054271/
16:45:23evanhttp://skitch.com/evanphx/bmt42/facebook-my-photos-mobile-uploads
16:45:38evanoh noes!
16:45:39evancat attack!
16:45:45evanactivate the spike ball!
16:45:55therealadamactually I attacked her
16:46:03evanheh
16:46:09evanso, the only thing in the loft pretty much is my desk now
16:46:25evanso the "action shot" from my isight camera makes it look like i'm in an empty studio
16:47:41therealadamheh
16:47:45evanaction shot!
16:47:46evanhttp://skitch.com/evanphx/bmt5b/photo-booth
16:48:00therealadamwell played
16:48:09evani've got another good one
16:48:10evanone sec.
16:48:45rueThat layout looks really nice.
16:50:32evanyeah
16:50:38evanthe plan is to get a screen or something
16:50:46evanto go behind where my chair is
16:50:50evanon the other side of the window
16:50:55evanso I actually have an office area
16:51:14evanaction shot #2: http://gallery.me.com/evanphx#100046/IMG_0114&bgcolor=black
16:51:17evanthat was last night
16:51:24evanbefore I setup the desk
16:52:00brixenlooks nice!
16:52:15evanyeah!
16:52:23therealadambrilliant
16:52:31brixenlofts are the best
16:52:35therealadamthat's your easter action shot, clearly
16:52:49evanlook at me! I'm jesus back from spikey ball land!
16:53:49evanbrixen: we brought over a table and chair for ya to work at :D
16:53:53evanit's just not in the picture
16:55:51brixenyay, I won't be sitting on the floor :)
16:56:11evan:D
16:56:16brixenso, crazy bit of mri trivia: '+' is a symbol
16:56:31brixenso is '-', '*', '/'
16:56:49brixenso this code does an rb_funcall to '+'
16:57:12binary42brixen: aren't all valid method names also symbols?
16:57:23binary42:-@.class #=> Symbol
16:57:28brixenbinary42: that's not an rb_intern("+")
16:57:34binary42Ah.
16:57:35brixenit's just a C char
16:57:44brixencrazytown
16:57:52binary42Oh... now that is trivia.
16:58:02brixenranks in the category of short variable names for speed :)
16:58:08evanoh right
16:58:17evanif you check out the parser
16:58:19evanyou'll see why
16:58:27evanit will take you 2 weeks to detect the code though
16:58:31evanso let me fast forward
16:58:34brixenheh
16:58:45evanthere is an array of operators
16:58:56evanbecause the parser itself deals in IDs for everything
16:59:13evanthe supported operators are automatically mapped as IDs directly
16:59:23brixenmakes sense
16:59:33evanthey're basically special cased
16:59:40brixenit's great for writing portable code too :)
16:59:47evanhah
16:59:54evanwhatable code?
16:59:56evanwhats that?
17:00:00brixenhah
17:10:56rueAt least they are not doing the mapping directly from the ASCII character
17:12:03rueOmitting join/part messages is nice.
17:15:34tilmanevan: can i remove the c++ Marshaller class? it's not used these days
17:19:17evantilman: yeah, i think thats ok.
17:22:52rueAction shot: http://the-lang.org/images/irc.png
17:24:58evan:D
17:38:08tilmanalright
17:39:59boyscoutRemove timeval from being an Array - 8da7aa1 - Evan Phoenix
17:39:59boyscoutImprove type safety - 5306f8c - Evan Phoenix
17:40:11evantilman: I couldn't resist finally fixing that.
17:40:19evanhaving timeval be an Array was stupid.
17:42:09tilman:)
17:42:46tilmanevan: i wondered whether Time::time_switch needs to always run Array::create rather than just fill the existing array
17:42:54evanno clue
17:43:00evani forget who wrote this code originally
17:43:13evanand why they used an array for timeval
17:43:18tilmani wrote parts of it (before the c++ port)
17:43:36tilmannot sure about timeval :D
17:44:44boyscoutCI: 5306f8c success. 1501 files, 7214 examples, 23623 expectations, 0 failures, 0 errors
17:44:59tilmanevan: i'll merge in my rbc patch series then, okay?
17:45:11evanwell
17:45:23evanbrixen commented on it before
17:45:27evanso i'd like him to weigh in
17:45:31evanbefore doing so.
17:45:38tilmanokay
17:48:42brixenevan: if you think it's better, that's cool
17:49:13evantilman: since you're updating it, would ya mind updating the .txt file about it too?
17:49:19brixenif I have to debug rbcs, I'll send them to tilman :)
17:49:46tilmanbrixen: if you have to debug rbcs, you can run them through lib/bin/describe_rbc
17:50:01tilmanbrixen: which will give you the same output as we use currently :)
17:50:14tilmanbut feel free to send them to me, too
17:50:18tilmanevan: sure
17:50:19brixencool
17:50:24brixensweet! 51 files, 242 examples, 2985 expectations, 16 failures, 3 errors
17:50:30brixenthat's bigdecimal
17:57:23evanwoop woop!
17:57:40evantilman: go ahead and merge it in
17:57:53evantilman: please also update the doc about the rbc format
17:58:36tilmanwill do
17:58:48tilmannot tonight, but in the next few days
17:59:01evanok.