2026年9月15日,Swift 6.4 正式发布。Swift 希望从应用、服务器到系统代码、嵌入式设备和浏览器都能胜任。此版本深化相关支持,让日常代码更易编写。亮点包括:Swift 构建系统(Swift Build)成为包管理器(Swift Package Manager)的默认选项,让项目在 Linux、macOS 和 Windows 上构建方式一致;子进程库(Subprocess)达到 1.0;互操作性进一步扩展,Span 与 C++20 的 std::span 直接桥接。
正文
2026年9月15日


Swift 6.4 现已发布。Swift 旨在成为从应用、服务器到系统代码、嵌入式设备和浏览器的全栈优选语言。本版本深化了这种支持,并让日常代码更易编写。重点包括:
- Swift Package Manager 现默认使用 Swift Build,使项目在 Linux、macOS 和 Windows 上构建方式一致。
- Subprocess 达到 1.0,提供稳定跨平台方式从 Swift 运行并交互其他程序。
- 互操作性进一步扩展:Swift 的 Span 直接桥接 C++20 的 std::span,Swift/Java 互操作增强了异步和回调支持。
- Swift 在浏览器中运行更快:通过 JavaScriptKit 桥接 WebAssembly 速度提升至最多 40 倍,且 Wasm SDK 可直接从 Swift.org 获取。
- Embedded Swift 能力增强,支持存在类型和更丰富的错误处理,面向微控制器级目标。
- 性能提升且保持内存安全:新增可容纳不可复制元素的数组类型而无需写时复制开销,以及无需复制即可迭代的新 Iterable 协议。
更多变更详见 Swift Evolution 仪表盘。
更简单清晰的代码
Swift 6.4 简化了日常编程,使代码更简单清晰。
- 更自然的可选 some 和 any 类型:写可选 some 或 any 类型时不再需用括号包裹,如直接写
some Rocket?而非(some Rocket)?(SE-0521)。 - 源码级控制编译器警告:可用新
@diagnose属性在代码中定义警告行为,如抑制或提升为错误(SE-0522)。 - 多库冲突时明确 API:用模块选择器
::指定所用模块,例如两个模块都提供CommonThing类型时可明确选择(SE-0491)。 - 在 defer 块中调用异步函数:defer 中的异步代码会被等待并完成后再退出(SE-0493)。
- 确保必要清理不被取消:通过
withTaskCancellationShieldAPI 运行免受外围任务取消影响的闭包(SE-0504)。
可结合 defer 异步与取消屏蔽,确保清理始终执行,例如文件处理函数在 defer 中通过屏蔽闭包调用 flushMetrics 网络请求并关闭句柄,不受取消干扰。
Foundation 和标准库改进便于现代 API 用于现有类型,如 ProgressManager 增加 async/await 支持(SF-0023),@Observable 类型现具备细粒度连续变更通知(SE-0506)。
Subprocess 库已达 1.0,提供基于 Swift 并发的跨平台子进程运行交互包。例如运行 ls -la 并捕获字符串输出。
Swift 6.4 便于迁移现有项目至 Swift Testing:可在 Swift Testing 测试中安全使用 XCTAssert,或在 XCTest 中用 #expect(ST-0021),用 CustomTestReflectable 协议自定义失败期望显示值(ST-0022)。swift test 支持重复测试用例(ST-0024)及在 Apple 平台记录符合 Transferable 的附件(ST-0023)。
Swift 现拥有文档站点,标准库文档内容已开源。
工具改进包括:
- 更健壮调试:编译器追踪调试信息中 Swift 模块的方式完成重构,LLDB 通过精确依赖追踪导入模块,Linux/Windows 调试构建及 Darwin dSYM 体积显著缩小。
- 跨 IDE 统一构建系统:SwiftPM 默认用 Swift Build,并包含软件物料清单(SBOM)生成,支持 SPDX 或 CycloneDX 格式(SE-0509)。
- 更广泛 IDE 支持:VS Code 的 Swift 扩展现登陆 Open VSX Registry,可用于 Cursor 等工具,并集成 Swiftly 选择工具链版本。
更深互操作与平台支持
Swift 互操作扩展到更多层面:从系统级 C++ 到 Android 的 Java 运行时,从浏览器 Wasm 到微控制器 Embedded Swift。
语言互操作深化:
- C:用
@c配@implementation以 Swift 函数实现 C 头文件,无需单独 C 声明;@c函数可获安全包装,如用 Span 替代指针加计数。 - C++:桥接 C++20
std::span与 SwiftSpan,无需手动转换即可互传。 - Java:Swift/Java 互操作项目扩展对异步和抛出函数的协议与回调包装支持,新增闭包自动映射 Runnable、变参导入和 Java record 类型支持。
平台支持深化:JavaScriptKit 桥接 Wasm 性能提升,安全桥接快至 40 倍;Wasm SDK 可从 Swift.org 安装页获取,编译浏览器 Swift 无需额外配置。Foundation 改进了 WASI 上的 FileManager 支持。
安卓
Android 上的 Swift 持续进步。本版 Android SDK 基于新 LTS NDK 30 构建,提供 Android 可用性属性;Swift Build 现支持 SwiftPM 中的 Android,无需安装后脚本。此前文章涵盖了 Embedded Swift 的其他改进,包括存在类型(如 any Protocol)的普遍支持,可自然表达异构集合及抛出捕获错误。Embedded Swift 新增 EmbeddedRestrictions 警告,可在整个目标启用,例如在 Package.swift 的 target 设置中将此警告视为 warning。
Swift 6.4 更易避免不必要数据复制且保持内存安全:
- 无需复制即可操作内存中值:借用和变更访问器允许通过属性读写 Span 或 InlineArray(SE-0507);不可复制类型现可遵循 Equatable 等;新 Ref 和 MutableRef 类型提供可存储容器(SE-0519);不可复制类型的可选值行为一致,可检查更新而不消耗(SE-0532)。
- 构建集合与堆分配值免不必要分配:UniqueBox 提供独占堆值智能指针无引用计数(SE-0517);UniqueArray 存不可复制元素无写时复制分配(SE-0527);Iterable 协议借用以循环元素免复制(SE-0516)。
- 安全访问原始内存:withTemporaryAllocation 提供自动初始化清理的临时缓冲(SE-0524);RawSpan 新安全加载 API 替代不安全函数(SE-0525)。
Swift 6.4 凝聚社区众多贡献。欲参与可前往 Swift 论坛。今日可按安装页指引尝试 Swift 6.4,或用 Swiftly 下载新工具链。
评论
社区普遍赞赏 Swift 新版本的扎实改进与跨平台愿景,少数人遗憾其苹果出身或困惑于 AI 时代学习编程的必要性。
赞赏语言设计与稳健发布
- Swift 语法优美、构思严谨,本轮在类型检查、内存安全与调试上的进步获好评(较多人) > 很高兴看到 Swift 进步,它是门优美且思虑周全的语言(@bnchrch)
跨平台仍受制于 SwiftUI 与标准库
- 团队对非苹果平台投入令人印象深,但核心框架缺位,尤其 SwiftUI 无跨平台实现前应用开发难成主流(较多人) > 除非有真正的跨平台 SwiftUI,否则应用编程里 Swift 只是新奇玩意(@airstrafer)
子进程与命令行工具成亮点
- 官方 Subprocess 1.0 结合安全与提前编译,减少 shell 脚本负担,被命令行爱好者推崇(较多人) > 写过太多 shell 封装,期待官方子进程助手(@elpakal)
看好 WebAssembly 与嵌入式延伸
- Swift 已悄无声息支持 WebAssembly 和嵌入式,虽小众但高级语言特性具吸引力(少数人) > 未察觉 Swift 在 WebAssembly 已如此成熟,比 Rust 更顺手(@afavour)
遗憾苹果绑定及学代码动力受挫
- 部分人认为若脱离苹果生态语言会更佳;另有资深程序员因 AI 代写浪潮对自学价值产生怀疑(少数人) > 可惜 Swift 不得不成为苹果的语言,它其实做得极好(@Ta_Panters)
有价值的补充
- Swift 与 Rust、Zig 形成友好竞争,已引入借用检查、arena 等系统级特性,语言边界模糊化(@tancop)。
- 有开发者用 Swift 构建社交应用后端,在 Vapor 与 Hummingbird 间切换,显示服务端生态在生长(@busymom0)。
- 通过 Subprocess 示例可见 Swift 正探索结构化数据传递,暗合 PowerShell 哲学,减少文本解析(@adamnemecek)。