首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ruby的C API编译Ruby

使用Ruby的C API编译Ruby
EN

Stack Overflow用户
提问于 2011-05-24 07:38:02
回答 2查看 1.6K关注 0票数 7

如果我取一个红宝石代码

代码语言:javascript
复制
puts "Hello World!"

并使用Ruby的C API重写它

代码语言:javascript
复制
#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中重写?以前有没有人尝试过写这种“编译器”?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 15:27:05

关于这个主题有几篇很好的文章:

  • http://whitequark.org/blog/2011/12/21/statically-compiled-ruby/
  • a位日期...http://macournoyer.com/blog/2008/12/09/orange/

你也听说过Crystal吗?虽然不是真正的Ruby,但它看起来很有趣:

水晶是一种具有以下目标的编程语言:

在Crystal.

  • Have编译时评估和生成代码时,

  • 能够通过编写绑定到C代码来调用C代码,从而避免将code.

  • Compile模板转换为高效的本机code.

  • 具有与Ruby相同的语法,或者至少类似于possible.
  • Never必须指定变量或方法参数的类型的语法

关于它,在SO上:Anybody tried the Crystal Programming Language (machine-code compiled Ruby)?

和另一个具有相同目的但主要针对嵌入式开发的(商业)项目:http://foundry-lang.org/

票数 4
EN

Stack Overflow用户

发布于 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。

从理论上讲,这应该是可能的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6104254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档