Xamarin-android: Support AOT with CoreRT

Created on 28 Jul 2020  路  4Comments  路  Source: xamarin/xamarin-android

CoreRT signicantly outperforms Mono AOT in key metrics, most importantly in startup time and deployment size. See https://medium.com/@MStrehovsky/fight-the-global-warming-compile-your-c-apps-ahead-of-time-9997e953645b

When I enabled Mono AOT on my Xamarin.Android project it increased my deployment size instead of decreasing it and although it did improve startup times, it still took almost 2 seconds to start in an app with no Reflection.Emit and very little code in the startup path.

My App is a Push To Talk app that needs to start very quickly after a radio calls starts in order to not miss communications. Mono AOT is simply not upto the task.

It would be nice to have CoreRT as a AOT option on Android.

Mono runtime or AOT Compiler feature-request

Most helpful comment

Mono AOT on android was marked as experimental for years, and was still available as an option.

CoreRT is used commercially, Carrion (a game available on steam) uses it. We are not asking for it to be marked as commercially supported, just to be available as an alternative, in situations where Mono AOT doesn't suit.

All 4 comments

_Cross-referencing note for the Xamarin.Android team_

The following note from the current CoreRT repository README looks like it might play a role in the overall story for this item:

This is an experimental project. We have no plans to productize it in its current form. More details in CoreRT future plans.

Mono AOT on android was marked as experimental for years, and was still available as an option.

CoreRT is used commercially, Carrion (a game available on steam) uses it. We are not asking for it to be marked as commercially supported, just to be available as an alternative, in situations where Mono AOT doesn't suit.

Xamarin.Android with MonoVM+CoreFX (.Net 6) should be testable I think end of this year. I would have thought that would the natural stepping stone to CoreRT/CoreCLR support, but am no runtime expert.

Just wanted to refer to @MichalStrehovsky's tweet here, where he mentions several Xamarin.Android specific hooks into Mono's garbage collector.
So might not be that easy to bring CoreRT to Xamarin.Android - but I would also welcome that feature, since Xamarin's current AOT options do not really solve slow start-up time (which is the most critical issue, but not the only one getting solved by CoreRT-like AOT).

Was this page helpful?
0 / 5 - 0 ratings