AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

Rubinius 1.0 驾临

  • 佚名

  • 2010-05-26
  • 本文字数:2411 字

    阅读完需:约 8 分钟

长时间的等待之后,开发者终于迎来了 Rubinius 1.0 。项目团队花费了三年半的时间完成 1.0 版,并且提供了部分承诺的特性。Rubinius 极力向开发者宣传它的各种新特性,包括:

  • 支持大量的 Ruby 代码和流行的 C 插件:
    • Rails 3 和 2.3.5
    • Sinatra
    • sqlite3、mysql、nokogiri 和 yajl-ruby
    • 数不胜数的其他插件
  • 加速 Ruby 代码运行速度的 JIT 编译器。
  • 新一代的垃圾收集器。
  • 集成剖析器。

我们之前曾经报道过 Rubinius,例如在 RubyConf 2009 上采访 Evan Phoenix 并且询问项目的进展情况。我们也撰写了 Ruby 标准展望,其中 Brian Ford 阐述了 Rubinius 是如何紧紧和标准联系在一起的。时至今日,我们又采访了 Brian Ford 和 Evan Phoenix,就 Rubinius 1.0 现在和未来交换了意见。

既然 Rubinius 1.0 已经发布,我们希望知道这个发布版对于 Rubinius 的现在和未来意味着什么:

我们花费在 1.0 版的四年时间是非常值得的。你可以看到,在这四年中,我们不仅完成了一个能够和 1.8.7 兼容的 Ruby 运行时,而且还应用了加速动态语言的最新研究成果,这些成果包括新一代的垃圾收集器和集成的 JIT 编译器。我们希望尽可能地使用 Ruby 来编写代码,即便可能有一些性能损失。这是因为 Rubinius 是使用 ruby 来实现方法,而 MRI 是使用 C。但是,我们一直致力于性能的改进,这就是你所看到的 Ruby 和 C 在性能上的竞争情况。

和现存的 Ruby 框架兼容情况:

完全兼容。在以某种方式运行 Sinatra 程序的时候会出现一个诡异的 bug,不过现在我们已经解决了。我们会将用户反馈的任何框架相关的 bug 的优先级设置为最高,然后在下一版本中解决。

当我们询问 Rubinius 对现存 Ruby gems 支持问题的时候,他们说:

如果是纯 Ruby gem 的话,那么没有兼容性问题。我们也支持大量使用 C 扩展的 gem,例如 Nokogiri 或 Mongrel 等等。不仅如此,我们一直将一些并不支持的扩展移植到支持的 API 上。其实,有些 API 不能够支持的原因是这些 API 直接将某些结构体的指针暴露出来了,而这些结构体在 MRI 中被当做内部类使用。比如。RHASH() 支持开发者访问一个‘st’结构体指针,这个结构体被 MRI 用于实现 Hash 类。由于我们不用手动使用 st 来实现 Hash,所以不需要暴露这个指针。因此我们重写了 API,在提供相同功能的同时也避免了这些情况。

我们也听说 strings 在 Rubinius 的性能有下降。考虑到 strings 在 Ruby 程序中使用率非常高,我们希望能够知道现在 Rubinius 能够给我们带来什么,以及它的未来发展会是如何:

说所有的 string 性能都比 1.8.x 有下降是不准确的。String 的大部分方法性能都至少和 1.8 相当。仅仅是一部分性能较慢,例如 tr、gsub 和 unpack。我们现在非常积极地改进这些性能缓慢的方法。

性能问题一直是一个值得关注的话题。当 InfoQ 问到为何 Rubinius 是比其他 Ruby 实现,例如 MRI 1.8.x/1.9.x 和 MacRuby 更加值得选择的时候,他们回答道:

Rubinius 运行 Ruby 代码的速度极快,如果可以使用纯 ruby 代码实现的算法做基准测试的话,Rubinius 肯定稳居榜首。由于我们独特的 JIT 技术,我们能够提供比 MacRuby 更加优异的性能。这项技术能够高效地利用程序剖析信息,从而产生更加快速的机器代码。

开发者看到 Rubinius 性能较低的时候是因为 Rubinius 正在运行一些核心类的代码。我诚恳地请求开发者能够在我们的问题跟踪器中发布关于性能缓慢的报告,或者能够直接向#rubinius 反馈。每一个发布版都会着重解决性能问题,最终目标是Rubinius 的所有核心类方法的性能都要比1.8 中的要优秀。

Rubinius 是一个开源项目,它的发展和成功得益于活跃社区的贡献。社区给予 Rubinius 非常大的帮助:

我们非常高兴地看到我们开放的代码库也协助开发者持续为我们的项目做出贡献。并且,系统的绝大部分是使用 Ruby 实现,我们可以快速地增加和调试功能,然后提供给用户新的特性。

