BT

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

Gardens Point Ruby.NET团队访谈录

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

Gardens Point Ruby.NET编译器是一个在CLR上运行Ruby代码的支持平台,最近发布了0.8版本。最新的版本使得用Ruby访问用其他语言写的代码成为可能,反之亦然。因为对所有针对CLR或者JVM的Ruby运行时而言,互操作性都是一个重要的话题,因此我们就此采访了Ruby.NET团队成员John Gough。

首先,John与我们分享了一些关于Ruby.NET如何处理Ruby和.NET对象的一些实现细节:

互操作性依赖已存在的Ruby.NET中对象继承的选择。大多数在Ruby中定义的对象都是源自Ruby.Object的CLR类型。这些对象都有一个指向“类”对象的字段(Field),而“类”对象属于对象类型字典里某种类型。但是,对一些内嵌类的对象,比如FixNum、True、False等,是被一个封装有Raw值的空CLR对象所继承。

方法调度通过把对象作为参数,来调用一个名为“ClassOf”的静态方法予以实现。对于源于Ruby.Object的对象,这会返回一个Ruby类的类对象引用(Reference),而对于FixNum,运行时则返回一个FixNum类型的已知类描述的引用。

现在,请注意这一点:ClassOf不期望互操作对象被封装,所以如果有对象不是继承自Ruby.Object,且不是一个内建类型,它就必须是一个互操作对象。全局缓存中保留着从CLR类到Ruby类的映射关系,以支持从CLR类到封装互操作类上方法调用的Ruby类对象。

所以,当一个CLR类的对象首次出现时,对象不会被封装,但会创建一个Ruby类描述符完成这项工作。已有的方法使用反射按需被发现。还有一些事情,如重载方法,依然有很多未决的问题,尽管对一些小子集的调用,声明类型能处理绑定。

还有一些功能没有得到很好的处理,比如引用参数。John解释说:

0.8版本的另一个局限性是无法处理有引用参数的CLR方法。这不会让我们的进度停滞(译者注:show-stopper 一般指在Issue Tracking中,某个Issue过于严重而让项目不得不停滞)。这是Wayne Kelly的调用,但是我期望引用参数能通过复制传递而终止。要完成这些工作需要有许多管道代码(Plumbing Code),因为对于CLR而言,byref声明需要有确切的类型……而不是Ruby的一个外来概念。

注意:Wayne Kelly也是Gardens Point Ruby.NET团队成员。

兼容性和性能也是将来考虑的一部分。John说:

正如在发布声明中所说的一样,尽管在遇到严重的性能问题时我们试图避免任何不当的设计,在优化方面我们还没有任何作为。我们已经很接近要达到的目标了,一旦达到我们就可以加快进度。需要提出的是,我们没有做任何方法绑定的调用缓存,要知道它可能是在整个动态语言实现领域唯一最大的性能增强点。

在未来,Ruby.NET会考虑依靠社区贡献来进行完善。John解释了未来的发展规划:

我们会继续在这个项目上努力,这一过程至少要持续到年底。然后到1.0版本的时候,我们期望能将这个项目向社区公开。这只是我和Wayne Kelly所参与的几个项目中的一个而已。我们还负责Microsoft-QUT eResearch中心,网址为https://www.mquter.qut.edu.au,还为其他一些语言工具努力,请浏览http://plas.fit.qut.edu.au/projects,另外还要更新“Compiling for the .NET Common Language Runtime”这本书等。

关于Gardens Point Ruby.NET编译器的更多信息,请浏览Channel 9最近发布的对Wayne Kelly的采访

查看英文原文:Gardens Point Ruby.NET internals interview

评价本文

专业度
风格

您好,朋友!

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