【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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

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

关注

评论

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

企业为什么要部署专属的IM即时通讯软件?

WorkPlus

Karmada v1.2发布:开启全文本搜索新纪元

华为云开发者联盟

云计算 调度器 Karmada 全文本搜索 资源解释器

【Spring 学习笔记(七)】Spring 管理第三方Bean之管理Druid数据源

倔强的牛角

Java spring Java EE 6月月更

如何使用Superset可无缝对接MRS进行自助分析

华为云开发者联盟

大数据 数据分析 后端 Superset

设计师必备的设计导航网站

小炮

【高阶知识】用户态协议栈之Epoll实现原理

C++后台开发

后端开发 epoll Linux服务器开发 C++后台开发 户态协议栈

集成底座流程测试总结

agileai

测试流程 集成底座 企业服务总线 主数据平台 统一身份管理平台

实时监控,智能预警,疾控中心的战疫“速度”

博睿数据

智能运维 博睿数据

模块三

Geek_2ce415

基于任务调度的企业级分布式批处理方案

阿里巴巴云原生

阿里云 分布式 云原生 SchedulerX

Linux系统环境搭建

开发微hkkf5566

玩转云原生流量管理——Flomesh

Flomesh

云原生 流量控制 #开源

国内首个:ICPR2022多模态字幕识别比赛日前结束

科技热闻

什么是算子下盘

华为云开发者联盟

数据库 集群 算子

C++ Workflow异步调度框架 - 架构设计篇

1412

c++ 开源 workflow 异步调度 网络框架

企业数字化转型加速,选对在线协作工具事半功倍

小炮

大量模块壳工程本地如何快速编译?优酷 iOS 工程插件化实践

阿里巴巴终端技术

ios App 编译 架构设计

去中心化NFT交易平台开发

开发微hkkf5566

玩转云原生流量管理——Flomesh

Flomesh

云原生 流量控制 Service Mesh 服务网格 Pipy #开源

一对一直播源码部署,是系统上线运行的开始

开源直播系统源码

软件开发 一对一直播 一对一直播源码 直播系统源码

一年一度 OceanBase 技术征文大赛全面开启! 入门实战,等您来写

OceanBase 数据库

数据库

你好复工人,马斯克又因“工作狂”上热搜,远程办公究竟是好是坏?

WorkPlus

TiDB 6.0 实战分享丨冷热存储分离解决方案

PingCAP

TiDB

设计消息队列存储消息数据的 MySQL 表格

哈喽

「架构实战营」

BI 如何让SaaS产品具有 “安全感”和“敏锐感”(上)

葡萄城技术团队

SaaS BI 数据可视化

C++ Workflow异步调度框架 - 基本介绍篇

1412

c++ 开源 workflow 异步调度 网络框架

聚焦行业,赋能客户 | 博云容器云产品族五大行业解决方案发布

BoCloud博云

云原生 容器云

融云 IMKit Web 端上线,带你感受开发效率的参差

融云 RongCloud

告警消息何去何从?在飞书中飞起来

Rancher

Kubernetes k8s rancher

Java——类和接口

武师叔

Java 线程 6月月更

一款实用的综合性导航网站

小炮

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