Redian新闻
>
Swift 5.8新特性预览:支持函数向后部署

Swift 5.8新特性预览:支持函数向后部署

公众号新闻

作者 | Sergio De Simone
译者 | 平川
策划 | 丁晓昀

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 {  @available(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资讯

谷歌、OpenAI 都白干,开源才是终极赢家!谷歌内部文件泄露:欲借开源打败 OpenAI

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
德外长:支持马克龙关于欧盟与中国关系立场;泽连斯基回应挪用美4亿美元援助;美国教师扬言“想射杀学生”后仍正常上班 | 每日大新闻5G-Advanced时代,移动终端将迎来哪些新特性?两栋军政大楼被夷为平地!安-124疑似受损,俄军战略轰炸机被迫靠后部署硬核观察 #952 CentOS Stream 没有及时向后移植安全补丁波士顿刚发生过!华女遇人搭讪问路 告知方向后 转头发现自己项链没了对Taylor Swift 转流行后的歌真的无感招募肺癌患者@中山大学肿瘤防治中心及全国31家医院 I HA121-28新型多靶点酪氨酸激酶抑制剂Debian 12 “Bookworm” 的新特性和发布日期 | Linux 中国OpenAI API 功能升级:ChatGPT 支持描述函数调用比亚迪仰望 U8新消息公布:CLTC纯电续航180公里,零百加速最快 3.6 秒台积电张忠谋:支持美国拖慢中国芯片PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容付京波:支持“专精特新”企业成为原始创新的重要发源地乌鹅最新:支持侵略,禽兽不如[腕表] 繁星之下,只拾一颗 Omega x Swatch MoonSwatch孩子好朋友赠票talor swift回国指导阿里拆分和指明方向后 马云开始周游世界:巴基斯坦,孟加拉国和尼泊尔Large函数还可以这样玩?这个90%的人不知道的统计函数也太牛了!ChatGPT升级+降价!增加函数调用能力、支持处理更长上下文...咀外文嚼汉字(214)“高岭之花”OpenAI正式发布GPT-4:支持图像和文本的输入、 处理中文的准确度大幅提升Ubuntu 23.04新特性一览北京市委书记尹力:支持北交所做大做强,推动更多优质企业上市融资蘋果花!Ubuntu衍生版新星:支持Flatpak、不支持Snap塞尔达工业革命卷到数字电路了!网友:怕不是要在Switch里造Switch批判凯恩斯主义的卢卡斯走了,他的理性预期理论留下了哪些启示?让部署更快更安全,GitHub 无密码部署现已上线艾客素杜斯Docker+Wasm第2个技术预览版发布,新增3个运行时引擎支持Docker Desktop 4.18 发布,带来了大量新特性【糗事,笑话】童言童语,吓死人的惊语!基于 SpringBoot 实现多租户架构:支持应用多租户部署和管理“正式交流中不得使用英语”!这个欧洲大国拟立法,违者可罚10万欧元!该国总理:支持苹果现已支持 Swift 包索引苹果推出 SwiftData,可替代 SwiftUI 的 Core Data霉霉(Taylor Swift)全球巡演第一站演唱会服装,她把演唱会变成了个人秀场!《白内障手术》究竟能卖多少钱
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。