BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Werner Schuster 关注 6 他的粉丝 ,译者 李永伦 关注 0 他的粉丝 发布于 2009年10月21日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT