Swift 5.7 发布


Swift 5.7 现已发布,该版本包括对语言和标准库的主要添加、对编译器的增强以提供更好的开发人员体验、对 Swift 生态系统中的工具(包括 SourceKit-LSP 和 Swift 包管理器)的改进、改进的 Windows 支持等等。

语言和标准库

Swift 5.7 语言和标准库具有多项改进:

  • 通用样板代码的新速记语法,包括if let语句和多语句 closure type annotations
  • 解除长期存在的语言限制,使通用编程更加无缝
  • 通过新的 annotations 和 opt-in diagnositcs 增强 data race 安全性
  • 分布式环境中的 Actor 隔离
  • 改进了一套现有指针 API 的可用性
  • 全新的语言支持和字符串处理的 API

开发者体验

新的泛型实现

除了上述用于处理泛型的语言改进之外,类型检查器的泛型实现也从头开始重写,在正确性和性能方面都有所改进。

新的实现修复了许多长期存在的错误,主要与处理复杂的同类型需求有关,例如对集合SubSequence关联类型的同类型需求,以及使用CaseIterable协议的代码,该协议定义了Self.Element == Self的要求。

新的泛型实现也提高了性能。在某些协议和关联类型的配置下,类型检查时间在 Swift 5.6 中会呈指数增长,但现在在 Swift 5.7 中是线性的。

自动引用计数改进

在 Swift 5.7 中,通过指定新规则以在允许优化时缩短变量的生命周期,ARC 行为更具可预测性、用户友好性和执行性。为了强制执行这些规则,编译器采用了一种新的内部表示来跟踪每个变量的词法范围。这涉及更新现有的优化和实现几个新的优化。现在,依赖于扩展变量生命周期的最常见编程模式是安全的,无需程序员显式使用withExtendedLifetime(),这可以保护你免受仅在优化构建中运行时出现的难以诊断的生命周期错误。它还允许在不破坏现有资源的情况下引入更强大的优化。

Code Completion

 

函数调用参数、变量和全局函数的 Code Completion 现在紧密集成到 Swift 的类型检查器中。这允许 Code Completion 能够在模糊的代码或有错误的代码中提供更准确的结果。

如果在以下示例中的+完成后,Code Completion 现在会报告 int 和 string 与周围的上下文相匹配,允许编辑器将这些结果排在高于array的位置。

func makeIntOrString() -> Int {}
func makeIntOrString() -> String {}

let array = [4, 2]
let int = 42
let string = "Hello World!"
makeIntOrString() +

如果补全以下示例中缺少的参数Code Completion 现在只提示 secondInt 参数标签而省略 secondString。

func add(_ firstInt: Int, secondInt: Int) {}
func add(_ firstString: String, secondString: String) {}
add(1, )

更多详情可查看官方博客。


相關推薦

2024-03-07

Swift 5.10 现已发布,此版本在并发语言模型中实现了完全的数据隔离。公告称,“这一重要的里程碑经过了多年的积极开发,历经多个版本。” 并发模型是在 Swift 5.5 中引入的,包括async/await、actors 和结构化并发 (structured concurre

2022-06-20

tile、Tex 等)或任何其他类型的纯文本。 CotEditor 4.3 正式发布,该版本更新内容如下: 系统要求 macOS 11 及以上版本 新功能 在 Find 窗口中进行增量搜索 改进 大幅提高了大文件上语法高亮的性能,这样就不会出现

2023-06-08

苹果公司在 WWDC23 全球开发者大会上公开了 Swift 编程语言及其生态系统(如SwiftUI )的新特性。 值得注意的是,两者本身同属统一生态下,新特性和改进并不相互独立。 Swift 编程语言 If / let 和 switch 语句作为表达式 可以使用

2022-09-16

Xcode 14.1 发布了首个 Beta 版本。 Xcode 14.1 Beta 包括适用于 iOS 16、iPadOS 16、tvOS 16、watchOS 9 和 macOS Ventura 13 的 Swift 5.7 和 SDK。Xcode 14 版本支持在 iOS 11、tvOS 11、watchOS 4 及更高版本上联机调试 (On-Device Debugging),运行环境要求 macOS Mon

2023-06-08

、watchOS 10 和 macOS Sonoma 在内的新系统。 硬件方面,苹果发布了 15 英寸的 MacBook Air、搭载 M2 Ultra 的 Mac Studio 以及 Mac Pro。此外,苹果还发布了其第一款 AR 眼镜 Apple Vision Pro。 本文对 WWDC23 全球开发者大会的内容作汇总: 苹

2022-10-22

排各种DevOps流程并分发到不同平台执行。 建木v2.5.7现已发布 主要更新:修复若干已知bug fixed: 节点运行时间过长时,容器因超时强制停止 未开启并发执行,且前面流程挂起时,需在流程日志中做相应提示 0s<=执行时长

2022-11-24

ebian GNU/Linux 11 "Bullseye" 系列操作系统,Tails 开发团队近日发布了 Tails 5.7 的正式版本,更新内容如下: 新功能 Metadata Cleaner 新版本添加了 Metadata Cleaner(元数据清理器),这是一个新的工具,用于清理文件中的元数据。 当在

2023-02-18

Vivaldi 5.7 是 Vivaldi 今年发布的第一个版本,该版本为用户提供了跨窗口管理标签和自动标记邮件为已读的功能。 Windows Panel Vivaldi 的 Window Panel 是一项独特的功能。以前,Window Panel 仅在当前窗口中提供打开标签页的树状视图,

2023-02-27

unner、npm 客户端,以及fetch、WebSocket等 Web API。 Bun 最近发布了 0.5.7 版本,主要变化: 支持FormData 引入git依赖 为AbortSignal添加fetch() 改进setTimeout()与 Node.js 的兼容性 bun wiptest变更为bun test,可更美观地打印差异信息 改

2023-02-16

伙伴们加班加点可算是把万众期待的 StoneDB-5.7-V1.0.2 版本发布了,在新版本中,StoneDB 新增了一批常用功能、解决了一批常见Bug,并在用户使用体验上进行了极大地优化,大家可以到我们的 Github Repo 下载我们的安装包哦~ 版

2022-10-02

KPlayer 是什么   kplayer为你提供最小化成本搭建视频推流功能的工具,最优的推流方案OBS或其他软件依赖与xWindow或图形化界面的需要,不适合在服务端与云服务器上进行部署。KPlayer无需依赖图形化界面,您可以使用任意一款

2022-11-16

制大小,帮助开发者编写更小、更好的代码。近日 Emerge 发布了一份报告,显示最新版本的 Xcode 存在会无意中增加应用程序体积的问题。 Xcode 14 于今年 9 月份正式发布,新版本添加了对 Swift 5.7 的支持,并针对 macOS Ventura、iOS/iP

2023-04-01

Swift 5.8 已经正式发布了! 这个版本包括改进开发者体验,改进 Swift 生态中的工具,包括 Swift-DocC、Swift Package Manager 和 SwiftSyntax,完善Windows 支持 等等。 开发者体验 改进的 Result Builder 实现 在 Swift 5.8 中对 Result Builder 的实现进

2022-12-16

这个全新的 Foundation 框架将于 2023 年开源,并在 GitHub 上发布。