John Gruber has found out that cross-compilers are no longer allowed in iPhone OS 4.0. "My reading of this new language is that cross-compilers, such as the Flash-to-iPhone compiler in Adobe's upcoming Flash Professional CS5 release, are prohibited. This also bans apps compiled using MonoTouch - a tool that compiles C# and .NET apps to the iPhone. It's unclear what this means for tools like Titanium and PhoneGap, which let developers write JavaScript code that runs in WebKit inside a native iPhone app wrapper. They might be OK."

It should not affect people who build C/C++ and Objective-C based APIs. Same routines and target multiple platforms (mobile to desktop OSes). Unless Apple decides to ban C/C++ functions then those people are good. The routines call Apple's Native routines in Objective-C and are compiled with X-Code (api layers).

That's specifically what they don't want. The entire point of this clause is to eliminate eliminate "cross platform" code from running on the iPhone. The only code that can legitimately port to the iPhone is Mac OS code, and perhaps GNUStep code.

They don't want QT, or VC++, or anything else running on the iPhone. They don't want people write to compatibility layers. They want folks writing to the iPhone SDK. They don't want someone writing "new XYZButton" which then calls the appropriate "new iPhoneButton". If you want a new iPhone button, subclass iPhoneButton or whatever.

If your code is not targeting the iPhone as its primary UI library and toolkit, i.e. it's targeting something else, some other system, or some shim x-platform library, then it's disallowed.