速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

MacRuby 0.5 Beta 增加 JIT、AOT、GCD 支持,删除 GIL

  • 2009-10-20
  • 本文字数:1077 字

    阅读完需:约 4 分钟

MacRuby 0.5 的首个 beta 版已经有了,目前仅适用于 Snow Leopard(MacOS X 10.6)机器。

InfoQ 就 MacRuby 的现状和未来采访了 MacRuby 的核心团队。

InfoQ MacRuby 的新 VM 是如何使用 LLVM 的?

MacRuby 按需编译所有东西(当代码需要实际运行时)。[LLVM] 位代码会在编译之前进行优化。

MacRuby 0.5 beta 的发布说明也提到了 LLVM 是在调用外部函数时用来生成存根的,因为这比在老版本的 MacRuby 里使用的 libffi 要来得快。

InfoQ:MacRuby Ahead-Of-Time(AOT)编译了部分 Ruby 标准库。这是为什么呢?

显然,这样做会使启动更快。我们使用 AOT 编译它们主要是为了测试 AOT 编译器。它们是作为主 rake 任务的一部分在生成的时候编译的。

InfoQ:对本地扩展(native extensions)的支持现在处于什么状态?

经过一些小的修改,我们可以使一些 C 扩展运行起来,比如说,ripper、digest、socket、zlib 等等。我们计划在将来的版本里完整地实现 MRI 的 C 扩展 API。

InfoQ:0.5 版的一个大改进是去掉了 GIL 。现在,这个实现已经有一段时间了,你的解决方案带来了哪些体验?

据我们所知,它没有带来任何显著的开销。启动一个线程的开销比之前稍微高一点,但之后大部分代码都能并行运行。 没有 GIL 的系统是让 MacRuby 成为真正的 Cocoa 开发平台的必要条件,因为桌面应用程序通常都会使用线程或者新近的 Grand Central Dispatch(GCD)。

InfoQ:MacRuby 允许使用 AOT 编译 Ruby 代码,那么,有没有可能不使用垃圾收集器,即能否仅仅使用 Objective-C 的引用计数内存管理?

不能。但我们正在考虑一种模式,在这种模式里,编译器将会生成自动释放池(autorelease pools),而运行库将不会使用 Autozone GC。如果你浏览邮件列表存档,就会看到最近在讨论这个话题。

上面提到的邮件列表讨论了如何模拟GC ,这对于在不支持Autozone GC 的平台上运行MacRuby 程序来说是至关重要的,比如说,iPhone。讨论里的另一个邮件解释了为什么把Autozone 移植到iPhone 上是不可行的,因为iPhone 版的Cocoa 是不认识GC 的。

MacRuby 0.5 的最终版本将会运行在 32 位和 64 位的 Leopard 和 Snow Leopard 上。

查看过去InfoQ 的MacRuby 报道,并开始0.5 版之旅吧。

查看英文原文: MacRuby 0.5 Beta Brings JIT, AOT, GCD Support, Removes GIL


译者介绍:李永伦,从 02 年开始关注.NET,读过 4 年工商管理,任过 3 届微软 MVP,最近恋上 Ruby,私底下喜欢研究哲学和心理学,酷爱动漫、科幻、科普和金庸武侠,爱好买书、读书和藏书。InfoQ 中文站内容团队,尤其是架构、SOA 和 Ruby 社区需要您的参与,有意者请邮件至 editors【AT】cn.infoq.com

2009-10-20 20:531046

评论

发布
暂无评论
发现更多内容
MacRuby 0.5 Beta增加JIT、AOT、GCD支持,删除GIL_Ruby_Werner Schuster_InfoQ精选文章