How to Build Binary-Compatible APIs in Compiled Languages?
summary
Describes how to design binary-compatible APIs for compiled languages when splitting a product into independently evolving components. Covers problems like ABI stability, versioning and compatibility, and practical techniques (layout rules, indirection, stability-minded data types and symbols) to evolve components without breaking binaries.
AI-written summary · about
chapters (16)
- 0:00Binary-compatible APIs intro
- 1:56Why binary compatibility matters
- 3:03Memory representation of structures
- 7:10API design pitfalls
- 9:23Padding and alignment rules
- 10:49Opaque structure approach
- 14:03Public vs private definitions
- 16:18Automatic padding calculation
- 17:46Field ordering in structures
- 19:15Handling enums in APIs
- 21:24Bit fields and flags
- 23:01Extending structures safely
- 24:51Reserving future space
- 25:35Version and feature checks
- 28:48Standards and tools
- 29:31Q&A
related talks
01h 29mC++ API & ABI versioning
47mAPI Design Principles
39mWhat Is an ABI, and Why Should You Care?
50mHow to break an ABI and keep your users happy
01h 06mWhat is an ABI, and Why is Breaking it Bad?
01h 37mC++ And Beyond: Discussion
49mBackward Compatibility in the Java World
54mThe C++ ABI From the Ground Up
