微软发布.NET 9预览版5

.NET 9 第五预览版发布总结

上个月,微软发布了 .NET 9 的第五个预览版。该版本预计将在今年晚些时候正式发布,属于标准期限支持(STS)版本,支持周期为18个月,从2024年11月12日至2026年5月12日。该版本在多个操作系统上提供支持,并带来了性能提升和新特性,包括增强的AI功能、优先无界通道、使用 SearchValues 进行子字符串搜索,以及更灵活的 OpenTelemetry 活动链接等。

主要特性

增强的AI能力

本次发布的重要特性之一是扩展了AI能力,更新了 TensorPrimitivesTensor<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 系统。更多详细信息可参考官方发布说明。

阅读 23
0 条评论