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

近日,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

你可能感兴趣的:(MacRuby综述:0.7发布、基于GCD的Web服务器以及BridgeSupport)