So, does this mean that a library/module written in Racket can be called from an iOS application written in Swift?
Out of curiosity, what other (popular) languages have similar support? Can someone coding an iOS app call snazzy ML/algorithms written in Python/Julia/C/Cpp? Would any language whose compiler is written on top of LLVM be a good candidate?
I haven't worked through this yet, but it looks to me to be a technique to get ahead-of-time Racket compiler, rather than run a dynamic, interactive IDE on iOS.
So you could build iOS apps using Racket on a host computer, then load those binaries onto an iOS device.
I'm not so sure - but it might be ok if the racket app is submitted as an interpreter. Less sure, if it is for example used to implement a game engine and game data (code) is downloaded?
> 2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps. Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user.
> Does this allow AOT compiling of Racket code to native ARM?
Yes, there's an example of this in the section "Cross-compile Racket modules for iOS".
> Assuming that JIT is still not possible on iOS.
JIT on iOS is not possible for non-side-loaded apps, like you mentioned downthread. That's part of the caveats[1] I mention at the top of the article and the more complex part of the change: when compiling new code (eg. via `eval`), we flip the protection bits between W and X for the minimum set of memory segments necessary based on certain heuristics.
OK - apparently iOS 14.2 does allow JIT for side-loaded apps (not App Store) via the CS_EXECSEG_ALLOW_UNSIGNED flag. Maybe this will be allowed for store apps in some future version. Fingers crossed!
All previous versions of iOS do not permit execution from writable memory.
Out of curiosity, what other (popular) languages have similar support? Can someone coding an iOS app call snazzy ML/algorithms written in Python/Julia/C/Cpp? Would any language whose compiler is written on top of LLVM be a good candidate?