写点什么

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:441449
用户头像

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

关注

评论

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

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

mac

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

专业强大的英语学习工具:Eudic欧路词典增强激活版

mac大玩家j

英语学习 Mac软件 英语学习工具

专家观点∣国产化价值替代之路—钢铁企业的特征管理

用友BIP

国产价值替代

发布jar包到maven中央仓库

不在线第一只蜗牛

Java 仓库 镜像仓库

ThingsBoard 前端项目轮播图部件开发

echeverra

thingsboard

35 | Trie树:如何实现搜索引擎的搜索关键词提示功能

鲁米

什么是数字化营销?如何进行数字化营销?数字化有多重要?

天津汇柏科技有限公司

企业数智化进阶模型,大型企业实现数智融合的成功之“道”

用友BIP

企业服务大模型

C# 从代码入门 Mysql 数据库事务

EquatorCoco

C# MySQL 数据库 编程语言

DBA解决慢查询问题的利器

NineData

sql 工具 dba NineData 慢查询分析

为什么说低代码的出现是时代的选择?

互联网工科生

软件开发 低代码 JNPF

外贸客户如何开发西班牙市场

九凌网络

淘宝订单API接口在电商行业中的应用与实现

Noah

软件测试/人工智能丨利用 ChatGPT 编写测试报告

测试人

人工智能 软件测试

# 浅谈分布式操作系统KubeWharf 的第二批开源项目

苏沐

#k8s #云原生 分布式操作系统 #运维 KubeWharf

让网页自己总结、解答、翻译、创作?你的超级助理已上线

新消费日报

【教程】浅谈ios混淆和加固加密

Debian pip 错误 error: externally-managed-environment 解决方法

百度搜索:蓝易云

Linux 运维 pip 云服务器 Debian

数据驱动国资监管 用友BIP助力提高国有资本运营效能

用友BIP

数据驱动

何怡澜:从抖音网红到芯片创业者的跨界之旅

科技热闻

用友iuap智能中台“数智员工”在中核四川环保成功上岗

用友BIP

iuap

2024上海智慧城市展会(世亚智博会)促进长三角地区智慧城市发展

AIOTE智博会

智博会 上海智博会 智慧城市展

2023最新Go面经:百度滴滴小米360小红书展盟优咔科技......

王中阳Go

golang 面试题 面经 八股文 求职技巧

EMQ 与边缘计算社区共同举办全球边缘计算大会上海站,12月16日

EMQ映云科技

边缘计算 mqtt emq emqx

即时通讯技术文集(第27期):实时音视频技术合集(Part2) [共17篇]

JackJiang

网络编程 即时通讯 IM

专业强大的远程管理:Royal TSX激活最新版

胖墩儿不胖y

远程办公 远程控制软件 Mac软件

教你使用Prometheus-Operator进行K8s集群监控

华为云开发者联盟

云原生 k8s 后端 华为云 华为云开发者联盟

OpenHarmony人才生态大会|润开鸿分享全国智能物联行业产教融合共同体建设实践

新消费日报

CentOS-8 - AppStream 错误:为 repo ‘AppStream‘ 下载元数据失败解决教程。

百度搜索:蓝易云

云计算 Linux centos 运维 云服务器

1688一件采购实现指南:含代码实现采购流程

Noah

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