< :the previous in number
^ :the list in numerical order
> :the next in number
P :the previous artilce (have the same parent)
N :the next artilce (have the same parent)
|<:the top of this thread
>|:the next thread
^ :the parent (reply-to)
_:the child (an article replying to this)
>:the elder article having the same parent
<:the youger article having the same parent
---:split window and show thread lists
| :split window (vertically) and show thread lists
~ :close the thread frame
.:the index
..:the index of indices
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