Loading…
This event has ended. Visit the official site or create your own event on Sched.
Back To Schedule
Wednesday, September 27 • 9:00am - 10:00am
API & ABI Versioning: How to Handle Compatibility With Your C++ Libraries

Log in to save this to your schedule, view media, leave feedback and see who's attending!

Feedback form is now closed.
Software keeps changing, but not always as fast as its clients. A key to maintaining a library in the long run is to ensure a proper versioning of the API and ABI. Not only does this gives a clear picture of both source and binary compatibility between the versions, but it also helps design by making breaking changes explicit to the developer.

In this talk I will define API and ABI in terms of impacts on compatibility, explain the difference between breaking and non-breaking changes and present a few techniques to handle them.

We will quickly explain what APIs are, with an emphasis on the notion of contracts. Then the usually lesser known notion of ABI will be explained, going over the concepts of call syntax, mangling and most importantly sizes, alignment and offsets in data structures. We will see how to use semantic versioning (semver) in C++ by considering not only changes to the API but also to the ABI and offer some advice on how to change API and ABI over time and how to minimize the impacts.

Speakers
avatar for Mathieu Ropert

Mathieu Ropert

Tech Lead, Paradox Development Studio
French C++ expert working on (somewhat) historical video games. Decided to upgrade his compiler once and has been blogging about build systems ever since. Past speaker at CppCon, Meeting C++ and ACCU. Used to run the Paris C++ User Group. Currently lives in Sweden.


Wednesday September 27, 2017 9:00am - 10:00am PDT
Colossus Theater Meydenbauer Center