写点什么

Rubinius 近期概况

  • 2007-09-30
  • 本文字数:2197 字

    阅读完需:约 7 分钟

Rubinius 是一个主要用 Ruby 语言实现的 Ruby 虚拟机,它的底层实现包括少量 C,不过这部分也会在将来用 Ruby 来重写。(更多的细节参见 InfoQ 的采访 Evan Phoenix 谈 Rubinius )。

在过去的一年当中,Rubinius 受到了广泛的关注并且聚集了一批为缩短未完成功能和不兼容列表而不懈奋斗的忠实开发者。JRuby 团队的 Ola Bini,在一片名为“ Rubinius 很重要”的文章当中表达了他对 Rubinius 的观点:

实际上,我已经越来越确信对于那些不需要庞大的 Java 基础设施的人来说,Ruby 世界中 Rubinius 是最为重要的一个项目。更为重要的是,Rubinius 在 MRI(Matz’s Ruby Interpreter,标准的 Ruby 实现)方面做的非常正确。如果按照现在对 Ruby1.9.1 的时间安排和计划没有大的改变,那么我预测 Rubinius 将会在未来的 6 个月时间内,成为 CRuby 实现的不二选择。

他列举了若干论据来支持自己的观点:

  • 它是基于字节码的,这意味着它能够很好的解决性能问题。
  • 它是可插拔的,架构非常的干净,这意味着诸如垃圾回收和对象内存等问题,能够转换使用另一种算法。
  • 它被设计成线程安全的(尽管还没有达到真正的线程安全),并能支持多个虚拟机。
  • 它可以与现有的 MRI 扩展一起工作。
  • 大部分的代码用 Ruby 编写。
  • 它能够给你直接从 Ruby 代码,访问所有内部结构的能力(比如 MethodContexts/BlockContexts 等)。
  • 这个项目使用 Valgrind(一套调试、分析 Linux 程序的工具)来保证编写的 C 代码万无一失。

另一个有进步的方面就是性能。Evan Phoenix 最近发布了一些关于 Rubinius 和 Ruby 1.8.x(MRI)比较的测试结果,结果显示 Rubinius 在很多测试中处于领先的地位。以下是 Evan Phoenix 的分析:

我想指出这些数据当中的几个趋势。

  • 对于没有产生错误和超时的测试,Rubinius 在31个中有 24 个更快,这很令人惊喜,因为这个结果比之前一次测试的结果有了巨大的提高。
  • bm_so 部分表现的最慢,Rubinius 仅在11个测试中有2个更快一些,4 个出现错误或者超时。如果你看一下那些测试程序,你会发现它们都是一些针对核心方法的基本测试,主要包括像String#<<。因此在这个阶段是有意义的,我们在那些方面是要慢上一些。我们还尚未在那些方面上进行过调优呢。
  • 另一个大趋势就是那些仅仅给 VM 架构加压的测试结果显示 Rubinius 要快很多。其中两个例子就是 bm_vm1_swap 和 bm_vm1_simplereturn,第一个交换两个本地变量,执行a, b = b, a几百万次。这个例子很好地展示,字节码虚拟机要远远快于 MRI 中遍历树结构实现方式。下一个,bm_vm1_simplereturn 显示了 Rubinius 快速创建一个方法的上下文(method context)并且快速返回给调用者的能力。我对于这一点激动不已,因为即使 Rubinius 的MethodContext是语言中的一等公民,它仍旧有三倍于 MRI 的速度优势,同时不失强大的编程能力。

有一点很重要需要指出:Rubinius 使用的是字节码解释。众多优化手段,比如即时编译(JIT),将字节码在运行时转换成原生码,或者其他方法将会在以后出现,所以更多的性能提升仍然值得期待。另一些优化的技术,比如高级或者可配置垃圾回收策略甚至能更高的提升性能。

Rubinius 受到各种形式的支持: Evan Phoenix 受雇于 EngineYard ,用他一半的时间来开发 Rubinius;最近 Sun 为 Rubinius 开发者 Wilson Bilkovich Brian Ford 资助了旅费,并且将 JRuby 的成员 Charles Nutter 送到了 Rubinius Sprint 。通过看到一系列的改进列表,就不难推断出这是一个颇有成效的会议:

  • Evan 将 Syck(YAML 解析器)融入了进来,使用了我们非常酷的反向(Ruby C API 兼容)组件。
  • Wilson 在几个小时内鼓捣出一堆StringIO的测试规格。
  • Evan 迅速地写了一个能够通过测试规格的 Ruby StringIO
  • Charles 抹去了几个在接下来编译过程中引起不小问题的 def 和 case 规格。
  • Wilson 添加了那些彩色的回溯跟踪(backtrace),它能够让你快速地找到最终出错的那行代码,同时还有其它一些重要的回溯跟踪的功能。
  • Wilson 实现了剩下的在编译器中缺少的 case 支持。
  • Charles 添加了一些 ObjectSpace 的基本支持。
  • 我提交了一个对于我们 Ruby 核心库测试规格的完整重组和许多改进。我们已经有 2800 多个测试规格,其中三分之二已经通过了测试。我们还有将近 50% 的核心库测试规格要完成。
  • Evan 修改了对于线程的支持,并且添加了一些优先级别。
  • 我添加了(在 Evan 的大力帮助下,同时查看 x86 机器代码的一些重要 gdb sessions)一些很酷的东西到我们的“对外功能接口”(Foreign Function Interface, FFI),以支持读写 C 整数和 Ruby 浮点型。(浮点支持仍旧需要 Evan 金手指的一两下点拨)。有了这些,我就能完成我们的Math方法支持,和其他的Math测试规格。
  • Wilson 推敲出一堆支持编译eval时需要的方法。 如果你没有意识到这有多么的恐怖(痛苦),别怪我。
  • 我开始了一个为准备Dir.glob而写的File.fnmatch的实现(否则我才不会跟亲爱的 glob 我那么熟络呢),同时清理了我们的fnmatch测试规格。