社区最大的好处就是它能够即时帮助我们测试代码以及发出反馈。这将帮助我们快速成长和克服困难。

当问到近期和远期分别可以对这个项目抱有什么期望的时候,他们回答说:

我们已经计划发布下一个 bug 修复版。1.0.1 将会在下周发布(5 月 24 日这周),并且会修正 1.0 版中很多 bug。

我们另一个高优先级的任务就是第一个新特性版本:1.1,它增加了调试器。我最近将大部分精力放在这个版本上,它很快就会发布。这个版本将调试器紧密集成在一起,我想用户会非常喜欢它的。

开发者可以在 Google Group 的 rubinius-dev 群中自由交流。

更多关于 Rubinius 的信息可以在 Rubinius 官方网站上找到,Rubinius 的源代码可以从 Github 代码库中下载。

查看英文原文: Rubinius Turns 1.0

2010-05-26 10:462361
用户头像

发布了 90 篇内容, 共 35.9 次阅读, 收获喜欢 5 次。

关注

评论

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

ChatGPT及大模型专题研讨会在蓉成功举办共探前沿技术与产业发展

NLP资深玩家

每个Java程序员都必须知道的四种负载均衡算法

做梦都在改BUG

Java 负载均衡 负载均衡算法

ARB链质押挖矿代币空投游戏dapp系统开发合约定制

开发微hkkf5566

终于有人把动态规划、冒泡排序、二叉树、链表、栈全部讲清楚了

Java你猿哥

数据结构 算法 二叉树 排序 LeetCode算法

Typescript- 数据类型

格斗家不爱在外太空沉思

typescript 三周年连更

python中对象引用 | python小知识

AIWeker

Python python小知识 三周年连更

阿里“妈宝级”之作,Kubernetes原理剖析与实战应用手册,太全了

做梦都在改BUG

Java Kubernetes k8s

GPU 加速药物研发与基因组学分析

Baidu AICLOUD

生命科学

《人间失格》

后台技术汇

三周年连更 人间失格

华为云开源项目OpenTiny中TinyVue有什么优势?

英勇无比的消炎药

开源 Vue 组件库

超简单!Java 项目自动生成接口文档教程

Apifox

Java 接口文档 API 文档生成 自动生成

拿来吧你!保姆级Docker底层原理及源码实战手册,上线点赞破10W

做梦都在改BUG

Java Docker 容器

【Linux】firewall-cmd之防火墙简介及命令详解【附加实战⭐建议收藏!!⭐】

A-刘晨阳

Linux 防火墙 Firewalld防火墙 三周年连更

基于STM32设计的音乐播放器

DS小龙哥

三周年连更

ThreadLocal源码分析

做梦都在改BUG

Java 源码 多线程 ThreadLocal

Android C++系列:C++11函数特殊特性

轻口味

c++ 三周年连更

生物计算大模型技术在药物研发领域的应用

Baidu AICLOUD

生命科学 PaddleHelix

JSF源码分析(一)

京东科技开发者

spring jsf 企业号 4 月 PK 榜

GitHub爆款!Java性能优化:轻松道破软件性能调优,不止搞定JVM

Java你猿哥

Java JVM Java性能优化

Mybatis返回集合类型到底是空集合还是null?源码解读

做梦都在改BUG

Java 源码 mybatis

全栈开发实战|Vue进阶——使用静态模块打包工具webpack

TiAmo

Vue webpack 三周年连更 静态模块打包

浅谈智能语音交互

六月的雨在InfoQ

语音识别 语音合成 三周年连更 智能语音交互

java 开发 SSM 框架整合之 MyBatis 动态 SQL

Java你猿哥

Java sql mybatis SSM框架 if

超级详细|Linux系统下从0到1的玩法大全

浅羽技术

Linux unix 操作系统 命令 三周年连更

Java中的「接口」到底是什么?

海拥(haiyong.site)

三周年连更

The Beacon链游NFT系统开发技术

薇電13242772558

NFT

中国边缘云公有云服务市场 Top2,百度智能云让智算无处不在

Baidu AICLOUD

分布式云

品牌活动|行云创新出席“新工业·智物联”全国巡回 CEO 峰会

行云创新

行云创新 新工业 智物联 全国巡回CEO峰会珠海站

面试官:介绍一下什么是缓存雪崩、缓存击穿、缓存穿透?

Java你猿哥

redis 面试题 缓存穿透 缓存击穿 缓存雪崩

一文详解RocketMQ-Spring的源码解析与实战

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

我认真总结并分析了Spring事务失效的十种常见场景

做梦都在改BUG

Java spring Spring事务

Rubinius 1.0驾临_Ruby_InfoQ精选文章