.NET 7 Preview 1 已正式发布

共 2277字,需浏览 5分钟

 ·

2022-02-22 19:26

技术编辑:典典丨发自 思否编辑部
公众号:SegmentFault



近日,.NET 7 第一个预览版 .NET 7 Preview 1 正式发布。


.NET 7 建立在 .NET 6 建立的基础之上,包括一套统一的基础库、运行时和 SDK,简化了开发体验,提高了开发人员的工作效率。.NET 7 的主要关注领域包括改进对云原生方案的支持、更容易升级旧项目的工具,以及通过更轻松地使用容器来简化开发人员体验。


.NET 7 Preview 1 包括对 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 的现有方法中

  • 向现有类添加新的静态或非虚拟实例方法

  • 向现有类添加新的静态字段

  • 添加新类


- END -

浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报