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

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

\

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

\

InfoQMacRuby的新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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值