Minko on the iPad/iPhone

Tom Krcha – Adobe gaming evangelist – was kind enough to recompile my previous benchmark to see how it performs on the iPad:

Half a million polygons is not too bad! It’s actually far enough to build amazing 3D games. If you want to see a live application, here you have the 3D data visualization globe demo compiled for the iPad/iPhone:

The application loads 35 000 geo-localized hot spots and uses Minko’s streams API to create the corresponding 3D geometry dynamically. You can find the code on Aerys’ GitHub. A beta for Minko 2 should be available this week on GitHub. Stay tuned!

Apple makes its own compiler… illegal!

”3.3.1 … Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).”

This is the very bad (sad) addition (restriction) to the iPhone developers program everyone is talking about right now. And I feel very concerned about this… and now everyone is wondering if software like the Flash-to-iPhone packager, Mono or Unity are definitely banned from the iPhone programming tool-chain.

I never talked about it before, but Aerys is working on a project targeting the iPhone and the iPad (among a lot of other platforms). And this very project is leveraged by some home-made code generation tool. Therefore, we are very scared of what this kind of restrictions might imply for our business.

But as scary as this statement might look at first, it is actually even funnier when you understand it makes any iPhone/iPad application illegal. And it gets even better because even Apple’s standard tool-chain finds itself… prohibited!

The reason is very simple: Objective-C, C or C++ never “link” to any library providing the Documented iPhone APIs. Objective-C, C or C++ actually never link to anything. When compiling your code, the compiler creates an intermediary representation of your program in order to make it easier to (eventually cross-)compile it. In the case of GCC, the compiler used to build such applications, those intermediary languages are:

(Source: Wikipedia – Intermediate language)

This very intermediate representation is built before the symbols resolution and before any linking is done. Thus, linking against the “Documented APIs” has always been done “through an intermediary translation or compatibility layer”. And it won’t change anytime soon! But, still, I wish good luck to Apple’s engineers in their future work to patch GCC and make it “compliant” (sic!).

To me, it is the most obvious sign that Apple doesn’t care about its developers (but I was still pretty thrilled to eventually become one of them about a few days ago…). Not because it bannishes any interesting cross-compiling software venture. And not even because any iPhone/iPad developper who knows about other platforms openness and ease of production will feel sick just by reading this kind of restrictions.

No. To me, Apple is losing it all simply because this kind of idiocy can only be written by someone who doesn’t have a clue about how a computer/compiler works! Apple started building casual devices and ends up targeting casual developers. Could this be the first sign of how (so called) intuitiveness – when enforced by completely hermeticly closed devices – finally makes people… dumber? So now the real question is “What happens when your developers program EULA is written by a marketing control-freak moron?“.

PS : The title of this article was desgined to attract the eye. It is my interpretation of the latest Apple’s developers program EULA additions and I might be completely off or wrong. Anyway, the doubt and worry caused by this very fuzzy and unclear addition stands as a major issue for all the companies and developers targeting the iPhone and iPad platforms.