.NET 9(devblogs.microsoft.com) |
.NET 9(devblogs.microsoft.com) |
EF 9 has some good fixes, and even better, the better, works on .NET 8.
I discovered last week that .NET Framework v3.5 is still technically supported. Shudder.
Microsoft research had Sing#, System C#, which never came to us, Mono AOT had its issues, and finally Windows 8.x MDIL/Bartok, UWP .NET Native, which were still special cases.
I always vouched the opinion that had .NET supported AOT properly since the beggining, there would have been much less people reaching out to C and C++, as one of the reasons was getting real executables (same applies to Java, and the issue AOT until recently being a commercial JDK feature for deep pockets).
You can't generate new code at runtime (Reflection.Emit) with AOT.
I know it's not part of "standard" c# 13 out-of-the-box
100% this. If a company is not willing to move the product forwards because "there is no need to" then I would be looking else where. .NET Core will be a decade old very soon and a company not willing to move to that tech stack is just pure neglect.
And that's when you realise SDK style projects are much nicer than the old project files. The tooling has massively improved in the past decade.
Open generics simply propagate type parameters down - T: class produce shared method bodies, as they do with the JIT with the type being passed implicitly. For T: struct the corresponding code is fully monomorphized. This is not related to JIT at all where the main distinction with NativeAOT is when compilation happens.
All generic scenarios are supported. Unbound un-analyzable reflection as well as anything that requires JIT like assembly loading or reflection emit - this doesn't work for obvious reasons.
Putting in more practical terms - had NativeAOT not supported List<T> where T is an open generic, most hello-world scenarios would not work at all. And yet, somehow, by divine intervention, ASP.NET Core, DapperAOT, Avalonia, Uno as well as MAUI iOS under Simulator, even damn WinForms that was never made with NAOT in mind (with a helper package), and so on and so forth - all complex applications, work under NativeAOT.