Where you can agree, you share. Where you cannot agree, you table and hold.
Perhaps we are trying to share too much.
I have removed shared libraries from internal code for similar reasons.
It is e.g. used by git, cargo (Rust's package manager) and cmake (C++ build system). It's literally installed on 99.99% of all Arch Linux systems: https://www.archlinux.de/packages/core/x86_64/curl.
There are hundreds of binaries in a Linux system and no one wants to rebuild all of them when an important library is updated.
Oh, Idunno... How certain are you of this, and why?
$ find /{,usr/}{,s}bin/ -maxdepth 1 -type f \
| wc -l
5616
$ du -h --total --no-dereference \
$(find /{,usr/}{,s}bin/ -maxdepth 1 -type f) \
| tail -n 1
1.3G total
That's with shared libraries and debug symbols stripped. If I upgrade libc, why would I want to also waste a massive amount of time rebuilding all 5616 binaries?Of course, even if we ignore the insane buld time, I don't have the source for some of those binaries, and in a few cases the source no longer exists. In those cases, should I be forced to only use those programs with the (buggy) versions of the libraries they were originally built with?
Colour me a bit surprised, and corrected.
I.e. the few for which Linus thinks dynamic linking still can make sense ;=)