Swift 6.4 正式发布:内置 Subprocess 1.0、增强跨语言互操作、Wasm 性能大幅提升及更多更新

文章来源声明: 来源站点:InfoQ 中文; 原文链接:https://www.infoq.cn/article/zl0e1sUoD95YJfboNz2a?utm_source=rss&utm_medium=article; 本文基于上述来源整理/加工,觅优补充点评,仅供技术学习交流。版权归原作者所有。
觅优短评

Wasm 提速与 Subprocess 稳定落地最值得关注;并发与互操作改进能明显降低升级成本,适合准备迁移 Swift 6 的 iOS/macOS 与跨平台团队参考。

- 2026-09-28北京 - 本文字数:1346 字
阅读完需:约 4 分钟
Swift 6.4 聚焦性能、互操作性与并发简化:Wasm 执行提速达 40 倍,扩展不可复制值支持;增强 C++20/Java 互操作;新增 Subprocess 库及多项语法糖与诊断控制机制。

提升 Wasm 性能与跨语言调用能力;简化并发模型使用门槛;提供更精细的符号消歧与编译诊断控制。

适合 Swift 开发者、跨平台工具链工程师、关注并发安全的 iOS/macOS 系统架构师阅读。

![](https://static001.infoq.cn/resource/image/79/0f/79e0d6805068a04cf970a43323d0570f.jpg?x-oss-process=image/resize,w_726)
[Swift 的最新版本 Swift 6.4](https://www.swift.org/blog/swift-6.4-released/) 带来了一系列语言和工具链改进:通过扩展对不可复制值的支持提升性能,生成的 Wasm 代码最高提速 40 倍,增强了与 C++20、Java 的互操作性,还新增 Subprocess 库,提供跨平台 API,用于启动外部进程并与其交互。

新版本对 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 协议。

下面的代码片段展示了如何声明借用访问器和修改访问器:

``` struct RigidWrapper: ~Copyable { `````` var _element: Element `````` var element: Element { `````` borrow { `````` return _element `````` } `````` mutate { `````` return &_element `````` } `````` } `````` } ```
复制代码
在 IDE 方面,Swift 6.4 在模块调试方面提供了更强大的支持,并通过在所有受支持平台上使用 [Swift Build](https://swiftpackageindex.com/swiftlang/swift-build) 作为默认构建系统实现了统一的构建工具链。说到调试,Hacker News 用户 boxed [表达了许多开发者的心声](https://news.ycombinator.com/item?id=49714509):

我真的希望调试器的改进能够实实在在感受到。我在调试器里停下来却看不到想查看的变量,这种情况已经多得数不清了。

Subprocess 包现已稳定,提供跨平台 API,用于启动外部子进程和交互。下面的代码片段演示了如何启动进程并捕获输出:

``` let result = try await Subprocess.run( `````` .name("ls"), `````` arguments: ["-la"], `````` output: .string(limit: 4096) `````` ) `````` print(result.standardOutput) ```
复制代码
Swift 6.4 还改进了 Swift 与所有受支持语言的互操作性。新的 `@c` 和 `@implementation` 属性允许你直接在 Swift 中提供 C 头文件的实现,而无需单独的 C 声明。Swift 6.4 在 `Span` 与 C++20 的 `std::span` 之间实现透明桥接,并以多种方式扩展了与 Java 的互操作性。最后,通过 JavaScriptKit 实现的 Wasm 桥接速度比动态桥接快 40 倍。

Swift 6.4 包含的更新远不止本文所介绍的这些,完整细节请查阅官方发布公告。

查看英文原文:https://www.infoq.com/news/2026/09/swift-6-4-released/