How to break an ABI and keep your users happy
Technical debt is the bane of most established libraries, whether it is standard library or boost or local library developed in house. Paying this debt is expensive and in many cases seems infeasible. As a result of several (justified at the time) decisions Google accumulated serious technical debt in how we use std::string. This became a blocking issue in our effort to open source Google’s common libraries. To fix this we needed to break libstdc++ std::string ABI. This is the story of how we survived it kept Google still running.