All posts

Posts tagged with: Swift Evolution

21 posts found

Close-up of a blank identification badge on a lanyard
Swift Concurrency

Every Swift Task Already Has an ID. You Just Couldn't Read It Cheaply.

SE-0553 adds Task.currentID to Swift — a process-unique, never-reused task identifier that costs nanoseconds instead of the 15x-slower withUnsafeCurrentTask dance. Here's why that gap existed and what it unlocks for tracing and logging.

6 min read
A pi symbol written on a chalkboard
Swift Evolution Swift

Float.pi Has Been Slightly Wrong Since 2016. Swift Is Finally Fixing the Rounding.

SE-0552, in active review through October 6, 2026, changes how Float.pi rounds — undoing a Swift 3-era decision to always round toward zero. Here's the actual bit that moves, why it was ever rounded down on purpose, and whether your code needs to care.

6 min read
A red rejected stamp mark
Swift Swift Evolution

Someone Pitched 'and' and 'or' for Swift. The Rejection Was Already Written in 2015.

A fresh Swift Forums pitch to replace && and || with and/or got shut down in two replies — pointing to a document that's been saying no since Swift's early years. Here's the real technical reason, not just 'we don't like it.'

6 min read
A red warning light glowing in a dark room
Swift Concurrency

Thread Sanitizer Just Flagged Your Correct Code as a Race. Swift Might Finally Let You Say 'I Know.'

SE-0550 proposes a @noSanitize attribute for Swift functions, letting you opt individual functions out of ASan/TSan instrumentation. Here's the real problem it solves, and the sharp edges it comes with.

6 min read
A padlock and chain wrapped around a metal surface
Swift Swift Evolution

Swift's let Never Meant 'Never Changes.' A New Pitch Wants Property Wrappers to Admit It.

A fresh Swift Evolution pitch lets property wrappers live on let declarations, fixing the real Swift 6 strict concurrency error that rejects thread-safe wrappers in Sendable types, static properties, and nonisolated members.

8 min read
A broken metal chain link isolated against a plain background
Swift Codable

One Bad Element in Your JSON Array Can Freeze Your App Forever. Swift Wants to Fix It.

A fresh Swift Evolution pitch adds skip() to UnkeyedDecodingContainer, fixing a real Codable footgun: the 'decode what you can, skip what you can't' loop that looks correct and hangs at runtime.

7 min read
A safety net stretched taut, catching something mid-fall
Swift Swift 6.4

Swift 6.4 Lets Your defer Block Await. withTaskCancellationShield Is Why That's Actually Safe.

Swift 6.4 ships async defer (SE-0493) and withTaskCancellationShield (SE-0504) together, finally letting cleanup code make network calls without racing cancellation. Here's what changes and why the pairing matters.

6 min read
Rows of small numbered evidence tags laid out in sequence
Swift Testing Swift Evolution

Swift Testing Is About to Turn Off the One Field Your CI Script Actually Reads

ST-0029 was accepted into Swift Testing on September 13, adding structured issue metadata to the JSON event stream. The quiet part: the human-readable messages field becomes opt-in, off by default. Here's what that means for anyone parsing test output in CI.

6 min read
A brass keyhole in a locked wooden door
Swift Swift Evolution

Your private(set) Property Isn't as Private as You Think. Swift's Memberwise Init Still Lets Anyone Set It.

A fresh Swift Evolution pitch tackles a real gap: struct memberwise initializers ignore private(set) and let callers set properties you meant to protect. Here's the pitch, the pushback, and why the debate matters more than the syntax.

7 min read
Pruning shears cutting a dead branch off a tree
Swift Swift Evolution

Swift Might Get a Compile-Time #if for Your Deployment Target

A fresh Swift Forums pitch proposes #if deploymentTargetAtLeast(...) — a compile-time check tied to your minimum OS version, aimed at killing dead backward-compat branches that if #available can't touch.

7 min read
A brass combination lock dial, close up
Swift SwiftPM

SwiftPM Traits Let You Turn Off Half Your Library. Your Test Suite Has No Idea.

A new Swift Evolution pitch fixes a real gap in SwiftPM package traits: there's currently no way to declare which trait combinations a test target actually needs to run against. Here's the bug, the pitch, and the naming collision that'll trip you up first.

6 min read
An aerial view of a highway bypass lane cutting past a long line of traffic — the shortcut this pitch takes around Swift's type checker
Swift SwiftPM

