.NET 10 LTS:JIT 换成图级循环识别,类库补齐 ML-KEM/ML-DSA/SLH-DSA
.NET 10 是 LTS,支持三年,到 2028-11-10。10.0.0 发布于 2025-11-11,最新 patch 为 10.0.10(2026-07-14)。下载地址见 .NET 10 下载页,官方说明见 Announcing .NET 10 与 What's new in .NET 10。
运行时:JIT、GC 与 AOT
- 循环反转(loop inversion)不再用词法分析实现,改成基于图的自然循环识别,精度更高,对
for/while的优化更好。 - 方法去虚拟化(devirtualization)扩展到数组接口方法,这类方法现在可以去虚拟化并内联。
- 栈分配范围扩大:小的值类型数组和小引用类型数组走栈分配;新增对局部 struct 字段和 delegate 的逃逸分析。
- block reordering 建模为不对称旅行商问题的一个约简,用 3-opt 启发式求近似最优遍历,热路径密度随之提升。
- 新增 AVX10.2(x64)内建
System.Runtime.Intrinsics.X86.Avx10v2;Arm64 侧新增 SVE。 - Arm64 新的默认写屏障让 GC 区域处理更精确,GC 暂停改善 8% 到 20%+。
- NativeAOT 体积更小、速度更快;类型预初始化支持所有
conv.*与negopcode。
类库
后量子密码是这次类库变动最大的部分:
- 实现 ML-KEM(FIPS 203)、ML-DSA(FIPS 204)、SLH-DSA(FIPS 205),对应新增
MLKem、MLDsa、SlhDsa类型。 MLDsa、SlhDsa、CompositeMLDsa标注[Experimental],诊断 ID 为SYSLIB5006,直到开发完成。- 支持 Windows CNG 的 PQC。
- 新增 HashML-DSA(PreHash),
SignPreHash接受十进制 OID 字符串。 - 新增
CompositeMLDsa,支持 ietf-lamps-pq-composite-sigs draft 8。
其余变更:
- AES KeyWrap with Padding(RFC 5649)通过
Aes实例方法提供。 - JSON 序列化新增 strict 预设,遵循最佳实践,其中包括不允许重复属性;新增
PipeReader支持以提升效率。 WebSocketStream简化常见 WebSocket 场景。- macOS 客户端 TLS 1.3:把 Apple Network.framework 集成进
SslStream和HttpClient(此前 Secure Transport 不支持 TLS 1.3)。 - Windows 进程组支持,信号隔离更好。
ActivitySource/Meter构造时可指定遥测 schema URL,新增ActivitySourceOptions;新增 Rate Limiting Sampling 采样选项。- 全球化/日期时间新增基于 span 的 API;
System.Numerics新增左手坐标系 billboard 矩阵。
SDK 与 EF Core
dotnet test支持 Microsoft.Testing.Platform(MTP)。- CLI 命令顺序标准化,并生成 shell 补全脚本。
- 控制台应用可原生创建容器镜像。
- 新增
dnx工具执行脚本、dotnet tool exec一次性执行、--cli-schema。 - EF Core 10 新增命名查询过滤器:每个实体类型可有多个过滤器,且可选择性禁用。