# Swift 6.4 ships async defer and makes Swift Build default

URL: https://techaiwire.com/articles/swift-6-4-async-defer-swift-build-default/

_By Tech AI Wire Team - Sep 15, 2026_

**By the numbers:**

- 40x - faster WebAssembly bridging through JavaScriptKit
- 3 - platforms where Swift Build is now the package manager default
- NDK 30 - the Android toolchain Swift Build now supports

Swift 6.4 was released on September 15, 2026, one day after Apple shipped [Xcode 27 alongside iOS 27](/articles/ios-27-macos-27-golden-gate-release/). The [Swift.org announcement](https://www.swift.org/blog/swift-6.4-released/) reads less like a headline feature and more like a long list of things that used to be awkward and now are not. For working developers that is the better kind of release.

Two changes carry the most weight. Asynchronous code now works inside `defer` blocks. And Swift Build, the open-source build engine, is now the default in Swift Package Manager on Linux, macOS and Windows.

## The language changes

A `defer` block runs cleanup when a function exits, whether it returns or throws. Until now it could not contain `await`, which meant asynchronous cleanup needed a workaround. Proposal SE-0493 removes that restriction, and Swift.org says completion is guaranteed.

The rest of the language work is about reading and writing less ceremony.

| Proposal | What it does |
|---|---|
| SE-0521 | `some` and `any` types no longer need parentheses in optional position |
| SE-0491 | Module selectors: `::` names which module a symbol comes from |
| SE-0522 | A `@diagnose` attribute for emitting compiler warnings from your own code |
| SE-0493 | `await` inside `defer` |
| SE-0504 | `withTaskCancellationShield`, to protect a region from cancellation |
| SE-0517, SE-0527 | `UniqueBox` and `UniqueArray`, containers for non-copyable elements |
| SE-0516 | An `Iterable` protocol so `for`-`in` works over non-copyable types |

Non-copyable types also gain something they lacked: they can now conform to `Equatable`, `Comparable` and `Hashable`. A non-copyable type is one the compiler refuses to duplicate, used where a value represents a unique resource. Being able to compare and hash them closes a gap that made them hard to use in ordinary code.

## The toolchain changes

Swift Build becoming the default matters beyond Apple's platforms. The same engine now drives package builds on Linux and Windows, and the release adds Android support through NDK 30, the current Android native toolkit.

The WebAssembly story moved too. Swift.org says bridging through JavaScriptKit, the library that lets Swift call into a browser's JavaScript, is 40 times faster. Debug builds on Linux and Windows are smaller, and so are dSYM bundles, the files that hold debugging symbols.

Subprocess 1.0 is now stable and cross-platform. It is the library for launching and talking to other processes, and its stability means server-side and tooling code can stop carrying private wrappers for it.

One more item is aimed at compliance teams rather than app developers. Proposal SE-0509 lets the package manager generate a software bill of materials in SPDX or CycloneDX format. A bill of materials is a machine-readable list of every dependency in a build, and regulated buyers increasingly ask for one.

## What this means for developers

Start with `defer`. Search your codebase for cleanup that runs in a `Task` spawned from a `defer` block. Look too for `do`-`catch` structures that exist only to run an asynchronous close on every exit path. Those are the workarounds SE-0493 retires, and each one you remove is a class of bug you no longer have.

Then treat the Swift Build change as a build-system migration, because that is what it is. If you have a package that behaved differently on Linux than on macOS, rebuild it now and look for warnings you have not seen before. The engine changed underneath you, and a default flip is exactly when a quietly platform-specific assumption surfaces.

The WebAssembly and Android additions are the ones to file for later. A 40x bridging improvement changes what is reasonable to ship in a browser, but only if you were already close to trying. Android support through NDK 30 is the same: not a reason to start a port this week, but a reason the port is now possible.

Finally, if anyone at your company has asked for a bill of materials, `SE-0509` gives you one for free. Generate it once, check that the dependency list matches what you believe you ship, and add it to the release pipeline. That is an afternoon, and it answers a question that otherwise arrives as a spreadsheet.

## Sources

- [Swift 6.4 Released](https://www.swift.org/blog/swift-6.4-released/) - Swift.org
- [Swift 6.4: What's New in Concurrency](https://www.avanderlee.com/concurrency/swift-6-4-whats-new-in-concurrency/) - SwiftLee