正如在最近一篇关于Gemstone 对JRuby 和Rubinius 的支持的采访中提到的,Rubinius 看起来也在Germstone 的面向对象数据库(Gemstone’s Object Oriented Database,OODB)的Ruby 计划中扮演着重要的角色。

查看英文原文: Rubinius roundup - - - - - -

译者简介:木雨宝道,Ruby On Rails 开发者,关注各种 Web 开发技术,敏捷开发爱好者,很少饮酒。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-09-30 23:581031

评论

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

win版UniFab All-In-One(视频AI压缩转换处理) v2.0.2.8特别版

iMac小白

win版Danil Pristupov Fork(Git客户端) v1.99.3 激活版

iMac小白

智能交互引擎平台有奖体验活动开始啦!

Openlab_cosmoplat

人工智能 测试 大模型 问答助手 有奖体验

深度揭秘!观测云产品核心理念

观测云

观测云 可观测性用观测云

项目管理的终极选择:9款系统比较

爱吃小舅的鱼

项目管理 项目管理软件

拍卖APP软件开发:推荐使用“东莞梦幻网络”的源代码

软件开发-梦幻运营部

前端说你的API接口太慢了,怎么办?

快乐非自愿限量之名

前端 接口 API

一文揭开JDK21虚拟线程的神秘面纱

不在线第一只蜗牛

Java Python jdk 算法

MobPush iOS端 SDK API

MobTech袤博科技

开发者 产品设计 产品动态

win版StreamFab Downloader(视频下载工具) v6.1.8.9 激活版

iMac小白

大客户销售设法接触客户决策层 怎么操作成功概率最高

客户在哪儿AI

ToB营销 ToB获客 ToB增长 大客户营销

PingCAP 王琦智:下一代 RAG,tidb.ai 使用知识图谱增强 RAG 能力

PingCAP

数据库 知识图谱 TiDB 人工智能、 ;RAG

win版Perfectly Clear Workbench(图片编辑软件) v4.6.1.2678 特别版

iMac小白

EMQX 跨域集群:连接三大洲,横跨 12,600 公里的数据纽带

EMQ映云科技

mqtt 分布式部署 emqx mqtt broker 跨域集群

【论文速读】| LLMCloudHunter:利用大语言模型(LLMs)从基于云的网络威胁情报(CTI)中自动提取检测规则

云起无垠

11K star!开源WAF的NO1,不花钱也能搞定安全

我再BUG界嘎嘎乱杀

GitHub 开源 网络安全 安全

爆赞!终于有大佬把网络安全零基础入门教程给讲明白了!

我再BUG界嘎嘎乱杀

网络安全 安全 入门 零基础 网安

工业智能化|人工智能与仿真的共生

Altair RapidMiner

人工智能 算法 汽车 仿真 altair

腾讯云大数据TBDS 助力国有大行一表通业务性能翻三倍!

腾讯云大数据

腾讯云 大数据

【IoTDB 线上小课 05】时序数据文件 TsFile 三问“解密”!

Apache IoTDB

MobPush 个性化参数API

MobTech袤博科技

开发者 产品动态

院感培训ppt课件怎么做?用这3款做ppt的ai软件自动生成!

彭宏豪95

职场 PPT 办公软件 AIGC AI生成PPT

win版Athentech Perfectly Clear Video (AI视频清晰化处理软件) v4.6.1.2678特别版

iMac小白

Speed, Efficiency, and Security: IPQ5332 vs. IPQ6010 – Which One is Right for You?

wallyslilly

IPQ6010 IPQ5332

即构场景化SDK UIKits,互动应用开发周期缩短 75%

ZEGO即构

企业出海 泛娱乐出海 UI组件库 音视频SDK,直播 即构UIkits

win版Maxon Cinema 4D 2024(C4D 2024) v2024.5.1 (x64)特别版

iMac小白

信息安全: MAC(消息认证码)算法,保护数据完整性和真实性的利器

我再BUG界嘎嘎乱杀

网络安全 安全 后端 网安

Chrome扩展程开发初探

FunTester

《搜索型数据库白皮书》正式发布,极限科技荣登贡献单位榜单

极限实验室

白皮书 极限科技 搜索型数据库

Rubinius近期概况_Ruby_Werner Schuster_InfoQ精选文章