原文:Announcing .NET 5.0 Preview 7
作者:Richard
时间:2020年7月21日
今天,我们将发布.NET 5.0 预览7。这是预览版本中倒数第二个(移至RC之前)。此时,大多数功能都应该非常接近完成。单个文件和ARM64内在函数是两个需要花费最多时间才能完成的功能区域,但是正朝着Preview 8迈进。有关更广泛的发行版信息,请参阅.NET 5.0预览4的帖子。
ASP.NET Core和EF Core也在今天发布。
您可以下载适用于Windows,macOS和Linux的.NET 5.0预览7:
- 安装程序和二进制文件
- 容器镜像
- Snap安装程序
- 发行说明
- 已知的问题
- GitHub问题追踪器
您需要使用Visual Studio 2019 16.7才能使用.NET 5.0。现在,Visual Studio for Mac支持.NET 5.0。安装最新版本的C#扩展,以将.NET 5.0与Visual Studio Code结合使用。
性能
Stephen Toub最近发表了他在.NET 5中的性能改进文章,这是他的系列中的最新文章。他涵盖了约250个以性能为导向的请求,这些请求揭示了一些改进,甚至使那些密切关注.NET Core性能的人感到惊讶。
System.Text.Json
我们一直在向新的JSON API添加可用性功能。下列功能是预览7中的新增功能(预览8中也有更多功能)。
- [突破性更改]序列化时可以忽略值类型属性的默认值-可用于减少序列化和接线成本。
- 序列化时能够处理循环引用-API形状现在有望最终确定。
垃圾收集(GC)
现在,GC通过GC.GetGCMemoryInfo方法公开了最新集合的详细信息,该方法返回了GCMemoryInfo结构。 GCMemoryInfo提供有关机器内存,堆内存以及您指定的那种GC的最新集合或最新集合的信息-临时,完全阻塞或后台GC。
使用此新API的最可能的用例是记录/监视或向装载机平衡器指示应停止旋转机器以请求完整的GC。它也可以通过减少缓存大小来避免容器的硬限制。
进行了另一个小而有影响的更改,以将昂贵的重置内存操作推迟到低内存情况。我们希望这些政策上的更改可以降低GC延迟(以及总体上降低GC CPU使用率)。
RyuJIT
RyuJIT是.NET的汇编代码生成器,同时针对Intel和ARM芯片。 RyuJIT的大部分投资都集中在性能上。
- 总体改进
- 启用取消某些边界检查-账号 @nathan-moore
- 在用C#重写后优化Enum.CompareTo-现在的性能与以前的C++实现相当。
- 改进了结构的寄存器分配—注册multireg lclVars
- 删除多余零初始化的改进
- 裁减重复的改进
- 基于堆栈的结构复制CQ修复
- 删除冗余零初始化后清理死区分配
- ARM64硬件内在函数和API优化
- 实现大多数“按元素”内在函数
- 实施fcvtxn,fcvtxn2,squabs,sqneg,suqadd,usqadd内部函数#38010,#38110
- 优化SpanHelpers.IndexOf(byte),SpanHelpers.IndexOf(char)
- 优化SpanHelpers.IndexOfAny(byte)
- 优化WithLower,WithUpper,Create,AsInt64,AsUInt64,AsDouble
- 优化AsVector,AsVector128,GetUpper,As和WithElement
最后
请告诉我们您使用预览7的经验。现在分享您的反馈还为时不晚。我们即将发布该版本,但是实际上,由于我们在很大程度上完成了功能开发,因此现在实际上更加注重质量。
在预览8之后,我们计划在最终版本之前发布两个RC。 RC将拥有"上线"许可证,这意味着它们将在生产中得到支持。需要注意的是,自预览版1开始,我们一直在.NET 5.0上运行dot.net网站(5.0占50%; 3.1占50%),并且运行良好。