QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

【高并发】ReadWriteLock怎么和缓存扯上关系了?!

冰河

并发编程 读写锁 高并发 ReadWriteLock 签约计划第二季

28天瞎写的第二百二十六天:TechCrunch Hackathon 的故事

树上

28天写作

【并发编程的艺术】JVM内存模型

程序员架构进阶

架构 Java内存模型 Java虚拟机 28天写作

历史上的今天

IT蜗壳-Tango

七日更

你跟涨薪只差这份Java核心知识点文档,读懂它你就是技术大佬!

Java架构之路

Java 程序员 架构 面试 编程语言

区块链数字货币钱包系统软件开发|区块链数字货币钱包APP开发

系统开发

关于“为更新而更新”的一种新的理解

Nydia

week9-conclusion

J

共识算法的简单理解(一)

石君

28天写作

DCache 分布式存储系统|安装部署与应用创建

TARS基金会

缓存 分布式 微服务 存储 TARS

厉害!腾讯T3-2都还在学的微服务+MySQL+Kafka+boot2.x+虚拟机PDF

Java架构之路

Java 程序员 架构 面试 编程语言

疫情闭关修炼半个月,我竟把JDK源码都读懂了!

996小迁

Java 编程 架构 面试 程序人生

人设崩塌的美国生物实验室

脑极体

5G最核心的本质是能力可被编排及开放

JiangX

5G 数字化转型 28天写作

Windows AD 是否开启或者关闭了UAC服务

BigYoung

windows Windows 10

技术招聘常被吐槽,企业应该考虑好这一点

李忠良

28天写作

OMG,阿里大佬Kafka手写实战记录,这也太香了

Java架构之路

Java 程序员 架构 面试 编程语言

深度 | 阿里云蒋江伟:什么是真正的云原生?

阿里巴巴云原生

云计算 容器 运维 云原生 k8s

2020 总结 | VoltDB的亮点,你了解多少?

VoltDB

数据库 物联网 VoltDB

一个系统小BUG修复投产居然花了3个小时来处理(上)

罗小龙

28天写作 投产事故 解决思路

如何开发一个完善的Kafka生产者客户端?

李尚智

kafka 架构 中间件 消息中间件

史上最全!阿里巴巴2021年最新最全500道Java后端面试大全(值得收藏)

Java 编程 程序员 面试

week9-homework

J

产品质量管理活动流程

L3C老司机

2050年的一次出游 (28天写作 Day15/28)

mtfelix

自动驾驶 28天写作 科幻写作

惊悚,单个java进程占用700%的CPU

万里无云

Java 后端 cpu

soul 数据同步(三)http长轮询 同步策略

xzy

用docker-compose快速部署ChirpStack

远鹏

Docker-compose IoT ChirpStack LoraWan Go 语言

Java虚拟机知识 - JVM入门

小马哥

Java JVM 架构师 Java虚拟机 七日更

HTML(六)——html表单

程序员的时光

程序员 大前端 七日更 28天写作

从零开始学java第一天(为报训练营做准备)

落曦

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