OCaml已經做好iOS開發準備

jopen 8年前發布 | 9K 次閱讀 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 安裝。

查看英文原文: OCaml Now Ready for iOS Development

來自: http://www.infoq.com/cn/news/2016/02/ocaml-ready-ios-development

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!