ABI Resilience
summary
Argues that Swift 5 stable ABI is a deliberate design with resilience domains backed by runtime metadata and witness tables so libraries evolve without breaking callers, while inside a domain the layout is zero‑cost; contrasts C++’s accidental, long‑running ABI constraints and Windows COM indirection as pragmatic hacks; shows concrete pain — GCC and MSVC history, hashbrown benchmarks where adding one instruction to hashmap lookup costs 0.5% Rust compiler slowdown — and urges tool support for Rust beyond rep C.
AI-written summary · about
chapters (25)
- 0:00ABI resilience introduction
- 1:53C++ ABI vote in Prague
- 3:59Breaking ABI stability consequences
- 5:22ABI design lessons from others
- 7:10What is an ABI and why it matters
- 10:03ABI stability for dynamic linking
- 12:30Balancing stability and evolution
- 13:57ABI stability across languages
- 17:32COM and intermediate representations
- 20:46Idealism vs pragmatism in ABI
- 21:51C++'s mixed signals on ABI
- 24:01Past mistakes and costs
- 27:15C++ accidental ABI stability
- 28:19Swift's ABI resilience priorities
- 30:50Swift library evolution design
- 32:37Swift resilience mechanisms
- 38:56Swift resilience domains
- 42:07Swift default behavior and escape hatches
- 44:58Trade-offs of fixed layout in Swift
- 46:25Designing for ABI resilience in Swift
- 47:32Rust's ABI challenges
- 50:47Rust stable ABI future
- 53:23Tools for ABI stability
- 54:48Multiple ABIs not one size
- 55:08Q&A
related talks
01h 11mDuck-Tape Chronicles - Rust C++ Interop
01h 01mMemory Safety: Rust vs. C
40mRust’s approach of getting things right
37mDuck-Tape Chronicles: Rust/C++ Interop
01h 02mRust/C++ Interop: Carcinization or Intelligent Design?
52mBuilding Bridges: C++ Interop, Foreign Function Interfaces & ABI
01h 14mRust: A Friendly Introduction
01h 05mKeynote - Rust: confident, productive systems programming
