生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

MagLev:Gemstone 基于 Smalltalk 虚拟机构建 Ruby 运行时

  • 2008-06-02
  • 本文字数:2748 字

    阅读完需:约 9 分钟

OODB 厂商 Gemstone 正致力于开发一个名为“MagLev”的Ruby 虚拟机。InfoQ 对 MagLev的产品经理 Bob Walker 进行了访问来获得项目背后的细节, Avi Bryant 也参与到了项目中来。首先,我们和Bob Walker进行了交流。

InfoQ: 在虚拟机级别,Gemstone/S 和 MagLev 有什么联系?

毫无疑问,MagLev 和 Gemstone/S 共享了大量的代码和功能,但是它们是独立的产品,包括在虚拟机级别。MagLev 虚拟机使用的大量字节码和算法都是 Ruby 独有的。然而,它当然还是保留了可以运行 Smalltalk 代码的能力。

InfoQ: 有多少人参与这个项目?目前有时间方面的计划吗?

目前有 8 个至少是兼职的人在开发 MagLev。我现在的确还说不出时间点来,但是在 RailsConf 上我会说一些在时间方面的计划。

InfoQ: MagLev 由什么语言编写?是一种“倒退”吗?

我们的目标和 Rubinius 项目类似:支持由 Ruby 实现的标准库中的全部方法,除了一些性能敏感的部分。虚拟机是由 C 编写的。

InfoQ: 是为虚拟机生成字节码还是为其他的什么方式?

是的,我们为虚拟机生成字节码,可以为多种架构产生不同的原生代码。

InfoQ: 你用什么来解析 Ruby?(是纯 Ruby 的 ruby_parser 还是别的什么自制的解析器?)

我们有能力借鉴众多解析器来自行开发用于编译的和一个解析器的内部实现。我们尚未决定在最终发布时采用哪个解析器。

InfoQ: 除了 Ruby 标准,你们有从 Rubinius 项目中借鉴什么吗?

我正在通过 Rubinius 的 bm 脚本和测试来手机不同 Ruby 实现的性能指标。我还借鉴了 MSpec 的实现,包括脚本和测试,来帮助我们确保 MagLev 在 API 级别可以和 Ruby 标准兼容。这也就是说,我也在查看其他的 Ruby 实现。
我们真心希望最终可以和 Rubinius 尽可能多的共享标准库代码。

InfoQ: 你对于 1.0 版本在性能方面的预期是什么?

相对于单纯的性能来说我们更关注与可伸缩性。当然我们相信和其他的实现相比 MagLev 在性能方面还是有竞争力的,我们还相信我们的可伸缩持久化架构将成为最大的卖点。

InfoQ: 说一说 MagLev 的线程?是原生 1:1 线程、m:n 模型还是普通用户空间线程?

每一个独立的虚拟机是一个普通用户空间线程。然而,多虚拟机之间可以写协同并发访问同一对象,所以实际上最终的效果和 m:n 模型类似。

InfoQ: 考虑到你将会参加 RailsConf,可以说说 Rails 兼容性的目标吗?或者其他的什么(比如 merb)?

这真是个有趣的问题,我们也投入了大量的精力在上面。我们当然希望 MagLev 可以兼容 Rails。但 是这个不容易做到,因为我们已经有所了解在实现过程中有太多太多潜在的(和实际存在的)陷阱。在支持 Rails 以前我们必须先完全支持 Ruby。我们也关 注其他的替代品,我们希望可以支持所有用 Ruby 编写的东西。至于先做什么后做什么,一个很主要的参考就是我们从 Ruby 社区收集到的热点和反馈。

InfoQ: 你计划让 ActiveRecord 在 OODB 下工作,还是用户定制或者使用 MagLev 特定的 API?

