我有很多用Erlang編寫的代碼,我想將它們包含在用Objective-C編寫的應用程序中,例如在iPad上。理想情況下,我希望有一個封裝Erlang運行時的對象;這可以像標準的Erlang外殼一樣訪問,如下所示:Erlang作爲應用程序中的嵌入式系統?
ErlangRT *runtime = [[ErlangRT alloc] init];
ErlangValue *retval = [runtime execute:@"io:format(\"hello world~n\")"];
我不太關心性能等問題;我可以看到它是如何工作的,但由於我不太瞭解Erlang虛擬機的實現方式,所以我不知道它是如此簡單或困難,或者如果有人已經做了類似的事情。我知道在Objective-C和Erlang之間還有其他的接口方式,但他們似乎假設在目標機器上安裝了一個獨立安裝的Erlang系統。我寧願它像一個圖書館,你只需鏈接到應用程序。
所以我的問題是:這是相對容易做到,和/或有人已經在此工作?
這裏的陷阱是「虛擬機器」。雖然工具的規則放鬆了,但靜態鏈接代碼的要求卻沒有。任何類型的JITing /編譯/虛擬機 - ERL,Flash,.NET/Mono或其他都不贊成。雖然我確定給予足夠的時間/金錢來創建ERL和運行時的嵌入式版本是「可行的」,但您不會將任何動態生成的代碼放入AppStore中。由於這種阻礙,我懷疑任何人都承擔了移植它的任務。 – stephbu 2010-10-21 19:51:29
嗯,我會吃一點我的話 - 似乎http://sourceforge.net/projects/erlandstaticlib/是在這條道路上......不知道它是什麼狀態。規則仍然認爲,出現在它的應用程序它只能是靜態鏈接代碼。 – stephbu 2010-10-21 19:57:35
我的理解是,動態生成或下載代碼是不受限制的,而解釋現有的(即AppStore-vetted)嵌入代碼是可以的。 – 2010-10-21 20:27:38