deniz.in

Markets

Weather

Loading weather

· 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 lands with unified builds, Subprocess 1.0 and up to 40x faster Wasm bridging

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 @c with @implementation lets a Swift function provide the implementation for a C header with no separate C declaration, and @c functions can receive safe wrappers, such as Span replacing a raw pointer-and-count pair.
  • C++: Swift's Span now bridges directly with C++20's std::span in 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 Runnable automatically, 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 FileManager support 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

Related posts