写点什么

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

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

关注

评论

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

从recat源码角度看setState流程

flyzz177

React

群晖NAS设置Calibre个人电子图书馆

刘旭东

群晖 Calibre 个人图书

ChatGPT 最近火得不要不要的

HoneyMoose

ChatGPT 使用 API 进行 Postman 调用测试

HoneyMoose

k8s 学习实战(一)

AiDaddy

k8s安装 kubenetes

Java高手速成 | 数据库实训:图书馆管理系统建模

TiAmo

数据库 管理系统 1月月更

React-Hooks源码深度解读

flyzz177

React

详解UDS CAN诊断:SecurityAccess Service(SID:0X27)

不脱发的程序猿

汽车电子 CAN ISO 14229 诊断和通信管理功能单元 SecurityAccess Service

TableLayout(表格布局)

芯动大师

Android Studio tablelayout 表格布局

5A原则

穿过生命散发芬芳

1月月更

2022年中国证券类APP创新专题分析

易观分析

金融 证券 证券app

从源码角度看React-Hydrate原理

flyzz177

React

一体化运维,降本增效!秒云助力海富通基金打造智能运维平台

MIAOYUN

运维 金融 智能运维 IT解决方案

【架构设计】你的应用该如何分层呢?

JAVA旭阳

Java 架构

2022年11月中国网约车领域月度观察

易观分析

网约车 行业 打车

React源码分析(一)Fiber

flyzz177

React

Kubernetes 跨集群流量调度实战 :访问控制

Flomesh

Service Mesh 服务网格 服务网格

谈谈你在面试中遇到的一面、二面、三面有什么区别?

风铃架构日知录

Java java面试 程序员面试 面试‘’ 面试流程

每个人都必须为2023年的十大基本技术趋势做好准备

超自动化

AI 超自动化

链上隐私交易成新刚需,Unijoin.io或成该赛道新契机

股市老人

2022年人民满意手机银行服务白皮书

易观分析

金融 白皮书 手机银行 用户

4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

HarmonyOS开发者

HarmonyOS

小心被坑死!如果你还在用 Zookeeper 做注册中心

风铃架构日知录

Java zookeeper 程序人生 后端 注册中心

国内首款支持gRPC+WebSocket调试的工具——Apipost

不想敲代码

贴吧低代码高性能规则引擎设计

百度Geek说

低代码 规则引擎 平台化 企业号 1 月 PK 榜

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

看透react源码之感受react的进化

flyzz177

React

深入react源码看setState究竟做了什么?

flyzz177

React

一文教会你mock(Mockito和PowerMock双剑合璧)

京东科技开发者

测试 powermock Mock pom 企业号 1 月 PK 榜

Reids的BigKey和HotKey

小小怪下士

Java redis 程序员

SPL 实现电力高频时序数据实时存储统计

石臻臻的杂货铺

SPL

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