How Can Package Managers Handle ABI (In)compatibility in C++? – Todd Gamblin – CppCon 2021

https://cppcon.org/
https://github.com/CppCon/CppCon2020
---
Package managers are crucial in many software ecosystems for reusing libraries, and several major package manages (Conan, vcpkg, and, at least in the HPC world, Spack) have started to grow a large user base within the community. One of the central issues to reusing packages in C++ is ABI, or Application Binary Interface. ABI is fundamental to package compatibility -- it affects how binary artifacts can be reused and composed, and ABI incompatibilities can mean that you need to rebuild an entire stack from source -- which may not be possible, depending on your deployment environment and your user base.

This presentation will look at how ABI can be managed at the *ecosystem* level. We'll look at how the major C++ package managers guarantee ABI compatibility (or not), and how that compares to major build systems (Bazel, Buck, etc.) that manage monorepos. We'll look at the ramifications of ABI on your CI system -- if you reuse a dependency form one project, or if you change a header in one library, when do you need to rebuild the other libraries? What metadata is needed if we want to do better than rebuilding everything from source all the time? We'll finally look at some early (and novel) attempts to do deeper ABI analysis in Spack, and how they could be implemented at scale.

We hope you'll come away from this presentation with the tools to understand how binary compatibility fits into a larger C++ package ecosystem, and what tradeoffs there are from the perspective of the user and the package manager developer. Recent talks at CppCon about ABI have been pessimistic, and we hope this sparks more exchange of ideas around ABI management and how we can make reliable and *fast* package managers for C++ users, without rebuilding the world.

---
Todd Gamblin

Todd Gamblin is a computer scientist in the Center for Applied Scientific Computing at Lawrence Livermore National Laboratory. His research focuses on scalable tools for measuring, analyzing, and visualizing parallel performance data. In addition to his research, Todd leads LLNL's DevRAMP (Reproducibility, Analysis, Monitoring, and Performance) team. He is the creator of Spack, a popular HPC package management tool, and he leads the Software Packaging Technologies area in the U.S. Exascale Computing Project. Todd has been at LLNL since 2008.

---
Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk

The CppCon YouTube Channel Is Sponsored By:
JetBrains : http://jb.gg/cpptools
SonarSource: https://www.sonarsource.com/

Filed under: Science & Technology

No comment yet, add your voice below!


Add a Comment