.NET 9 第五预览版发布总结
上个月,微软发布了 .NET 9 的第五个预览版。该版本预计将在今年晚些时候正式发布,属于标准期限支持(STS)版本,支持周期为18个月,从2024年11月12日至2026年5月12日。该版本在多个操作系统上提供支持,并带来了性能提升和新特性,包括增强的AI功能、优先无界通道、使用 SearchValues 进行子字符串搜索,以及更灵活的 OpenTelemetry 活动链接等。
主要特性
增强的AI能力
本次发布的重要特性之一是扩展了AI能力,更新了 TensorPrimitives 和 Tensor<T> 类型。 TensorPrimitives 类提供了对值范围执行数值操作的静态方法,其方法范围从 .NET 8 的40个扩展到了约200个重载,涵盖了实现特定接口的任何类型。许多操作通过SIMD优化的实现加速了性能。
Tensor<T> 类型在之前的版本中引入,旨在与AI库(如ML.NET)实现高效互操作。它通过提供索引和切片操作实现数据操作,并基于 TensorPrimitives 进行数学运算,因此也受益于 TensorPrimitives 的更新。
优先无界通道
本次发布引入了优先无界通道。无界通道是指没有存储项目数量限制的线程通道。新的优先通道通过 System.Threading.Channels 库中的 CreateUnboundedPrioritized<T> 方法实现。该方法创建的通道根据 Comparer<T>.Default 或自定义的 IComparer<T> 对元素进行排序。例如,即使数字以不同顺序写入通道,输出时仍按顺序排列。
子字符串搜索优化
SearchValues 类型在 .NET 8 中引入,提供了在范围内搜索的优化解决方案。在 .NET 9 中,该类型扩展为支持在更大字符串中搜索子字符串。这一优化利用了底层平台的SIMD支持,从而优化了使用该功能的高级类型(如 Regex)。
更灵活的 OpenTelemetry 活动链接
OpenTelemetry 活动链接现在更加灵活,新增了 System.Diagnostics.Activity.AddLink 方法。该方法允许在创建 Activity 对象后将其链接到其他追踪上下文,更好地符合 OpenTelemetry 规范。
其他更新
- 新API:新增了用于处理
Task的API,特别是Task.WhenEach方法,允许使用await foreach迭代完成任务。 - 修剪支持:为
TypeDescriptor类添加了修剪支持。 - 新类型:引入了
TypeName类,用于解析 ECMA-335 类型名称。 - 性能优化:通过
Span重载改进了params性能。
总结
.NET 9 第五预览版在性能、AI能力、线程管理和字符串搜索等方面进行了显著优化,并提供了更灵活的 OpenTelemetry 支持。该版本已支持 Linux、macOS 和 Windows 系统。更多详细信息可参考官方发布说明。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。