The iOS situation is difficult, because Apple does not allow runtime compiled/loaded code in general. LispWorks pre-compiles Lisp code and one creates an App with the help of Apple's Xcode. LispWorks has still an Interpreter at runtime. Generally it is a very complete implementation of Common Lisp (minus the runtime compilation), but without a Lisp-based GUI library. They also had to write a special Garbage Collector for the 64bit ARM iOS. Seems like it was not possible to have their usually more advanced GC, which for example is available with their 64bit ARM Linux port of LispWorks.
https://developer.apple.com/app-store/review/guidelines/ specifically 2.5.2
> On iOS, V8 cannot run because the operating system forbids just-in-time compilation; so instead of V8, we use our own port of the ChakraCore engine, on top of the integration with Node that Microsoft created in Node.js on ChakraCore. ChakraCore has a well-optimized, pure interpreter mode which complies with iOS’ restrictions.
http://www.janeasystems.com/blog/node-js-meets-ios/
> Apple does not allow Just-In-Time compilation on iOS (except for its own JavaScriptCore engine).
So the claim is that Apple will not allow a third-party Javascript engine which provides a JIT - even though interpreted code engines are allowed and this is what their node.js version did.
My impression is also that this is a technical restriction.
Has that changed?
> ChakraCore has a well-optimized, pure interpreter mode which complies with iOS’ restrictions.
(Which does not include runtime-compilation.)
The ARM backend has bitrot now so no longer works.