写点什么

采访 XRuby 开发者:“有趣的”Ruby 实现

  • 2007-04-26
  • 本文字数:1505 字

    阅读完需:约 5 分钟

近日 InfoQ 中文站对 XRuby 项目的开发者郑晔进行了一次采访。郑晔介绍了XRuby 项目的基本情况和发展方向。

目前在Java 平台上实现Ruby 语言的项目主要有两个: JRuby 和 XRuby。二者的差别主要在实现技术上。JRuby 目前为止是一个解释器,而 XRuby 是一个编译器。所以,二者的差别就是解释器和编译器的差别。郑晔说:

解释器和编译器,在前端部分都是相同的编译器前端技术,包括词法分析、语法分析、建立语法树等等,主要的差别在于执行的方式不同。解释器是直接执行一个其内部的可执行结构,比如 Ruby 现在的实现就是中间生成一个树,这棵树就是 Ruby 内部的可执行结构,然后执行这棵树,而编译器是生成目标平台的可执行代码,比如我们常见的编译器生成对应平台的可执行文件。由此可见,二者的执行方式并不是在同一个级别上执行的,一个是平台之上利用软件构建的执行引擎,一个是利用平台(硬件或虚拟机)执行,所以,性能上会有一些差别。简单说来,XRuby 生成的代码直接运行在 JVM 上,而 JRuby 在 JVM 上构建了一个执行引擎来执行程序,而且是 Ruby 现在实现得不那么好的那个执行引擎。所以,XRuby 目前在性能上可以领先 JRuby 许多。

测试数据表明,XRuby 的性能超过了 Ruby1.8.5 版本。在

最近进行的一次性能评测中,XRuby 由于尚不支持 YAML 而没有参加,JRuby 与 Ruby1.8.5 之间还存在较大的性能差距。

Ruby 解释器 使用笔记本电池 耗时 ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-linux] 31.0 +/ 3.1 ruby 1.9.0 (2007-04-18 patchlevel 0) [i686-linux] 31.1 +/ 3.27 ruby 1.8.5 (2007-04-23 rev 3539) [i386-jruby0.9.9] 67.5 +/ 7.15 使用外接电源 ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-linux] 12.0 +/ 1.2 ruby 1.9.0 (2007-04-18 patchlevel 0) [i686-linux] 12.4 +/ 1.8 ruby 1.8.5 (2007-04-23 rev 3539) [i386-jruby0.9.9] 33.3 +/ 6.83

较早前

InfoQ 的另一篇报道详细介绍了 XRuby 与 JRuby 的技术差异。

但由于发展时间较短,XRuby 现在还达不到实用的要求。虽然已经可以运行一些程序了,但距离完整支持 Ruby,还有很长的一段路要走。XRuby 0.2.0 的目标是支持单元测试框架,XRuby 团队计划在年底可以支持 Rails。在语言特性方面,XRuby 也并未完全实现 Ruby 所有的语言特性,因为 Ruby 某些语言的特性是与 builtin 库结合在一起的(比如 method missing 等),而 XRuby 现在目前最大的问题就是 builtin 库的实现。郑晔这样介绍:

因为 JVM 平台本身并不支持动态语言的特性,所以,在 XRuby(包括 JRuby)需要用 Java 代码构建出一个动态语言支撑的结构,也就是我们所说的 Runtime。现在这个 Runtime 是我实现的,基本上是按照 C Ruby 的结构进行实现,因为我之前翻译了《Ruby Hacking Guide》,对 C Ruby 的动态语言 Runtime 有一定的了解。其实,支持这些特性本身难度并不大,但是需要大量的时间和精力来做这件事情,这也是 XRuby 最为欠缺的资源。

在谈及 XRuby 项目的发展时,郑晔说道:

XRuby 在某些方面进行的一些工作,会比较有趣,比如正在开发的 Antlr V3 前端和调试器等等。这些方面对于在 JVM 上实现动态语言是一个比较有益的探索。XRuby 本身起步时,考虑得更多的是乐趣,参与者都是因为乐趣加入其中的。所以,我想说,XRuby 的一个很大的优点就是它还年轻,其中有很多可以做的有趣事情。短时间之内,我们不敢奢望有人可以把 XRuby 用于实际的项目。现阶段,我们只是希望赢得更多的关注,吸引更多的人加入到 XRuby 的开发中来,这样,可以尽快实现 XRuby 的目标。

JRuby 的开发者 Ola Bini 之后,郑晔也加入了

ThoughtWorks 公司。XRuby 这个“有趣的”Ruby 实现未来会怎样,我们拭目以待。

2007-04-26 23:291250
用户头像

发布了 21 篇内容, 共 31585 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

如何使用EasyRecovery巧妙恢复被误删的办公文档?

淋雨

数据恢复 文件恢复 Easyrecovery破解 免费恢复软件

crypto/md5

康家沟偶像天团王大锤

大学生如何让更好的入门计算机?

Bob

入门 话题讨论 话题 大学生

Python——计数器(Counter)

在即

6月日更

流式基础设施--云基础设施的未来

俞凡

云计算 架构

Golang生成随机字符串的八种方式与性能测试

张俭

Performance Go 语言

密码你真的了解吗

卢卡多多

密码学 6月日更

Google大规模监控系统--Monarch

俞凡

架构 分布式 大厂实践

窥见AI工业化开发黎明:华为云如何将AI进行到底

脑极体

架构实战营模块六作业

竹林七贤

kubelet分析-csi driver注册源码分析

良凯尔

源码 Kubernetes kubelet CSI Kubernetes Plugin

《Software Engineering at Google》免费开放

俞凡

c++ 软件工程 Google 大厂实践

韩信大招:一致性哈希

悟空聊架构

分布式 一致性hash 6月日更 hash算法

智能无线接入网的崛起

俞凡

AI OpenRAN

源码分析--golang读写锁

en

【Flutter 专题】99 初识 EventBus

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

Angular管道PIPE介绍

devpoint

angular.js angular 6月日更

作为程序员,你会使用Notion吗?

Bob

程序员 Notion 笔记

冯 · 诺依曼结构原理及层次结构分析

若尘

计算机组成原理

三星T5 格式化成APFS

SamGo

学习 硬件产品

Linux之pwd命令

入门小站

Linux

Anaconda 如何安装 BeautifulSoup 环境

Qien Z.

6月日更

【21-11】PowerShell 特殊变量

耳东@Erdong

PowerShell 6月日更

【Vue2.x 源码学习】第十九篇 - 根据 vnode 创建真实节点

Brave

源码 vue2 6月日更

计算机系统性能评价

若尘

性能 计算机组成原理 6月日更

低代码开发简史

俞凡

架构

堆与堆排序

wzh

Java 数据结构 算法 堆排序 数据结构与算法

如何应对不好回应的沟通场景?

石云升

读书笔记 沟通 6月日更

网络攻防学习笔记 Day49

穿过生命散发芬芳

网络攻防 6月日更

新一代数仓架构-Snowflake弹性数仓

一弦思华年

大数据 数据湖 云原生 OLAP 数仓

Angular模板简介

devpoint

angular.js angular 6月日更

采访XRuby开发者:“有趣的”Ruby实现_Ruby_Jeff Xiong_InfoQ精选文章