-
Notifications
You must be signed in to change notification settings - Fork 6.1k
Add What's new in .NET 11 Preview 1 documentation #51583
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Copilot
wants to merge
10
commits into
main
Choose a base branch
from
copilot/add-whats-new-article-dotnet-11
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+285
−1
Open
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
dfd8856
Initial plan
Copilot a371d54
Add What's new in .NET 11 articles for Preview 1
Copilot a69e163
Address review feedback: update article intro, remove titleSuffix, ad…
Copilot 9d7b599
Update docs/core/whats-new/dotnet-11/overview.md
BillWagner 769d9f6
Apply suggestion from @BillWagner
BillWagner f5b5af3
Update docs/core/whats-new/dotnet-11/libraries.md
BillWagner 32f7a05
Update docs/core/whats-new/dotnet-11/sdk.md
BillWagner 6736cd2
Update docs/whats-new/index.yml
BillWagner 43f06a1
Update docs/core/whats-new/dotnet-11/overview.md
BillWagner 5ce604c
Add titleSuffix and ms.update-cycle to all articles, update ms.date i…
Copilot File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,119 @@ | ||
| --- | ||
| title: What's new in .NET libraries for .NET 11 | ||
| description: Learn about the updates to the .NET libraries for .NET 11. | ||
| titleSuffix: "" | ||
| ms.date: 02/10/2026 | ||
| ai-usage: ai-generated | ||
| ms.update-cycle: 3650-days | ||
| --- | ||
|
|
||
| # What's new in .NET libraries for .NET 11 | ||
|
|
||
| This article describes new features in the .NET libraries for .NET 11. It was last updated for Preview 1. | ||
|
|
||
| ## String and character enhancements | ||
|
|
||
| .NET 11 introduces significant enhancements to string and character manipulation APIs, making it easier to work with Unicode characters and runes. | ||
|
|
||
| ### Rune support in String methods | ||
|
|
||
| The <xref:System.String> class now includes methods that accept <xref:System.Text.Rune> parameters, enabling you to search, replace, and manipulate strings using Unicode scalar values directly. These new methods include: | ||
|
|
||
| - <xref:System.String.Contains%2A> - Check if a string contains a specific rune. | ||
| - <xref:System.String.StartsWith%2A> and <xref:System.String.EndsWith%2A> - Check if a string starts or ends with a specific rune. | ||
| - <xref:System.String.IndexOf%2A> and <xref:System.String.LastIndexOf%2A> - Find the position of a rune in a string. | ||
| - <xref:System.String.Replace%2A> - Replace occurrences of one rune with another. | ||
| - <xref:System.String.Split%2A> - Split a string using a rune as the separator. | ||
| - <xref:System.String.Trim%2A>, <xref:System.String.TrimStart%2A>, and <xref:System.String.TrimEnd%2A> - Trim runes from strings. | ||
|
|
||
| Many of these methods also include overloads that accept a <xref:System.StringComparison> parameter for culture-aware comparisons. | ||
|
|
||
| ### Char.Equals with StringComparison | ||
|
|
||
| The <xref:System.Char> struct now includes an <xref:System.Char.Equals%2A> method that accepts a <xref:System.StringComparison> parameter, allowing you to compare characters using culture-aware or ordinal comparisons. | ||
|
|
||
| ### Rune support in TextInfo | ||
|
|
||
| The <xref:System.Globalization.TextInfo> class now provides `ToLower` and `ToUpper` methods that accept <xref:System.Text.Rune> parameters, enabling you to perform case conversions on individual Unicode scalar values. | ||
|
|
||
| ## Base64 encoding improvements | ||
|
|
||
| .NET 11 adds new APIs and overloads to the existing <xref:System.Buffers.Text.Base64> type, providing comprehensive support for Base64 encoding and decoding. These additions offer improved performance and flexibility compared to existing methods. | ||
|
|
||
| ### New Base64 APIs | ||
|
|
||
| The new APIs support encoding and decoding operations with various input and output formats: | ||
|
|
||
| - **Encoding to chars**: <xref:System.Buffers.Text.Base64.EncodeToChars%2A> and <xref:System.Buffers.Text.Base64.EncodeToString%2A> | ||
| - **Encoding to UTF-8**: <xref:System.Buffers.Text.Base64.EncodeToUtf8%2A> | ||
| - **Decoding from chars**: <xref:System.Buffers.Text.Base64.DecodeFromChars%2A> | ||
| - **Decoding from UTF-8**: <xref:System.Buffers.Text.Base64.DecodeFromUtf8%2A> | ||
|
|
||
| These methods provide both high-level convenience methods (that allocate and return arrays or strings) and low-level span-based methods (for zero-allocation scenarios). | ||
|
|
||
| ## Compression enhancements | ||
|
|
||
| .NET 11 includes several improvements to compression APIs. | ||
|
|
||
| ### ZIP archive entry access modes | ||
|
|
||
| The <xref:System.IO.Compression.ZipArchiveEntry> class now supports opening entries with specific file access modes through new <xref:System.IO.Compression.ZipArchiveEntry.Open%2A> and <xref:System.IO.Compression.ZipArchiveEntry.OpenAsync%2A> overloads that accept a <xref:System.IO.FileAccess> parameter. This allows you to open ZIP entries for read, write, or read-write access. | ||
|
|
||
| Additionally, a new <xref:System.IO.Compression.ZipArchiveEntry.CompressionMethod> property exposes the compression method used for an entry through the <xref:System.IO.Compression.ZipCompressionMethod> enum, which includes values for `Stored`, `Deflate`, and `Deflate64`. | ||
|
|
||
| ### DeflateStream and GZipStream behavior change | ||
|
|
||
| Starting in .NET 11, <xref:System.IO.Compression.DeflateStream> and <xref:System.IO.Compression.GZipStream> always write format headers and footers to the output stream, even when no data is written. This ensures the output is a valid compressed stream according to the Deflate and GZip specifications. | ||
|
|
||
| Previously, these streams didn't produce any output if no data was written, resulting in an empty output stream. This change ensures compatibility with tools that expect properly formatted compressed streams. | ||
|
|
||
| For more information, see [DeflateStream and GZipStream write headers and footers for empty payload](../../compatibility/core-libraries/11/deflatestream-gzipstream-empty-payload.md). | ||
|
|
||
| ## BFloat16 support in BitConverter | ||
|
|
||
| The <xref:System.BitConverter> class now includes methods for converting between <xref:System.Numerics.BFloat16> values and byte arrays or bit representations. These new methods include: | ||
|
|
||
| - <xref:System.BitConverter.GetBytes%2A> - Convert a BFloat16 value to a byte array. | ||
| - <xref:System.BitConverter.ToBFloat16%2A> - Convert a byte array to a BFloat16 value. | ||
| - Methods for converting between BFloat16 and its bit representation as `short` or `ushort`. | ||
|
|
||
| BFloat16 (Brain Floating Point) is a 16-bit floating-point format that's commonly used in machine learning and scientific computing. | ||
|
|
||
| ## Collections improvements | ||
|
|
||
| ### BitArray.PopCount | ||
|
|
||
| The <xref:System.Collections.BitArray> class now includes a `PopCount` method that returns the number of bits set to `true` in the array. This provides an efficient way to count set bits without manually iterating through the array. | ||
|
|
||
| ### IReadOnlySet support in JSON serialization | ||
|
|
||
| The <xref:System.Text.Json.Serialization.Metadata.JsonMetadataServices> class now includes a `CreateIReadOnlySetInfo` method, enabling JSON serialization support for <xref:System.Collections.Generic.IReadOnlySet%601> collections. | ||
|
|
||
| ## URI data scheme constant | ||
|
|
||
| A new <xref:System.Uri.UriSchemeData?displayProperty=nameWithType> constant has been added, representing the `data:` URI scheme. This constant provides a standardized way to reference data URIs. | ||
|
|
||
| ## StringSyntax attribute enhancements | ||
|
|
||
| The <xref:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute> class now includes constants for common programming languages: | ||
|
|
||
| - `CSharp` - Indicates C# syntax. | ||
| - `FSharp` - Indicates F# syntax. | ||
| - `VisualBasic` - Indicates Visual Basic syntax. | ||
|
|
||
| These constants can be used with the `StringSyntax` attribute to provide better tooling support for string literals containing code in these languages. | ||
|
|
||
| ## Additional breaking changes | ||
|
|
||
| .NET 11 includes several other breaking changes in the libraries: | ||
|
|
||
| - [MemoryStream enforces maximum capacity](../../compatibility/core-libraries/11/memorystream-max-capacity.md) - Starting in .NET 11, <xref:System.IO.MemoryStream> enforces a maximum capacity and throws <xref:System.ArgumentOutOfRangeException> for invalid capacity values. | ||
| - [TarReader validates checksums](../../compatibility/core-libraries/11/tar-checksum-validation.md) - Starting in .NET 11, <xref:System.Formats.Tar.TarReader> validates checksums and throws <xref:System.IO.InvalidDataException> for invalid entries. | ||
| - [Environment.TickCount Windows behavior](../../compatibility/core-libraries/11/environment-tickcount-windows-behavior.md) - On Windows, <xref:System.Environment.TickCount?displayProperty=nameWithType> and <xref:System.Environment.TickCount64?displayProperty=nameWithType> now exclude sleep and hibernation time, consistent with operating system wait APIs. | ||
| - [ZipArchive.CreateAsync eager loading](../../compatibility/core-libraries/11/ziparchive-createasync-eager-load.md) - The <xref:System.IO.Compression.ZipArchive.CreateAsync%2A> method now eagerly loads all ZIP archive entries to avoid synchronous reads on the stream. | ||
BillWagner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ## See also | ||
|
|
||
| - [What's new in the .NET 11 runtime](runtime.md) | ||
| - [What's new in the SDK for .NET 11](sdk.md) | ||
| - [Breaking changes in .NET 11](../../compatibility/11.md) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| --- | ||
| title: What's new in .NET 11 | ||
| description: Learn about the new features introduced in .NET 11 for the runtime, libraries, and SDK. Also find links to what's new in other areas, such as ASP.NET Core. | ||
| titleSuffix: "" | ||
| ms.date: 02/10/2026 | ||
| ai-usage: ai-generated | ||
| ms.update-cycle: 3650-days | ||
| --- | ||
BillWagner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| # What's new in .NET 11 | ||
|
|
||
| This article describes new features in .NET 11. It was last updated for Preview 1. | ||
|
|
||
| .NET 11 is currently in preview. The final release is expected in November 2026. You can [download .NET 11 here](https://dotnet.microsoft.com/download/dotnet/11.0). | ||
|
|
||
| Your feedback is important and appreciated. If you have questions or comments, use the discussion on [GitHub](https://github.com/dotnet/core/discussions/categories/news). | ||
|
|
||
| ## .NET runtime | ||
|
|
||
| The .NET 11 runtime includes updated minimum hardware requirements for x86/x64 and Arm64 architectures, requiring more modern instruction sets to improve performance and reduce maintenance complexity. | ||
|
|
||
| For more information, see [What's new in the .NET 11 runtime](runtime.md). | ||
|
|
||
| ## .NET libraries | ||
|
|
||
| The .NET 11 libraries introduce new APIs for string and character manipulation, compression, Base64 encoding, and collections. Enhancements include support for Rune-based operations in String, BFloat16 support in BitConverter, improved Base64 APIs, and new methods for ZIP archive entries. | ||
|
|
||
| For more information, see [What's new in the .NET 11 libraries](libraries.md). | ||
|
|
||
| ## .NET SDK | ||
|
|
||
| The .NET 11 SDK introduces improvements to .NET tools and build infrastructure. | ||
|
|
||
| For more information, see [What's new in the SDK for .NET 11](sdk.md). | ||
|
|
||
| ## ASP.NET Core | ||
|
|
||
| For information about what's new in ASP.NET Core, see [What's new in ASP.NET Core for .NET 11](/aspnet/core/release-notes/aspnetcore-11.0). | ||
|
|
||
| ## C# 15 | ||
|
|
||
| C# 15 includes these features: | ||
|
|
||
| - [Collection expression arguments](../../../csharp/whats-new/csharp-15.md#collection-expression-arguments) | ||
|
|
||
| For information about new C# features, see [What's new in C# 15](../../../csharp/whats-new/csharp-15.md). | ||
BillWagner marked this conversation as resolved.
Show resolved
Hide resolved
BillWagner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
BillWagner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ## Breaking changes | ||
|
|
||
| For information about breaking changes in .NET 11, see [Breaking changes in .NET 11](../../compatibility/11.md). | ||
|
|
||
| ## See also | ||
|
|
||
| - [What's new in .NET 10](../dotnet-10/overview.md) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| --- | ||
| title: What's new in .NET 11 runtime | ||
| description: Learn about the new features introduced in the .NET 11 runtime. | ||
| titleSuffix: "" | ||
| ms.date: 02/10/2026 | ||
| ai-usage: ai-generated | ||
| ms.update-cycle: 3650-days | ||
| --- | ||
BillWagner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| # What's new in the .NET 11 runtime | ||
|
|
||
| This article describes new features in the .NET runtime for .NET 11. It was last updated for Preview 1. | ||
|
|
||
| ## Updated minimum hardware requirements | ||
|
|
||
| The minimum hardware requirements for .NET 11 have been updated to require more modern instruction sets on both x86/x64 and Arm64 architectures. Additionally, the ReadyToRun (R2R) compilation targets have been updated to take advantage of newer hardware capabilities. | ||
|
|
||
| ### Arm64 requirements | ||
|
|
||
| For Apple, there's no change to the minimum hardware or the ReadyToRun target. The Apple M1 chips are approximately equivalent to `armv8.5-a` and provide support for at least the `AdvSimd` (NEON), `CRC`, `DOTPROD`, `LSE`, `RCPC`, `RCPC2`, and `RDMA` instruction sets. | ||
|
|
||
| For Linux, there's no change to the minimum hardware. .NET continues to support devices such as Raspberry Pi that might only provide support for the `AdvSimd` instruction set. The ReadyToRun target has been updated to include the `LSE` instruction set, which might result in additional jitting overhead if you launch an application. | ||
|
|
||
| For Windows, the baseline is updated to require the `LSE` instruction set. This is [required by Windows 11](/windows-hardware/design/minimum/minimum-hardware-requirements-overview) and by [all Arm64 CPUs officially supported by Windows 10](/windows-hardware/design/minimum/windows-processor-requirements). Additionally, it's inline with the Arm SBSA (Server Base System Architecture) requirements. The ReadyToRun target has been updated to be `armv8.2-a + RCPC`, which provides support for at least `AdvSimd`, `CRC`, `LSE`, `RCPC`, and `RDMA`, and covers the majority of hardware officially supported. | ||
|
|
||
| | OS | Previous JIT/AOT minimum | New JIT/AOT minimum | Previous R2R target | New R2R target | | ||
| |---------|--------------------------|---------------------|---------------------|------------------| | ||
| | Apple | Apple M1 | (No change) | Apple M1 | (No change) | | ||
| | Linux | armv8.0-a | (No change) | armv8.0-a | armv8.0-a + LSE | | ||
| | Windows | armv8.0-a | armv8.0-a + LSE | armv8.0-a | armv8.2-a + RCPC | | ||
|
|
||
| ### x86/x64 requirements | ||
|
|
||
| For all three operating systems (Apple, Linux, and Windows), the baseline is updated from `x86-64-v1` to `x86-64-v2`. This changes the hardware from only guaranteeing `CMOV`, `CX8`, `SSE`, and `SSE2` to also guaranteeing `CX16`, `POPCNT`, `SSE3`, `SSSE3`, `SSE4.1`, and `SSE4.2`. This guarantee is required by Windows 11 and by all x86/x64 CPUs officially supported on Windows 10. It includes all chips still officially supported by Intel and AMD, with the last older chips having gone out of support around 2013. | ||
|
|
||
| The ReadyToRun target has been updated to `x86-64-v3` for Windows and Linux, which additionally includes the `AVX`, `AVX2`, `BMI1`, `BMI2`, `F16C`, `FMA`, `LZCNT`, and `MOVBE` instruction sets. The ReadyToRun target for Apple remains unchanged. | ||
|
|
||
| | OS | Previous JIT/AOT minimum | New JIT/AOT minimum | Previous R2R target | New R2R target | | ||
| |---------|--------------------------|---------------------|---------------------|----------------| | ||
| | Apple | x86-64-v1 | x86-64-v2 | x86-64-v2 | (No change) | | ||
| | Linux | x86-64-v1 | x86-64-v2 | x86-64-v2 | x86-64-v3 | | ||
| | Windows | x86-64-v1 | x86-64-v2 | x86-64-v2 | x86-64-v3 | | ||
|
|
||
| ### Impact | ||
|
|
||
| Starting with .NET 11, .NET fails to run on older hardware and might print a message similar to the following: | ||
|
|
||
| > The current CPU is missing one or more of the baseline instruction sets. | ||
|
|
||
| For [ReadyToRun](../../deploying/ready-to-run.md)-capable assemblies, there might be additional startup overhead on some supported hardware that doesn't meet the expected support for a typical device. | ||
|
|
||
| ### Reason for change | ||
|
|
||
| .NET supports a broad range of hardware, often above and beyond the minimum hardware requirements put in place by the underlying operating system. This support adds significant complexity to the codebase, particularly for much older hardware that's unlikely to still be in use. Additionally, it defines a "lowest common denominator" that AOT targets must default to, which can, in some scenarios, lead to reduced performance. | ||
|
|
||
| The update to the minimum baseline was made to reduce the maintenance complexity of the codebase and to better align with the documented (and often enforced) hardware requirements of the underlying operating system. | ||
|
|
||
| For more information, see [Minimum hardware requirements updated](../../compatibility/jit/11/minimum-hardware-requirements.md). | ||
|
|
||
| ## See also | ||
|
|
||
| - [What's new in .NET libraries for .NET 11](libraries.md) | ||
| - [What's new in the SDK for .NET 11](sdk.md) | ||
| - [Breaking changes in .NET 11](../../compatibility/11.md) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| --- | ||
| title: What's new in the SDK and tooling for .NET 11 | ||
| description: Learn about the new .NET SDK features introduced in .NET 11. | ||
| titleSuffix: "" | ||
| ms.date: 02/10/2026 | ||
| ai-usage: ai-generated | ||
| ms.update-cycle: 3650-days | ||
| --- | ||
BillWagner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| # What's new in the SDK and tooling for .NET 11 | ||
|
|
||
| This article describes new features and enhancements in the .NET SDK for .NET 11. It was last updated for Preview 1. | ||
|
|
||
| ## Breaking changes | ||
|
|
||
| .NET 11 includes the following breaking change in the SDK: | ||
|
|
||
| ### Mono launch target no longer set automatically | ||
|
|
||
| Starting in .NET 11, the .NET SDK no longer automatically sets `mono` as the launch target for .NET Framework apps on Linux. If you rely on Mono for execution, update your launch configuration to specify `mono` explicitly. | ||
|
|
||
| For more information, see [Mono launch target no longer set automatically](../../compatibility/sdk/11/mono-launch-target-removed.md). | ||
|
|
||
| ## See also | ||
|
|
||
| - [What's new in the .NET 11 runtime](runtime.md) | ||
| - [What's new in .NET libraries for .NET 11](libraries.md) | ||
| - [Breaking changes in .NET 11](../../compatibility/11.md) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.