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

ant*_*arm 8 llvm ipad ios swift

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

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

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

ric*_*ter 10

Apple的普通观众开发者营销材料都没有说Swift Playgrounds是"真正的代码".但是可以自己验证(或者至少找到一些有力的证据)Swift Playgrounds确实运行完整的编译器工具链并生成本机arm64代码.

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

如果您使用Swift Playgrounds执行此操作,您将找到Xcode中找到的SDK和工具链的几乎完整副本,包括一些特定于链接arm64结构的二进制文件的文件.(您将找不到编译器和相关工具的任何命令行二进制文件,但是将LLVM工具链的各部分作为库运行并没有什么新鲜事.)您还可以在Swift编译器中找到arm64作为编译器 - 主机架构的一些证据.开源代码.

所以,是的 - 没有Apple的官方确认,看起来Swift Playgrounds在iOS设备上编译并运行本机代码.(如果你仔细考虑一下,否则这样做没有多大意义 - 在某种解释/模拟环境中运行Swift代码会破坏性能.并且可能会使Apple公司提出访问整个iOS工具包的目标非常困难.)

不,第三方应用程序仍然无法做到这一点.自2010年以来,第三方应用程序可以使用提供嵌入式脚本环境的工具 - 游戏引擎使用它来加速游戏设计和开发,而其他应用程序则为PythonLua提供编码环境.但你可以想象允许第三方应用程序编译和运行本机代码可能是一场安全噩梦......