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].
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
FAQ
- What changed in .NET on June 30, 2026?
- 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.
- What should .NET teams do about it?
- Review Assembly.GetCallingAssembly breaking change impact if you're shipping native AOT code • Test F# determinism fix in Release builds if you rely on byte-identical output • Audit recursive inline functions for FS3890 diagnostics before next F# upgrade
- Which .NET repositories shipped on June 30, 2026?
- dotnet/runtime, dotnet/winforms, dotnet/fsharp