作者: BigLoser 访问次数: 679 创建时间: 2020-09-24 08:39:04 更新时间: 2024-05-05 20:24:53
Swift 5.3 稳定版已于上周正式发布,此版本继续专注于语言改进、提升开发者体验以及扩展 Swift 生态系统,以让 Swift 适用于更多场景。Amy Tsai 手绘的素描笔记介绍了 Swift 5.3 主要新特性:
Swift 5.3 带来了许多语言方面的改进,从而改善了编写 Swift 代码的体验。这些更新通过减少样板代码和冗余代码,并在可能使用的库中定义更多功能来帮助开发者成为更有生产力的 Swift 程序员。
Swift Evolution 流程中的提案在 Swift 5.3 中得以实现:
SE-0263 - Add a String
Initializer with Access to Uninitialized Storage
SE-0266 - Synthesized Comparable
conformance for enum
types
SE-0267 - where
clauses on contextually generic declarations
SE-0268 - Refine didSet
Semantics
SE-0269 - Increase availability of implicit self
in @escaping
closures when reference cycles are unlikely to occur
SE-0276 - Multi-Pattern Catch Clauses
SE-0277 - Float16
SE-0279 - Multiple Trailing Closures
SE-0280 - Enum cases as protocol witnesses
SE-0281 - @main
: Type-Based Program Entry Points
SE-0282 - Clarify the Swift memory consistency model ⚛︎
SE-0285 - Ease the transition to concise magic file strings
SE-0286 - Forward-scan matching for trailing closures
Swift 5.3 还修复了几个编译器限制的问题:
SR-75 - Unapplied references to protocol requirements are now supported
SR-7083 - lazy
properties can define didSet
and willSet
accessors
SR-8814 - Generic classes can use default implementations of protocol requirements when conforming to protocols with associated types
Swift 5.3 显著改善了二进制代码大小和 runtime 内存使用情况,这些改进也在多个项目中得到了验证:
从 Swift 4 开始,Apple 的 Swift 团队一直通过 iOS 附带的 UIKit 应用(用 Objective-C 编写)来测量 Swift 重写的二进制代码大小。Swift 4 的代码量约为 Objective-C 版本的 2.3 倍,到了 Swift 5.3 下降到 1.5 倍以下
基于 SwiftUI 的开源应用 MovieSwiftUI,与 Swift 5.1 相比,使用 Swift 5.3 重写的应用逻辑代码量减少了 40% 以上
在创建包含 400 个模型对象的数组的测试应用程序中,由于 runtime 开销而导致的堆内存比 Swift 5.1中使用的堆内存少 2/3
此版本全面修订了 SourceKit 中的自动缩进实现,在此过程中修复了约 50 个反馈报告。特别是以下情况的自动缩进得到了很大改进:
涉及闭包的链式方法调用
调用跨越多行的参数和集合元素
多行的if
,guard
和while
条件
与 Swift 5.2 相比,现在在函数体内重复执行代码补全调用的速度提升了 15 倍。这是通过在同一文件中重用先前完成的一些计算来实现的。这些优化将在 Xcode 和 SourceKit-LSP 中均可用
Swift 代码补全现在支持用户定义的 nominal 类型的可调用值 (SE-0253)。代码补全显示了在基本表达式后加上圆括号后的调用签名
Swift 5.3 进一步优化了代码补全性能和质量:
通过避免跨源文件的重复编译工作,并更准确地标识与以前的构建相比未更改的代码,从而缩短增量构建时间
通过修复编译器的行为对声明顺序或嵌套敏感的多种情况,提高了正确性
使用从另一个库导入的具有大量属性和函数的类型的代码,可以更快地进行编译
此外还有关于调试、Swift 包管理以及编译器诊断方面的更新,详情查看 发布公告。
语言: zh-CN
翻译人员:
原作者:
转载地址:
源网址: https://www.oschina.net/news/118811/swift-5-3-released
版权: 本站所有内容, 版权归原作者所有。发表原创内容将会获得现金奖励, 并且随着时间倍数增长, 请了解我们的内容奖励计划。