最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

MacRuby 0.5 Beta 增加 JIT、AOT、GCD 支持,删除 GIL

  • 2009-10-20
  • 本文字数:1077 字

    阅读完需:约 4 分钟

MacRuby 0.5 的首个 beta 版已经有了,目前仅适用于 Snow Leopard(MacOS X 10.6)机器。

InfoQ 就 MacRuby 的现状和未来采访了 MacRuby 的核心团队。

InfoQ MacRuby 的新 VM 是如何使用 LLVM 的?

MacRuby 按需编译所有东西(当代码需要实际运行时)。[LLVM] 位代码会在编译之前进行优化。

MacRuby 0.5 beta 的发布说明也提到了 LLVM 是在调用外部函数时用来生成存根的,因为这比在老版本的 MacRuby 里使用的 libffi 要来得快。

InfoQ:MacRuby Ahead-Of-Time(AOT)编译了部分 Ruby 标准库。这是为什么呢?

显然,这样做会使启动更快。我们使用 AOT 编译它们主要是为了测试 AOT 编译器。它们是作为主 rake 任务的一部分在生成的时候编译的。

InfoQ:对本地扩展(native extensions)的支持现在处于什么状态?

经过一些小的修改,我们可以使一些 C 扩展运行起来,比如说,ripper、digest、socket、zlib 等等。我们计划在将来的版本里完整地实现 MRI 的 C 扩展 API。

InfoQ:0.5 版的一个大改进是去掉了 GIL 。现在,这个实现已经有一段时间了,你的解决方案带来了哪些体验?

据我们所知,它没有带来任何显著的开销。启动一个线程的开销比之前稍微高一点,但之后大部分代码都能并行运行。 没有 GIL 的系统是让 MacRuby 成为真正的 Cocoa 开发平台的必要条件,因为桌面应用程序通常都会使用线程或者新近的 Grand Central Dispatch(GCD)。

InfoQ:MacRuby 允许使用 AOT 编译 Ruby 代码,那么,有没有可能不使用垃圾收集器,即能否仅仅使用 Objective-C 的引用计数内存管理?

不能。但我们正在考虑一种模式,在这种模式里,编译器将会生成自动释放池(autorelease pools),而运行库将不会使用 Autozone GC。如果你浏览邮件列表存档,就会看到最近在讨论这个话题。

上面提到的邮件列表讨论了如何模拟GC ,这对于在不支持Autozone GC 的平台上运行MacRuby 程序来说是至关重要的,比如说,iPhone。讨论里的另一个邮件解释了为什么把Autozone 移植到iPhone 上是不可行的,因为iPhone 版的Cocoa 是不认识GC 的。

MacRuby 0.5 的最终版本将会运行在 32 位和 64 位的 Leopard 和 Snow Leopard 上。

查看过去InfoQ 的MacRuby 报道,并开始0.5 版之旅吧。

查看英文原文: MacRuby 0.5 Beta Brings JIT, AOT, GCD Support, Removes GIL


译者介绍:李永伦,从 02 年开始关注.NET,读过 4 年工商管理,任过 3 届微软 MVP,最近恋上 Ruby,私底下喜欢研究哲学和心理学,酷爱动漫、科幻、科普和金庸武侠,爱好买书、读书和藏书。InfoQ 中文站内容团队,尤其是架构、SOA 和 Ruby 社区需要您的参与,有意者请邮件至 editors【AT】cn.infoq.com

2009-10-20 20:53933

评论

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

知识图谱、图数据平台、图技术如何助力零售业飞速发展

蓝海大脑GPU

图计算 图数据分析 图数据一体机

Google搜索为什么不能无限分页?

蝉沐风

elasticsearch 深度分页

互联网公司研发效能团队为啥必须独立?何时独立?

laofo

互联网 DevOps cicd 研发效能 工程效率

Linux测试端口的连通性

龙空白白

Vue-4-模板语法-1

Python研究所

前端 6月月更

python小知识-python作用域和闭包

AIWeker

Python python小知识

SpringBoot应用使用自定义的ApplicationContext实现类

程序员欣宸

Java spring springboot Spring Framework 6月月更

Vue中created和mounted的区别

devpoint

Vue Vue3 InfoQ极客传媒15周年庆

悬赏任务源码开发设计构建时,要留意哪些事项

开源直播系统源码

源码 软件开发 直播系统 悬赏任务源码

InfoQ 极客传媒 15 周年庆征文|【Python技能树共建】异常捕获预处理

梦想橡皮擦

Python 6月月更 InfoQ极客传媒15周年庆

Java中的static关键字

龙空白白

C#入门系列(十) -- 一维数组

陈言必行

C# 6月月更

InfoQ 极客传媒 15 周年庆征文|Socket请求和Http请求特点、区别及适用场景

No Silver Bullet

HTTP请求 6月月更 InfoQ极客传媒15周年庆 Socket请求

ES6新特性class类

大熊G

JavaScript 前端 6月月更

Neo 黑客松获奖名单揭晓,上万美金花落谁家?

TinTinLand

区块链

SAP 云平台多目标应用 Multi-Target Application 的开发技术介绍

Jerry Wang

云原生 Cloud SAP CloudFoundry 6月月更

ADB 日志抓取

甜甜的白桃

android adb APK 6月月更

设计千万级学生管理系统的考试试卷存储方案

Fan

架构师实战营

Python时区转换的两种方式

红毛丹

Python 6月月更

漫谈测试覆盖率

老张

软件测试 质量保障 质量度量

如何在使用 Flutter时切换应用时隐藏应用预览

坚果

6月月更

Linux编程_网页视频监控项目

DS小龙哥

6月月更

运算符 (第二天)

Jason199

运算符 js 6月月更

MySql事务

工程师日月

6月月更

『Three.js』起飞!

德育处主任

JavaScript canvas 前端可视化 three.js 6月月更

【高并发】关于乐观锁和悲观锁,蚂蚁金服面试官问了我这几个问题!!

冰河

并发编程 多线程 高并发 异步编程 6月月更

企业无忧 | Apipost私有化部署活动即将火热开启

Xd

后端 apipost 接口测试工具

Django API 开发:视图设置和路由

宇宙之一粟

django 6月月更

HPCA名人堂成员蒋晓维博士,任职大禹智芯首席科学家

硬科技星球

人工智能 阿里巴巴 大禹智芯 蒋晓维

NFT铸造交易平台开发市场详情

开发微hkkf5566

NFT链游GameFi系统开发,元宇宙游戏搭建

薇電13242772558

NFT 元宇宙 链游

MacRuby 0.5 Beta增加JIT、AOT、GCD支持,删除GIL_Ruby_Werner Schuster_InfoQ精选文章