How Can Package Managers Handle ABI (In)compatibility in C++?
summary
Compares how Conan, vcpkg and Spack handle ABI, demonstrates a solver rewrite using clingo (answer set programming) that reasons over compiler, target and option metadata instead of coarse semver, and replaces brittle hash-only reuse with metadata-aware matching of installed binaries. Claims this reduces rebuilds from dozens to a handful on realistic HPC stacks, shows a working concretizer and binary-reuse prototype, and proposes adding detailed symbol/type info to scale ABI analysis beyond ad hoc version constraints.
AI-written summary · about
chapters (33)
- 0:00Introduction
- 1:08Software Dependencies
- 2:57Studies on Software Dependencies
- 4:40JetBrains Survey
- 5:35Why Cant We Have Nice Package Managers
- 6:46Compatibility Model
- 7:30C Builds
- 8:12What is ABI
- 9:08Typical ABI model
- 10:48Library ABI models
- 12:33Dependency management
- 16:27How can package managers help
- 17:19What is a package manager
- 18:53Build systems
- 20:50Solving for versions
- 22:23A more complex example
- 23:46Build everything from source
- 26:31Dependency resolution
- 27:10Package hashes
- 28:23Package ids
- 29:29Package id customization
- 31:58Binary reuse
- 33:17Use cases
- 39:32Dependency Resolver
- 41:11Constraint
- 43:57Virtual Packages
- 44:36Learning Curve
- 46:54major simplifications
- 47:58package metadata
- 49:49reuse
- 50:47detail
- 51:17solver
- 52:06semantic versioning
related talks
37mCross-Building Strategies in the Age of C++ Package Managers
01h 11mThe State of Package Management in C++
01h 01m10 Problems Large Companies Have Managing C++ Dependencies and How to Solve Them
01h 03mC++ Package Manager - C++ Dependencies Don't Have To Be Painful!
01h 12mA Common Package Specification: Getting Build Tools to Talk to Each Other: Lessons Learned From Making Thousands of Binaries Consumable by Any Build System
42mUsing vcpkg in anger
01h 08m“Faster Delivery of Large C/C++ Projects with..."
01h 01mGit, CMake, Conan - How to ship and reuse our C++ projects
