Swift 5.8新特性预览:支持函数向后部署
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
属性进行注解:
extension FrameworkAPI {
FrameworkAPIVersion 1.0, *) (
@backDeployed(before: FrameworkAPIVersion 2.0)
public func newCapability(...) -> ResultType { ... }
}
在所提供的示例中,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/
相关阅读:
苹果现已支持 Swift 包索引 (https://www.infoq.cn/article/AHUamwkJ3fqljoliPKHa)
Rust、Go 和 Swift 在性能和并发性方面有何差异?(https://xie.infoq.cn/article/e6e0811181133d4895e2041ac)
Swift 2023:所有权、宏和 C++ 互操作 (https://www.infoq.cn/article/fm6b2sg8QHUrDS6GhK48)
声明:本文为 InfoQ 翻译,未经许可禁止转载。
点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!
从微服务转为单体架构、成本降低 90%,亚马逊内部案例引发轰动!CTO:莫慌,要持开放心态
比Python快35000倍!LLVM&Swift之父宣布全新编程语言Mojo:编程被颠覆了
拼多多回应将总部从中国迁至爱尔兰;微软Bing爆炸级更新,文生图原生支持中文;75岁人工智能教父离职谷歌,痛悔毕生工作| Q资讯
微信扫码关注该文公众号作者