From 03e78f4688a808f31f3d4ff3b04c75587825ec32 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 21:24:20 +0000 Subject: [PATCH 1/4] Initial plan From 8308c3e0abb9257e09abdaeed45b6775ae0ffbf8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 21:32:00 +0000 Subject: [PATCH 2/4] Update .NET 10 What's New documentation for RC 1 release Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> --- docs/core/whats-new/dotnet-10/libraries.md | 34 ++++++++++++++++++++-- docs/core/whats-new/dotnet-10/overview.md | 4 +-- docs/core/whats-new/dotnet-10/runtime.md | 4 +-- docs/core/whats-new/dotnet-10/sdk.md | 4 +-- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/docs/core/whats-new/dotnet-10/libraries.md b/docs/core/whats-new/dotnet-10/libraries.md index 0dd05b1111fc1..ab74d46fad29e 100644 --- a/docs/core/whats-new/dotnet-10/libraries.md +++ b/docs/core/whats-new/dotnet-10/libraries.md @@ -2,14 +2,14 @@ title: What's new in .NET libraries for .NET 10 description: Learn about the updates to the .NET libraries for .NET 10. titleSuffix: "" -ms.date: 08/12/2025 +ms.date: 09/09/2025 ms.topic: whats-new ai-usage: ai-assisted --- # What's new in .NET libraries for .NET 10 -This article describes new features in the .NET libraries for .NET 10. It's been updated for Preview 7. +This article describes new features in the .NET libraries for .NET 10. It's been updated for RC 1. ## Cryptography @@ -111,7 +111,7 @@ private static bool ValidateMLDsaSignature(ReadOnlySpan data, ReadOnlySpan } ``` -The PQC algorithms are available on systems where the system cryptographic libraries are OpenSSL 3.5 (or newer) or Windows CNG with PQC support. Also, the new classes are all marked as [`[Experimental]`](../../../fundamentals/syslib-diagnostics/experimental-overview.md) under diagnostic `SYSLIB5006` until development is complete. +The PQC algorithms are available on systems where the system cryptographic libraries are OpenSSL 3.5 (or newer) or Windows CNG with PQC support. The type is no longer marked as `[Experimental]` as of RC 1, though some of its methods may retain the experimental attribute until the underlying standards are finalized. The type is expected to follow a similar path, with the experimental designation moving from the entire type to specific methods. The and classes continue to be marked as `[Experimental]` under diagnostic `SYSLIB5006` until development is complete. #### ML-DSA @@ -140,6 +140,20 @@ private static byte[] SignPreHashSha3_256(MLDsa signingKey, ReadOnlySpan d } ``` +Starting in RC 1, ML-DSA also supports signatures created and verified from an "external" mu value, which provides additional flexibility for advanced cryptographic scenarios: + +```csharp +private static byte[] SignWithExternalMu(MLDsa signingKey, ReadOnlySpan externalMu) +{ + return signingKey.SignMu(externalMu); +} + +private static bool VerifyWithExternalMu(MLDsa verifyingKey, ReadOnlySpan externalMu, ReadOnlySpan signature) +{ + return verifyingKey.VerifyMu(externalMu, signature); +} +``` + #### Composite ML-DSA .NET 10 introduces new types to support [ietf-lamps-pq-composite-sigs](https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-sigs/) (currently at draft 7), including the and types, with implementation of the primitive methods for RSA variants. @@ -217,6 +231,7 @@ The issue arises because LINQ expressions can't handle optional parameters. To a ## Strings - [String normalization APIs to work with span of characters](#string-normalization-apis-to-work-with-span-of-characters) +- [UTF-8 support for hex-string conversion](#utf-8-support-for-hex-string-conversion) ### String normalization APIs to work with span of characters @@ -228,6 +243,17 @@ Unicode string normalization has been supported for a long time, but existing AP - - +### UTF-8 support for hex-string conversion + +.NET 10 RC 1 adds UTF-8 support for hex-string conversion operations in the class. These new methods provide efficient ways to convert between UTF-8 byte sequences and hexadecimal representations without requiring intermediate string allocations: + +- +- +- +- + +These methods mirror the existing overloads that work with `string` and `ReadOnlySpan`, but operate directly on UTF-8 encoded bytes for improved performance in scenarios where you're already working with UTF-8 data. + ## Collections - [Additional `TryAdd` and `TryGetValue` overloads for `OrderedDictionary`](#additional-tryadd-and-trygetvalue-overloads-for-ordereddictionarytkey-tvalue) @@ -339,6 +365,8 @@ All of this is serialized as JSON in the (format The interface now includes a nongeneric interface, , for operations like accessing and . Slice operations no longer copy data, which improves performance. Additionally, you can access data nongenerically by boxing to `object` when performance isn't critical. +Starting in RC 1, the tensor APIs are now stable and no longer marked as experimental. While the APIs still require referencing the [System.Numerics.Tensors](https://www.nuget.org/packages/System.Numerics.Tensors) NuGet package, they have been thoroughly reviewed and finalized for the .NET 10 release. The types take advantage of C# 14 extension operators to provide arithmetic operations when the underlying type `T` supports them through Generic Math interfaces. + ## Options validation - [New AOT-safe constructor for `ValidationContext`](#new-aot-safe-constructor-for-validationcontext) diff --git a/docs/core/whats-new/dotnet-10/overview.md b/docs/core/whats-new/dotnet-10/overview.md index 53f0ad2991675..9ca6deee2cf2c 100644 --- a/docs/core/whats-new/dotnet-10/overview.md +++ b/docs/core/whats-new/dotnet-10/overview.md @@ -2,14 +2,14 @@ title: What's new in .NET 10 description: Learn about the new features introduced in .NET 10 for the runtime, libraries, and SDK. Also find links to what's new in other areas, such as ASP.NET Core. titleSuffix: "" -ms.date: 08/12/2025 +ms.date: 09/09/2025 ms.topic: whats-new ai-usage: ai-assisted --- # What's new in .NET 10 -Learn about the new features in .NET 10 and find links to further documentation. This page has been updated for Preview 7. +Learn about the new features in .NET 10 and find links to further documentation. This page has been updated for RC 1. .NET 10, the successor to [.NET 9](../dotnet-9/overview.md), is [supported for three years](https://dotnet.microsoft.com/platform/support/policy/dotnet-core) as a long-term support (LTS) release. You can [download .NET 10 here](https://get.dot.net/10). diff --git a/docs/core/whats-new/dotnet-10/runtime.md b/docs/core/whats-new/dotnet-10/runtime.md index 174f9937fd37e..b034aad4fe20b 100644 --- a/docs/core/whats-new/dotnet-10/runtime.md +++ b/docs/core/whats-new/dotnet-10/runtime.md @@ -2,13 +2,13 @@ title: What's new in .NET 10 runtime description: Learn about the new features introduced in the .NET 10 runtime. titleSuffix: "" -ms.date: 08/12/2025 +ms.date: 09/09/2025 ms.topic: whats-new ai-usage: ai-assisted --- # What's new in the .NET 10 runtime -This article describes new features and performance improvements in the .NET runtime for .NET 10. It's been updated for Preview 7. +This article describes new features and performance improvements in the .NET runtime for .NET 10. It's been updated for RC 1. ## JIT compiler improvements diff --git a/docs/core/whats-new/dotnet-10/sdk.md b/docs/core/whats-new/dotnet-10/sdk.md index d1ad48ef454c2..a388ab43f03c1 100644 --- a/docs/core/whats-new/dotnet-10/sdk.md +++ b/docs/core/whats-new/dotnet-10/sdk.md @@ -2,14 +2,14 @@ title: What's new in the SDK and tooling for .NET 10 description: Learn about the new .NET SDK features introduced in .NET 10. titleSuffix: "" -ms.date: 08/12/2025 +ms.date: 09/09/2025 ms.topic: whats-new ai-usage: ai-assisted --- # What's new in the SDK and tooling for .NET 10 -This article describes new features and enhancements in the .NET SDK for .NET 10. It's been updated for Preview 7. +This article describes new features and enhancements in the .NET SDK for .NET 10. It's been updated for RC 1. ## .NET tools enhancements From 9c79151173b6ff51ff5315d729c0bc053794a2b5 Mon Sep 17 00:00:00 2001 From: Bill Wagner Date: Tue, 9 Sep 2025 17:53:04 -0400 Subject: [PATCH 3/4] Update docs/core/whats-new/dotnet-10/libraries.md --- docs/core/whats-new/dotnet-10/libraries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core/whats-new/dotnet-10/libraries.md b/docs/core/whats-new/dotnet-10/libraries.md index ab74d46fad29e..4b5a5194fc025 100644 --- a/docs/core/whats-new/dotnet-10/libraries.md +++ b/docs/core/whats-new/dotnet-10/libraries.md @@ -111,7 +111,7 @@ private static bool ValidateMLDsaSignature(ReadOnlySpan data, ReadOnlySpan } ``` -The PQC algorithms are available on systems where the system cryptographic libraries are OpenSSL 3.5 (or newer) or Windows CNG with PQC support. The type is no longer marked as `[Experimental]` as of RC 1, though some of its methods may retain the experimental attribute until the underlying standards are finalized. The type is expected to follow a similar path, with the experimental designation moving from the entire type to specific methods. The and classes continue to be marked as `[Experimental]` under diagnostic `SYSLIB5006` until development is complete. +The PQC algorithms are available on systems where the system cryptographic libraries are OpenSSL 3.5 (or newer) or Windows CNG with PQC support. The type is no longer marked as `[Experimental]` as of RC 1, though some of its methods may retain the experimental attribute until the underlying standards are finalized. The type is expected to follow a similar policy, with the experimental designation moving from the entire type to specific methods. The and classes continue to be marked as `[Experimental]` under diagnostic `SYSLIB5006` until development is complete. #### ML-DSA From 4e1acf892d60cf63190215aee708af36e2276306 Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Tue, 9 Sep 2025 15:16:16 -0700 Subject: [PATCH 4/4] Apply suggestions from code review --- docs/core/whats-new/dotnet-10/libraries.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/core/whats-new/dotnet-10/libraries.md b/docs/core/whats-new/dotnet-10/libraries.md index 4b5a5194fc025..a13b67745eb63 100644 --- a/docs/core/whats-new/dotnet-10/libraries.md +++ b/docs/core/whats-new/dotnet-10/libraries.md @@ -111,7 +111,7 @@ private static bool ValidateMLDsaSignature(ReadOnlySpan data, ReadOnlySpan } ``` -The PQC algorithms are available on systems where the system cryptographic libraries are OpenSSL 3.5 (or newer) or Windows CNG with PQC support. The type is no longer marked as `[Experimental]` as of RC 1, though some of its methods may retain the experimental attribute until the underlying standards are finalized. The type is expected to follow a similar policy, with the experimental designation moving from the entire type to specific methods. The and classes continue to be marked as `[Experimental]` under diagnostic `SYSLIB5006` until development is complete. +The PQC algorithms are available on systems where the system cryptographic libraries are OpenSSL 3.5 (or newer) or Windows CNG with PQC support. The type isn't marked as `[Experimental]`, but some of its methods are (and will be until the underlying standards are finalized). The , , and classes are marked as `[Experimental]` under diagnostic `SYSLIB5006` until development is complete. #### ML-DSA @@ -245,7 +245,7 @@ Unicode string normalization has been supported for a long time, but existing AP ### UTF-8 support for hex-string conversion -.NET 10 RC 1 adds UTF-8 support for hex-string conversion operations in the class. These new methods provide efficient ways to convert between UTF-8 byte sequences and hexadecimal representations without requiring intermediate string allocations: +.NET 10 adds UTF-8 support for hex-string conversion operations in the class. These new methods provide efficient ways to convert between UTF-8 byte sequences and hexadecimal representations without requiring intermediate string allocations: - - @@ -365,7 +365,7 @@ All of this is serialized as JSON in the (format The interface now includes a nongeneric interface, , for operations like accessing and . Slice operations no longer copy data, which improves performance. Additionally, you can access data nongenerically by boxing to `object` when performance isn't critical. -Starting in RC 1, the tensor APIs are now stable and no longer marked as experimental. While the APIs still require referencing the [System.Numerics.Tensors](https://www.nuget.org/packages/System.Numerics.Tensors) NuGet package, they have been thoroughly reviewed and finalized for the .NET 10 release. The types take advantage of C# 14 extension operators to provide arithmetic operations when the underlying type `T` supports them through Generic Math interfaces. +The tensor APIs are now stable and no longer marked as experimental. While the APIs still require referencing the [System.Numerics.Tensors](https://www.nuget.org/packages/System.Numerics.Tensors) NuGet package, they have been thoroughly reviewed and finalized for the .NET 10 release. The types take advantage of C# 14 extension operators to provide arithmetic operations when the underlying type `T` supports the operation. If `T` implements the relevant [generic math](../../../standard/generics/math.md) interfaces, for example, `IAdditionOperators` or `INumber`, the operation is supported. For example, `tensor + tensor` is available for a `Tensor`, but isn't available for a `Tensor`. ## Options validation