Skip to content

Commit 3fec60c

Browse files
CopilotBillWagnergewarren
authored
Update .NET 10 "What's New" documentation for RC 1 release (#48316)
* Initial plan * Update .NET 10 What's New documentation for RC 1 release Co-authored-by: BillWagner <[email protected]> * Update docs/core/whats-new/dotnet-10/libraries.md * Apply suggestions from code review --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: BillWagner <[email protected]> Co-authored-by: Bill Wagner <[email protected]> Co-authored-by: Genevieve Warren <[email protected]>
1 parent cf04e99 commit 3fec60c

File tree

4 files changed

+37
-9
lines changed

4 files changed

+37
-9
lines changed

docs/core/whats-new/dotnet-10/libraries.md

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
title: What's new in .NET libraries for .NET 10
33
description: Learn about the updates to the .NET libraries for .NET 10.
44
titleSuffix: ""
5-
ms.date: 08/12/2025
5+
ms.date: 09/09/2025
66
ms.topic: whats-new
77
ai-usage: ai-assisted
88
---
99

1010
# What's new in .NET libraries for .NET 10
1111

12-
This article describes new features in the .NET libraries for .NET 10. It's been updated for Preview 7.
12+
This article describes new features in the .NET libraries for .NET 10. It's been updated for RC 1.
1313

1414
## Cryptography
1515

@@ -111,7 +111,7 @@ private static bool ValidateMLDsaSignature(ReadOnlySpan<byte> data, ReadOnlySpan
111111
}
112112
```
113113

114-
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.
114+
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 <xref:System.Security.Cryptography.MLKem> type isn't marked as `[Experimental]`, but some of its methods are (and will be until the underlying standards are finalized). The <xref:System.Security.Cryptography.MLDsa>, <xref:System.Security.Cryptography.SlhDsa>, and <xref:System.Security.Cryptography.CompositeMLDsa> classes are marked as `[Experimental]` under diagnostic `SYSLIB5006` until development is complete.
115115

116116
#### ML-DSA
117117

@@ -140,6 +140,20 @@ private static byte[] SignPreHashSha3_256(MLDsa signingKey, ReadOnlySpan<byte> d
140140
}
141141
```
142142

143+
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:
144+
145+
```csharp
146+
private static byte[] SignWithExternalMu(MLDsa signingKey, ReadOnlySpan<byte> externalMu)
147+
{
148+
return signingKey.SignMu(externalMu);
149+
}
150+
151+
private static bool VerifyWithExternalMu(MLDsa verifyingKey, ReadOnlySpan<byte> externalMu, ReadOnlySpan<byte> signature)
152+
{
153+
return verifyingKey.VerifyMu(externalMu, signature);
154+
}
155+
```
156+
143157
#### Composite ML-DSA
144158

145159
.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 <xref:System.Security.Cryptography.CompositeMLDsa> and <xref:System.Security.Cryptography.CompositeMLDsaAlgorithm> 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
217231
## Strings
218232

219233
- [String normalization APIs to work with span of characters](#string-normalization-apis-to-work-with-span-of-characters)
234+
- [UTF-8 support for hex-string conversion](#utf-8-support-for-hex-string-conversion)
220235

221236
### String normalization APIs to work with span of characters
222237

@@ -228,6 +243,17 @@ Unicode string normalization has been supported for a long time, but existing AP
228243
- <xref:System.StringNormalizationExtensions.IsNormalized(System.ReadOnlySpan{System.Char},System.Text.NormalizationForm)?displayProperty=nameWithType>
229244
- <xref:System.StringNormalizationExtensions.TryNormalize(System.ReadOnlySpan{System.Char},System.Span{System.Char},System.Int32@,System.Text.NormalizationForm)?displayProperty=nameWithType>
230245

246+
### UTF-8 support for hex-string conversion
247+
248+
.NET 10 adds UTF-8 support for hex-string conversion operations in the <xref:System.Convert> class. These new methods provide efficient ways to convert between UTF-8 byte sequences and hexadecimal representations without requiring intermediate string allocations:
249+
250+
- <xref:System.Convert.FromHexString(System.ReadOnlySpan{System.Byte})?displayProperty=nameWithType>
251+
- <xref:System.Convert.FromHexString(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@,System.Int32@)?displayProperty=nameWithType>
252+
- <xref:System.Convert.TryToHexString(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@)?displayProperty=nameWithType>
253+
- <xref:System.Convert.TryToHexStringLower(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@)?displayProperty=nameWithType>
254+
255+
These methods mirror the existing overloads that work with `string` and `ReadOnlySpan<char>`, but operate directly on UTF-8 encoded bytes for improved performance in scenarios where you're already working with UTF-8 data.
256+
231257
## Collections
232258

233259
- [Additional `TryAdd` and `TryGetValue` overloads for `OrderedDictionary<TKey, TValue>`](#additional-tryadd-and-trygetvalue-overloads-for-ordereddictionarytkey-tvalue)
@@ -339,6 +365,8 @@ All of this is serialized as JSON in the <xref:System.IO.Pipelines.Pipe> (format
339365

340366
The <xref:System.Numerics.Tensors> interface now includes a nongeneric interface, <xref:System.Numerics.Tensors.IReadOnlyTensor>, for operations like accessing <xref:System.Numerics.Tensors.IReadOnlyTensor.Lengths> and <xref:System.Numerics.Tensors.IReadOnlyTensor.Strides>. Slice operations no longer copy data, which improves performance. Additionally, you can access data nongenerically by boxing to `object` when performance isn't critical.
341367

368+
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<TSelf, TOther, TResult>` or `INumber<TSelf>`, the operation is supported. For example, `tensor + tensor` is available for a `Tensor<int>`, but isn't available for a `Tensor<bool>`.
369+
342370
## Options validation
343371

344372
- [New AOT-safe constructor for `ValidationContext`](#new-aot-safe-constructor-for-validationcontext)

docs/core/whats-new/dotnet-10/overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
title: What's new in .NET 10
33
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.
44
titleSuffix: ""
5-
ms.date: 08/12/2025
5+
ms.date: 09/09/2025
66
ms.topic: whats-new
77
ai-usage: ai-assisted
88
---
99

1010
# What's new in .NET 10
1111

12-
Learn about the new features in .NET 10 and find links to further documentation. This page has been updated for Preview 7.
12+
Learn about the new features in .NET 10 and find links to further documentation. This page has been updated for RC 1.
1313

1414
.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).
1515

docs/core/whats-new/dotnet-10/runtime.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
title: What's new in .NET 10 runtime
33
description: Learn about the new features introduced in the .NET 10 runtime.
44
titleSuffix: ""
5-
ms.date: 08/12/2025
5+
ms.date: 09/09/2025
66
ms.topic: whats-new
77
ai-usage: ai-assisted
88
---
99
# What's new in the .NET 10 runtime
1010

11-
This article describes new features and performance improvements in the .NET runtime for .NET 10. It's been updated for Preview 7.
11+
This article describes new features and performance improvements in the .NET runtime for .NET 10. It's been updated for RC 1.
1212

1313
## JIT compiler improvements
1414

docs/core/whats-new/dotnet-10/sdk.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
title: What's new in the SDK and tooling for .NET 10
33
description: Learn about the new .NET SDK features introduced in .NET 10.
44
titleSuffix: ""
5-
ms.date: 08/12/2025
5+
ms.date: 09/09/2025
66
ms.topic: whats-new
77
ai-usage: ai-assisted
88
---
99

1010
# What's new in the SDK and tooling for .NET 10
1111

12-
This article describes new features and enhancements in the .NET SDK for .NET 10. It's been updated for Preview 7.
12+
This article describes new features and enhancements in the .NET SDK for .NET 10. It's been updated for RC 1.
1313

1414
## .NET tools enhancements
1515

0 commit comments

Comments
 (0)