【发布时间】:2011-05-23 09:16:49
【问题描述】:
我有很多用 Erlang 编写的代码,我想将它们包含在用 Objective-C 编写的应用程序中,例如在 iPad 上。理想情况下,我想要一个封装 Erlang 运行时的对象;然后可以像标准 Erlang shell 一样访问它,类似于:
ErlangRT *runtime = [[ErlangRT alloc] init];
ErlangValue *retval = [runtime execute:@"io:format(\"hello world~n\")"];
我不太关心性能等;我可以看到它是如何工作的,但是由于我对 Erlang VM 的实现方式了解不多,所以我不知道它是多么容易或困难,或者是否有人已经做过类似的事情。我知道在 Objective-C 和 Erlang 之间还有其他接口方式,但它们似乎假设在目标机器上独立安装了 Erlang 系统。我希望它像一个库,您只需将其与应用程序链接即可。
所以我的问题是:这相对容易吗,和/或有人已经在这方面工作了吗?
【问题讨论】:
-
这里的陷阱是“虚拟机”。虽然工具规则已经放宽,但静态链接代码的要求并未放松。任何类型的 JITing/编译/VM - ERL、Flash、.NET/Mono 或其他方式都令人不悦。虽然我确信它是“可行的”,只要有足够的时间/金钱来从 Erlang 源创建针对 iOS 的 ERL 和运行时的嵌入式版本,但您不会被允许在 AppStore 中放入任何动态生成代码的东西。以此作为抑制因素,我怀疑是否有人承担了移植它的任务。
-
嗯,我会吃点我的话-似乎sourceforge.net/projects/erlandstaticlib在这条路上...不确定它处于什么状态。规则仍然规定它只能出现在应用商店中是静态链接代码。
-
我的理解是动态生成或下载代码是禁止的,而解释现有的(即AppStore-vetted)嵌入式代码是可以的。
-
哦,谢谢你的链接!
-
请注意,Apple 允许在商店中包含 Lua 脚本的应用程序。他们的规则的目的似乎是阻止任何人下载可执行代码(Javascript 除外),因此只要您的 Erlang VM 仅执行捆绑在应用程序中的内容,我希望您会没事的。 (但没有人知道 Apple 的审阅者会如何对任何事情做出裁决。)
标签: objective-c erlang