BT

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

OCaml已经做好iOS开发准备

| 作者 Sergio De Simone 关注 12 他的粉丝 ,译者 谢丽 关注 9 他的粉丝 发布于 2016年2月1日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

近日,来自旧金山的程序员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 

#include 
#include 

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;
}

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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