API & ABI Versioning...
summary
Defines API vs ABI by concrete effects: symbol mangling changes when argument types change, struct size/alignment and member order change binary layouts, and adding or reordering virtual functions shifts the vtable layout so binaries break. Recommends using explicit export macros, keeping a changelog, bumping major for any API or ABI break, minor for backward-compatible additions, patch for internal fixes, and shipping migration scripts. Explains mangling and advocates embracing semantic versioning that accounts for ABI.
AI-written summary · about
chapters (28)
- 0:00Intro
- 7:42Communication
- 9:02API
- 12:57Changes
- 13:55Change Types
- 15:01No Change
- 15:33Define Behavior
- 16:17Nonbreaking Changes
- 17:01Relaxed Changes
- 18:55Breaking Changes
- 20:27Positive Integers
- 24:53ABI
- 25:51Infrastructure
- 26:58Mangling
- 28:36Changing type
- 29:39API symbols
- 32:17Vtable
- 33:47Layout
- 34:58Binary Layout
- 38:46Semver
- 40:14Convention
- 41:13Documentation
- 42:25How to include API
- 44:57Dependency changes
- 46:28Can I do more
- 47:33Two things might impact
- 55:37QA
- 57:50Downgrade
