Skip to content

Comment on Microsoft now lets iOS developers deploy, run and test their apps on Windows

Comments

"Microsoft tells us that it talked to Apple about this functionality and that it has its rival’s blessing and that the Live Player application complies with all of Apple’s usual rules."

Which is interesting, since I thought that interpreters were strictly against Apple rules?

According to the App Store guidelines, applications can't download code, and must use the built-in Javascript interpreter for Javascript execution (those are the two rules in the App Store review guidelines that are relevant to the execution of downloaded code).

In practice, though, Apple has generally accepted applications that pass user-supplied code to an interpreter, as long as that code is actually user-generated: see Pythonista (embedded Python interpreter), Continuous (embedded .NET CIL interpreter, akin to what Xamarin's doing here with Live Player), Ruby for iOS, etc.

You won't find any compiled languages (which compile down into native machine code) in the App Store, though; even ignoring the review process, there are technical restrictions in place in sandboxed iOS apps that prohibit applications from running arbitrary code.

Deployed apps are compiled to ARM assembly. Bit of info here:

https://developer.xamarin.com/guides/cross-platform/applicat...

You got it, the relevant piece:

"OS – C# is ahead-of-time (AOT) compiled to ARM assembly language. The .NET framework is included, with unused classes being stripped out during linking to reduce the application size. Apple does not allow runtime code generation on iOS, so some language features are not available (see Xamarin.iOS Limitations )."

Normal deployed apps are. Here though, the app that's actually running is the Xamarin Live Player which comes with an IL interpreter. In the normal cycle of Xamarin iOS development from Windows, the DLLs are compiled, and then there's another step where they are AOT compiled to ARM assembly on the Mac. In this case though it avoids the step of compiling on iOS, it just builds the DLLs and sends them to the device.

This is my best guess of what's happening based on this article: https://arstechnica.com/information-technology/2017/05/xamar...

I'm confused as well. Either this is a framework which I thought apple outlawed. Or it's a runtime which apple definitely outlawed.

Frameworks are fine.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.