写点什么

OCaml 已经做好 iOS 开发准备

2016 年 1 月 31 日

近日,来自旧金山的程序员 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 年 1 月 31 日 18:001915
用户头像

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

关注

评论

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

高峰应对记录

编号94530

Spring Boot 2 性能压测 测试发开 高峰应对

SpringBoot整合Redis,怎么实现发布-订阅?,一个回答引发热烈讨论

Java 程序员 后端

网络攻防学习笔记 Day142

穿过生命散发芬芳

数据中心 9月日更

这些 JS 中强大的操作符,总有几个你没听说过

前端下午茶

JavaScript 代码设计 代码技巧 基础知识

springboot文件上传下载实战 —— 登录功能,「高并发秒杀

Java 程序员 后端

架构实战营第八模块作业

子豪sirius

架构实战营

ES知识总结

十二万伏特皮卡丘

谈 C++17 里的 Observer 模式 - 3

hedzr

c++ 算法 设计模式 观察者模式 Design Patterns

MySQL 从入门到实践,万字详解!

前端下午茶

MySQL 数据库 前端

SpringBoot2---指标监控,Java架构师之路

Java 程序员 后端

0x00 Go参考

Uasen_

JVM启动参数学习笔记二

风翱

JVM 9 月日更

【LeetCode】最长递增子序列Java题解

HQ数字卡

算法 LeetCode 9月日更

Linux常用命令

在即

9月日更 9 月日更

Python 千猫图,简单技术满足你的收集控

梦想橡皮擦

9月日更

项目管理实践篇(二):技术型PM炼成记

后台技术汇

项目管理 管理 引航计划 内容合集 管理领域

SpringBoot-自动配置-源码解析,做了5年Java

Java 程序员 后端

架构训练营模块三

晏鹏

springboot文件上传下载实战 ——文件上传(1),想搞定大厂面试官

Java 程序员 后端

springboot文件上传下载实战 ——文件上传,Java入门

Java 程序员 后端

模块八作业

秀聪

架构实战营

Opus从入门到精通(七)Opus编码基础之认识声音

轻口味

android 音视频 9月日更

架构实战营模块三

WolvesLeader

「架构实战营」

HarmonyOS 鸿蒙登录页搭建及 Text 文本详解

阿策小和尚

Android 小菜鸟 引航计划 9 月日更 0 基础学习 HarmonyOS

云随想三 2B软件的机遇与挑战?

FLASH

云时代 2B软件

吴恩达Andrew Ng CNN卷积神经网络 论文等资料汇总 YOLOv5 新版本—改进与评估 易筋 ARTS 打卡 Week 65

John(易筋)

ARTS 打卡计划

架构师训练营 2 期模块三作业

kazeMace

架构实战营

那段记忆中的声音:单式评书再现江湖背后的AI技术

脑极体

Coffee学架构 004 外包学生管理系统的完整架构设计

咖啡

架构设计

☕️【Java专题系列】「回顾 RateLimiter」针对于限流器的入门到精通(针对于源码分析介绍)

李浩宇/Alex

ratelimiter Guava 9月日更 9 月日更 限流器

SpringBoot之配置文件,Java开发教程入门

Java 程序员 后端

OCaml已经做好iOS开发准备-InfoQ