Swift 6.4 正式发布,带来语言与工具链的一系列改进。新版本通过扩展对不可复制值的支持提升性能,生成的 Wasm 代码最高提速 40 倍,并增强了与 C++20、Java 的互操作性。同时新增 Subprocess 库,提供跨平台 API,用于启动外部进程并与其交互。
在语法层面,Swift 6.4 让代码更简洁。现在可用 AType? 替代 (some AType)? 或 (any AType)?;新增 @diagnose 属性控制编译器诊断信息与警告;可用 模块名:: 消除从不同模块导入的同名符号歧义。并发代码方面,语句直接支持关键字,无需再将异步调用包装在单独的 Task 中,并引入 withTaskCancellationShield 临时保护任务不被取消,保证关键清理代码执行完毕。
Swift 6.4 还新增 UniqueArray、UniqueBox、Ref/MutableRef、Iterable 等类型和协议,减少常用数组操作中不必要的拷贝和内存分配。其中 UniqueBox 是不带引用计数的智能指针,独占堆上分配的值并强制遵循不可复制语义;UniqueArray 避开普通数组的写时复制内存分配,提供可高效扩容的动态缓冲区。此外,借用与修改访问器支持通过属性读取或修改 Span、InlineArray,不可复制类型也可遵循 Equatable、Comparable、Hashable 协议。
在 IDE 方面,Swift 6.4 在模块调试上提供更强支持,并在所有受支持平台使用 Swift Build 作为默认构建系统,实现统一构建工具链。互操作性方面,新的 @c 和 @implementation 属性允许直接在 Swift 中提供 C 头文件实现,无需单独的 C 声明;Span 与 C++20 的 std::span 之间实现透明桥接,与 Java 的互操作性也以多种方式扩展。通过 JavaScriptKit 实现的 Wasm 桥接速度比动态桥接快 40 倍。