· via Hacker News – Front Page (hnrss.org)
Swift 6.4 lands with unified builds, Subprocess 1.0 and up to 40x faster Wasm bridging
Swift 6.4 makes Swift Build the default in Swift Package Manager, ships Subprocess 1.0, bridges Span with C++20 std::span and speeds up WebAssembly bridging by up to 40 times.
Swift 6.4 shipped on September 15, 2026. According to the Swift.org release post, the version pushes the language further toward working at every layer — apps, servers, systems code, embedded devices and the browser — while trimming friction from day-to-day programming.
A unified build system
The most consequential tooling change is that Swift Package Manager now uses Swift Build as its default build platform, so packages build the same way on Linux, macOS and Windows. SwiftPM also gained Software Bill of Materials generation (SE-0509), producing documents in either SPDX or CycloneDX format.
Debugging work that spanned multiple releases is now complete: the compiler tracks Swift modules in debug info precisely, and LLDB imports modules through dependency tracking instead of ambiguous by-name lookups. Because binary Swift modules are no longer embedded, debug builds on Linux and Windows, and dSYM bundles on Darwin, shrink noticeably.
The VS Code extension is now published on the Open VSX Registry, making it usable in Cursor, Antigravity, Kiro and other editors, and it integrates with Swiftly for switching between toolchain versions.
Everyday language improvements
Several accepted proposals target ergonomics. Optional some and any types no longer need parentheses, so (some Rocket)? becomes some Rocket? (SE-0521). A new @diagnose attribute controls compiler warnings directly in source, suppressing them or promoting them to errors (SE-0522). Module selectors using :: disambiguate clashing API names when two imported modules both define, say, a type called CommonThing (SE-0491). Asynchronous code inside a defer block is now awaited and runs to completion before the block exits (SE-0493), and withTaskCancellationShield protects cleanup closures from the enclosing task's cancellation (SE-0504) — the two combine so cleanup happens no matter how a function returns.
Foundation and the standard library moved forward as well: ProgressManager gained async/await support (SF-0023), @Observable types now emit fine-grained, continuous change notifications (SE-0506), and new array types can hold non-copyable elements without copy-on-write overhead. A new Iterable protocol iterates collections without making copies.
Subprocess reaches 1.0
The Subprocess library, first proposed as SF-0007 and released at version 0.1 in 2025, has reached 1.0. It offers a stable, cross-platform way to run and interact with other programs — from command-line tools to streaming processes — built on Swift concurrency from the ground up.
Interoperability across the stack
Interop is where 6.4 spreads widest:
- C: pairing
@cwith@implementationlets a Swift function provide the implementation for a C header with no separate C declaration, and@cfunctions can receive safe wrappers, such asSpanreplacing a raw pointer-and-count pair. - C++: Swift's
Spannow bridges directly with C++20'sstd::spanin both directions, removing hand-written conversion code at the boundary. - Java: the Swift/Java interop project, which allows calling Swift from Java and Kotlin, extends async and throwing calls to protocol and callback wrappers, maps closures to
Runnableautomatically, and imports variadic parameters and record types. - WebAssembly: JavaScriptKit bridging is up to 40 times faster than earlier dynamic bridging, and the Wasm SDK is available directly from Swift.org's install page, so compiling for the browser needs no extra setup. Foundation's
FileManagersupport improved on WASI. - Android: the Swift SDK for Android is built with the new LTS NDK 30, which provides Android availability attributes in the Swift runtime libraries and for developers' own code.
Embedded Swift also grows more capable, adding support for existential types and richer error handling on microcontroller-class targets.
Testing, documentation and IDE support
Migrating to Swift Testing gets easier: XCTAssert can now be used inside Swift Testing tests and #expect inside XCTest (ST-0021). The CustomTestReflectable protocol customizes the values shown in failed expectations (ST-0022), swift test can repeat test cases to focus runs (ST-0024), and attachments conforming to Transferable can be recorded on Apple platforms (ST-0023). Swift also now has a documentation site, with the standard library's documentation open sourced.
Why it matters
Swift 6.4 continues the project's shift from an Apple-ecosystem language toward a general-purpose one. A single build system across three operating systems lowers the barrier for server-side Swift; Subprocess 1.0 closes a long-standing gap for cross-platform tooling; and direct Span/std::span bridging plus maturing Java and Android interop make Swift easier to adopt inside existing C++ and JVM codebases. Faster Wasm bridging and stronger Embedded Swift open deployment targets — browsers and microcontrollers — that few mainstream languages serve well, all while preserving memory safety. For teams already invested in Swift, the ergonomics and performance work reduces everyday friction without a breaking transition.
- #swift
- #programming-languages
- #webassembly
- #build-tools
- #interoperability