Swift 6.4 正式发布:内置 Subprocess 1.0、增强跨语言互操作、Wasm 性能大幅提升及更多更新
阅读完需:约 4 分钟
提升 Wasm 性能与跨语言调用能力;简化并发模型使用门槛;提供更精细的符号消歧与编译诊断控制。
适合 Swift 开发者、跨平台工具链工程师、关注并发安全的 iOS/macOS 系统架构师阅读。
新版本对 Swift 语法进行了扩展,让代码更简洁清晰。例如,现在可以用 AType? 替代 (some AType)? 或 (any AType)?;新增 @diagnose 属性,用来控制编译器诊断信息和警告;可以用 模块名:: 来消除从不同模块导入的同名符号歧义,写法为 AModuleName::。
在并发代码方面,语句现在直接支持 关键字,无需再将异步调用包装在单独的 Task 中。Swift 6.4 还引入了 withTaskCancellationShield,它可以临时保护任务不被取消,保证关键清理代码即使在任务被取消后也能执行完毕。Swift 并发专家 Antoine van der Lee(一位知名 Swift 博客作者)指出:
Swift 6.4 为 Swift 并发带来了多项实用改进……如果你正在把代码库迁移到 Swift 6,这些更新值得了解一下。不是每一项特性都会改变你日常写代码的方式,但放在一起,它们可以降低采用严格并发模型的阻力。
Swift 6.4 通过新增类型和协议(包括 UniqueArray、UniqueBox、Ref/MutableRef、Iterable)来减少常用数组操作中不必要的拷贝和内存分配。 是不带引用计数的智能指针,独占堆上分配的值,并强制遵循不可复制语义。 避开普通数组的写时复制内存分配,提供可高效扩容的动态缓冲区。 协议支持借用语义遍历元素,避免不必要拷贝。
其他和借用相关的改动包括:新增 和 类型,作为一等可存储容器,用来借用或修改单个值;借用与修改访问器支持通过属性读取或修改 Span、InlineArray;支持不可复制类型遵循 Equatable、Comparable、Hashable 协议。
下面的代码片段展示了如何声明借用访问器和修改访问器:
我真的希望调试器的改进能够实实在在感受到。我在调试器里停下来却看不到想查看的变量,这种情况已经多得数不清了。
Subprocess 包现已稳定,提供跨平台 API,用于启动外部子进程和交互。下面的代码片段演示了如何启动进程并捕获输出:
Swift 6.4 包含的更新远不止本文所介绍的这些,完整细节请查阅官方发布公告。
查看英文原文:https://www.infoq.com/news/2026/09/swift-6-4-released/
Wasm 提速与 Subprocess 稳定落地最值得关注;并发与互操作改进能明显降低升级成本,适合准备迁移 Swift 6 的 iOS/macOS 与跨平台团队参考。