让 ActiveRecord 在 MagLev DB 下工作是一个十分令人期待的目标,尽管部分 ActiveRecord 的 API 假定对象状态存储在基于 SQL 的 RDB 中。这可能会导致耦合。在任何事件 中,任何在 ActiveRecord 之下的 API 可能对于不希望使用 ActiveRecord 的用户都是可用的。对于我来说,现在过多的谈论这个话题为时 尚早,我希望社区可以让我们知道哪种方法是最有益的。

InfoQ: 你计划 MagLev 是作为标准 Ruby 的一个简易替换,还是它将使用某种类似 Smalltalk 风格基于映像的部署方式?

对于 MagLev 来说绝对是作为简易替换的。但是对于那些更喜欢基于映像部署方法的人,MagLev 同时也是支持的,但并不强迫使用。

InfoQ: Ruby 代码进程可以被持久化成一个映像吗?

简言之,是的。例如,GLASS 系列产品目前可以让你将出错的进程保存到仓库中,然后迟些时候将它们放入一个本地的虚拟机中进行调试。没理由 Ruby 不支持。

InfoQ: 你将会和 GLASS 系列产品采用相似的授权模型吗?

我们查看了许多不同的模型。我可以说(但不保证)在 MagLev 上我们会做类似的事情。

InfoQ: 目前有用于 MagLev 的工具吗?你是否在寻求 Ruby IDE 的支持以作为前端(例如用于调试 GUI 等等)?

当然我们有一个 IRB 的 shell,和一个类似 ruby 的命令用于在 MagLev 上运行 Ruby 代码。我希望看到 IDE 插件,但是我也不敢猜想何时 GUI 工具将会实现。
需 要提到的是,MagLev 团队计划要参与并支持 Ruby 社区,我们希望社区成员可以看到一些令人感兴趣的理由来贡献 MagLev。我们在 GemStone 的核心竞争力是动态语言、可伸缩虚拟机和原生语言对象持久化——其他人中有很多在工具和 UI 方面十分擅长,我们欢迎他们对 MagLev 做出贡献。

InfoQ: 在 MagLev 上的 Ruby 代码有机会能和 Smalltalk 代码或者对象进行交互吗?

MagLev 虚拟机不但支持 Ruby,而且完美的支持 Smalltalk。我得说能够做到这样非常棒,但是在我们在这个方向上深入以前,我们要看看这是否是一个需求强烈的功能且对社区有用。

Gemstone开源技术上已经深耕一段时间了——例如为在Gemstone/S上运行 Seaside web 框架提供了解决方案。这个叫做 GLASS——GemStone、Linux、Apache、Seaside 和 Smalltalk 。GLASS 是免费的,带有一个数据库,容量为4 GB,同时也有其他的授权方式

Seaside 由Avi Bryant所创建,作为重用 Smalltalk 虚拟机用于 Ruby 这个想法的推广者之一(参见他在这个话题的文章《Turtles all the way down》)。在一个视频采访中(很快将由InfoQ 发布),Avi Bryant 将会给出更多关于他致力于 Seaside DabbleDB 的信息,以及他在 GemStone 的工作和MagLev。对于这个项目 Avi 说道:

我已游说 Smalltalk 提供商多年来使他们的技术被 Ruby 社区所熟知,现在令人激动的是它终于实 现了。我们还有不到三个月就可以完成 MagLev 的开发,但我已经被结果深深的鼓舞,而且我们将会在 RailsConf 上展示一些很棒的演示实例。恐怕在 那之前我还不能说的太深入,来看我们的讲座吧,这样会了解到更多的。

在一篇最近的 blog 帖子中, Avi 给出了一个关于像 Gemstone 之类的 OODB 的优势介绍, 在其中比较了他们的那些基于 Rails 构建的接解决方案,使用了 memcachedb 和其他相似的技术:

