本文由葡萄城技术团队翻译并首发
转载请注明出处:葡萄城官网,葡萄城为开发者提供业余的开发工具、解决方案和服务,赋能开发者。

咱们很快乐公布.NET6预览的第6版,本次预览是倒数第二次预览了。在本次预览公布之后到最初一次预览之前,咱们会进入RC期,将会有两个RCs。这个版本自身绝对内容较少,而Preview7的内容会更多。在所有预览公布完结后,咱们将继续对问题进行修复,直到11月公布最终版本。请大家一起期待.NET的新版本。

.NET 6 Preview 6下载地址,依据各位的须要下载Linux, ,macOS, and Windows不同版本。

  • 安装程序和二进制文件
  • Linux packages
  • 发行阐明
  • API差别
  • 已知问题
  • GitHub问题跟踪器

请参阅ASP.NET Core、EF Core和.NET MAUI文章,以理解无关web、数据拜访和客户端场景的新性能的更多详细信息。

 

从.NET 6 Preview 6开始,咱们曾经测试并反对Visual Studio 2022 Preview 2。Visual Studio 2022能够应用专门为.NET 6开发的Visual Studio工具,如.NET MAUI中的开发、C应用程序的热从新加载、WebForms的新Web Live预览,以及IDE体验中的其余性能改良。.net6也曾经用visualstudioformac8.9进行了测试。

 

查看.NET新个性探讨。

x64仿真更新

咱们曾经实现了增加对Apple Silicon for macOS和Arm64 for Windows的反对。剩下的就是反对macOS、Apple Silicon和Windows Arm64上的x64仿真。

 

须要做以下两点实现:

  • 装置并行
  • 应用.NET CLI实现一流体系结构指标,以便在所有场景中启用本机体系结构SDK。

然而目前不不便的一点是,在并行安装程序可用之前(在之后的.NET6中),您须要装置所有x64版本或所有Arm64版本。如果要进行切换,须要卸载/删除Arm64计算机上的所有.NET版本。

工具:.NET SDK可选工作负载的改良

咱们增加了三个新的工作负载命令,以实现更好的发现和治理。

 

l  dotnet workload search-列出可装置的工作负载

l  dotnet工作负载卸载-如果不再须要工作负载,请删除指定的工作负载。也是节俭空间的好抉择

l  dotnet工作负载修复-重新安装以前装置的所有工作负载

 

如果因为网络连接不好导致装置失败,就能够解决这个问题。

 

可选工作负载由多个工作负载包组成,所以会呈现局部负载包装置胜利,局部装置失败。

在以前的预览中,咱们增加了以下命令:

  • dotnet workload install-装置工作负载
  • dotnet workload list-列出已装置的工作负载
  • dotnet workload update-更新已装置的工作负载

库:对System.DirectoryServices.Protocols的TLS反对

已为Linux和macOS的System.DirectoryServices.Protocols启用TLS反对。它曾经为Windows启用。NET用户当初能够享受与LDAP服务器的平安通信。

归功于@iinuwa。

工具:Crossgen2取代crossgen

已为所有现有的crossgen计划启用了Crossgen2。在这个里程碑中,咱们还从SDK中删除了(旧的)crossgen,旧crossgem不可再拜访,无奈应用。

 

Crossgen(1和2)反对将IL预编译为本机代码作为公布步骤。预编译对启动的改良有很大帮忙。Crossgen2是一个从头开始的实现,曾经被证实是代码生成翻新的高级平台。例如,crossgen2能够为比crossgen1更宽泛的IL模式集生成代码。

以下MSBuild属性演示如何应用crossgen2启用预编译。

库:Sync-over-async的性能改良

Sync-over-async是阻塞工作的一种常见类型。当线程池工作线程产生时,它会导致饥饿。线程注入的速度过慢可能会提早其余排队工作的运行,并且可能会提早饥饿问题的解决。

当Sync-over-async是线程池工作线程上产生的惟一一种阻塞线程时,此更改在默认状况下进步了线程注入速率。有一些新的AppContext配置值可用于配置线程注入速率,以响应Sync-over-async。

Runtime: W^x内存策略

咱们反对对W^ x内存保护。这是Apple Silicon的一项要求,也是其余操作系统的一项重要的安全措施。

此个性具备异样名称,它应该被读为“写独占执行”。这意味着内存页能够被标记为读/写或读/执行,但不能是任何包含写和执行的组合。例如,写/执行页会受到缓冲区溢出攻打的影响。

此个性要求在整个产品进行变更,无论应用的是写/执行页。例如,preview 6的一个变动是它要求JIT与咱们采纳的W^X计划合作。

W^x是苹果硅片机上macOS的一个要求,在.NET 6的所有其余环境中都是可选的,并且在.NET 7的所有环境中都可能是默认模式。

留神:W^x实现在除Apple Silicon以外的所有环境中都具备与.net6的启动回归,它将作为.NET7的一部分解决。因为操作系统反对此场景,Apple Silicon实现没有这种回归。

CodeGen 更新日志

在Preview 6中蕴含以下代码更改:

动静PGO

  • 增加选项以抉择爱护的DEVITET类随机抉择
    https://github.com/dotnet/run...
  • PGO/DEVILT诊断改良
    https://github.com/dotnet/run...

LSRA

  • 重构LSRA启发抉择

https://github.com/dotnet/run...

  1. DEBUG模式蕴含一个COMPlus变量,LsraOrdering将容许用户设置启发式排序
  2. 调整寄存器的启发式算法,以抉择要溢出的最佳寄存器候选

https://github.com/dotnet/run...

改良基于这些内容更改:

更多改良:

  • Windows x86
  • Windows x64
  • 通用改良

代码品质

打消冗余的“测试”指令
https://github.com/dotnet/run...

总结

这次公布很快就要完结了,大家能够尽快尝试一下这次Preview6中提到的内容改变。

感激所有为.NET6公布做出奉献的人。后续,葡萄城还会持续为大家带来更多.net6更新的相干内容分享。