开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

Swift 6 正式可用

  • 2024-10-31
    北京
  • 本文字数:1517 字

    阅读完需:约 5 分钟

大小:691.71K时长:03:56
Swift 6 正式可用

Swift 团队正式宣发了 Swift 6,该版本是苹果开源语言的一个全新版本,重点关注底层和嵌入式编程、并发代码安全、新的开平台 API,以及对 Linux 和 Windows 的扩展支持。

 

InfoQ 已有多篇关于 Swift 6 中新功能的文章,其中包括用于解决嵌入式设备和内核级代码中特定限制的嵌入式 Swift 编译模式、全新跨平台测试框架 Swift Testing,以及可帮助开发人员创建无数据竞争的并发程序的无数据竞争的安全模式(这是要归功于一款新的编译时静态检测器)。

 

Swift 6 中其他的主要新功能还包括类型化抛出、泛式内存所有权扩展、128 位整数支持,以及扩展的 C++ 互操作性。类型化抛出可以将函数抛出的错误类型作为其签名的一部分指定,也就是说开发者可以从之前的不声明泛型的抛出子句:

func parseRecord(from string: String) throws -> Record {   // ... }
复制代码

到现在的明确声明错误类型,从而带来额外的简化:在开发者用 do...try...catch 代码块封装这类函数的调用时,错误类型就可以在编译时已知:

func parseRecord(from string: String) throws(ParseError) -> Record {   // ... }

// call site:do { let record = try parseRecord(from: myString)} catch { // 'error' has type 'ParseError'}
复制代码

有趣的是,所有 Swift 6 的函数本质都有一个类型化的抛出签名。换句话说,带有非类型化的 throws函数其实就是抛出 Any Error 的函数,而非类型的 throws 等同于 throws(any Error)。需要注意的是,这一功能并非是要取代所有的非类型化抛出

 

在会同时转发抛出错误的客户端通用代码,或是无法分配内存的资源受限的环境中(如嵌入式 Swift 代码),这一功能非常有用。

 

事实上,根据 evolution 提案作者的说法 ,“对大多数 Swift 代码来说,现在的(无类型)抛出仍然是更优的默认错误处理机制”。

 

新的内存所有权模型已在 Swift 5.9 中引入,并在 Swift 6 中通过对泛型“move only”类型的扩展支持将其进一步巩固。所有权的概念是指通过函数让特定一段代码负责某个变量的最终销毁。在 Swift 5.9 之前, Swift 的内存模型是不像 Objective-C 这类通过手动引用计数对开发者公开的,反而是编码成一套规则,这种在一般情况下效果还不错,但却很难通过默认的引用计数算法控制变量的销毁。

 

简单来说,Swift 5.9 中的内存所有权模型是基于借用(borrowing)和消耗(consuming)的概念,允许 z 对初始化程序和函数处理接收到的参数所有权的方式自定义,从而改变了 Swift 中默认的初始化程序拥有所有权(进而消耗),函数没有所有权(因此只能借用)。这套模型中的重要组成部分是由“不可复制(non copyable)”协议体现的,该协议适用于值始终具有唯一所有权且不可复制的类型,也就是“move only”类型。Swift 5.9 中协议的实现是无法用于泛型、协议或存在类型的,但 Swift 6 弥补了这片空白。泛型 ~Copyable 的更多细节部分不在本文的探讨范围内,请移步 Swift Evolution 提案。

 

说起 ~Copyable 协议,Swift 6 利用该协议将 C++ 的互操作扩展到 move-only 类型。一个 C++ 类如果没有复制构造函数,Swift 会假设它是 ~Copyable 的,也可以通过 SWIFT_NONCOPYABLE 注解显式忽略已有的复制构造函数。此外,Swift 现在也支持虚拟方法、默认参数和更多的标准库类型(如 std::mapstd::optional)。

 

再说平台支持,Swift 6 现在可用于更多的 Linux 发行版 Amazon Linux、Debian、Fedora、Red Ha、Ubuntu,以及 Windows x86_64 和 arm64 体系结构。在 Linux 上,Swift 6 SDK 支持构建没有外部依赖、完全静态链接的可执行文件,并可从其他 Linux 平台交叉编译。

 

Swift 6 中的内容远不止这些,请参见官方发布的全部详细信息。

 

原文链接:

Swift 6 Officially Available

2024-10-31 09:448335

评论

发布
暂无评论
发现更多内容

全面升级!Apache HugeGraph 1.2.0版本发布

百度安全

【第七在线】数字化转型:智能商品计划管理的核心要素

第七在线

苹果电脑mac上好用10款系统优化软件

南屿

苹果mac系统优化 Mac卸载软件

Mac母带制作工具Steinberg WaveLab 12 Pro下载安装

南屿

Steinberg 母带处理软件 WaveLab 12

Python 变量?对象?引用?赋值?一个例子解释清楚

EquatorCoco

Python 前端 变量 对象 开发语言

聚道云软件连接器1月新增应用/产品更新合集

聚道云软件连接器

功能更新

软件测试学习笔记丨Flask定义接口路由和视图函数

测试人

软件测试

百度安全入选2023年移动互联网APP产品安全漏洞治理十大优秀案例

百度安全

利用 Token Explorer 信号驾驭市场波动

Footprint Analytics

区块链 加密货币 Token 代币

“研学测”好帮手,三步带你安装体验TDH社区开发版

星环科技

大数据 信创 科技 大模型

软件测试学习笔记丨性能测试体系

测试人

软件测试

10个问题,教你如何使用一个事半功倍的代码托管平台

华为云PaaS服务小智

华为云 代码托管

国内首个图计算标准发布,悦数图数据库通过测试

悦数图数据库

图谱

软件测试学习笔记丨Grafana安装

测试人

软件测试

指标平台详解(下):第三代指标平台实现了哪些突破?

Aloudata

BI ETL 指标中台; 指标中台

实现钉钉与宁波银行对接,助力企业实现财务智能化

聚道云软件连接器

案例分享

亚马逊云科技在中国推出数字孪生服务Amazon IoT TwinMaker

财见

一分钟了解Wireshark的数据包

小齐写代码

星环科技基于第五代英特尔®至强®可扩展处理器的分布式向量数据库解决方案重磅发布

星环科技

大数据 信创 科技 大模型

数据中心AIOps智能运维标杆 浪潮信息InManage全新升级

财见

2024年前端会流行什么技术和框架了?

互联网工科生

软件开发 低代码 前端框架 JNPF

第三届“新科技 星力量” 科技实践案例评选【获奖名单】揭晓

星环科技

大数据 科技 大模型 获奖

探索技术的无限可能-云原生计算2023年度奖项

字节跳动云原生计算

大数据 云原生

技术解读 | KunDB助力头部金融机构关键系统的Oracle国产替代

星环科技

oracle 大数据 科技 大模型

产品解读 | 新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技

大数据 信创 科技 大模型

JetBrains软件怎么设置中文,jetbrains全家桶汉化教程

南屿

编程开发 jetbrains rider破解版 JetBrains全家桶

程序员手把手教你参与开源!拿捏!

快乐非自愿限量之名

开源 程序员 面试

Footprint 的卓越资金流数据揭示加密货币的神秘叙事

Footprint Analytics

区块链 数据分析 加密货币

AppLink让你的电商运营财务管理自动化

RestCloud

零代码 APPlink 自动化集成

(保姆级)服务器-Zabbix6.0使用Python脚本实现带图片的邮箱的报警

不在线第一只蜗牛

Python 运维 服务器

Swift 6 正式可用_Android/iOS_Sergio De Simone_InfoQ精选文章