Way ... way back in the day, the argument was it would save memory, encourage reuse, etc. While some of this may have been true, it also gave rise to dynamic library hell. Reuse was overshadowed by incompatible versions, or API changes between versions that became the stuff of legends.
This would make a great study in how the ROI was completely overshadowed by risk considerations not considered at the outset.
Of course, saving memory was a huge issue in the days when 1GB RAM was considered gigantic. So maybe the cost was worth it.
[1] https://scalability.org/2017/03/what-is-old-is-new-again/
Could you expand a bit on how static linking would cause either of those things? It seems to me that they are both consequences of dynamic linking.
The Perl community has spent a couple decades "enjoying" taking (or being forced to take) a long hard look at that.
One result in P6 is :auth (authority), :api (api version) and :ver (package version) qualifiers, eg:
use Some::Module:ver<1.2>:api<3.4>;
with corresponding support throughout the language and packaging tools.Aiui this aspect of the language and tooling needs work but shows promise.
And security updates for your deployment become...what?
And how do I know I have to rebuild in the first place?
You'll probably tell me that there are tools to help deal with this. I'm sure there are. My point is that it isn't as simple as "scp".