The Wire · Showcase
RUNTIME OVERHAULS CALLING ASSEMBLY DETECTION FOR NATIVE AOT
By RepoJournal · Filed · About .NET
dotnet/runtime shipped Assembly.GetCallingAssembly support for native AOT by leveraging stack trace data, marking a breaking change that unblocks a critical API gap for ahead-of-time compilation.
The runtime's new implementation [1] uses stack trace data to resolve calling assemblies in AOT scenarios, but blocks the same call under F5 debugging on CoreCLR due to stack trace unavailability. This is the breaking change you need to know about. In parallel, the team refactored sync/async implementations using the Adapter pattern [2] to simplify code paths across the runtime. On the WASM side, an interpreter crash with MethodImpl .override directives got fixed [3], unblocking virtual method remapping on PortableEntryPoints. The runtime also redesigned CallSiteFactory constructor selection [4] to eliminate unstable Array.Sort behavior, delivering deterministic multi-constructor ordering with lighter allocations. F# picked up determinism fixes [7] that close race conditions in parallel codegen, guaranteeing byte-identical Release builds with identical flags. The compiler also now detects recursive inline bindings [8] and emits clear FS3890 diagnostics instead of cascading optimizer errors, and improved implied argument names [9] for delegate captures. WinForms and MAUI continue standard codeflow updates from the VMR [5] [6].
One email a day. Unsubscribe in one click.
Keep up with .NET in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review Assembly.GetCallingAssembly breaking change impact if you're shipping native AOT code dotnet/runtime [plan]
- → Test F# determinism fix in Release builds if you rely on byte-identical output dotnet/fsharp [monitor]
- → Audit recursive inline functions for FS3890 diagnostics before next F# upgrade dotnet/fsharp [plan]
References
- [1] Implement `Assembly.GetCallingAssembly` for native AOT ↗ dotnet/runtime
- [2] Refactor sync/async implementations by using Adapter pattern ↗ dotnet/runtime
- [3] [wasm] Fix interpreter crash with MethodImpl .override on PortableEntryPoints ↗ dotnet/runtime
- [4] Redesign `CallSiteFactory` constructor selection with stable arity ordering and parameter-aware ambiguity ↗ dotnet/runtime
- [5] [main] Source code updates from dotnet/dotnet ↗ dotnet/winforms
- [6] [main] Source code updates from dotnet/dotnet (#14666) dotnet/winforms
- [7] Determinism: parallel-codegen same-flags reproducibility (closes #19732) ↗ dotnet/fsharp
- [8] Detect recursive inline bindings and emit FS3888 diagnostic ↗ dotnet/fsharp
- [9] Improve implied argument names ↗ dotnet/fsharp