Accidental Tech Podcast
Accidental Tech Podcast

205: People Don’t Use the Weird Parts

Transcript of this episode * Follow up: MacRumors talks with Lattner * LLVM * LLVM Bytecode vs. LLVM Bitcode * Bitcode * Slicing * Clang * OpenGL * Swift * ARC * Swift Open Source * Casey's love letter to Swift enums * Swift Evolution "Commonly Rejected Changes" list * asm.js, WebAsse

Featured Speakers

Marco Arment, Casey Liss, John Siracusa HostChris Lattner Guest

Topics Discussed

Episode Summary

Executive Summary: Chris Lattner discusses his Apple tenure, the creation and evolution of LLVM, Clang, and Swift, and why Swift was designed as a safe, productive, open language that can eventually span apps, server, scripting, and systems programming. The conversation covers Bitcode, ARC vs GC, Swift open source, ABI stability, dynamic features, and the project’s future under Ted Kremenek.

Main Topics: Lattner’s path to Apple and his role: Lattner explains how LLVM began as a university research project, why he joined Apple to continue it, and how he transitioned from coder to manager while still coding nights and weekends. LLVM, Clang, and Bitcode mechanics: The discussion digs into LLVM as a modular compiler framework, early invisible production uses, the difference between bytecode and bitcode, and how Bitcode enables Apple to recompile apps for hardware changes. Why Swift was created: Lattner describes Swift as a response to the limits of Objective-C/C, emphasizing memory safety, high performance, modern language features, and the need to go beyond incremental Objective-C improvements. Swift launch, adoption, and open source: He explains the rapid adoption after WWDC, the challenges of launching publicly, the rationale for open sourcing after Swift 2.0, and the unexpectedly huge community response. ABI stability, source stability, and language evolution: The conversation covers why ABI stability slipped, why source stability became the more urgent goal for developers, and how Swift 3 tried to lock in a more stable direction. Future directions: server, systems, scripting, dynamic features: Lattner outlines a long-term vision for Swift across server-side development, scripting, and systems programming, while arguing dynamic features are compatible with Swift and mostly a prioritization issue. Memory management: ARC vs garbage collection: A detailed comparison of ARC, garbage collection, and future ownership models frames ARC as the right default for Swift because it supports determinism, C interoperability, and progressive disclosure of complexity.

Key Arguments: Swift was justified not as a replacement for Objective-C’s strengths, but because Objective-C could not be made fully memory-safe while retaining C compatibility and performance. Bitcode is useful because it lets Apple recompile app code for new CPU instructions and compiler improvements without forcing developers to resubmit binaries. Open sourcing Swift later, after Swift 2.0, was better than at 1.0 because the language was immature and the team needed time to focus on product readiness. ABI stability mattered most to Apple framework authors, but source stability mattered more immediately to app developers because nobody wants Xcode upgrades to break code. Swift’s success depends on progressive disclosure: novices can start with simple syntax, while advanced users can access low-level power only when needed. ARC is preferred over garbage collection because it gives deterministic destruction, better C interoperability, and an explicit ownership model that helps maintainability. Dynamic features are not philosophically incompatible with Swift; they are mostly a matter of implementation priority and timing. Server-side Swift can succeed only if the ecosystem, package management, and foundational networking/security libraries mature alongside the language. The long-term vision is for Swift to span from scripting to systems programming without forcing every programmer to pay for low-level complexity. The Swift team’s community process, including Swift Evolution and public design discussion, is central to the language’s direction and quality.

Data Points: LLVM/Clang/Swift projects started: 3 major language/compiler efforts - Lattner identifies LLVM, Clang, and Swift as his key technical creations Swift 3.0: Reached 3.0 - He says Swift had recently passed 3.0 and had a strong community/team Open source timing: December 3rd (last year, relative to interview) - Swift open source launch date referenced in discussion Swift 1.0 to 2.0: Major transition period - Used to explain why the team delayed open sourcing until the language was more complete iPhone 5 Swift chip: First in-house 32-bit ARM chip - Used as an example of a new CPU instruction (integer divide) that motivated Bitcode flexibility 32-bit vs 64-bit: 32-bit apps cannot run on 64-bit devices via Bitcode alone - Explains Bitcode’s limits regarding portability Apple framework constraint: 32-bit Mac apps still require Classic Objective-C runtime - Barrier noted for some Swift/AppKit adoption scenarios Manager transition: Started managing 2 or 3 people about a year after joining Apple - Illustrates his early shift from individual contributor to leader Swift launch community response: Hundreds of patches on the first day - Shows the unexpectedly intense response to Swift open source Swift Evolution mailing list: Hundreds and hundreds of emails a day - Used to describe the scale of open source community engagement Programming language reach: From Hello World to an entire operating system - Describes the intended scope of Swift’s design Objective-C/Swift compatibility focus: Swift 1 and 2 were designed to be as similar to Objective-C as possible - Explains early migration strategy ABI stability priority: High priority but not first priority - Apple framework developers need it, but compiler reliability and source stability were discussed as more urgent

Pivotal Quotes: "I think that the most important aspect of it is programmer productivity." — Chris Lattner: Explaining what Swift is optimized for and why it exists "We want Swift to be the next big thing, right? We want it to be more popular than Java was or is." — Chris Lattner: Describing the long-term ‘world domination’ goal for Swift "I think the secret to Swift and being easy to learn ... is that the complexity inherent in the language needs to be progressively disclosed." — Chris Lattner: Explaining Swift’s language design philosophy for beginners and experts

Implications: Swift’s future depends on ecosystem growth, stability, and clear community process. For developers, the takeaway is that Swift is meant to replace pain points gradually—not force a rewrite overnight—and may expand into server, systems, and more dynamic use cases over time.

🔓 Sign Up for Unlimited Episode Search

About Accidental Tech Podcast

View all episodes from Accidental Tech Podcast