You'd have to ask Apple that. But it's their garden; they can do whatever they want, so long as they're not breaking any laws.
–
Robert HarveyMay 16 '13 at 14:35

2

My understanding is that Xamarin actually compiles to native code practicably indistinguishable from code compiled from objective C without a .NET runtime. What you see in the studio is some mono-friendly wrappers. This is why there are things one should not do in monotouch that one can do in .NET such as runtime reflection. Also, that is Miguel de Icaza and he can pull off stuff other mortals can't.
–
Wyatt BarnettMay 16 '13 at 15:05

1 Answer
1

Apple wants to review all code that runs on an iOS device in order to ensure the quality of the overall platform. Obviously, in order to review the code, they need to have it. So, Apple requires that all code that is run by your app, needs to be either part of the app or part of the public iOS APIs. You can embed an execution engine in your app, but you cannot execute code downloaded from the web. However, the whole point of an ECMAScript engine in a web browser is to execute arbitrary code from the web.

[Note: I'm not 100% sure about this.] The iOS security model does not allow an app to execute native code from writeable memory. Memory is either writeable or executable (but read-only). However, V8 is a pure compiler, it doesn't have an interpreter. It compiles ECMAScript to native code in memory, then executes it. But the security model prevents this. So, Google would have to first develop an interpreter for V8. But that would be potentially devastating for performance, and would be a substantial development effort.

Xamarin 2.0 manages to port mono (.net runtime) on iOS along with every app.

The code that is executed by the Mono runtime in this case is all part of the app. No code is downloaded from anywhere.