3 ms·
The Linux kernel very occasionally removes interfaces, but generally only via "this turns out to have been broken for years and nobody has been using it". glib
by JoshTriplett 6y ago
The Linux kernel very occasionally removes interfaces, but generally only via "this turns out to have been broken for years and nobody has been using it".
glibc does deprecate and remove things, but it uses very careful symbol versioning, such that code compiled against previous versions of glibc continues to run but new code can't use those interfaces. It's a rare example of being ABI-compatible but not API-compatible.
- anitil 6y agoCould you go in a bit more about how this is done? The only way I can think of this working is if the symbols are exported in the lib file but not exposed in a header. Is that what you mean?
- lathiat 6y agoThat's basically it, this might help: http://peeterjoot.com/2019/09/20/an-example-of-linux-glibc-symbol-versioning/ http://peeterjoot.com/2019/09/20/an-example-of-linux-glibc-s...
- JoshTriplett 6y agoThat's part of it. The other half is that whenever you link the library, you get the current version of each symbol, so it's possible to change the behavior of a new version while preserving a bug-compatible previous version. There's an extensive mapping that provides the symbols for ranges of versions.