近日,.NET 7 第一个预览版 .NET 7 Preview 1 正式公布。
.NET 7 建设在 .NET 6 建设的根底之上,包含一套对立的根底库、运行时和 SDK,简化了开发体验,进步了开发人员的工作效率。.NET 7 的次要关注畛域包含改良对云原生计划的反对、更容易降级旧我的项目的工具,以及通过更轻松地应用容器来简化开发人员体验。
.NET 7 Preview1 包含对 API 的可空正文、继续的 JIT 编译器优化、新的 API 以及对更多热重载计划的反对。
.NET 7 Preview 1 次要更新内容
Microsoft.Extensions 的可空注解
.NET 在正文 Microsoft.Extensions.* 库,以实现可空性 (nullability) 方面获得了停顿。在 .NET 7 Preview 1 中,以下库已针对可空性进行了正文:
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Primitives
- Microsoft.Extensions.FileSystemGlobbing
- Microsoft.Extensions.DependencyModel
- Microsoft.Extensions.Configuration.Abstractions
- Microsoft.Extensions.FileProviders.Abstractions
- Microsoft.Extensions.FileProviders.Physical
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.Binder
- Microsoft.Extensions.Configuration.CommandLine
- Microsoft.Extensions.Configuration.EnvironmentVariables
- Microsoft.Extensions.Configuration.FileExtensions
- Microsoft.Extensions.Configuration.Ini
- Microsoft.Extensions.Configuration.Json
咱们打算在 .NET 7 正式公布时为所有 Microsoft.Extensions.* 库增加可空性正文。
可察看性
持续改良跟踪 API:
- 增加 ActivityContext.TryParse 重载以容许解析和创立 ActivityContext 对象,包含是否从近程父级流传流动上下文(相干问题)。
- 增加 Activity.IsStopped 批示 Activity 对象是否进行的办法(相干问题)。
代码生成
依据社区意见对代码生成进行了改良
- 将一些新式外部函数转换为 NamedIntrinsic。#62271
- 将额定的二进制操作增加到 RangeCheck 剖析中。#61662
- [JIT] [61620] 针对 *x = dblCns 优化 ARM64;#61847
- CoreRT 反对 ARM64&Unix。#41023
- 基于笼罩的 FMA codegen 优化 #58196
动静 PGO
- 对 Arm64 的 OSR 反对
- JIT:反对同步办法的 OSR
- JIT:解决 OSR、PGO 和尾调用的交互
- 增加 2009 Jit 架构打算(节选)
- JIT:一些 relops 的无限版本的前向替换
- JIT:为前期去虚拟化保留泛型上下文
Arm64
Arm64:内存屏障改良
循环优化
- 泛化循环前标头创立和循环晋升
- 循环重构和正文改良
互操作:p/Invoke 代码生成
咱们将在 .NET 6 中原型化的 p/invoke 源生成器(Source Generator) 集成到 dotnet/runtime 中,并且始终在转换运行时库以应用它。这意味着转换后的 p/invokes 与 AOT 兼容,不再须要在运行时生成 IL Stub。
System.Text.Json 中的新 API
System.Text.Json 附带了一些小的生命周期加强性能:
- 开发人员当初能够拜访 System.Text.Json 外部应用的默认单例 JsonSerializerOptions(相干问题)。
- 增加一个 JsonWriterOptions.MaxDepth 属性并确保此值来自序列化的 JsonSerializerOptions.MaxDepth 等效属性(相干问题)。
- 将 Patch 办法增加到 System.Net.Http.Json
热重载改良
下列更改实用于 Blazor WebAssembly 和 .NET 的 C# 热重载
- 向现有办法增加动态 lambda
- 将捕捉这个的 lambda 增加到曾经有至多一个捕捉这个的 lambda 的现有办法中
- 向现有类增加新的动态或非虚构实例办法
- 向现有类增加新的动态字段
- 增加新类