写点什么

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

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

关注

评论

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

数据系统提供商极道科技加入龙蜥社区

OpenAnolis小助手

Linux 开源 数据系统

Android包体积优化上篇- 资源混淆优化

百度Geek说

百度 前端 后端 优化 包体积

应用数仓ODBC前,这些问题你需要先了解一下

华为云开发者联盟

数据库 GaussDB(DWS) 驱动 ODBC 驱动管理器

星环科技ArgoDB 3.2正式发布,全面升级易用性、性能和安全

星环科技

数据库

BFS/DFS/DP 算法案例 LeetCode题目:传递信息

OpenHacker

LeetCode 动态规划 深度优先搜索 算法解析 广度优先搜素

Nebula Graph 的 KV 存储分离原理和性能测评

NebulaGraph

图数据库 分布式图数据库

跨团队协作:提高团队生产力的 7 种策略

小炮

团队管理 知识管理 团队协作 办公效率

“碳中和”背后的创新科技!

青云技术社区

云计算 碳中和

用 python selenium 爬简书,Python自动化领域之 Selenium WebDriver 学习第2篇

梦想橡皮擦

Python 3月月更

虎符研究院关于 Manta Network平行链解决方案的分享

区块链前沿News

虎符交易所 币圈后浪

易观分析对《关于银行业保险业数字化转型的指导意见》的解读

易观分析

银行 数字化

赋能金融领域,国密改造让安全合规更加牢固

电子信息发烧客

安全

活动预告 | DataOps + MLOps Meetup

第四范式开发者社区

人工智能 机器学习 开源 DevOps MLOps

组件简介 - 大屏云极简使用手册

shulinwu

数据可视化 大屏可视化 智慧大屏可视化 大屏

布局说明 - 大屏云极简使用手册

shulinwu

可视化 数据可视化 大屏可视化 智慧大屏可视化 大屏

云原生时代,政企混合云场景IT监控和诊断的难点和应对之道

华为云开发者联盟

微服务架构 混合云 华为云Stack IT监控 SDN网络

NFT盲盒商城游戏系统开发技术

薇電13242772558

NFT

融云 IM 在 Electron 平台上的设计实践

融云 RongCloud

用好这28个工具,开发效率爆涨|云效工程师指北

阿里云云效

云计算 阿里云 云原生 研发工具 研发

数据可视化大屏 - 大屏云极简使用手册

shulinwu

可视化 数据可视化 大屏可视化 智慧大屏可视化 大屏

2021年中国收藏玩具行业市场洞察分析

易观分析

盲盒 潮玩

C++学习网站

C语言与CPP编程

c++

低代码平台设计探索,如何更好赋能开发者

雯雯写代码

低代码 开发平台 开发者,

徐徐春风迎3月,月度更文活动准点发车啦!

InfoQ写作社区官方

3月程序媛福利 3月月更 热门活动

星环 KunDB 2.2 发布,为高并发事务与查询混合的业务系统提供一个新选择

星环科技

数据库

【案例】基于星环科技数据云平台TDC为富国基金建设万能的数据湖

星环科技

数据库

阿里云智能编码插件,更Cosy的开发体验

阿里云云效

Java 阿里云 程序员 开发 研发

Python 中 base64 编码与解码

AlwaysBeta

Python 程序员 编程语言 base64

一文带你看懂HarmonyOS应用上架

HarmonyOS开发者

HarmonyOS 应用开发

新思科技最新报告显示97%的应用存在漏洞

InfoQ_434670063458

新思科技 应用安全

教你如何使用flask实现ajax数据入库

华为云开发者联盟

Python 数据库 flask 文件上传 ajax数据

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