From: Lothar Scholz Date: 2004-07-20T01:26:04+09:00 Subject: Re: Compiling Ruby code Hello Michael, MN> Nospam wrote: >> Hi, >> >> Once in a while the question pops up if it is possible to compile Ruby >> code to native machine code. The answer has always been no. But I keep >> wondering how hard it would really be to make this possible. >> >> Ruby is written in C. And when Ruby parses a Ruby script it converts >> each statement to a C call. Probably the same calls you can use on your >> own in a Ruby C extension. So why wouldn't it be possible to parse a >> Ruby script and convert all statements to Ruby C code and put it in a >> *.c file (instead of calling the Ruby C statements directly). This *.c >> file can then be compiled into machine code with a C compiler like gcc. >> If each *.rb file is converted to a C file it could be compiled to a >> dynamically loadable library which could then be used on require >> statements (just like regular Ruby C extensions). >> >> What I mean is, this... >> >> class Example >> def example >> puts "Hello World!" >> end >> end >> >> .... can also be written in C using the Ruby C API, am I right? So why >> wouldn't it be possible to convert all Ruby code to C code using the >> Ruby C API? >> >> This would probably result in some performance gain (no need to parse >> the code anymore at run-time), but for some people more important, you >> can distribute your Ruby applications closed-source. In the future the >> performance gain maybe could be increased by performing special >> optimizations during the conversion process. MN> I remember that a long time ago, there was a ruby-to-c compiler (was it MN> called r2c?). But IIRC, there was only little performance gain. Remember AFAIK it only packed the ruby code as a C string and called eval. Very clever compiler. -- Best regards, emailto: scholz at scriptolutions dot com Lothar Scholz http://www.ruby-ide.com CTO Scriptolutions Ruby, PHP, Python IDE 's