2016-11-14 84 views
8

iPad的Swift Playgrounds應用程序如何執行代碼?Apple的Swift Playgrounds應用程序如何執行代碼?

他們是否已經將LLVM工具鏈移植到ARM中,並且正在進行編譯或者他們是否使用完全不同的方式來執行Swift代碼?

我該如何完成iOS中類似的事情(即動態執行Swift代碼)?

+0

請在使用它之前閱讀蘋果標籤的描述。它明確標記爲「不要使用」。 – rmaddy

回答

8

蘋果的general-audiencedeveloper都沒有說比Swift Playgrounds更「真實的代碼」。但是可以自己驗證(或者至少找到一些有力的證據),Swift Playgrounds的確可以運行完整的編譯器工具鏈並生成原生的arm64代碼。

提示:如果您在Mac上(或Windows上也下載了App Store應用程序,我猜?),您可以在本地文件系統中找到相應的.ipa文件。除非你是啤酒人,否則IPA只是包含應用程序包的zip存檔,當您同步時,應用程序包將被安裝到iOS設備上,因此您可以使用您喜愛的實用程序(包括macOS中的內置存檔實用程序或unzip命令在線工具),並在他們的內部工作中徘徊一下。

如果您使用Swift Playgrounds進行此操作,您會發現Xcode中的SDK和工具鏈幾乎完整的副本,其中包括一些特定於鏈接arm64體系結構的二進制文件的文件。 (你不會找到編譯器&相關工具的任何命令行二進制文件,但運行LLVM工具鏈as libraries的部分並沒有什麼新的。)您也可以在Swift編譯器的開放源代碼中找到arm64 as a compiler-host architecture的一些證據。

所以,是的 - 缺少來自Apple的官方確認,它看起來像Swift Playgrounds在iOS設備上編譯和運行本機代碼。 (如果你仔細想一下,那麼這樣做沒什麼意義 - 在某種解釋/模擬環境中運行Swift代碼會導致性能下降,並可能讓蘋果公司的stated goal難以置信地提供對整個iOS工具箱的訪問困難)。

並且不,third-party apps still can't do that。自2010年以來,第三方應用程序有可能使用提供嵌入式腳本環境的工具 - 遊戲引擎使用該工具加速遊戲設計開發,其他應用程序例如爲PythonLua提供編碼環境。但你可以想象,允許第三方應用程序編譯和運行本機代碼可能是一個安全噩夢...

相關問題