.NET 7 Preview 1 已正式发布

简介: .NET 7 Preview 1 已正式发布

近日,.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 的现有方法中
  • 向现有类添加新的静态或非虚拟实例方法
  • 向现有类添加新的静态字段
  • 添加新类
相关文章
|
缓存 Ubuntu 前端开发
在Ubuntu上手动与自动启动Nginx的踩坑经历、以及重启服务
本文分享了作者在Ubuntu系统上手动和自动启动Nginx服务的踩坑经历,包括创建启动脚本、解决依赖问题、配置服务自动启动以及通过命令行管理Nginx服务的方法。
840 0
在Ubuntu上手动与自动启动Nginx的踩坑经历、以及重启服务
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
169 3
|
存储 Java API
阿里云OSS使用购买流程
本文介绍了阿里云对象存储OSS的基本使用,包括准备工作、购买开通阿里云账号并进行实名认证,以及通过Web控制台、命令行工具ossutil和SDK进行文件操作。此外,还提到了RESTful API和图形化工具OSSBrowser的使用,并给出了Java SDK下载对象的示例代码。文章内容包括了OSS的基本概念,如存储空间Bucket和对象Object,以及不同类型的存储类型。
|
存储 JavaScript 前端开发
Vue项目:学生管理系统
查询学生 步骤1:设置导航
271 0
|
JSON 算法 Unix
一篇文章带你分清楚JWT、JWS与JWE
随着移动互联网的兴起,传统基于 `session/cookie` 的 web 网站认证方式转变为了基于 OAuth2 等开放授权协议的单点登录模式(SSO),相应的基于服务器 session+ 浏览器 cookie 的 Auth 手段也发生了转变,Json Web Token 出现成为了当前的热门的 Token Auth 机制。
19657 2
一篇文章带你分清楚JWT、JWS与JWE
|
Java Python
基于Flask创建Python服务端,并调用Java客户端
基于Flask创建Python服务端,并调用Java客户端
385 0
|
JSON 前端开发 JavaScript
vue怎么实现跨域?
vue怎么实现跨域?
vue怎么实现跨域?
|
存储 缓存 网络协议
【先码后看】DHCP 扩展选项大全
动态主机配置协议 (Dynamic Host Configuration Protocol,DHCP) [1] 提供了一个框架,用于将配置消息传递给 TCP/IP 网络上的主机。配置参数和其他控制消息携带在标签数据项中,这些数据项存储在 DHCP 消息的“选项/options”字段中。数据项本身也称为“选项/options”。
1984 0
【先码后看】DHCP 扩展选项大全
|
JavaScript
原型与原型链,数形结合搞懂原型与原型链,真正理解原型链,面试官直呼内行。(二)
原型与原型链,数形结合搞懂原型与原型链,真正理解原型链,面试官直呼内行。
152 0
|
程序员 开发工具 C语言
访谈云风:一个编程的自由人
云风从三十年前开始编程,对于一个孩子来说,编程和游戏的界限很模糊。在三十年后的今天,云风仍然在编程,他的程序世界从未和游戏分开过。他在网易写《大话西游2》、做3D游戏引擎,离开网易后,他又和朋友联合创办了游戏公司简悦科技。云风相信快乐可以很简单,就像他攀岩不是为了健身一样。我们中有多少人因为游戏而爱上了编程,又有多少人可以一直坚守这种简单的快乐?
2529 0
访谈云风:一个编程的自由人