6 ms·
I really admire and appreciate the engineering that Unity has put into IL2CPP. Mono has a full AOT option[1], but I believe that IL2CPP predates it. I just reme
by binarynate 5y ago
I really admire and appreciate the engineering that Unity has put into IL2CPP. Mono has a full AOT option[1], but I believe that IL2CPP predates it. I just remembered that on an episode of The Changelog[2], Miguel de Icaza (the creator of Gnome, Mono, and Xamarin) mentioned that Unity hired a developer from the Mono team to develop the first version of IL2CPP for them after Apple suddenly stopped allowing JIT on iOS[3].
[1]: https://www.mono-project.com/docs/advanced/aot/#full-aot https://www.mono-project.com/docs/advanced/aot/#full-aot
[2]: https://changelog.com/podcast/275 https://changelog.com/podcast/275
[3]: https://changelog.com/podcast/275#transcript-54 https://changelog.com/podcast/275#transcript-54
- yywwbbn 5y agoIIRC it was a bit more convoluted than that. Unity was using Mono AOT for iOS at the time when Apple announced that iOS was moving to ARM64, I think Mono already supported ARM64 AOT but Unity was stuck on an old version which was 32bit only because they were unwilling to pay whatever Xamarin was charging for the new version (Mono had a dual license like QT back then). IL2CPP was originally developed for the WebGL build target (pre web assembly it went .NET -> cpp -> javascript). After the Apple announcement it was hastily ported to work on iOS. Initially (and maybe up to a couple of years afterwards to some degree ) it was extra buggy and the build time was extremely slow, but I think it was probably worth it in the end.
- pjmlp 5y agoNot quite also. IL2CPP first target were game consoles.
- binarynate 5y agoThat's really interesting. I had tried to find a history of IL2CPP on the web but didn't get any Google hits, so thank you for sharing these details!