| MacRuby——将Ruby 1.9移植到Objective-C |
|
| 作者是 Werner Schuster | |
| 2008-03-11 06:21:59 | |
|
我们访问了MacRuby项目的Laurent Sansonetti来了解项目的信息和工作细节。 Laurent Sansonetti: MacRuby是苹果公司创建的一个自由软件项目。目前项目参与者还都是苹果的雇员,但是我们无疑欢迎外界的贡献,这也是我们决定在 MacOSForge上开放项目并以公开的方式开发的原因。 InfoQ: 你们开发的MacRuby是基于Ruby 1.9/YARV的。从Ruby 1.9到MacRuby有哪些工作要做?是否很多都是关于对象创建的修改的?(从Ruby的方法改为使用Objective-C对象)。其他还有什么需要修改的? Laurent Sansonetti: Ruby对象的数据结构不得不修改以适应Objective-C对象的数据结构,因此一个Ruby对象可以被转换为一个C级别的Objective-C对象。 InfoQ: 在创建表示Ruby类的Objective-C类时发生了什么?它们全部是在运行时动态创建的吗? Laurent Sansonetti: 在你定义Ruby类的时候Objective-C类也同时被创建。如果反过来,当你通过MacRuby访问一个Objective-C对象时,它也会在YARV中延迟加载。 InfoQ: 在Ruby对象中,Objective-C方法是可见的吗? Laurent Sansonetti: 是的,反之也一样,Ruby方法同样在Objective-C环境中可见。 InfoQ: 一个对于Ruby空间的争论主题就是ObjectSpace。JRuby 1.1默认其失效。你知道Objective-C如何能够实现ObjectSpace的功能而不损失性能吗?
InfoQ: 目前兼容性如何?我注意到字符串是基于NSString的——存在什么兼容性问题吗?原生扩展的兼容性又如何呢? Laurent Sansonetti: 目前Ruby的String类继承自NSString来达到String到NSString的快速转换。所以目前没有兼容性问题。 InfoQ: MacRuby的未来计划是什么? Laurent Sansonetti: MacRuby的主要目标是让开发者可以通过Ruby写出非常棒的Cocoa应用,而这个通过我们在Mac OS X Leopard中引入的RubyCocoa技术是做不到的(我们依然继续支持RubyCocoa)。为了实现这个目标,我们还有工作要做。 检出MacRuby工程或者在MacOsForge上查看MacRuby的源代码。关于Laurent对MacRuby的声明请看ruby-core列表和后续关于诸如有键参数特殊语法特性的讨论。关于MacRuby更多的工作细节,请查看Wiki页HowDoesMacRubyWork。 |
|
| 最近更新 ( 2008-03-11 06:21:59 ) |

