Apple的Swift Playgrounds应用程序如何执行iPad代码?

时间:2016-11-14 16:54:43

标签: ios swift ipad llvm

用于iPad的Swift Playgrounds应用程序如何执行代码?

他们是否已将LLVM工具链移植到ARM并正在进行编译,或者他们是否使用完全不同的方式来执行Swift代码?

如何在iOS中完成类似的操作(即动态执行Swift代码)?

1 个答案:

答案 0 :(得分:10)

Apple的general-audiencedeveloper营销材料都没有说Swift Playgrounds是“真正的代码”。但是可以自己验证(或者至少找到一些有力的证据)Swift Playgrounds确实运行完整的编译器工具链并生成本机arm64代码。

提示:如果您在Mac上的iTunes中下载App Store应用程序(或者也就是Windows框,我猜?),您可以在本地文件系统中找到相应的.ipa文件。除非你是啤酒人,否则IPA只是包含在同步时安装到iOS设备上的应用程序包的zip存档,因此您可以使用自己喜欢的实用程序解压缩它们(包括macOS中的内置存档实用程序,或{{ 1}}命令行工具)并在其内部工作中捅一下。

如果您使用Swift Playgrounds执行此操作,您将找到几乎完整的Xcode中找到的SDK和工具链的副本,包括一些特定于unzip架构的二进制文件的文件。 (您将找不到编译器和相关工具的任何命令行二进制文件,但是没有关于运行LLVM工具链as libraries的部分内容的新内容。)您还可以在arm64 as a compiler-host architecture中找到stated goal的一些证据。 Swift编译器的开源代码。

所以,是的 - 没有Apple的官方确认,看起来Swift Playgrounds在iOS设备上编译并运行本机代码。 (如果你仔细考虑一下,那么这样做没有多大意义 - 在某种解释/模拟环境中运行Swift代码会破坏性能。并且可能会让Apple的third-party apps still can't do that提供访问权限。整个iOS工具包非常困难。)

不,Python。自2010年以来,第三方应用程序可以使用提供嵌入式脚本环境的工具 - 游戏引擎使用它来加速游戏设计和扩展。例如,开发和其他应用程序为Lua和{{3}}提供编码环境。但你可以想象允许第三方应用程序编译和运行本机代码可能是一个安全噩梦......

相关问题