BT

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

MacRuby综述:0.7发布、基于GCD的Web服务器以及BridgeSupport

| 作者 Werner Schuster 关注 6 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2010年11月8日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

近日,MacRuby 0.7发布了(实际上是0.7.1),该版本包含了众多的Bug修复并改进了对Ruby的兼容性

MacRuby 0.7是MacRuby首个支持Ruby 1.9.2的版本,因此该版本重新实现了众多的新特性并提供了向后的修复(backport)。

此次发布通过了90%的RubySpecs,而上一版本则为82%。

MacRuby 0.7.1借助于BridgeSupport工具的支持可以提供对Cocoa、Objective-C以及C的完整脚本支持。之前的版本在某些地方还是存在着缺陷,比如不支持Apple向Objective-C中所添加的块(blocks)特性。现在开发者可以向接收C块的API传递Ruby Proc了,反之亦然。

之所以不支持这些特性的原因在于缺少元数据的支持,而BridgeSupport则是这一问题的解决方案。由于构建在LLVM的Clang解析器上,它可以 查看到库的源代码并生成MacRuby所能使用的元数据,之后MacRuby可以使用这些元数据获悉库接收的到底是什么,比如块、符号等等。BridgeSupport的源代码表明了Clang决定并生成元数据的方式。

MacRuby支持并发的Ruby线程(也就是没有GIL),这对于Mac OS X Snow Leopard系统范围的线程池系统Grand Central Dispatch(GCD)非常有帮助。

能够说明MacRuby与GCD集成的示例就是全新的Web服务器ControlTower,它使用MacRuby编写。由于构建在Rack之上,它可以通过将请求委托给GCD队列对其进行处理,而队列则可以按照顺序或并发的方式来处理请求。ControlTower的发布声明给出了其架构概览,同时还有与Thin服务器对比的性能参数。

虽然ControlTower支持Rack,但Rails用户还是会有些失望——MacRuby 0.7.1并不支持Rails 3。团队期望MacRuby的下一版本能够支持Rails。

MacRuby 0.7所支持的另一个Mac OS X特性就是Sandbox,它可以限制OS进程的权限。我们可以对Sandbox进行设定以拒绝网络访问、文件系统访问等等。但它并非MacRuby所独享的特性——其他的Ruby实现也可以通过Playpen扩展使用Mac OS X Sandbox特性。

最后,MacRuby发布声明还提及了加快各种Ruby代码运行速度的一些小技巧:

我们实现了一个基本的解释器,通过简单的启发式方法在编译期计算代码中不常经过的路径。比如说,使用简单的#eval声明来创建代码已经成为Ruby库的常见使用方式,现在它的运行速度已经得到了极大的提升。

想要上手MacRuby的开发者们应该读一读“MacRuby: The Definitive Guid”这本书,它是Matt Aimonetti为O'Reilly所编写的,网上有免费的版本。

查看英文原文:MacRuby Roundup: 0.7 Released, GCD-based Web Server, BridgeSupport

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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