写点什么

Ruby VM 综述:MacRuby 0.8、Rubinius 1.2、MRI 1.8.7 及 1.9.2 更新

  • 2010-12-29
  • 本文字数:890 字

    阅读完需:约 3 分钟

目前,Ruby VM 正以稳健的步伐前进着,前几周又有很多新发布。

近日, Rubinius 1.2 发布了,在内存效率与调试方面带来了很多改进。Evan Phoenix详细介绍了 Rubinius 1.2 的众多改变,比如每个对象的内存使用等:

我们集中精力改进每个对象的内存使用。特别是对象如何在内存中存储其实例变量。由于 Ruby 并不需要声明实例变量,因此建模实例变量最简单的方式就是使用散列。这正是 Rubinius 过去的做法。问题出在拥有少量实例变量的类上。在这种情况下,散列表的尺寸就变得很重要了,为了存储一个字(4 或 8 个字节),就需要使用 100 个字节的内存。 新的代码基于对类的一个很容易观察到的假设,换句话说,在创建类的实例前它会定义好绝大多数方法(通常是所有方法)。我们在创建好类的一个实例后就运行一些代码,它会查找该实例可用的所有方法。这意味着所有方法都定义在类本身、父类以及混合在模块中。我们通过这些方法构建出他们所用的所有的实例变量表。

现在,我们可以很清楚地计算出这个类的实例到底需要占据多少内存,这样就可以将实例变量存储到内存中而无需散列表了。通过这种方式,内存的使用从 100 个字节下降到了 8 个字节(在 64 位机器上)。

长久以来,Rubinius 一直拥有一个强大的 Debugger API,现在 Rubinius 1.2 增加了 ruby-debug 支持。调试内存使用或内存泄漏问题是由堆转储特性所支持的,可以使用 Rubinius::VM.dump_heap("/path/to/file") 实现。创建堆转储的另外一种方式是使用 Rubinius 的另一个特性:Query Agent,监测工具可以凭借它访问 Rubinius 信息并触发某些动作。

MacRuby 0.8 也于近日发布了,主要改进了稳定性与兼容性问题。该项目现在集中于 1.0 版的发布:

从现在开始,我们的发布频率要比以前快很多。我们希望用户能够更频繁地测试 MacRuby 并报告更多的 Bug。 然而,我们并不期望在随后的发布中引入重要的特性,因为现在我们都将精力放在了稳定性和兼容性问题上了。

最后,旧版与新版的 MRI 都发布了补丁版本: MRI 1.8.7 with p330 以及 1.9.2 with p136,后者是暨 1.9.2 发布之后的首次更新

查看英文原文: Ruby VM Roundup: MacRuby 0.8, Rubinius 1.2, MRI 1.8.7 and 1.9.2 Updates

2010-12-29 09:281136
用户头像

发布了 88 篇内容, 共 263.2 次阅读, 收获喜欢 8 次。

关注

评论

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

展示柜透明显示屏的特点简析

Dylan

创新 视频 商品 LED display LED显示屏

F5G城市光网,助力“一网通城”筑基数字中国

脑极体

AI 网络

解析 AI 时代广告素材格局:AppsFlyer 综合报告揭示行业关键数据洞察

财见

构建Python构建自动化测试框架(原理与实践)

我再BUG界嘎嘎乱杀

Python 软件测试 自动化测试

从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践

华为云开发者联盟

数据库 后端 时序数据库 华为云 华为云开发者联盟

数字化时代,API网关为何如此重要?

芯盾时代

网络安全 网关 API网关

开始报名!龙蜥社区系统安全 Meetup 硬核议程发布

OpenAnolis小助手

操作系统 系统安全 龙蜥社区 eBPF 技术

告别内存OOM,解决MySQL内存增长问题

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

人员身份级的数据中心机房作业随工

鲸品堂

机房 数据中心 机房管理 企业号 6 月 PK 榜

度安讲 | 第二期「安全左移·业务护航」技术沙龙成功举办

百度安全

李尔将收购西班牙自动化和智能公司WIP Industrial Automation

财见

GitHub上新!14个Python项目详细教程(附完整代码)

我再BUG界嘎嘎乱杀

Python 后端 入门 开发语言 零基础

蓝易云 - jenkins教程:sshPublisher示例(Publish over SSH插件)

百度搜索:蓝易云

运维 SSH 服务器 jenkins 免备案服务器

蓝易云 - maven教程:mvn package -T 2C命令解释

百度搜索:蓝易云

Java maven Linux 运维 云服务器

蓝易云 - nginx教程:alias和root的区别

百度搜索:蓝易云

nginx Linux 云服务器 root alias

Python优化、异常处理与性能提升技巧

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

昆仑万维开源2千亿稀疏大模型天工MoE,全球首创能用4090推理

新消费日报

GRequests: 让 HTTP 服务人类

江湖十年

golang 后端 HTTP http client #go

万界星空科技数字孪生智慧工厂

万界星空科技

数字孪生 智慧工厂 智能制造 mes 万界星空科技

石油行业的数字化转型与智能化发展:新技术综合运用助力业务提升

天津汇柏科技有限公司

数字化转型 智能

互联互通新进展-联通支付与微信实现商户收款码互联互通!

最新动态

Amazon Q Developer 实战:从新代码生成到遗留代码优化(下)

亚马逊云科技 (Amazon Web Services)

人工智能 生成式人工智能

Unix套接字进程通信初探【Java版本】

FunTester

蓝易云 - 在C/C++中使用vcpkg

百度搜索:蓝易云

c++ 运维 服务器 云服务器 高防服务器

【PMP必考点】2024年PMP敏捷知识必考点

敏捷开发

项目管理 产品经理 pmp 项目经理 PMP考试

深入研究区块链数字版权交易

dappweb

区块链数字版权交易

Ruby VM综述:MacRuby 0.8、Rubinius 1.2、MRI 1.8.7及1.9.2更新_Ruby_Werner Schuster_InfoQ精选文章