From: Logan Capaldo Date: 2006-06-18T02:10:17+09:00 Subject: Re: [ANN] Ruby2CExtension 0.1.0 On Jun 17, 2006, at 10:31 AM, Dominik Bathon wrote: > Ruby2CExtension is a Ruby to C extension translator/compiler. It > takes any > Ruby source file, parses it using Ruby's builtin parser and then > translates > the abstract syntax tree into "equivalent" C extension code. > > More information and download at http://ruby2cext.rubyforge.org/. > > > Example > ------- > > Let's say you have a Ruby file foo.rb. To translate it to a C > extension and > then compile it, just run: > > rb2cx foo.rb > > This will produce the files foo.c and foo.so (on Linux). foo.c is the > generated C extension source code and foo.so is the compiled C > extension. > > > Why? > ---- > > Well, like everybody else I wanted a faster Ruby and I also wanted > to learn > about Ruby's internals, so I thought translating Ruby to C might be > worth a > try... > > The results are not as good as I had hoped, but they aren't bad > either: the > generated C extension is practically never slower than the Ruby > code and I > found cases where it is more than twice as fast, usually it is > somewhere in > between. > > Of course Ruby2CExtension can also be used as an obfuscator for > Ruby code, > though this was not my main motivation. > > > Features > -------- > > Ruby2CExtension supports a very large subset of Ruby's features (it > can > translate itself into a C extension and the compiled version works > correctly): > > * all the basics (classes, methods, ...) > * blocks, closures > * instance_eval, define_method, ... (only when the block is given > directly) > * correct constant and class variable lookup > * raise, rescue, retry, ensure > * ... > > Of course there are some limitations, please see > > http://ruby2cext.rubyforge.org/limitations.html > > > Requirements > ------------ > > * Ruby 1.8.4 > * RubyNode (http://rubynode.rubyforge.org/) > Duplication of effort? Do you know about ParseTree and Ruby2C?