Microsoft has published Preview 2 of its planned .NET 11 software development platform, emphasizing progress ranging from native runtime async to smaller SDK installers for Linux and macOS.
Released March 10, .NET 11 Preview 2 can be downloaded from net.microsoft.com. Preview 2 follows the February 10 release of Preview 1, with the production release expected in November.
Preview 2 brings significant progress toward runtime-native async, according to Microsoft. Instead of the compiler generating state-machine classes, the runtime itself manages async suspension and resumption. This produces cleaner stack traces, better debugging, and lower overhead. But runtime async is still a preview feature. The compiler must emit methods with MethodImplOptions.Async for the runtime to treat them as runtime-async.
Also in the runtime, the JIT now eliminates bounds checks for the common pattern where an index plus a constant is compared against a length. Checked arithmetic contexts that are proved redundant are also optimized away.
For the SDK, the installer size on Linux and macOS has been reduced by deduplicating assemblies using symbolic links. Duplicate .dll and .exe files are identified by content hash and replaced with symbolic links pointing to a single copy. This affects tarballs as well as .pkg, .deb, and .rpm installers
Code analyzer improvements were made in the SDK to avoid potentially expensive logging. Property accesses, GetType(), GetHashCode(), and GetTimestamp() calls no longer are flagged. Diagnostics now only apply to Information-level and below by default, since warning/error/critical code paths are rarely hot paths. And diagnostic messages now include why an argument was flagged, helping developers prioritize which warnings to address.
New in the .NET 11 libraries, overloads on TarFile.CreateFromDirectory accept a TarEntryFormat parameter, giving direct control over the archive format (dotnet/runtime#123407). Previously, CreateFromDirectory produced Pax archives. The new overloads support all four tar formats—Pax, Ustar, GNU, and V7—for compatibility with specific tools and environments.
Included in .NET 11 Preview 2 are the following additional improvements:
- Performance improvements in ASP.NET Core have Kestrel’s HTTP/1.1 request parser now using a non-throwing code path for handling malformed requests. Instead of throwing
BadHttpRequestExceptionon each parse failure, the parser returns a result struct indicating success, incomplete, or error states. In scenarios with many malformed requests—such as port scanning, malicious traffic, or misconfigured clients—this eliminates expensive exception-handling overhead while improving throughput by up to 20% to 40%. Valid request processing is not impacted. - The F# language has simplified DIM (Default Interface Member) hierarchies. Also with F#, a preview feature (
--langversion:preview) caches overload resolution results for repeated method calls with the same argument types. - For map control in .NET MAUI (Multi-platform App UI), new
TypeConverterimplementations forLocationandMapSpanenable concise XAML syntax for map coordinates, eliminating the need for verbosex:Argumentsmarkup. Also in .NET MAUI,TypedBindingandSourceGeneratedBindingnow are approximately 29% faster with 50% less memory allocation per binding operation. - Entity Framework (EF) Core supports translating the LINQ
MaxByAsyncandMinByAsyncmethods and their synchronous counterparts. These methods allow developers to find the element with the maximum or minimum value for a given key selector, rather than just the maximum or minimum value itself.



