Index

Show enters and exits. Hide enters and exits.

00:41:14boyscoutUpgrade to RubyGems 1.3.4 - 93dc928 - Evan Phoenix
00:41:14boyscoutFix return used in a block passed to Module#define_method - 3419d86 - Evan Phoenix
01:24:35boyscoutProperly remove instance variables - 53f972a - Evan Phoenix
01:31:26tarcieriwtf @ "Ruby for Python"
01:47:36tarcierievan: I am now appreciating what you must've felt getting a compiled eval working, heh
01:50:38ddubtarcieri: is "Ruby for Python" a set of lessons for Python developers to switch to Ruby? Sounds like a reasonable idea
02:08:21evantarcieri: yeah, it was an amazing feeling when i got eval passing it's specs.
02:14:15slavaevan: why is eval so hard?
02:20:07tarcierislava: generating a "statically" compiled representation of a complex scripting language is... hard
02:20:54tarcieriddub: it was on ruby-talk
02:20:59tarcieriI recommend against clicking the link
02:21:35ddubtarcieri: I know I was wrong, but what a nice world it would be if that was what the thread really was about?
02:21:50tarcieriheh
02:22:00dduband, I think really your problem with eval is that you are trying to implement it correctly
02:22:11ddubwhere correctly means 'what MRI allowed you to get away with'
02:22:26tarcierimy eval is whatever I want it to be!
02:22:43tarcieriunfortunately what I want it to be is rather complex
02:22:52ddubeval becomes trivial to implement, all you have to do is have an interpreter walk over an AST
02:23:00ddubi.e. implement it just like MRI did
02:23:00ddub:)
02:23:01tarcierislava: I have to decorate the parse tree so it returns both the "real" return value and the last version of all bound variables
02:23:11tarcierino mutable state and all
02:24:30ddubI'm trying to make a PEG for ruby, but I don't really know the majority of the corner cases of the grammar
02:24:49tarcieriwith Treetop?
02:25:02ddubpegleg right now
02:25:05tarcierihas had an awfully hard time finding Treetop grammars for various languages
02:25:10tarcieriI need one for JavaScript
02:25:21slavatarcieri: I guess eval is not an issue in factor because it evaluates the string in the top-level lexical environment
02:25:23tarcieriI poked around for a mailing list and couldn't even find that
02:25:25slavajust like lisp eval
02:25:33tarcierislava: yeah I have a bunch of different scopes
02:25:35tarcierithat doesn't help
02:25:38ddubI was looking at the ometa implementation in javascript
02:25:39slavalocal variables are a compile-time notion
02:25:43ddubI made my head asplode
02:25:45slavathere's no runtime reflection at all
02:25:51tarcieriI've wondered how other languages handle that
02:25:59slavatarcieri: they handle it by restricting what eval can do
02:26:08slavawhich is reasoanble, since you should only really need eval to implement stuff like REPLs
02:26:12tarcieribecause I'm basically doing something like eval(string, scope, bound_variables)
02:26:15slavaeval to access local variables is bad
02:26:28slavaits just bad coding style, period
02:26:34slavaany new language shouldn't support it
02:26:36ddublike I said, trivial if you are an interpreter walking an AST! :)
02:26:43dduband your local scope is a hashtable
02:26:48slavaddub: any new language should not be an interpreter walking an AST :)
02:27:12tarcierihehe
02:27:34tarcierislava: that's what Reia does now for the toplevel scope
02:27:53tarcieriwhich sucks
02:27:57tarcierithat's what I'm trying to fix
02:28:33ddubyeah this made my brain hurt: http://www.tinlizzie.org/ometa-js/#OMeta_Tutorial
02:28:49tarcierislava: I'm trying to move to a purely compiled representation
02:29:09ddubthe source did, rather.
02:34:51ddubtarcieri: are you doing this for rubinius?
02:59:33tarcieriddub: Reia
03:15:38tarcieriddub: I'm trying to make a language that's simpler than Ruby, but faces a lot of the same design challenges as a Ruby implementation
12:12:29rueddub: Look at the ruby_parser specs/tests