速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

OCaml 已经做好 iOS 开发准备

  • 2016-01-31
  • 本文字数:1383 字

    阅读完需:约 5 分钟

近日,来自旧金山的程序员 Edgar Aroutiounian 为 OCamliOS( Jeffrey A. Scofield 不久前推出的一个面向 iOS 的 OCamml 交叉编译器创建了一个程序包。InfoQ 就此对他进行了采访。

Scofield解释说,许多年来,他一直维护着一系列针对OCaml 编译器的补丁。近日,在Gerd Stolpmann 的帮助下,这些补丁进入了 OCaml 官方 GitHub 库的一个分支。按照 Scofield 的说法,在某个时候,该分支应该合并到 OCaml 正式版本中。

基于 Scofield 和 Stolpmann 的工作,Aroutiounian 将 OCamliOS 封装成一个 OPAM 程序包,使开发人员更容易安装它。他提供了一个简单的例子,展示如何将OCmal 代码集成到iOS Objective-C 应用里。下面的OCaml 代码片段将注册一个回调函数,并稍后从Objective-C 调用:

复制代码
let make_string () =
print_endline "Hello Word from OCaml";
"Hello World "
let () =
Callback.register "make_string" make_string
复制代码
#define CAML_NAME_SPACE
#import <foundation foundation.h="">
#include <caml callback.h="">
#include <caml mlvalues.h="">
int main (int argc, char **argv)
{
caml_startup(argv);
caml_callback(*caml_named_value("make_string"), Val_unit);
NSLog(@"Now using objective-c code");
return 0;
}</caml></caml></foundation>

OCaml 代码可以编译成一个独立的 iOS 可执行文件(不适合创建通过应用商店发布的应用)或者一个 C 静态库。目前,唯一可以在 OCaml 中使用的程序包是它的标准库。将来会增加对其他程序包的支持。

为了了解更多有关 opam-ios 和 OCaml for iOS 的信息,InfoQ 采访了 Aroutiounian。

opam-ios 究竟带来了什么?

它为程序员带来了方便。OPAM 是一个高级的 OCaml 包管理器。我想让 iOS OCaml 编译器成为 OCaml 世界的一等公民。

使用 opam-ios 能够为 iOS 应用开发带来什么好处?按照您的设想,通过 opam-ios 使用 OCaml 的 iOS 应用是个什么样子?

好处是,OCaml 是一种真正的函数式编程语言,从创建之初就遵循这一理念。它非常灵活,需要的话,可以使用 C 调用 Objective-C,实现某些已有代码的重用,例如 GUI 代码。按照我的设想,使用 OCaml 实现业务逻辑,Objective-C 仅用于 GUI 展示,虽然 OCaml 也支持面向对象编程,而我也可以将 Objective-C 对象封装成 OCmal 对象。

可以认为 OCaml 对 iOS 的支持已经成熟了吗?您接下来计划增加什么特性?

我并没有做为这个 iOS 编译器编写补丁这种艰苦的工作。基本情况是,苹果使用了一个老版本的 ARM 汇编编译器,从根本上讲,还是一个派生版本。因此,与 Linux 汇编编译器生成的 ARM 程序相比,他们的 ARM 汇编程序略有不同。所以,Gerd Stolpmann 及来自 Psellos.com 的朋友们才是真正的英雄,是他们提供的编译器和补丁让它可以投入使用并具备了重现性。所以现在,这还是该编译器的一个补丁版本,但很快它将正式成为该编译器的一部分。

所以,我接下来准备增加的特性是为每个版本创建更多的程序包。例如,现在仅能支持到 iOS SDK 8.3,但我可以增加更多的编译器,比如说,支持到 SDK 9.2。Jeff 在 Psellos 已经完成了令人惊叹的工作。他刚刚又有新的发布,这次是 OCaml 4.02.3,那是最新最棒的版本,适用于 iOS SDK 9.2。基本上是最先进的。

OCamliOS 运行在 OS X 10.11 上,生成 iOS 7.0+ 代码。Opam-ios 可以从 OCaml 包管理器 OPAM 安装。

查看英文原文: OCaml Now Ready for iOS Development

2016-01-31 18:002922
用户头像

发布了 1008 篇内容, 共 392.7 次阅读, 收获喜欢 344 次。

关注

评论

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

第五周学习笔记

张荣召

Week_05 总结

golangboy

极客大学架构师训练营

5.3 分布式缓存架构:一致性 hash 算法

orchid9

5.5 负载均衡架构

orchid9

week1-作业一:食堂就餐卡系统设计

未来已来

架构第五周作业

Geek_Gu

极客大学架构师训练营

架構師訓練營第 1 期 - 第 05 周總結

Panda

架構師訓練營第 1 期

食堂就餐卡系统设计

jizhi7

第五周总结

fmouse

5.5负载均衡架构

张荣召

架构图

猴子胖胖

架构

「架构师训练营第 1 期」第五周作业

张国荣

架构师训练营第一周学习总结

张小胖

极客大学架构师训练营

5.1 分布式缓存架构:架构原理与注意事项

orchid9

第五周总结

Geek_ac4080

第五周 技术选型 学习总结

应鹏

学习 极客大学架构师训练营

架构师训练营第五周总结

xs-geek

极客大学架构师训练营

架构第5周总结

Geek_Gu

极客大学架构师训练营

第一周作业总结

hunk

极客大学架构师训练营

2期架构师训练营 - 第一周学习总结

云飞扬

极客大学架构师训练营

第五周作业

Geek_ac4080

食堂就餐卡系统设计

张小胖

极客大学架构师训练营 张小胖

架构师训练营第一周学习总结

xiaomao

2期架构师训练营 - 食堂就餐卡系统设计

云飞扬

极客大学架构师训练营

5.4消息队列:如何避免系统故障传递?

张荣召

第一周 架构方法-学习总结

jizhi7

极客大学架构师训练营

第五周作业(作业一)

Geek_83908e

极客大学架构师训练营

5.2 分布式缓存架构:常见的缓存实现形式

orchid9

5.4 消息队列:如何避免系统故障传递?

orchid9

架构师训练营第五周命题作业

一马行千里

极客大学架构师训练营 命题作业

week1- 作业二:周总结

未来已来

OCaml已经做好iOS开发准备_移动_Sergio De Simone_InfoQ精选文章