写点什么

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

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

关注

评论

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

vueCli3.x版本中如何修改打包好的css、js、img文件名

木叶🐱

7月月更

不是我说,Nacos和Apollo中的长轮询定时机制,真的太好用了

Java全栈架构师

Java 程序员 面试 微服务 nacos

全新出品!阿里P5工程师~P8架构师晋升路线揭秘

程序员小毕

Java 程序员 面试 架构师 学习路线

软件研发落地实践,要从设计就开始

华为云开发者联盟

云计算 后端 开发

不吹不黑JAVA Stream的collect用法与原理,远比你想象的更强大

程序员小毕

Java 程序员 程序人生 stream collect

Kafka Topic Partition Offset 这一长串都是啥?

华为云开发者联盟

后端 华为云

动手实践丨手把手教你用STM32做一个智能鱼缸

华为云开发者联盟

物联网 IoT

面试官:你确定Redis是单线程的进程吗?

Java永远的神

Java redis 程序员 架构 面试

万物皆可Cassandra:HUAWEI Tag背后的神仙数据库

华为云开发者联盟

数据库 后端

模块七

Geek_2ce415

Redis 持久化 - RDB 源码详细分析|保姆级别分析!全网最全

领创集团Advance Intelligence Group

持久化 rdb redis 底层原理

怎么学自动化测试

和牛

测试

云计算和大数据的关系以及区别详细讲解

行云管家

云计算 大大数据

Verilog HDL

贾献华

7月月更

快速构建企业级应用的开发平台

力软低代码开发平台

字节跳动CVPR 2022多项目夺魁,获模拟人脑感知、长视频理解挑战双料冠军

字节跳动视频云技术团队

计算机视觉 图像处理 图片处理 视频理解 视频云

深入揭秘 epoll 是如何实现 IO 多路复用的

C++后台开发

网络编程 epoll IO多路复用 C++后台开发 C++开发

uni-app进阶之内嵌应用【day14】

恒山其若陋兮

7月月更

四个简单例子教你通过用户行为记录提高用户体验

观测云

短视频直播系统源码——如何优化满足用户需求?

开源直播系统源码

直播系统源码 开源源码 短视频直播系统源码

算法题每日一练---第1天:猴子分香蕉

知心宝贝

算法 前端 后端 云开发 7月月更

2022年5月视频用户洞察:用户使用时长增长 平台降本增效初见成效

易观分析

视频行业

Vue3:显示markdown文档

空城机

markdown Vue3 7月月更

Mria+RLOG新架构下的EMQX 5.0如何实现1亿MQTT连接

EMQ映云科技

物联网 IoT mnesia emqx 7月月更

想进大厂拿高薪?掌握Redis的Sentinel哨兵原理将是至关重要的突破口

了不起的程序猿

Java java程序员 Redis 数据结构

值得一看的智能运维AIOps关键核心技术概览!

云智慧AIOps社区

人工智能 机器学习 运维 智能运维 自动化运维

李宏毅《机器学习》丨2. Regression(回归)

AXYZdong

机器学习 7月月更

如何使用IDEA数据库工具连接TDengine?

TDengine

数据库 tdengine 时序数据库

易周金融 | 邮惠万家银行开业;微信公众号叫停四类金融营销宣传

易观分析

金融

易观千帆银行用户体验中心成立,助力银行业用户体验升级

易观分析

银行 用户体验

JAVA编程规范之控制语句

源字节1号

后端开发

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