4

As far as I know Xamarin converts C# to binary and its using mtouch to do that.

LLVM is XCode way of coverting the Objective-C to binary code.
Hence Xamarin doesn't use LLVM.

double-beep
  • 5,031
  • 17
  • 33
  • 41
Shiva
  • 545
  • 1
  • 10
  • 41

1 Answers1

7

Xamarin.iOS projects optionally use the LLVM compiler. Check it out here. You can enable it by checking the box in the Xamarin.iOS project properties.

Xamarin.iOS docs have a helpful graphic showing the LLVM step in the general compiling process here. Within the text talking about the graphic is says how your C# code is compiled into IL. When using a real iOS device, JIT is not allowed, so the AOT compiler is used on the managed code and, optionally, LLVM used to optimize the code further.

Xamarin.Android also has an optional LLVM compiler but it requires a business license or higher to get access to. More info right here.

On Android JIT is allowed on devices but you can, optionally, choose to use the AOT compiler in order to decrease startup times but at the cost of increasing your APK size. If you enable AOT, you can also enable LLVM as well. Though a word of warning about this on Android is that they have temporarily disabled the UI options (but still allow you to manually change the settings in your .csproj file) and they have said that these features are experimental at best. I do not know the status or implications or them disabling these options for Android.

hvaughan3
  • 10,955
  • 5
  • 56
  • 76
  • 1
    you mean to say ... it uses LLVM compiler ... if we use... as far as I read the document... they're mentioning they're using mtouch to generate AOT code from intermediate language ... can you please explain me ? – Shiva May 02 '17 at 14:43
  • 1
    Thanks ! can you please look into the question http://stackoverflow.com/q/43724067/7621990 ? – Shiva May 02 '17 at 16:30