作者 | Paul Krill

编译 | 郑丽媛

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

以下为译文:

为了统一.NET平台,.NET 5改进了RyuJIT中代码质量、垃圾收集和JSON序列化等功能。

Preview 8

微软已经发布了功能完整的.NET 5的第8个预览版,除了bug修复外,几乎所有的功能都是最终版本。.NET 5中 .NET Framework和.NET Core已合并,旨在一统.NET平台。最新版本预计将于2020年11月10日正式发布。

日前,.NET 5的第8个预览版在8月25号已发布。而在11月的正式版发布前,还将有两个候选版本发布。

.NET 5更高层次的目标包含提供统一的.NET SDK体验,即在所有.NET 5应用程序中使用一个BCL(基类库),并支持跨多个操作系统的本地和web应用程序。一个.NET 5本地应用程序项目将使用这些平台上的本地控件来支持Windows、Microsoft Duo (Android)和Apple iOS等目标。

.NET 5的其他目标还有:允许构建高性能的云应用程序、在BCL中实现更快的算法、运行时中为容器提供更好地支持、以及对HTTP3的支持。.NET 5.0通过Mono的运行时和.NET库,将支持WebAssembly二进制格式,还提供了一组可为空的引用类型注释。

Preview 7

此前,.NET 5 的第7个预览版在7月21日发布。彼时,关于第7个预览版的公告确认了在.NET 5中有约250个面向性能的请求,而这对于关注.NET 核心性能的人而言会是一个惊喜。

以下是.NET 5第7个预览版公告中提到的其他新增功能和改进:

  • 在序列化时,新的System.text.json JSON API提供了忽略值类型属性的默认值的功能,这有助于减少序列化和线路成本。还为System.text.json添加了在序列化时处理循环引用的功能,预计现在的API就将是最终版本。

  • 垃圾回收将使用GetGCMemoryInfo方法公开最近收集的详细数据,该方法返回GCMemoryInfo结构。GCMemoryInfo会提供关于机器、堆内存和最近收集的信息,或者是指定的GC类型的最新收集(临时、完全阻塞或后台)的信息。这个API很有可能会用于日志记录/监视,或者为请求完整的GC向负载平衡器发出停止旋转机器的指示。同时,为了将昂贵的重置内存操作推迟到低内存情况下,还更改了另一项GC。

  • Ryujit是.NET的汇编代码生成器,其增强的功能包括:取消某些边界检查、尾部重复改进,以及为消除冗余零初始化而进行的改进。Ryujit还具有ARM64硬件内在特性和API优化功能。

Preview 6

6月25日发布的.NET 5第6个预览版,删除了对WinRT(Windows运行时)的内置支持,WinRT是用于构建通用Windows平台应用程序的API集合。这是一个很重要的变化,因为使用WinRT的.NET Core 3.x应用程序都必须重新编译。.NET和Windows团队一直在竭力改变WinRT在Windows上的工作方式,所以用.NET 5中的C#/ WinRT工具链代替WinRT支持。C#/ WinRT是一个NuGet-packaged的工具包,为C#提供WinRT投影支持。

.NET 5 第6个预览版中的其他变化:

  • .NET 5第6个预览版SDK支持Windows ARM64设备上的Windows Form,并继续在Windows ARM64上添加对Windows  Presentation Foundation的支持。

  • RyuJIT代码质量改进包括为消除冗余的零初始化,进行结构处理和优化。此外,在ARM64硬件内在优化以及改进ARM64生成的代码(减小代码大小)方面也取得了进展。

  • 平台支持计划已更新。

Preview 5

6月10日发布的.NET 5第5个预览版包含以下新功能:

  • RyuJIT JIT编译器可以更快,更方便地使用尾调用助手。一旦JIT发现需要一个助手来执行尾调用,它就会在运行时寻求帮助。对于RyuJIT,ARM64硬件内在特性也一直在不断进步。RyuJIT还有其他的改进:在影响正则表达式编译和提高英特尔架构性能的情况下提高了速度。

  • 启用了对带有.NET代码调用的本机二进制文件的导出。此功能的构建块是承载了对UnManagedCallersOnlyAttribute的API支持。本机导出项目允许公开自定义本机出口。它不需要像COM这样的高级互操作技术,而且是跨平台的。

  • DirectoryServices.Protocols的使用正在往Linux和MacOS扩展。

  • 现在支持Alpine 3.12 Linux发行版。

