如果我取一个红宝石代码
puts "Hello World!"并使用Ruby的C API重写它
#include "ruby.h"
int main() {
ruby_init();
rb_funcall(Qnil, rb_intern("puts"), 1, rb_str_new2("Hello World!"));
ruby_finalize();
return 0;
}编译它,这是一种编译Ruby代码的方法吗?
如果我创建一个使用Ripper解析Ruby代码并将其重写为C的程序,我可以将其称为"Ruby编译器“吗?有些ruby代码不能以这种方式在Ruby中重写?以前有没有人尝试过写这种“编译器”?
发布于 2013-07-11 15:27:05
关于这个主题有几篇很好的文章:
你也听说过Crystal吗?虽然不是真正的Ruby,但它看起来很有趣:
水晶是一种具有以下目标的编程语言:
在Crystal.
。
关于它,在SO上:Anybody tried the Crystal Programming Language (machine-code compiled Ruby)?
和另一个具有相同目的但主要针对嵌入式开发的(商业)项目:http://foundry-lang.org/
发布于 2011-05-24 08:07:06
是的,这是“c化”的ruby代码,可以这么说。
与"ruby to c“最接近的是http://ruby2cext.rubyforge.org、rubinius及其JIT编译器和ruby2c。
http://betterlogic.com/roger/2009/08/how-to-use-the-ruby2c-gem
另一个选择是为1.9的字节码编写一个JIT编译器,这可能会让事情变得更快一些。
另请参阅Mira语言,它类似于静态、编译时的ruby。
从理论上讲,这应该是可能的。
https://stackoverflow.com/questions/6104254
复制相似问题