diff --git a/docs/core/whats-new/dotnet-11/libraries.md b/docs/core/whats-new/dotnet-11/libraries.md new file mode 100644 index 0000000000000..a46091bf8b44d --- /dev/null +++ b/docs/core/whats-new/dotnet-11/libraries.md @@ -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 class now includes methods that accept parameters, enabling you to search, replace, and manipulate strings using Unicode scalar values directly. These new methods include: + +- - Check if a string contains a specific rune. +- and - Check if a string starts or ends with a specific rune. +- and - Find the position of a rune in a string. +- - Replace occurrences of one rune with another. +- - Split a string using a rune as the separator. +- , , and - Trim runes from strings. + +Many of these methods also include overloads that accept a parameter for culture-aware comparisons. + +### Char.Equals with StringComparison + +The struct now includes an method that accepts a parameter, allowing you to compare characters using culture-aware or ordinal comparisons. + +### Rune support in TextInfo + +The class now provides `ToLower` and `ToUpper` methods that accept 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 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**: and +- **Encoding to UTF-8**: +- **Decoding from chars**: +- **Decoding from UTF-8**: + +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 class now supports opening entries with specific file access modes through new and overloads that accept a parameter. This allows you to open ZIP entries for read, write, or read-write access. + +Additionally, a new property exposes the compression method used for an entry through the enum, which includes values for `Stored`, `Deflate`, and `Deflate64`. + +### DeflateStream and GZipStream behavior change + +Starting in .NET 11, and 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 class now includes methods for converting between values and byte arrays or bit representations. These new methods include: + +- - Convert a BFloat16 value to a byte array. +- - 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 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 class now includes a `CreateIReadOnlySetInfo` method, enabling JSON serialization support for collections. + +## URI data scheme constant + +A new constant has been added, representing the `data:` URI scheme. This constant provides a standardized way to reference data URIs. + +## StringSyntax attribute enhancements + +The 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, enforces a maximum capacity and throws for invalid capacity values. +- [TarReader validates checksums](../../compatibility/core-libraries/11/tar-checksum-validation.md) - Starting in .NET 11, validates checksums and throws for invalid entries. +- [Environment.TickCount Windows behavior](../../compatibility/core-libraries/11/environment-tickcount-windows-behavior.md) - On Windows, and 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 method now eagerly loads all ZIP archive entries to avoid synchronous reads on the stream. + +## 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) diff --git a/docs/core/whats-new/dotnet-11/overview.md b/docs/core/whats-new/dotnet-11/overview.md new file mode 100644 index 0000000000000..a6935fea6b09d --- /dev/null +++ b/docs/core/whats-new/dotnet-11/overview.md @@ -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 +--- + +# 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). + +## 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) diff --git a/docs/core/whats-new/dotnet-11/runtime.md b/docs/core/whats-new/dotnet-11/runtime.md new file mode 100644 index 0000000000000..e6d22471fe44e --- /dev/null +++ b/docs/core/whats-new/dotnet-11/runtime.md @@ -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 +--- + +# 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) diff --git a/docs/core/whats-new/dotnet-11/sdk.md b/docs/core/whats-new/dotnet-11/sdk.md new file mode 100644 index 0000000000000..3160d513c3dd8 --- /dev/null +++ b/docs/core/whats-new/dotnet-11/sdk.md @@ -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 +--- + +# 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) diff --git a/docs/fundamentals/toc.yml b/docs/fundamentals/toc.yml index 972710a954a28..5314d2eb71369 100644 --- a/docs/fundamentals/toc.yml +++ b/docs/fundamentals/toc.yml @@ -149,6 +149,17 @@ items: items: - name: .NET 11 items: + - name: What's new + items: + - name: Overview + href: ../core/whats-new/dotnet-11/overview.md + displayName: whats new, what's new + - name: Runtime + href: ../core/whats-new/dotnet-11/runtime.md + - name: Libraries + href: ../core/whats-new/dotnet-11/libraries.md + - name: SDK + href: ../core/whats-new/dotnet-11/sdk.md - name: Breaking changes href: ../core/compatibility/11.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - name: .NET 10 diff --git a/docs/whats-new/index.yml b/docs/whats-new/index.yml index 5e96a2d85e710..8a0584598e2f1 100644 --- a/docs/whats-new/index.yml +++ b/docs/whats-new/index.yml @@ -5,9 +5,17 @@ summary: Welcome to what's new in .NET and .NET docs. Use this page to navigate metadata: title: .NET what's new? description: Learn about new .NET features and new and updated content in .NET docs. - ms.date: 07/01/2025 + ms.date: 02/10/2026 ms.topic: landing-page landingContent: +- title: .NET 11 release updates + linkLists: + - linkListType: whats-new + links: + - text: .NET 11 + url: ../core/whats-new/dotnet-11/overview.md + - text: ASP.NET Core 11.0 + url: /aspnet/core/release-notes/aspnetcore-11.0 - title: .NET 10 release updates linkLists: - linkListType: whats-new