Skip to main content

Swift Was Created by Chris Lattner Starting in 2010 and Secretly Unveiled at WWDC 2014

When Craig Federighi introduced Swift on June 2, 2014 at Apple's Worldwide Developers Conference, the room had no idea it was coming. Neither did most of Apple. The language had been in development since July 2010, roughly four years of work done quietly inside the company while the rest of the industry assumed Objective-C was simply what iOS development was. The first publicly released app written in Swift was Apple's own WWDC app, version 1.0, sitting on the App Store before the keynote finished.

The person behind it was Chris Lattner, who had joined Apple in 2005 and is best known for LLVM, the compiler infrastructure he started as a university project in 2000. That background matters more than any language feature. Lattner was not a language designer shopping for syntax ideas, he was a compiler engineer who had already built the backend Apple used to compile Objective-C, C, and C++. Swift could therefore be implemented on top of Clang and LLVM from day one, which meant it could produce production quality binaries without writing a new code generator from scratch. A four year secret is only plausible if the hard part was already standing.

The motivation was straightforward. Objective-C dates to the early 1980s and had changed remarkably little since. It carried manual memory management until ARC arrived in 2011, verbose square bracket message sends, header files, and a string type that made you type an at sign before every literal. Meanwhile the language was the only realistic way to ship an iOS app. Apple tried to modernize it with blocks, literals, and subscripting, but the syntax was still an archaeology exhibit. The alternative, C++, had the performance but none of the ergonomics Apple wanted, and no natural bridge to the Cocoa frameworks developers actually used.

Swift borrowed widely and said so. Lattner has described the design as taking ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, and CLU, among others. From the functional camp came optionals and exhaustive pattern matching in switch statements. From Rust and C# came value types with real semantics, which is why Swift arrays and dictionaries behave like values rather than references. From Ruby and Python came things like trailing closures and string interpolation. From CLU, a 1970s MIT language built around abstract data types and iterators, came conceptual grounding for the protocol oriented style that Swift later leaned into. The result is a language that looks friendly but enforces a fairly strict type system, and the strictness is the reason iOS codebases tend to crash less often on null handling than their JavaScript counterparts.

The rollout was not smooth. The beta shipped in June 2014, the 1.0 gold master landed on September 9, 2014 alongside Xcode 6, and Apple warned from the start that the final syntax might not match the beta. It did not. Swift 2 in 2015 changed error handling to try, catch, and throw. Swift 3 in September 2016 was deliberately source breaking on a large scale, a one time cleanup that the core team justified as necessary before promising stability. Any team that maintained an app through 2016 remembers the migration tool, and remembers that it got them maybe eighty percent of the way there. ABI stability finally arrived in Swift 5 in March 2019, which is why the Swift runtime could be baked into iOS itself instead of being bundled into every app, cutting the download size of every App Store binary.

Two other dates are worth keeping in mind. Swift was open sourced on December 3, 2015 under the Apache 2.0 license with a runtime library exception, and the swift.org project has since shipped official Linux toolchains and a formal evolution process with public proposals. SwiftUI arrived in 2019 and moved Apple's own UI framework into declarative territory that Swift had been designed to support all along. Swift 6, released in 2024, made strict concurrency checking part of the Swift 6 language mode, which is the same story again: the compiler enforcing at build time what developers used to enforce by convention.

For working developers, the practical takeaway is about the cost of a clean slate. Swift could break source compatibility in its early years because its audience was small and captive. It could introduce optionals and force unwrapping because it controlled the toolchain, the debugger, and the documentation. A general purpose language with an existing ecosystem cannot do those things, which is why Python and JavaScript accumulate deprecations for a decade. The cost of that freedom was four years of work before anyone outside the building knew the language existed, and a fair amount of migration pain afterward. Lattner left Apple in January 2017, but the pattern he set, a compiler engineer designing a language around an existing backend, is why Swift went from announcement to shipping apps in a single afternoon.

We use cookies for ads and analytics.