BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Werner Schuster 关注 9 他的粉丝 ,译者 李明(nasi) 关注 0 他的粉丝 发布于 2009年7月23日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

相比较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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT