写点什么

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:462209
用户头像

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

关注

评论

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

Close,application.Terminate与halt有什么区别

百度搜索:蓝易云

Linux 运维 application Close Terminate

如何使用CORS来允许设置Cookie

百度搜索:蓝易云

Linux 运维 CORS Cookie 云服务器

2023 亚马逊云科技 re:Invent 大会探秘:Aurora 无限数据库的突破性应用

亚马逊云科技 (Amazon Web Services)

云计算

[目标检测]基于YOLOV8的自定义数据集实现水印检测

alexgaoyh

yolov8 ultralytics 自定义数据集 水印识别 模型训练/测试

注入js编程应该知道的一些基础知识,以防混淆造成的错误

Geek_ee6d52

在 Windows 上利用Qwen大模型搭建一个 ChatGPT 式的问答小助手

Hunter熊

大模型 cuda Qwen Torch

详解canal同步MySQL增量数据到ES

百度搜索:蓝易云

MySQL elasticsearch Linux 运维 canal

华为联合伙伴发布公共数据授权运营方案,助力云上点数成金

华为云开发者联盟

云计算 华为云 华为云开发者联盟

使用 Gateway API 在命名空间之间发送流量

Gingxing

kong API网关 kong-plugin Kong 网关 Kong Gateway

关于云交互与实时的云渲染技术

3DCAT实时渲染

实时云渲染 云交互

iot的10种常见协议,特点,组网模式及其使用场景

了了

IoT 技术选型 组网

PHP基本语法解析与应用指南

百度搜索:蓝易云

php html Linux 运维 云服务器

鸿蒙x昇腾云:华为打造智能时代最佳AI基础设施

华为云开发者联盟

鸿蒙 华为云 华为云开发者联盟 AI基础设施 昇腾云

Datawhale 零基础入门数据挖掘-Task1 赛题理解

阿里云天池

阿里云

移相全桥DC-DC变换器快速设计与开发

芯动大师

芯片 DC-DC 电源控制

Github每日热榜2024.03.17

天马行空的大杂烩

程序员 最新 开源软件

「全栈低代码」时代开启,页面开发/数据处理/复杂逻辑,统统一站搞定!

优秀

低代码 全栈低代码

C#将异步改成同步方法

百度搜索:蓝易云

C# Linux 运维 Task result

梧桐树上凤凰来:“伙伴+华为”体系的建成与强化

脑极体

数智化转型

Rubinius 1.0驾临_Ruby_InfoQ精选文章