December 30, 2025
Await the backlash
Fucking Approachable Swift Concurrency
The f-bomb guide to waiting in apps has devs cheering, jeering, and swearing
TLDR: A plain-English guide demystifies Swift’s async/await and parallel work. Comments split between relief (“async isn’t a thread”), gripes about actors feeling shoehorned, and jokes insisting the f-bomb stays—because clarity and candor matter when you’re trying not to ship bugs or freeze your app.
Swift’s new explainer on async/await—aka “how your app politely waits without freezing”—has the community buzzing. Pedro Piñera, with a big hat tip to Matt Massicotte, turns brain-melting concepts into plain talk: code can pause, do other stuff, then resume. Sounds simple, but the comments turned into a therapy circle with popcorn. The loudest chorus: relief. One user shouted that “async/await is not a new thread,” meaning it’s pausing on the same lane, not swerving into traffic. Another confessed: every time they think they understand concurrency (code running at the same time), a monster bug humbles them—so they now ask basic questions like “what must be ordered?” and “what if this pauses at the worst moment?” Fans call it callback hell detox and say Tasks and TaskGroups feel like assigning a little team to fetch things in parallel. Then the drama: actors, Swift’s safety feature for shared data, got dragged. One commenter loved the idea but called the implementation “shoehorned,” wishing for something like Akka. Meanwhile, a Go dabbler said Swift looks clean while Go’s common chores get “visually messy.” And the pièce de résistance? The community rallied to keep the spice: the title must keep the f-bomb. Even the compiler’s screaming got memed as “coach yelling for your own good.” For curious readers, here’s Apple’s overview of Swift concurrency.
Key Points
- •Swift’s async/await allows writing sequential-looking code that suspends and resumes while the runtime manages pauses.
- •await can only be used inside async functions; each await point may suspend execution until work completes.
- •async let enables parallel execution of independent operations and collects results with await.
- •Tasks are units of asynchronous work; start them from synchronous contexts and manage lifecycle, including cancellation.
- •withThrowingTaskGroup runs child tasks in parallel with structured concurrency; cancellation propagates from parent to children.