OCaml已經做好iOS開發準備
近日,來自舊金山的程序員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#include #include 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; }
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 安裝。
來自: http://www.infoq.com/cn/news/2016/02/ocaml-ready-ios-development