在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

Azure App 部署Django 和 PostgrSQL

yann [扬] :曹同学

Python azure

JVM源码分析之Object.wait/notify实现

猿灯塔

JVM

服务发现:ZooKeeper vs etcd vs Consul

Tux Hu

Docker 容器 微服务 etcd Consul

经历过疫情,你懂得了什么

Winann

疫情 个人成长 生活 成长

零基础如何学架构

兆熊

架构

Leetcode 556. Next Greater Element III

隔壁小王

算法

Java实现Base64

Java

程序员的晚餐 | 5 月 15 日 如果不写代码了,那就开个饺子店

清远

美食

浅析 - CocoaLumberjack 3.6 之 DatabaseLogger

Edmond

ios sqlite log4j CocoaLumberjack DDLog

Web3极客日报#140

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

找一个更好的理由

史方远

职场 成长 工作

记一次MHA切换故障踩的坑

一个有志气的DB

MySQL 高可用 复制 主从同步 故障分析

战略懒惰有多可怕

Neco.W

创业 重新理解创业 初创公司

数列找规律的问题

oldj

数学

“四个维度” 讲明白什么是微服务!

攀岩飞鱼

微服务 单体系统 架构设计 团队组织 康威定律

谈谈双亲委派模型的第四次破坏-模块化

寻筝

Java JVM

奔腾吧,“后浪”李子柒!

无量靠谱

网红

一篇文章搞定Java处理Excel的各种疑难杂症

知春秋

Java Excel POI

游戏发行中学到的重要经验(严肃长文)

谢锐 | Frozen

独立开发者 游戏开发 游戏出海 移动互联网

为什么软件开发很难外包

刘华Kenneth

外包 DevOps 风险 背锅

如何在 Mac 上优雅的截图和录屏

Winann

macos 效率 效率工具 Mac

阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南

古时的风筝

Java规范 Java开发手册

高仿瑞幸小程序 09 云数据库初体验

曾伟@喵先森

小程序 微信小程序 大前端 移动

elasticsearch源码解析(一)——restapi

罗琦

elasticsearch 源码分析 RESTful

初次见面

KAMI

谈谈控制感(4):损失的后果很严重

史方远

职场 心理 成长

网站系统架构演进

Janenesome

读书笔记 程序员 架构 系统设计

回“疫”录(17):返宁的前一天

小天同学

疫情 回忆录 现实纪录 纪实

决战下半场:小程序技术助力金融APP重回C位

FinClip

小程序 数字化转型 app重构

看完这篇HTTP,跟面试官扯皮就没问题了

苹果看辽宁体育

https okhttp

游戏夜读 | Scikit-learn的2018自述

game1night

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