【翻译】.NET 5 Preview5发布

2022-04-07 15:02:49 浏览数 (1)

今天,发布了.NET 5.0 Preview5。主要对它进行了一小部分新功能和性能的改进。.NET 5.0 Preview 4包含了一些计划和.NET 5.0要交付的内容。 现在,大多数的功能都已经包含在里面,但是有许多功能还未到最终状态。预计这个版本在Preview 7中完善。

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

  • Windows and macOS installers
  • Binaries
  • Docker images
  • Snap installer

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

我们需要使用Visual Studio 2019 16.7才能使用.NET 5.0。安装最新版本的C#扩展,以将.NET 5.0与Visual Studio Code结合使用。Mac的Visual Studio尚不支持.NET 5.0。

发布说明:

  • .NET 5.0 release notes
  • .NET 5.0 known issues
  • GitHub release
  • GitHub tracking issue

RyuJIT改进

对RyuJIT JIT编译器进行了以下改进

  • 新的、更快的、可移植的tailcall helper实现。
  • ARM64硬件内部物理的实现进程
    • 实现ASIMD Extract Insert ExtractVector64 ExtractVector128
    • 实现 ASIMD widening, narrowing, saturating intrinsics
    • 添加VectorTableList和TableVectorExtension内部函数
    • 添加对ARM64内部函数的CreateScalarUnsafe()支持
    • ARM64对Vector64.Create()和Vector128.Create()的内在支持
    • 使用arm64 intrinsic优化BitOperations.PopCount ()
  • 在影响正则表达式编译的情况下改进了JIT的速度
  • 使用新的硬件特性BSF/BSR改进英特尔架构性能
  • 实现Vector{Size}.AllBitsSet

Native exports

曾要求为导出本机二进制文件启用导出功能,这些功能已在很长一段时间内调用.NET代码。这是一个很好的方案,现在通过.NET 5.0启用它。该功能的构建块是托管对UnmanagedCallersOnlyAttribute的API支持。

这个功能是创建更高级别体验的基础。团队的Aaron Robinson一直在从事.NET Native Exports项目,该项目为将.NET组件作为本机库发布提供了更完整的体验。目前正在寻求有关此功能的反馈,以帮助我们确定该方法是否应包含在产品中。

.NET本地导出项目使我们能够:

  • 公开自定义的 native exports。
  • 不需要像COM这样的高级互操作技术。
  • 跨平台工作

现有的项目可以实现类似的方案,例如:

  • Unmanaged Exports
  • DllExport

[重大变化]删除.NET 5.0中内置的WinRT支持

注意:这个变化将出现在预览6中。这是一个早期的通知。

Windows Runtime(WinRT)是Windows中公开使用的新API的技术和ABI。您可以通过.NET代码调用这些API,类似于使用C 的方法。在.NET Core 3.0中添加了对WinRT interop的支持,这是对Windows桌面客户端框架(Windows Forms和WPF)添加支持的一部分。

最近,一直在与Windows团队紧密合作,以更改和改进WinRT interop与.NET的协作方式。我们已用Windows团队在.NET 5.0中提供的C#/WinRT工具链替换了内置的WinRT支持。WinRT互操作中的此更改是一项重大更改,使用WinRT的.NET Core 3.x应用将需要重新编译。我们将在即将来临的预览中提供更多信息。

在.NET 5中的支持WinRT API中明确指出了这些好处:

  • WinRT互操作可以独立于.NET runtime进行开发和改进。
  • 使WinRT互操作与为其他操作系统(如iOS和Android)提供的互操作系统对称。
  • 可以利用许多其他。net特性(AOT, c#特性, IL linking)。
  • 简化.NET运行时代码库(删除6万行代码)。

将System.DirectoryServices.Protocols扩展到Linux和macOS

添加对System.DirectoryServices.Protocols的跨平台支持。在Preview 5中,添加了对Linux的支持,并在Preview 6中添加了对macOS的支持。对Windows支持已经存在。

System.DirectoryServices.Protocols是比System.DirectoryServices更低级别的API,并且启用更多方案。System.DirectoryServices包含仅适用Windows的概念/实现,因此制作跨平台并不是一个很容易的事情。 这两个API都支持对目录服务服务器(如LDAP或Active Directory)进行控制和交互。

Alpine 3.12

本周,增加了对Alpine 3.12,.NET Core 3.1和.NET 5的支持。Alpine Linux的维护者于5月29日宣布发布Alpine 3.12。与过去相比,以更快,更可预测的方式增加对新Linux发行版的支持。

会发现他们已经开始使用一种新的发布模型来发布新发行版的问题。这就是我们对Alpine 3.12所做的。将来,我们计划更早地发布这些问题。例如,需要跟踪的下一个发行版可能是Ubuntu 20.10。尚未决定,但可能会在7月或8月发布该发行版的类似问题,以准备10月发行的新Ubuntu版本。

最后

感谢大家对.NET 5.0预览版的反馈以及您的早期反馈。正如文章的简介中所建议的那样,现在才发布大约一半。现在包括了大多数功能,但是我们希望在接下来的几个预览中会进行许多更改,以完成体验并消除仍然存在的粗糙边缘。

来源:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-5/

0 人点赞