AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

移动App的设计流程是怎样的?

InfoQ IT百科

阿里云 云效一站式研发平台

阿里云云效

阿里云 DevOps 云原生 研发 一站式研发平台

不care工具,在大数据平台中Hive能自动处理SQL

华为云开发者联盟

sql 大数据 mapreduce hive 数据分析

百尺竿头更进一步 – Amazon Aurora 的读写能力扩展之 ShardingSphere-Proxy 篇

亚马逊云科技 (Amazon Web Services)

Tech 专栏

如何提升研发效能实现 10 倍研发效能提升

阿里云云效

云计算 阿里云 云原生 研发效能 研发

Java篇-序列化与反序列化

是老郭啊

Java 对象 序列化 反序列化

java高级用法之:JNA中的回调

程序那些事

Java Netty 程序那些事 4月月更

Hoo虎符研究院 |ETH2.0合并在即 速来围观流动性质押赛道的潜力项目

区块链前沿News

eth 虎符 Hoo 虎符交易所

Carina 本地存储入选 CNCF 云原生全景图

BoCloud博云

开源 cncf 本地存储

从杀慢查询入手来预防 MySQL 雪崩的办法

Qunar技术沙龙

dba

Android C++系列:C++最佳实践5 const

轻口味

c++ android ndk jni 4月月更

深入JVM内置锁 synchronized 底层

janyxe

JVM synchronized synchronized锁升级过程

App分发是什么意思?

InfoQ IT百科

TASKCTL 容器签出失败解决方法

敏捷调度TASKCTL

大数据 DevOps 分布式 ETL 自动化运维

TASKCTL 作业流程无触发设计

敏捷调度TASKCTL

大数据 DevOps 分布式 自动化部署 ETL任务

IM开发技术分享:浅谈IM系统中离线消息、历史消息的最佳实践

JackJiang

网络编程 TCP协议 即时通讯IM im开发

容器化应用:我们都经历了什么

Rayzh

Docker Kubernetes 云原生 Cloud Native

【MARS TALK 05】今日头条 App 基于火山引擎MARS研发流程最佳实践

字节跳动终端技术

android 今日头条 字节跳动 研发

毕设:设计电商秒杀系统

王大胖

App能收集哪些个人信息?

InfoQ IT百科

怎么做App分发?

InfoQ IT百科

真香!盘点云主机三种典型应用场景

天翼云开发者社区

云主机

2022鲲鹏开发者创享日即将扬帆起航 与开发者共创未来共享非凡成就

科技热闻

新基建下纵览全局,2+4+31+X实力出镜

天翼云开发者社区

云计算 云技术

GPU市场规模和各子市场趋势分析

Finovy Cloud

人工智能 gpu

数据连接一切,开启融合数据云新时代——星环科技春季新品发布周盛大开启

星环科技

如何优雅高效地管理公司文档?

小炮

文档 文档管理

一文详解:企业数字化的未来基石——微服务

穿过生命散发芬芳

微服务 4月月更

Carina 的根基与诞生背景|深入了解 Carina 系列 第一期

BoCloud博云

开源 本地存储

Docker 实战教程之从入门到提高 (八)

汪子熙

Docker 容器 docker image 容器镜像 4月月更

App怎么做灰度发布?

InfoQ IT百科

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