RepoJournal

$ cat dotnet/month/2026-08-01.log

.NET

.NET

the month in review · August 2026

F# interpolated strings and record spreads land as Orleans and runtime harden

August delivered two new F# language features, a wave of hardening across Orleans, MAUI, and the runtime, and a steady stream of security fixes that make this month's upgrades worth scheduling.

972 commits 1002 PRs merged 13 releases 31 briefings covered

F# shipped two expressive language features. The first implements interpolated strings via String.Concat, and the second adds record spreads `{ ...expr }` and `{ ...ty }`. Both target F#'s core language and the compiler team frames them as the core of VS 18.11 preparation, though each PR's description notes the trade-off: interpolated strings land without full native AOT support yet, while record spreads offer a flexible way to copy and override records.

Orleans hardened serialization and reminders. The default JSON storage serializer now enforces a type allow-list, a breaking change that requires explicit registration of allowed types. Meanwhile, the developers dropped reminders that are not due soon, improving performance for silos that carry a large reminder load. The team also enabled nullable reference types across the Orleans codebase, which flags potential null dereferences at compile time. The distributed directory now supports rolling upgrades, letting operators update a cluster without a full restart.

The runtime improved native call generation and data structures. The LibraryImportGenerator now supports unsafe evolution of method signatures over time, which side-steps the string allocator's previous behavior on .NET. On the trimming and AOT side, the runtime stripped dead code and fixed trimmer dataflow bugs across code paths, and native AOT debugging received a significant overhaul. The runtime also cut XML deserialization from O(N^2) to linear, solved ComWrapper lock contention, and applied the `*.runtimeconfig.dev.json` configuration to CoreCLR apps, closing a long-standing gap.

MAUI locked in .NET 11.0 and reworked its build pipeline. It automated clean inter-branch forward merges, fixed bot-opened merge policy matching, and removed an ineffective blanket integration-test retry. ASP.NET Core shipped passkey endpoints and a new experimental DirectTLS transport for Kestrel, which also blocks malformed SNI hostnames. The .NET Foundation pulled iOS metrics into focus as Android CI tightened, and infrastructure teams removed a stale secret group from MSBuild. FSharp canary builds restored codegen integrity after a regression, and Roslyn reverted an editor change that broke sync.

Security and correctness fixes landed across WPF, MAUI, and ASP.NET Core. WPF added CodeQL comments to clarify trusted input handling in resource generation, and Roslyn hardened Razor formatting after a breaking split between declaration and implementation files. The team shipped a fix for an MSBuild telemetry bug that could kill builds, and a SignalR update closed a duplicate stream hole. As the month closed, codeflow syncs landed across dotnet and windowsdesktop, keeping branches aligned.

This month's changes are broad but not dramatic. The headline features are F#'s new syntax, which will reward a fresh look; the breaking Orleans serialization change and the MAUI merge pipeline improvements are worth scheduling into your next upgrade cycle. Security patches across the runtime and MAUI should be applied before your next deploy.

