【翻译】.NET 5 Preview7发布

今天,发布了.NET 5.0 Preview7。这是倒数第二个预览版本(在转移到RC之前)。此时,大多数功能应该已经非常接近完成了。Single file和ARM64 intrinsics是两个花费了最长时间来完成的功能,当然Preview 8中已经在正轨上了。请参阅 .NET 5.0 Preview 4文章以获得更多的版本信息。


ASP.NET Core和EF Core也在今天发布。

您可以下载适用于Windows,macOS和Linux的.NET 5.0 Preview 7:

Installers and binaries

Container images

Snap installer

Release notes

Known issues

GitHub issue tracker

你需要使用Visual Studio 2019 16.7来使用.NET 5.0。现在Visual Studio for Mac 上也支持.NET 5.0。安装最新版本的C# extension来使用.NET 5.0和Visual Studio Code。

Performance

Stephen Toub最近发布了他在 .NET 5 中的性能改进,这是他的系列中的最新一篇。他涵盖了大约250个面向性能的拉请求,这些改进甚至会让那些密切关注.NET Core性能的人感到惊讶。

System.Text.Json

我们已经在新的JSON API中添加了可用性特性。以下是预览7的新特性(更多将在预览8中出现)。

[重大更改]序列化时可以忽略值类型属性的默认值- 可用于降低序列化和连线成本。

序列化时能够处理循环引用 - 现在预计API形状将是最终的。

Garbage Collection (GC)

GC现在通过GC公开最近收集的详细信息。方法,它返回一个结构体。GCMemoryInfo提供关于机器内存、堆内存和最近收集的信息,或者你指定的垃圾收集类型的最新收集——短暂的、完全阻塞的或者后台垃圾收集。

使用这个新API最有可能的用例是用于日志记录/监视,或者指示装入器平衡器应该停止机器的旋转以请求一次完整的GC。它还可以通过减少缓存的大小来避免容器硬限制。

另一个很小但有影响的变化是,将昂贵的内存复位操作推迟到低内存的情况下。我们希望这些策略上的更改能够降低GC延迟(以及GC CPU的一般使用)。

RyuJIT

RyuJIT是.NET的汇编代码生成器,针对Intel和ARM芯片。RyuJIT的大部分投资都集中在性能上。

总体改进

启用省略某些边界检查 — Credit @nathan-moore

用C#重写后优化Enum.CompareTo — 现在的性能与以前的c++相当。

改进了struct的寄存器分配 — Enregister multireg lclVars

删除冗余零初始值的改进

尾重复改进

基于堆栈的结构复制CQ修复

删除冗余的零初始化后清除死字段赋值

ARM64硬件内部特性和API优化

实现大多数“按元素”的内含函数

实现fcvtxn, fcvtxn2, sqabs, sqneg, suqadd, usqadd intrinsics — #38010, #38110

优化SpanHelpers.IndexOf(byte),SpanHelpers.IndexOf(char)

优化 SpanHelpers.IndexOfAny(byte)

优化 WithLower, WithUpper, Create, AsInt64, AsUInt64, AsDouble

优化 AsVector, AsVector128, GetUpper, As and WithElement

Closing

请告诉我们您使用Preview 7的经验。现在分享你的反馈还不晚。我们已经接近发布的尾声了,但实际上我们现在更关注质量,因为我们基本上已经完成了特性开发。
在预览8之后,我们计划在最终发布之前发布两个RCs。RCs将拥有“上线”许可证,这意味着它们将在生产中得到支持。在这一点上,我们从预览1开始就在.NET上运行.NET站点(5.0上50%;3.1版本的50%),它工作得很好。


原文:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-7/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzspp.html