top | item 3633048

(no title)

sipefree | 14 years ago

That's not true at all.

Interpreted code is perfectly legitimate to use in an iOS app, under certain restrictions.

The first is that you cannot JIT it, because the OS prevents execution of memory that has been writable (this is true for every app except for MobileSafari and it the reason why the only arbitrary code execution vulnerabilities have been found through MobileSafari).

The second is that you're not allowed download executable code to increase or change the functionality of the app. The reasoning for this I see as a little bit of selfishness on Apple's part, in that you can't really build a native app that acts as a platform for other people's fully-fledged 'apps' bypassing the app store, and the second being that the user's expectation of an app is that it be pretty much self contained in terms of functionality.

There have been exceptions to this though. CouchDB for iOS runs interpreted on the Erlang VM, but its database queries are executed by Mozilla's command line javascript engine. The code that runs on this query engine is actually downloaded through the database's syncing functionality, and it IS allowed in the app store.

So there does seem to be some leeway in terms of what is actually banned in that case. It seems that if downloading something technically turing-complete is REQUIRED as part of an essential function of the app, and cannot by necessity actually _change_ the main functionality of the app through running in a very limited sandbox (no I/O of any kind or indeed anything but data processing in this case), then it's allowed.

To get back to your original point, if someone wanted to build a bit of middleware that bridged the CocoaTouch libraries with python, then distributed that and allowed people to compile apps with it, it would be perfectly legal on iOS.

discuss

order

No comments yet.