Explore C++ API and ABI versioning in this comprehensive ACCU 2018 conference talk by Mathieu Ropert. Delve into the intricacies of maintaining software libraries, understanding the differences between API and ABI, and managing breaking and non-breaking changes. Learn about API contracts, ABI concepts such as mangling and vtable layout, and the importance of sizes, alignment, and offsets in data structures. Discover key versioning strategies like Semantic Versioning and Live at Head, and how they can be applied to handle API and ABI changes over time. Gain practical insights into categorizing changes, managing undefined behavior, and ensuring compatibility with C ABI padding. Understand the significance of inline namespaces, dependencies, and proper documentation in maintaining long-term library stability and client adaptability.