.NET预览5.0版本可以从dot.net.microsoft.com(https://dotnet.microsoft.com/download/dotnet/5.0)下载。

Preview 4

5月19日发布的.NET 5 第4个预览版加入了以下新功能:

  • 支持C#9和F#5语言。

  • 改进了F#使用的尾调用的性能。

  • 改善了ToUpperInvariant,string.ToLowerInvariant和相关模式的性能。

  • 改进了HTTP 1.1和HTTP 2性能。

  • 改进了呼叫计数机制。

  • 内部通用字典的动态扩展,消除了通用代码对性能的影响。

  • 固定对象堆以减少堆碎片。

  • 基于新文件发布类型的文件应用程序,从二进制文件开始执行应用程序。

.NET第4个预览版可以从dot.net.microsoft.com(https://dotnet.microsoft.com/download/dotnet/5.0)下载。

Preview 3

4月23日发布的.NET 5第3个预览版中的增强功能包括:

  • 更新了用于管理位值数组的BitArray类,以包括使用ARM64内部特性对ARM64进行硬件加速的实现。微软表示,BitArray的性能改进是尤为重要。另外,在CLR中实现了栈上替换(OSR),可以允许在方法执行期间更改当前正在运行的方法执行的代码,而这些方法在栈上处于活动状态。为了改善分层编译的性能特征,这个功能现在已经成为x64上的实验性选择功能。RyuJIT的另一个增强功能改进了作为“尾调用”位置调用中参数的结构的代码质量。预计RyuJIT也会提供更好的泛型性能。

  • System.Txt.Json中添加了对保留引用的支持,从而可以对JSON序列化进行引用循环处理。另外,JsonSerializer现在支持不可变的类和结构。也可以支持空值处理。

  • .NET SDK现在将在项目文件中给定.NET Framework目标框架的情况下,自动引用NETFramework.ReferenceAssemblies NuGet包。通过此更改,可以在未安装.NET Framework目标包的计算机上构建.NET Framework项目。这个改进特定于定向包,没有考虑其他可能的项目依赖关系。

Preview 2

4月2日发布的.NET 5第2个预览版中的增强功能包括:

  • 为提高生成的机器代码的质量,对RyuJIT进行了许多更改,包括更高效地消除重复的零初始化以及更早地调用nullable优化。

  • 现在,可以在标记上一代对象实时保留的gen0 / 1对象时,在不同线程上进行服务器垃圾回收。在某些GC线程比其他线程标记时花费时间更长的情况下,通过跨线程窃取工作可以缩短一点 GC 暂停时间。此外,为允许收集器分别管理固定对象,固定对象堆(POH)的一部分功能已经完成,即垃圾回收内的一部分。这避免了固定对象对世代堆的负面影响。

Preview 1

3月16日发布的第1个预览版包括了正则表达式性能以及RyuJIT中代码质量的改进。

.NET 5将于2020年11月发布,该版本将包括:

  • ASP.NET Core,一个用于Web应用程序的开源框架;

  • 实体框架核心数据访问技术;

  • WinForms;

  • WPF(Windows Presentation Foundation);

  • Xamarin移动应用程序设备模型;

  • ML.NET。

最后

微软在提供了.NET 5 SDK预览版和附带的运行预览版的同时,表示,.NET 5将提供一个统一的平台来构建任何类型的应用程序。另外,微软将使用Azure负载平衡将流向.NET网站的流量的一半定向到.NET 5版本,用作测试用例。

微软建议开发人员使用.NET Core 3.1构建新应用程序,然后将其迁移到.NET5,并指出只要支持Windows,.NET Framework应用程序可以一直保留在.NET Framework上。

原文:https://www.infoworld.com/article/3533053/whats-new-in-microsoft-net-5.html

本文为 CSDN 翻译,转载请注明来源出处。

更多精彩推荐
☞头秃,在线求名字:网易使用昵称交流,再也没有“哥,姐,总”
☞高科技公司的 CEO 要写代码吗?
☞文件系统:隐匿在 Linux 背后的机制
☞CPU有个禁区,内核权限也无法进入!
☞5年5亿美金,华为昇腾如何构建全行业AI生态?
☞将比特币用作结算网络中蕴含的经济学知识
点分享点点赞点在看
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