Swift的最新版本支持即将到来的新特性,让开发人员可以开始使用将在 Swift 6 中变成稳定版本的特性。此外,它还提供了一种方法,让开发人员可以在早期操作系统中使用新功能。
Swift 5.8 之所以支持即将到来的语言特性,主要是为了让开发人员可以开始为程序迁移做准备。Swift 团队成员 Alexander Sandberg 说,考虑到 Swift 6 的许多特性造成了某种程度的源代码不兼容,这一点尤其重要。此外,支持新特性还可以帮助苹果收集早期用户的反馈。
新的编译器标志-enable- coming-feature X
可以控制是否启用对即将到来的特性的支持,其中X
是要启用的特性。目前,在 Swift 5.8 中,有 4 个即将到来的特性可以选择性地启用:简略魔法文件名、尾随闭包前向扫描匹配、存在类型any,以及正则表达式字面量。
在使用即将到来的特性之前,可以使用新增的#if
检查确保它确实可用:#if hasFeature(ImplicitOpenExistentials)
。需要的时候,可以将它与compiler(>=x.y)
检查一起使用。
Swift 5.8 还引入了对@backDeployed
属性的支持,目的是为了方便开发人员将新功能向后移植到框架的旧版本。例如,可以通过扩展添加新功能,并使用众所周知的@available
和新增的@backDeployed
属性进行注解:
在所提供的示例中,newCapability
函数仅在FrameworkAPI
的 2.0 版本中有原生支持,但是使用@backDeployed
属性,开发人员可以提供该功能的实现,并注入到框架的先前版本中。
这个新特性旨在方便开发人员创建弹性库,并且只能应用于函数、方法、下标和计算属性。例如,这种机制不支持新类型。此外,向后部署的函数体必须遵守与@inlinable
函数相同的限制,例如,它们只能引用客户端可访问的声明,如public
和@usableFromInline
声明。
Swift 5.8 带来的另一项重大变化修改结果构建器实现,改进了它的编译时性能、代码补全结果和诊断。具体来说,新实现利用了 Swift 5.7 的扩展多语句闭包推断,优化了编译器类型推断和错误消息。特别是,它移除了在结果构建器中声明局部变量的几个限制,例如需要有初始化器,而且没有提供对计算变量、观察器和属性封装器的支持。
Swift 5.8 还带来了很多变化,要了解完整细节,请查阅官方公告。
原文链接:
https://www.infoq.com/news/2023/04/swift-5-8-released/
相关阅读:
评论