写点什么

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

  • 2009-07-22
  • 本文字数:884 字

    阅读完需:约 3 分钟

相比较 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-07-22 11:441415
用户头像

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

关注

评论

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

中国最可靠的 Go 模块代理

happlyfox

学习 3月日更

企业数字化转型,营销技术驱动超级增长!

博文视点Broadview

Python API 邮件发送测试

HoneyMoose

深入理解ES8的新特性SharedArrayBuffer

程序那些事

JavaScript ecmascript 程序那些事 es8

Veema 寄来的新书

吴威

vmware 容灾 备份 veeam esxi

人工智能能和人类辩论了;《云网产业发展白皮书》发布

京东科技开发者

人工智能

uni-app跨端开发H5、小程序、IOS、Android(七):uni-app渲染

黑马腾云

html5 uni-app 大前端 3月日更

如何在Python中实现Round函数?

华为云开发者联盟

Python 函数 Numpy Round 舍入函数

LeetCode题解:126. 单词接龙 II,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

AIOT技术大起底:别人开发“软件”,海尔智家开发“生活”

DT极客

区块链圈频现百万元年薪招聘 现金+股票仍难觅良才

CECBC

区块链人才

【Axure9百例NO.45】中继器的不同场景下的样式处理

zhuchuanming

原型设计 Axure 交互原型

一个有情怀的PPT模板下载网站

happlyfox

学习 3月日更 工具分享

前端开发:数据处理方法分享(其一)

三掌柜

vue.js 大前端 3月日更

领跑行业!浪潮云斩获“2021云管和云网大会”多项殊荣

云计算 云原生

开源的 Switch 模拟器——GitHub 热点速览 v.21.12

HelloGitHub

GitHub 开源

产品经理能力不够,产品方法论来凑

lenka

3月日更

LiteOS内核源码分析:位操作模块

华为云开发者联盟

LiteOS 源代码 位操作 bit Huawei LiteOS

图像视频压缩:深度学习,有一套

华为云开发者联盟

深度学习 自编码器 图像压缩 循环神经网络 视频压缩

带你全面认识CMMI V2.0(三)——实践域

IPD产品研发管理

CMMI

Kubernetes认证管理员

云原生

Kubernetes 云原生 k8s CKA

(Day30) 谁来驱动变革

mtfelix

28天写作 bewriting

实践解析丨Rust 内置 trait:PartialEq 和 Eq

华为云开发者联盟

rust hash Trait PartialEq Eq

【IstioCon 2021】如何在Istio中进行源地址保持?

华为云原生团队

开源 云原生 istio 华为云 服务网格

C语言性能优化:减少相关性依赖,利用指令并行提升性能

1

编程 性能优化 C语言 cpu 100%

Python OpenCV 图像处理二值化,取经之旅第 7 天

梦想橡皮擦

3月日更

纸币会消失吗:数字货币如何走进我们生活

CECBC

货币

NA公链(Nirvana)NAC公链独步公链江湖

区块链第一资讯

区块链

适配器模式在Mybatis中的妙用

Java小咖秀

Java 源码 设计模式 mybatis 开发

上帝视角掌管城市动向!智慧园区驱动城市数字化转型

一只数据鲸鱼

物联网 数据可视化 智慧城市 智慧园区

Java学习笔记——实体类(ENTITY,VO,DTO,BO)

棉花糖

Java

Mac和Ruby综述:MacRuby AOT,用ChocTop创建DMG文件_Ruby_Werner Schuster_InfoQ精选文章