.NET 9 预览版6发布

微软发布了 .NET 9 的第 6 个预览版,此版本包括对运行时、SDK、.NET MAUI、ASP.NET Core 和 C# 的更新,预览版没有包含太多新的主要功能或特性,因为已接近 .NET 9 开发的最后阶段,该开发计划于 11 月全面发布。

Loongarch的Native-AOT代码合进去了,龙芯.NET 可以直接同步社区代码,这样龙芯.NET 就可以非常方便制作Loongarch架构的SDK来发布。极大减少代码的本地维护,龙芯.NET 现在都是基于社区的源码极少的修改就可以发布。 其次,社区支持Loongarch的CI也在慢慢的发展着,开源社区原生发布Loongarch架构的OS系统镜像,如Alpine和Debian都在快速推进,特别Alpine社区网页wiki已经明确把支持Loongarch放到今年11月的发布计划中,其实Alpine和Debian两个OS发行版社区,对Loongarch的支持已经很全面了,只是需要等社区下个版本发布中,正式发布Loongarch架构的ISO镜像。 到时候就可以先在dotnet的CI中先添加一个Loongarch的测试。为后续做好准备

运行时更新

  • ARM64 代码生成:改进了加载和存储数据的指令,增强了执行时间和性能。

  • 代码布局:增强基本块排序,以最大化 fallthrough 行为和热代码密度,减少分支指令的数量。

  • 循环优化:识别翻转循环计数器变量的时机以提高性能。

  • 减少地址暴露:更好地跟踪局部变量地址以释放更多的优化机会。

  • AVX10v1 支持:新的 SIMD 指令集支持,允许在支持 AVX10 的硬件上进行矢量化操作。

  • 硬件内部代码生成:改进硬件内部函数中常量的处理,以生成加速代码。

  • 常量折叠:增强浮点和 SIMD 运算的常量折叠功能。

SDK 更新

  • NuGetAudit:现在会对传递依赖项中的漏洞发出警告,有助于维护项目安全。"NuGetAudit 最初是在 .NET 8 中添加的,如果项目使用的任何包存在已知漏洞,它会在还原期间发出警告,"Microsoft 解释道。"它需要一个提供漏洞数据库的包源,所以在实践中你需要使用 https://api.nuget.org/v3/index.json 作为包源,我们计划在不 nuget.org 作为包源的情况下允许审计。有关 NuGet 审核(包括所有配置选项)的详细信息,请参阅有关 NuGet 审核的文档

  • dotnet nuget why:一个新命令,用于查明你的项目为什么使用传递包。

  • MSBuild BuildChecks:引入它来在构建期间强制执行规则和不变量,类似于 Roslyn Analyzers,并针对共享输出路径和双写检测制定了新规则。

.NET MAUI 更新

  • 质量改进:扩大测试覆盖范围、端到端场景测试和大量错误修复。

  • 适用于 Android 和 iOS 的 .NET:注重质量的更新,确保两个平台的应用程序开发稳健可靠。

ASP.NET Core 更新

  • 静态 Web 资产的指纹识别:自动生成静态资产的指纹版本,以改善缓存并加快加载时间。

  • 改进了 SignalR 的分布式跟踪:增强了 SignalR 集线器方法调用的跟踪功能。

  • Microsoft.AspNetCore.OpenAPI 的增强:改进了完成提供程序并支持 [Required] 和 [DefaultValue] 属性以及模式转换器。

  • [Authorize] 和 [AllowAnonymous] 分析器:当 [Authorize] 被 [AllowAnonymous] 覆盖时,新的分析器会发出警告。

  • ComponentPlatform 重命名为 RendererInfo:匹配新的命名约定。

  • 跨帧拆分大型 HTTP/2 标头:确保更好地处理大型标头。

.NET 9 预览版6的相关 GitHub 讨论,新讨论包括:

对于那些倾向于深入研究细节的人,可以在不同属性的发行说明中找到更多的指南,包括:

可以在 .NET 9 中的新增功能(上次更新于 6 月 11 日)中跟踪主要开发工作。该公司表示,它特别关注云原生应用程序和性能。