References

  1. [1] Implement interpolated strings via String.Concat ↗ dotnet/fsharp
  2. [2] Record spreads: `{ ...expr }`, `{ ...ty }` ↗ dotnet/fsharp
  3. [3] fix(serialization)!: enforce type allow-list in default JSON storage serializer (#10268) ↗ dotnet/orleans
  4. [4] perf(reminders): drop reminders that are not due soon (#10259) ↗ dotnet/orleans
  5. [5] refactor: enable nullable reference types across Orleans (#10291) ↗ dotnet/orleans
  6. [6] fix(directory): support rolling upgrades to distributed directory (#10309) ↗ dotnet/orleans
  7. [7] Support unsafe evolution in LibraryImportGenerator ↗ dotnet/runtime
  8. [8] Apply `*.runtimeconfig.dev.json` to CoreCLR apps ↗ dotnet/android
  9. [9] Remove temporary array allocations in `ComVariant.As`. (#131704) ↗ dotnet/runtime
  10. [10] Auto-merge clean inter-branch forward merges ↗ dotnet/maui
  11. [11] Fix bot-opened inter-branch merge policy matching ↗ dotnet/maui
  12. [12] Remove ineffective blanket integration-test retry (#36994) ↗ dotnet/maui
  13. [13] Add CodeQL comments to clarify trusted input handling in ResourcesGen… ↗ dotnet/wpf
  14. [14] Handle textDocument/didChange notifications that don't pass across the range (#84714) ↗ dotnet/roslyn
  15. [15] Restore stress guards on process-isolated IL tests (#131769) dotnet/runtime

$ ls dotnet/month/ # the briefings behind this review

Sat Aug 1 F# INTERPOLATED STRINGS GO NATIVEAOT, ORLEANS HARDENS SECURITY Sun Aug 2 RUNTIME HARDENS UNSAFE CALLS WHILE MAUI FIXES MERGE PIPELINE Mon Aug 3 ROSLYN FIXES EDITOR SYNC, WPF TIGHTENS SECURITY Tue Aug 4 RUNTIME STRIPS DEAD CODE, FIXES TRIMMER DATAFLOW BUGS ACROSS CODEPATH Wed Aug 5 HELIX MACHINE CORRUPTION DETECTION ROLLS OUT; RUNTIME MUTUAL AUTH TIGHTENS Thu Aug 6 DOTNET FOUNDATION PULLS iOS METRICS INTO FOCUS AS RUNTIME HARDENS HTTP PARSING Fri Aug 7 ROSLYN HARDENS RAZOR FORMATTING, MACIOS FIXES RUNTIME RACE Sat Aug 8 MAUI LOCKS IN NET11.0, RUNTIME UNIFIES STUB MEMORY Sun Aug 9 RUNTIME JITS AWAY XML SERIALIZER DEPENDENCY, ORLEANS DOCS RESCUE MISSION CONTINUES Mon Aug 10 RAZOR DECL/IMPL SPLIT BREAKS ASPNETCORE RUNTIME COMPILER Tue Aug 11 BLAZOR TESTING OVERHAUL SHIPS NATIVE AOT HARNESS, ROSLYN REVERTS SONIC SPLIT Wed Aug 12 BROWSER WASM BLOAT FIXED, RELOCATION SHRINKING SHIPS Thu Aug 13 SSLSTREAM OVERHAUL LANDS WITH LEGACY ESCAPE HATCH Fri Aug 14 BLAZOR NATIVE AOT SUPPORT LANDS, ANDROID DOCS HIT CRITICAL MASS Sat Aug 15 ANDROID DOCS CLOSE 93 PLACEHOLDER GAPS, KESTREL GAINS EXPERIMENTAL DIRECTTLS TRANSPORT Sun Aug 16 RUNTIME CUTS XML DESERIALIZATION FROM O(N^2) TO LINEAR; COMWRAPPERS LOCK CONTENTION SOLVED Mon Aug 17 MSBUILD KILLS STALE SECRET GROUP, RUNTIME FIXES NULLABLE CRASH ON MACOS Tue Aug 18 MSBuild's telemetry failure can kill your build Wed Aug 19 MAUI Overhauls NuGet Publishing as FSharp Preps for VS 18.11 Thu Aug 20 SIGNALR CLOSES DUPLICATE STREAM HOLE Fri Aug 21 Kestrel blocks malformed SNI hostnames Sat Aug 22 Android CI tightens the net Sun Aug 23 ORLEANS HARDENS SILO FAILURE DETECTION Mon Aug 24 DOTNET PIPELINES SWARM: 14 PRS, ONE MESSAGE Tue Aug 25 FSharp Codegen Integrity Restored Wed Aug 26 MSBuild Clears Up Multi-Threading Confusion with New Analyzer Rules Thu Aug 27 MAUI and ASP.NET Core ship critical fixes Fri Aug 28 ASP.NET Core Ships Passkey Endpoints Sat Aug 29 Crossgen2 fix for uppercase extensions, SSE parser buffer limit, Android pipeline governance Sun Aug 30 Codeflow syncs land across dotnet and windowsdesktop Mon Aug 31 Native AOT debug info overhaul, R2R codegen knob, arcade auth fix