分享到: 分享到QQ  分享到Twitter

作者: 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

 

改进 runtime 性能

 

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 个反馈报告。特别是以下情况的自动缩进得到了很大改进:

  • 涉及闭包的链式方法调用

  • 调用跨越多行的参数和集合元素

  • 多行的ifguardwhile条件

 

代码补全

 

  • 与 Swift 5.2 相比,现在在函数体内重复执行代码补全调用的速度提升了 15 倍。这是通过在同一文件中重用先前完成的一些计算来实现的。这些优化将在 Xcode 和 SourceKit-LSP 中均可用

  • Swift 代码补全现在支持用户定义的 nominal 类型的可调用值 (SE-0253)。代码补全显示了在基本表达式后加上圆括号后的调用签名

 

优化构建时间

 

Swift 5.3 进一步优化了代码补全性能和质量:

  • 通过避免跨源文件的重复编译工作,并更准确地标识与以前的构建相比未更改的代码,从而缩短增量构建时间

  • 通过修复编译器的行为对声明顺序或嵌套敏感的多种情况,提高了正确性

  • 使用从另一个库导入的具有大量属性和函数的类型的代码,可以更快地进行编译

 

此外还有关于调试、Swift 包管理以及编译器诊断方面的更新,详情查看 发布公告

年度最有价值文章

季度最有价值文章

月度最有价值文章

投票统计

是否原创: 0 %

0 % Complete (success)

是否有价值: 0 %

0% Complete

是否有素质: 0 %

0% Complete (warning)

是否合法: 0 %

0% Complete

   群组工具

   外部链接