写点什么

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

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

关注

评论

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

【华为云技术分享】DLI跨源|当DLI遇见MongoDB

华为云开发者联盟

数据库 mongodb dlib 数据集 华为云

给技术同学的建议:人人都该懂的埋点知识

易观大数据

埋点 智能运营

刚坐下,一个面试官居然问了我 30个Spring Boot问题!

只喝纯牛奶

骚操作!用 CPU 烤肉,这位程序员做到了!

程序员生活志

程序员 gpu 程序人生

架构师技术领导力成长之路

IT民工大叔

领导力 架构师

新技术(区块链)--让游戏行业走的更远

CECBC

区块链技术 防篡改不可逆

编程日课•理解学院

顿晓

学习 编程日课 理解学院

策略模式解析

南方有乔木兮

实践录丨如何在鲲鹏服务器OpenEuler操作系统中快速部署OpenGauss数据库

华为云开发者联盟

数据库 鲲鹏920 操作系统 服务器 opengauss

LeetCode题解:189. 旋转数组,pop+unshift一行,JavaScript,详细注释

Lee Chen

大前端 LeetCode

Twitter高性能分布式日志系统架构解析

俊俊哥

pulsar bookKeeper 分布式文件存储

JVM系列之:通过一个例子分析JIT的汇编代码

程序那些事

Java JVM JIT 汇编

海华大赛第一名团队聊比赛经验和心得:AI在垃圾分类中的应用

华为云开发者联盟

AI 算法 数据分析 垃圾回收机制 华为云

创业公司技术体系建设-CI/CD

星际行者

CI/CD

(政务上链)新数据孤岛、安全风险等问题待解

CECBC

工作效率 公开透明 新技术

Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等

我是苞谷

面经手册 · 第1篇《认知自己的技术栈盲区》

小傅哥

Java 面试 小傅哥 技术栈

实现扫码登陆的最简单方案与原理

Java小咖秀

Java 解决方案 经验总结

区块链+国防安全,科技是核心战斗力

CECBC

新技术 国防安全 科技信息

java高并发系列 - 第11天:线程中断的几种方式

简爱W

秒懂云通信:如何用阿里云语音通知服务(小白指南)

阿里云Edge Plus

语音

六字说出微服务的本质

看山

架构 微服务 签约计划第二季

腾讯安全领御区块链与张裕集团达成战略合作,打造高端葡萄酒区块链溯源平台

CECBC

产品溯源 无法篡改

一条更新sql在mysql中是怎么执行的

简爱W

智能的财务管理系统,来自某科技公司CEO亲手搭建

明道云

Spring系列第2篇:控制反转(IoC)与依赖注入(DI),晦涩难懂么?

老大哥

week8--课后作业

Geek_165f3d

架构师训练营第九周

Melo

我天!xx.equals(null) 是什么骚操作??

导导

LeetCode002-两数相加-medium

书旅

算法 数据结构与算法

功能扎实的ERP模版已上架应用库(支持免费安装使用)

明道云

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