写点什么

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:531027

评论

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

IP纯净度对跨境电商有哪些影响

IPIDEA全球HTTP

电脑越用越慢,有什么好的解决方案?

上海锐起科技

KaiwuDB X 临沂大数据局 | 重点车辆一体化监管,助力你我的安全出行 🤝

KaiwuDB

KaiwuDB 分布式多模数据库 重车辆监管平台

Invicti v24.9.0 发布下载,新增功能概览

sysin

invicti

Introducing the DR40X9: A High-Performance Wireless Communication Device

wallyslilly

IPQ4019 ipq4029

京东技术专家的修炼之道——成为一名“六边形战士”

京东科技开发者

《黑神话:悟空》——高科技点亮西游神话璀璨之路

GPU算力

马斯克 节点搭建 AIPC 黑神话悟空 PC集群

简化登录流程,助力应用建立用户体系

HarmonyOS SDK

HarmonyOS NEXT

PoS 和 PoW 矿机系统区块链公链开发成本分析

区块链软件开发推广运营

dapp开发 链游开发 NFT开发 公链开发 代币开发

文献解读-The trans-omics landscape of COVID-19

INSVAST

基因数据分析 生信服务

JMeter 介绍与安装

霍格沃兹测试开发学社

KaiwuDB 受邀亮相 2024 数博会

KaiwuDB

数博会 KaiwuDB

什么是APT攻击,如何处理

德迅云安全杨德俊

nodejs中路径相关api

秃头小帅oi

Meme“淘金”热潮下:Meme发射平台的安全风险分析

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

亚信安慧AntDB-M 只读事务提交优化

亚信AntDB数据库

AntDB

曝字节 AI 硬件团队首款自研产品为智能耳机,与豆包联动;OpenAI 神秘新模型或将在两周内发布丨 RTE 开发者日报

声网

报名啦|PolarDB数据库创新设计赛(天池杯)等你来战

阿里云数据库开源

数据库大赛 国赛 阿里云PolarDB

Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪

sysin

macos Parallels Desktop

《黑神话:悟空》下的科技众生相

脑极体

AI

mac电脑植物大战僵尸版下载

你的猪会飞吗

mac游戏 Mac游戏下载 mac单机游戏

剖析 Redis List 消息队列的三种消费线程模型

不在线第一只蜗牛

数据库 redis

Rust 助力无服务器构筑云计算新引擎

亚马逊云科技 (Amazon Web Services)

云计算 Serverless rust

爽了!直接口诉让豆包MarsCode 开发文章评论区BOT!

豆包MarsCode

人工智能 编程 AI 开发

Cisco Catalyst 9100 无线接入点 IOS XE 17.15.1 发布下载,新增功能概览

sysin

Cisco ap 思科 IOS XE 9100

Spring webflux注解:提供全面的JPA注解应用案例(必须收藏)

肖哥弹架构

spring spring webflux

公开课 | 金九银十,测试开发面试秘籍大公开!

测试人

软件测试

AutoBots在ToB订单履约场景的落地应用

京东科技开发者

Cisco Modeling Labs (CML) 2.7.2 发布下载,新增功能概览

sysin

Cisco CML

Java 中堆内存和栈内存上的数据分布和特点

emanjusaka

Java stack heap

为什么Java已经不推荐使用Stack了?

EquatorCoco

Java Python

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