他们是否已将LLVM工具链移植到ARM并正在进行编译,或者他们是否使用完全不同的方式来执行Swift代码?
如何在iOS中完成类似的操作(即动态执行Swift代码)?
解决方法
提示:如果您在Mac上的iTunes中下载App Store应用程序(或者也就是Windows框,我猜?),您可以在本地文件系统中找到相应的.ipa文件.除非您是啤酒人,否则IPA只是包含在您同步时安装到iOS设备上的应用程序包的zip存档,因此您可以使用自己喜欢的实用程序(包括macOS中的内置存档实用程序或解压缩命令)将其解压缩线工具)并在他们的内部工作中捅了一下.
如果您使用Swift Playgrounds执行此操作,您将找到几乎完整的Xcode中的SDK和工具链副本,包括一些特定于arm64架构的二进制文件链接的文件. (您将找不到编译器和相关工具的任何命令行二进制文件,但是运行部分LLVM工具链as libraries并没有什么新内容.)您还可以在Swift编译器的开源代码中找到arm64 as a compiler-host architecture的一些证据.
所以,是的 – 没有Apple的官方确认,看起来Swift Playgrounds在iOS设备上编译和运行本机代码. (如果你仔细考虑一下,那么这样做没有多大意义 – 在某种解释/模拟环境中运行Swift代码会破坏性能.并且可能使Apple的stated goal提供对整个iOS工具包的访问难以置信难.)
并且不,third-party apps still can’t do that.自2010年以来,第三方应用程序可以使用提供嵌入式脚本环境的工具 – 游戏引擎使用它来加速游戏设计和安装.例如,开发和其他应用程序为Python和Lua提供编码环境.但你可以想象允许第三方应用程序编译和运行本机代码可能是一场安全噩梦……