写点什么

MacRuby 0.5 将引入基于 LLVM 的 VM,性能提升明显

  • 2009-03-31
  • 本文字数:886 字

    阅读完需:约 3 分钟

MacRuby 0.4 的发布引入了一个全新的图形库,并进行了一些改进,比如线程化 GC。在此之后,下个版本的 MacRuby 的重点将会是性能方面的改进。

有篇博文解释了在一个试验性的 MacRuby 分支上,全新的 VM 采用了 LLVM,从而替换掉了 YARV

全新的 VM 直接将解析器中的抽象源代码树(AST)转换成 LLVM 的中间表示(IR),再将其编译为优化过的机器码。还有大量 的关键性优化业已完成,例如更快的 fixnum 数学运算、缓存的方法分派、零成本的 IA64 异常、更快的实例变量访问、常量缓存、更快的 break/next、更轻量级的本地变量和尾部调用优化等等。

新 VM Roxor 的源代码已经在一个试验性的 SVN 分支之上。compile_node 方法通常会取得 Ruby AST 并转换成 LLVM 指令,这些指令可能是原语,也可能是 Ruby 运行时的调用。

因为 MacRuby 是基于 Ruby 1.9.1 的,引入试验性 VM 或者对 Objective-C 类型的使用等修改可能会导致兼容性问题。为了确保兼容性,MacRuby 集成了 RubySpec(博文中有所提及):

当前的试验性分支已经可能可以通过大部分的语言规格,而这是我们回归测试套件的一个标准部分。我们也一直在更新规格,以便可以跟上 Ruby 1.9 的步伐。

RubySpec 是一个可执行的规格,用于定义 Ruby 实现的行为,最早由 Rubinius 项目所发起。

Antonio Cangiano针对 MacRuby 的试验性版本对一些语言特性进行了评测,与 MRI 和标准 1.9.1 相比,取得了很不错的成绩。在将来的版本中,究竟其性能还能提升多少,目前尚不可知。Antonio 还指出了 MacRuby 的一些优势:

较之 Objective-C 和 Ruby 的混合(例如 RubyCocoa 的桥接),开发者可以使用 MacRuby 来与 Mac OS X 的核心技术相集成,并将其作为 Objective-C 的替换语言。确切地说,Objective-C 的运行时和世代垃圾回收器是 MacRuby 的核心。 但是从 API 的角度来看,开发者可以使用 Ruby 来编写代码,而不是使用更加繁琐和低级的 Objective-C。

考虑到 GUI 程序库长长的列表和 Ruby 的抽象能力,面向 OS X 的开发者可以简洁地使用 MacRuby 来构建应用,并紧密地与 Cocoa 程序库相集成,来代替 Objective-C。

查看英文原文: MacRuby 0.5 Will Have Faster VM Based on LLVM

2009-03-31 01:161543
用户头像

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

关注

评论

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

GitHub不再支持密码验证解决方案:SSH免密与Token登录配置

zhoulujun

git GitHub SSH Token 免密登录

梳理会在Scrum中是活动还是事件?——《Scrum指南》重读有感(6)

Bruce Talk

Scrum 敏捷 随笔 Agile

看完这篇博客,Python Django 你就学会一半了

梦想橡皮擦

8月日更

持久层Mybatis中对于SQL注入的问题,聊聊你的想法?

卢卡多多

SQL优化 8月日更

有书香气的七夕节

箭上有毒

8月日更

新药研发周期越来越短,北鲲云超算平台如何提高药企竞争力?

北鲲云

Web框架Gin | Gin 中间件

xcbeyond

Go 语言 gin gin-middleware 8月日更

【设计模式】中介者模式

Andy阿辉

C# 后端 设计模式 8月日更

区块链技术 | 数字货币的未来发展前景趋势分析

CECBC

从0开始的TypeScriptの七:函数

空城机

typescript 大前端 8月日更

Android开发:Android Studio插件GsonFormat根据Json自动生成javabean的方法

三掌柜

8月日更 8月

毕业总结

Johnny

架构实战营

万字文肝Python基础知识

ベ布小禅

8月日更

模式包括问题和解决方案

escray

学习 极客时间 如何落地业务建模 8月日更

部署MinIO存储服务的四种方式

liuzhen007

8月日更

【自驱型成长】——控制感

LeifChen

压力 控制感 8月日更 自驱型成长

Linux之rcp命令

入门小站

Linux

在线日期计算器

入门小站

工具

上游思维:上工治未病

石云升

读书笔记 公司管理 8月日更 上游思维

【前端 · 面试 】HTTP 总结(十二)—— URL 和 URI

编程三昧

面试 HTTP url 8月日更

JavaScript继承的实现方式:原型语言对象继承对象原理剖析

zhoulujun

JavaScript

【Vue2.x 源码学习】第三十五篇 - 组件部分 - Vue.component 实现

Brave

源码 vue2 8月日更

架构实战营 毕业设计:设计电商秒杀系统

Ahu

阿里P8亲传Java面试指南,助我一路过关斩将,成功拿到大厂Offer

Java 编程 面试 程序人生 架构师

前端之算法(四)快速排序

Augus

算法 8月日更

配置Flink流式应用(九)

Databri_AI

flink Kubernetes YARN

minetest Window编译运行

c++ 开源 游戏 我的世界

Linux从头学:所有编程语言中的栈操作,底层原理都在这里

Java 编程 架构 面试 架构师

Git 应该用 fetch 还是 pull

HoneyMoose

https 与 http 区别

一个大红包

8月日更

QDS04 TensorFlow

耳东@Erdong

tensorflow 8月日更 qds

MacRuby 0.5将引入基于LLVM的VM,性能提升明显_Ruby_Werner Schuster_InfoQ精选文章