写点什么

Mac和Ruby综述:MacRuby AOT,用ChocTop创建DMG文件

2009 年 7 月 22 日

相比较 JRuby 或者 IronRuby 与其所属平台的集成而言,MacRuby 与 Cocoa 平台的结合更为紧密,这也是 MacRuby 的价值所在。MacRuby 似乎是 Mac 开发者使用 Ruby 开发客户端应用的最佳选择。最近在 MacRuby 的试验性分支上,引入了预编译(Ahead of Time,简称为 AOT)技术:

引入了 macrubyc,一个命令行工具,作为 AOT 编译器的接口。 macrubyc 允许你将一个给定的 Ruby 文件编译成 Mach-O 目标文件,并且还可以生成最终的可执行文件。

尽管现在使用 MacRuby 编写和部署 Ruby 应用已经可行,但这些应用依然需要携带 MacRuby 运行时一同发布。实现 AOT 的目标是为了解决如下问题:

所生成的 Mach-O 目标是真正的目标文件。它们可以用来生成 MacRuby 的可执行文件,你也可以在 Objective-C 的项目中通过 MacRuby 的 Objective-C API 来使用它们。 所生成的可执行文件嵌入了所有已编译的 Ruby 代码,当然也包括静态编译的 MacRuby。它可以独立发布,不需要依赖任何 MacRuby 或者 LLVM 运行时。因为 Ruby 源代码已经编译成了原生机器码(正如我们使用 JIT 编译器在运行时所做的一般),因此这也是混淆代码的一个不错的方式。最终的二进制文件看上去和 Objective-C 的二进制文件很像(当然体积要更大一些)。

举个例子, Chris Wanstrath 的 BaconDrop 工具使用 MacRuby 开发。尽管这个工具很小,但是在捆绑了 MacRuby 之后,它的体积达到了 15MB。如果借助于 AOT 编译成二进制文件的话,应该会更小一些。

BaconDrop 也展示了基于 Ruby 的工具是如何辅助 Mac 开发的。BaconDrop 以 Mac DMG 文件的形式发布,这是由 Dr Nic 开发的一个叫做 ChocTop 的工具来创建的。这个工具对所有的 Cocoa 应用都可以使用,自动创建 DMG 文件,并且会安装 Sparkle (用于处理软件更新)。ChocTop 拥有一套 DSL 化的配置系统,并在你的 rake 文件中添加一些任务。

一旦所有的 MacRuby 应用都可以使用 AOT 编译,在 OS X 应用开发方面,Ruby 便可成为 Objective-C 的有力竞争者(也许在 iPhone 开发方面还不会,因为 iPhone 的 Objective-C 运行时不支持垃圾回收)。

查看英文原文: Mac and Ruby Roundup: MacRuby AOT, DMGs with ChocTop

2009 年 7 月 22 日 11:44893
用户头像

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

关注

评论

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

多线程为了同个资源打起架来了,该如何让他们安定?

小林coding

并发编程 多线程 操作系统 计算机基础

week7 学习总结

Geek_2e7dd7

第七周总结

andy

极客大学

思维模型盲区:所知障和从众效应

石云升

思维模型 倾听 从众效应

架构师训练营 -- 第七周作业

stardust20

公开课 | 吉祥人寿从0到1的 Jira 落地实践

Atlassian速递

敏捷开发 研发管理 Jira

LeetCode 题解:122. 买卖股票的最佳时机 II,JavaScript,一遍循环,详细注释

Lee Chen

前端进阶训练营

提速数字化!区块链加速应用落地,新制造与服务不断推出

CECBC区块链专委会

第七周作业

andy

极客大学

redis系列之——缓存穿透、缓存击穿、缓存雪崩

诸葛小猿

redis 缓存穿透 缓存击穿 缓存雪崩

排序笔记

烫烫烫个喵啊

算法 排序

Elasticsearch源码解析:环境搭建

Jackey

elasticsearch

寻找感动的养分

一直AC一直爽

感恩 随笔杂谈 感动

一个简单的物联网设备接入网关高可用方案

凸出

Java nginx Netty

你的个人博客网站该上线了!

北漂码农有话说

Redis(二)单机版安装

奈何花开

Java redis

性能测试

陈皮

数据分析师 ”痛“ 谁能了解

松子(李博源)

数据分析 产品经理 数据产品 数据模型

布隆过滤器是个啥!

诸葛小猿

布隆过滤器 bloomfilter bloom filter

百度CTO王海峰对话王辰院士:全球“最强大脑”助力大数据抗疫时代来临

脑极体

一千万个身份证号在java中需要多少内存

华宇法律科技

Java string heap memory

week7 作业

Geek_2e7dd7

爸爸,我想握住你的手

一直AC一直爽

随笔杂谈 父爱

我有一个梦想

一直AC一直爽

随笔杂谈 梦想

[POJ 1001] Exponentiation JAVA解题报告

一直AC一直爽

算法 刷题 POJ ACM

轻松应对并发问题,简易的火车票售票系统,Newbe.Claptrap 框架用例,第一步 —— 业务分析

newbe36524

容器 微服务 架构设计 .net core ASP.NET Core

最短路径问题(无负边值)——Dijkstra算法

烫烫烫个喵啊

算法 prim 最短路径

可读代码编写炸鸡九 - 抽取子问题

多选参数

编程 代码 代码优化 代码规范 可读代码

【源码系列】Spring Cloud Gateway

Alex🐒

源码 SpringCloud Gateway

三分钟热度的干劲

落曦

架构师是怎样炼成的 7-1 性能测试与优化

闷骚程序员

2021年,算法还“香”吗?

2021年,算法还“香”吗?

Mac和Ruby综述:MacRuby AOT,用ChocTop创建DMG文件-InfoQ