Qwen3 惊喜上线阿里云百炼,8款模型全开源!点击免费领取 800万 tokens! 了解详情
写点什么

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

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

关注

评论

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

如何使用openEuler用户软件仓(EUR)

openEuler

Linux 操作系统 openEuler rpm 软件包

Python从零到壹丨详解图像平滑的两种非线性滤波方法

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

中建信息举办2022年度核心生态伙伴高峰论坛

极客天地

2023年深圳.NET线下技术沙龙要开始了!名额有限,报名从速

MASA技术团队

.net MASA

备战两个月斩获阿里offer,这份《Java高分面试指南》也太顶了

Java java面试 Java八股文 Java面试题 Java面试八股文

Cloud Kernel SIG月度动态:发布 ANCK 新版本及 Plugsched v1.2.0

OpenAnolis小助手

内核 龙蜥社区 sig anck CVE修复

再见ChatGPT!又一值得国内程序员注册体验的AI生产力工具问世!

程序员小毕

AI 工具 后端 架构师 java程序员

20个叹为观止的JavaScript一行代码

我爱娃哈哈😍

JavaScript 前端 程序員

cost量化分析

GreatSQL

MySQL 运维 :MySQL 数据库 greatsql greatsql社区

「金三银四」这些面试题,看看你会答几道?

王中阳Go

Go 后端 面试题 简历优化 就业辅导

ArchKeeper(开篇):架构守护平台的问题与理念

京东科技开发者

架构 敏捷 系统架构 腐化治理 企业号 3 月 PK 榜

共建区块链生态,旺链科技获颁2022年度FISCO BCOS产业应用合作伙伴

旺链科技

区块链 区块链+

React Hooks源码深度解析

京东科技开发者

函数 React Hooks 企业号 3 月 PK 榜

关于DAPP系统开发操作及功能丨智能合约项目系统开发方案

I8O28578624

华为云开年采购季火热进行中,四大福利玩法大放送

极客天地

MySQL 8.0数据字典有什么变化

GreatSQL

MySQL MySQL 运维 :MySQL 数据库 greatsql greatsql社区

寻找机器人:为什么我们不应该“隐藏人类”

开源雨林

开源 聊天机器人 ChatGPT

聊聊游戏业务怎么用高斯Redis

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

FTP VS镭速传输,小文件传输技术内有乾坤

镭速

贴合运维业务场景的告警聚合实现——以Zabbix为例

观纵科技

zabbix 运维监控 IT运维

99%都不知道的ins保存小技巧,快收藏起来!

frank

ins

API Gateway vs Load Balancer:选择适合你的网络流量管理组件

API7.ai 技术团队

软件测试/测试开发 | Spring Boot 集成 Swagger

测试人

软件测试 springboot 测试发开

删库跑路现场还原

Yestodorrow

系统稳定性

全球化趋势下,如何建设稳定高效的技术能力?

阿里技术

全球化技术

还不知道如何在java中终止一个线程?快来,一文给你揭秘

程序那些事

线程 多线程 「Java 25周年」 程序那些事 java

龙蜥白皮书精选:面向 DPU 场景的软硬协同协议栈

OpenAnolis小助手

开源 云原生 内核 SMC协议栈 TCP应用

开源工具系列5:DependencyCheck

HummerCloud

企业全球化出海技术体系建设实录【专题合集】

阿里技术

技术专题合集 全球化技术能力

Redis实现分布式锁的几种方案

GreatSQL

greatsql greatsql社区

MegEngine 使用小技巧:借助 DataLoader 获取分批数据

MegEngineBot

深度学习 开源 模型训练 数据预处理 MegEngine

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