The Wire · Showcase
ROSLYN FIXES RAZOR DIRECTIVE SPANS, RUNTIME ELIMINATES DEAD GC CODE
By RepoJournal · Filed · About .NET
Roslyn's completion engine now correctly reports attribute parameter locations in Razor directives, fixing a precision bug that cascaded into performance work across webtools.
The Roslyn team closed a long-standing span computation bug where directive attributes like @bind-value:format were reported as only @bind-value, omitting the colon and parameter portion [1]. This fix extracts from a larger effort to reduce webtools dependence during completion for measurable performance gains. In parallel, the runtime team is aggressively pruning dead code paths: they deleted the unused WBF_NoBarrier_CheckNotHeapInDebug write barrier form and its associated JIT helper, which were never emitted by the garbage collector [2]. On the JIT side, folding optimizations for double not/neg operations moved earlier in the pipeline, eliminating trivially unnecessary nodes and showing measurable throughput improvements in SPMI benchmarks [4]. The cDAC work continues reshaping allocation-heavy APIs like GetHeapSegments into callback-based EnumerateHeapSegments to reduce native heap pressure [5]. ASP.NET Core shipped a critical fix to the quarantine workflow where external contributor PRs were silently filtered by DIFC integrity checks, causing re-quarantine detection to fail and tests to be incorrectly unquarantined [3].
Action items
- → Validate Razor directive completion spans in your tooling integration tests dotnet/roslyn [plan]
- → Review ASP.NET Core quarantine workflow changes if you maintain test infrastructure dotnet/aspnetcore [monitor]
- → Update cDAC consumers to use EnumerateHeapSegments callback pattern dotnet/runtime [plan]
References
- [1] Fix TryGetAttributeName nameLocation to include parameter name ↗ dotnet/roslyn
- [2] Delete unused WBF_NoBarrier_CheckNotHeapInDebug and CORINFO_HELP_ASSIGN_REF_ENSURE_NONHEAP (#128230) dotnet/runtime
- [3] Use deterministic pre-step for re-quarantine detection to bypass DIFC filtering ↗ dotnet/aspnetcore
- [4] Move the folding of double not/neg to gtFoldExpr ↗ dotnet/runtime
- [5] [cDAC] Reshape DacDbi API GetHeapSegments to EnumerateHeapSegments and implement in cDAC ↗ dotnet/runtime
FAQ
- What changed in .NET on May 17, 2026?
- Roslyn's completion engine now correctly reports attribute parameter locations in Razor directives, fixing a precision bug that cascaded into performance work across webtools.
- What should .NET teams do about it?
- Validate Razor directive completion spans in your tooling integration tests • Review ASP.NET Core quarantine workflow changes if you maintain test infrastructure • Update cDAC consumers to use EnumerateHeapSegments callback pattern
- Which .NET repositories shipped on May 17, 2026?
- dotnet/roslyn, dotnet/runtime, dotnet/aspnetcore