The Wire · Showcase
ROSLYN HARDENS RAZOR FORMATTING, MACIOS FIXES RUNTIME RACE
By RepoJournal · Filed · About .NET
Roslyn expanded C# formatting options to all Razor features while fixing a critical top-level statements diagnostic that was only reporting one file per conflict [ref:1][ref:2].
The Roslyn team completed a multi-phase push to make formatting options consistent across all Razor features - completion, code actions, and resolve - eliminating null checks and making the implementation non-nullable [1][4]. In parallel, a fix now reports CS8802 errors on every file with top-level statements rather than just the entry point, so developers clicking the error list navigate directly to each problematic file [2]. A separate warning now catches the silent-then-crashes pattern of empty outer tags when transitioning from C# to markup [3].
On the macOS side, macios fixed a critical object_map race where an object's native init returning a different pointer than alloc could clobber another object's registration on a different thread [7]. The team also patched simulator runtime downloads to retry on transient network failures, and made generic registrar trampolines relocatable into companion assemblies for Hot Reload [5][6].
ASP.NET Core dropped the deprecated ApiDescription.Client package [8][9], while runtime optimized custom awaiters to eliminate boxing and restored non-stub method resolution in the cDAC [10][11]. 71 commits and 65 PRs landed across 5 repos in this period.
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 Razor formatting changes for any custom formatter implementations dotnet/roslyn [plan]
- → Test simulator builds if you use downloadable runtimes in CI dotnet/macios [monitor]
- → Remove ApiDescription.Client package references before upgrading to .NET 10 dotnet/aspnetcore [plan]
References
- [1] Always pass C# formatting options to Razor functions ↗ dotnet/roslyn
- [2] Report CS8802 on every file with top-level statements ↗ dotnet/roslyn
- [3] Warn for empty outer tags when context switching from C# to markup ↗ dotnet/roslyn
- [4] Make Razor C# formatting options non-nullable dotnet/roslyn
- [5] [CI] Retry simulator runtime downloads on transient network failures. Fixes #26288 ↗ dotnet/macios
- [6] [dotnet-linker] Relocate generic registrar trampolines into the companion assembly for Hot Reload ↗ dotnet/macios
- [7] [runtime] Fix the alloc/init handle-reuse race in object_map (issue #25861) ↗ dotnet/macios
- [8] Drop ApiDescription.Client package (#68211) dotnet/aspnetcore
- [9] Drop ApiDescription.Client package ↗ dotnet/aspnetcore
- [10] Remove boxing for awaited custom awaiters (#131342) dotnet/runtime
- [11] [cDAC] Restore non-stub method resolution in GetRuntimeNameByAddress (#131977) dotnet/runtime