NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

基于 Argo CD 与 Argo Workflows 的 GreptimeDB 云端自动化升级实践

Greptime 格睿科技

rust 时序数据库 云原生数据库 国产时序数据库 自动升级

开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比

阿里巴巴云原生

阿里云 云原生 dubbo

如何在浏览器中启用 WebGL 以使用 HTML5 3D 查看器

3D建模设计

html5 WebGL 3D 查看器

Microsoft Office LTSC 2021 for Mac v16.77 beta中文版

mac

办公软件 苹果mac Windows软件 office2021

量化智能机器人开发,炒币机器人功能部署搭建

V\TG【ch3nguang】

量化交易机器人开发 炒币机器人

BetterZip 5中文下载+BetterZip 5注册码

mac大玩家j

Mac软件 解压缩工具 压缩软件

Tableau Desktop 2019 for Mac(全能数据分析工具) v2019.1.0激活版

mac

数据分析工具 Tableau Desktop 2019 苹果mac Windows软件

浪潮信息 KeyarchOS 助力 IT 企业安全管理业务完成 CentOS 迁移替换 | 龙蜥案例

OpenAnolis小助手

开源 操作系统 IT 浪潮信息 龙蜥案例

ARTS 打卡第二周

直须

个人成长 前端 ARTS 打卡计划

推荐前 6 名 JavaScript 和 HTML5 游戏引擎

3D建模设计

游戏引擎

一文讲透低代码开发的优势

高端章鱼哥

软件开发 低代码 应用开发 JNPF

动态规划-编辑距离-两字符串集合重排序

alexgaoyh

重排序 动态规划 编辑距离 文本对齐 编辑距离变化过程

文心一言 VS 讯飞星火 VS chatgpt (81)-- 算法导论7.4 6题

福大大架构师每日一题

福大大架构师每日一题

mysql基础——认识索引

树上有只程序猿

MySQL 索引

隐语纵向联邦 SecureBoost Benchmark白皮书

隐语SecretFlow

大数据 AI 数据安全 隐私计算 开源社区

Sentieon | 应用教程: TNscope®使用机器学习模型进行有匹配正常样本的体细胞变异发现

INSVAST

基因测序 应用教程 TNscope

HoudahSpot最新中文版+补丁安装教程

胖墩儿不胖y

Mac软件 文件搜索 搜索工具 搜索软件

ARTS 打卡第二周

直须

个人成长 前端 ARTS 打卡计划

高效数据传输与管理利器:镭速传输方案助力企业提升效率与安全

镭速

数据传输 分发数据 管理数据 镭速数据传输

7个用于机器学习和数据科学的基本 Python 库

3D建模设计

Python AI人工智能

StarRocks 存算分离技术探索活动回顾

StarRocks

数据库 数据仓库 OLAP 存算分离

PyTorch 提高生产力的技巧

3D建模设计

机器学习 PyTorch

Paper推荐|「隐私集合求交PSI系列」奖励升级

隐语SecretFlow

大数据 数据安全 隐私计算 开源社区 论文推荐

Node.js 的 Buffer 是什么?面向开发者的指南

Liam

JavaScript node.js 程序员 后端 buffer

五种重要的 AI 编程语言

3D建模设计

人工智能 AI

【高危】Kubernetes Windows节点kubernetes-csi-proxy提权漏洞 (CVE-2023-3893)

墨菲安全

网络安全 漏洞情报

质押挖矿模式系统开发,矿池系统部署搭建

V\TG【ch3nguang】

挖矿矿池系统开发案例 质押挖矿

交易所系统开发/秒合约交易所/锁仓挖矿/前端uinapp

V\TG【ch3nguang】

交易所开发 秒合约

6种限流实现,附代码![通俗易懂]

王磊

Java Java面试题

【中危】Spring Kafka 反序列化漏洞 (CVE-2023-34040)

墨菲安全

网络安全 漏洞情报

WiFi7 is coming -IPQ9574-QCN9274-speeds up to 30Gbits per second-quaclomm-chipset

wifi6-yiyi

WiFi7 30g

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