关于 Gemstone,凑巧架构完全相同:有一个单独的存储引擎(名叫“stone”),一个在每个服 务器上的内存缓存(叫做“共享页面缓存”),还有一些 Smalltalk 虚拟机的工作进程(“gems”)。gems 用来处理请求并执行代码,它们将对象 贮存在页面缓存中以加速,并放入 stone 中以持久化。区别在于,在 Gemstone 中,它们的自底向上被设计的尽可能的迅捷和无缝。

注意:这篇 blog 帖子更为深入,并且给出了一个解决方案和其他方法概览。

GemStone 将会在 5 月份的 RailsConf 2008 上更为详细的介绍 MagLev。

查看英文原文: MagLev: Gemstone builds Ruby runtime based on Smalltalk VM

2008-06-02 20:30844
用户头像

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

关注

评论

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

区块链产业规模约达50亿元,已成为数字经济发展重要引擎

CECBC

ZooKeeper 分布式锁 Curator 源码 05:分布式读写锁和联锁

程序员小航

Java 分布式锁 curator

【HZERO微服务平台3】源码分析之oauth服务token生成、校验、获取信息、传递

qiaoxingxing

签约计划第二季

【HZERO微服务平台4】源码分析之admin服务刷新路由、权限、swagger的过程

qiaoxingxing

签约计划第二季

XML数字签名实践篇

RingCentral铃盛

为什么非要做个app

张老蔫

28天写作

实体链接在小布助手和OGraph的实践应用

安第斯智能云

人工智能 深度学习 算法 nlp 知识图谱

Hoo虎符研究院 | 币圈后浪 ——DVD

区块链前沿News

Hoo 币圈后浪 项目分析

Camtasia的字幕功能应当如何使用

淋雨

Camtasia 录屏软件

一篇带你用 VuePress + Github Pages 搭建博客

冴羽

JavaScript 自己搭建博客网站 Vue 博客 vuepress

“朋友圈”又添好友,DataPipeline与统信服务器操作系统完成产品互认证

DataPipeline数见科技

大数据 操作系统 中间件 数据同步 数据融合

2021年终总结:如何快速学完多个课程

石云升

知识付费 年终总结 28天写作 12月日更

聚集索引数据写入

lixiaofeng

索引优化 签约计划第二季

【HZERO微服务平台5】JHipster接入HZERO

qiaoxingxing

签约计划第二季

深入研究【HZERO微服务平台】开源免费的企业级PaaS平台

qiaoxingxing

内容合集 签约计划第二季

XML数字签名原理篇

RingCentral铃盛

【行业观察】AI数据标注行业

mtfelix

28天写作

如何优雅地在Vue页面中引入img图片

CRMEB

Hoo虎符研究院 | 区块链简报 20211213期

区块链前沿News

区块链 Hoo 虎符交易所

腾讯云容器安全已支持检测Apache Log4j2漏洞

腾讯安全云鼎实验室

腾讯云安全、漏洞分析

java实现数据导出

卢卡多多

28天写作 数据导出 12月日更

实用机器学习笔记十二:线性模型

打工人!

AI 算法 学习笔记 机器学习算法 12月日更

2021阿里云弹性计算年度峰会将于12月21日开启线上直播,五大看点不容错过

阿里云弹性计算

弹性计算 年度峰会 线上直播

TDengine在同花顺组合管理业务中的优化实践

TDengine

数据库 tdengine 时序数据库

全新“支付方式”来了,数字货币六大行公开支持,安全且转账免费

CECBC

OAuth2.0面面观

RingCentral铃盛

3天后,浪潮云有大动作!

浪潮云

Volatile 原理五:禁止指令重排是什么?

悟空聊架构

volatile 28天写作 悟空聊架构 12月日更 禁止指令重排

跨平台多主机键鼠共享

Arch

首个国产元宇宙“希壤”来临,百度成了先锋!

CECBC

降低成本对技术组织意味着什么?

田晓亮

云计算 serverles

MagLev:Gemstone基于Smalltalk虚拟机构建Ruby运行时_Ruby_Werner Schuster_InfoQ精选文章