The Fix for SwiftPM's 200-Second Compile Bug Just Landed. It Skips the Type Checker Entirely.

A new Swift Forums pitch replaces embedInCode's byte-array literals with linked object files and Span<UInt8>, turning a 70-second, 7.2GB build into a 1.6-second one. Here's how it works and why one reviewer already isn't sure it's worth the complexity.

7 min read
Stacked shipping containers, neatly indexed and labeled — the kind of file system SwiftPM's embedded resources still don't have
Swift SwiftPM

SwiftPM Embeds Resources as Byte Arrays. One 165KB File Can Take 200 Seconds to Compile.

A fresh Swift Forums pitch wants to give SwiftPM's .embedInCode a real, path-preserving EmbeddedFileSystem — fixing both its lack of directory structure and a documented type-checker bug where a single resource file bloats debug build times by minutes.

6 min read
Rows of server storage racks, the kind of content-addressed cache infrastructure SwiftPM is about to borrow from
Swift Swift Evolution

SwiftPM Is Getting Real Compilation Caching. My Five Cold Builds a Day Are About to Get Cheaper.

SE-0547 brings CAS-backed compilation caching to SwiftPM: content-addressed cache keys instead of timestamps, with reported 67-75% faster clean builds. Here's what it actually configures, and why it matters more for worktrees and CI than for your everyday edit-build-run loop.

7 min read
An old telephone switchboard with patch cables connecting calls to different lines
Swift Swift Concurrency

Your @MainActor Code Was Never Promised the Main Thread. Swift's About to Make That Official.

Swift Evolution's fourth pitch for Custom Main and Global Executors quietly confirms something most iOS developers get wrong: @MainActor guarantees serialized isolation, not literally Thread.main. Here's what changes and why it matters.

7 min read
A neatly organized drawer with everything in its own compartment
Swift Swift Evolution

Swift Finally Lets You Put a Memberwise Init Where It Belongs

SE-0546 fixes a Swift limitation nearly a decade old: you couldn't define a struct's memberwise initializer in a same-file extension. Here's why that mattered, with a real example from a Live Activity.

6 min read
A single closed padlock hanging on a chain, evoking something used exactly once and then done
Swift Swift Concurrency

Swift Wants to Let a Closure Promise 'I Run Once.' Here's the Bug That's Been Waiting For It.

A fresh Swift Evolution pitch, @called(once), lets the compiler know a function is invoked at most one time — and that one guarantee quietly unlocks Task closures that consume non-Sendable values and non-Copyable captures that don't work today. Here's the errors it fixes, in real code.

7 min read
Rows of small identical storage compartments, evenly spaced
Swift Evolution Swift

InlineArray Just Got Hashable. Here's Why That Took a Whole Proposal.

SE-0543 was accepted on August 18, 2026, giving InlineArray a Hashable conformance. It sounds like a one-line addition — it wasn't. Here's what InlineArray actually is, why Hashable needed its own proposal, and where a fixed-size, stack-allocated array earns its keep over a regular Array.

6 min read
A label maker printing a strip of text, close up
Swift Testing Swift Evolution

ST-0026 Got Accepted. The Whole Review Came Down to One Parameter Label.

Swift Testing's .taskLocal trait (ST-0026) was accepted with modifications on August 15, 2026 — the only change was adding a withValue: label. Here's the final API, why the label debate actually mattered, and the real BrewLog migration it unlocks.

7 min read
A hand holding a hotel key card up to a door lock
Swift Testing Swift Concurrency

Swift Testing Runs Your Suite in Parallel. That Static Var You Swap for DI Is a Race Condition.

Swift Testing parallelizes tests by default, in the same process. A huge number of Swift codebases — BrewLog's AppIntents suite included — still inject test dependencies by mutating a global static var. ST-0026 proposes a .taskLocal trait to fix it properly. Here's the real bug, the real code, and where the proposal stands.

7 min read
A black digital clock display against a dark background, evoking a countdown running out
Swift Swift Concurrency

Swift Just Got a Real Timeout API. Here's What We've All Been Duct-Taping Instead.

SE-0526 withDeadline was accepted into Swift on July 30, 2026 — a real, composable, absolute-time-limit API for async operations. I found the exact gap it fills in a real app's networking layer, fixed it today's way with a TaskGroup race, and lined it up against what withDeadline will let me delete once it ships.

10 min read