The Wire · Showcase
RUNTIME CUTS XML DESERIALIZATION FROM O(N^2) TO LINEAR; COMWRAPPERS LOCK CONTENTION SOLVED
By RepoJournal · Filed · About .NET
The .NET runtime shipped two critical performance fixes overnight that eliminate pathological slowdowns in XML parsing and COM interop, with changes landing across three desks.
XContainer's IXmlSerializable loader has been buffering consecutive text nodes to avoid catastrophic O(n^2) string concatenation when DataContractSerializer or IXmlSerializable.ReadXml surfaces small consecutive text nodes [1]. Separately, ComWrappers RCW identity cache now partitions into per-processor buckets instead of serializing all native-to-managed transitions behind a single ReaderWriterLockSlim, eliminating a process-wide contention point that fires on essentially every COM call [2]. On the WebAssembly front, struct alignment encoding in thunk signatures now distinguishes 16-byte boundaries from 8-byte boundaries, supporting correctly aligned struct-by-value parameters on Wasm [3]. Over in MAUI, PureWeen repaired skill-evaluation fixture failures exposed by recent changes [4]. WatsonWebserver completed a comprehensive test infrastructure migration to Touchstone, a runner-agnostic descriptor framework that consolidates 18 test suites into a single source of truth consumed identically by CLI, xUnit, and NUnit runners [5], while also refreshing dependencies and cutting releases 7.1.1 and clients 7.0.15 [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
- → Update to latest .NET runtime for XML deserialization and COM interop improvements dotnet/runtime [plan]
- → Test MAUI fixture repairs before next mobile release dotnet/maui [plan]
- → Review WatsonWebserver 7.1.1 changelog if you consume the library dotnet/WatsonWebserver [monitor]
References
- [1] Buffer consecutive text nodes when loading XContainer to avoid O(n^2) ↗ dotnet/runtime
- [2] Partition the ComWrappers RCW cache into per-processor buckets ↗ dotnet/runtime
- [3] [wasm] Encode struct alignment in thunk signatures ↗ dotnet/runtime
- [4] Fix skill evaluation fixtures and failure reporting ↗ dotnet/maui
- [5] Migrate test infrastructure to Touchstone (shared source of truth + CLI/xUnit/NUnit runners) dotnet/WatsonWebserver
- [6] Update dependencies, harden API-route serialization tests, cut 7.1.1 / clients 7.0.15 dotnet/WatsonWebserver