> macOS applications seem to just package every single DLL they need inside of their application folder rather than relying on the OS. I'd do the same if I were developing for macOS with how often Apple likes to make breaking changes.
That was almost what we should have done on the installer project I was working on because it was just too difficult to dance around it.
> The symlinking trick for .so files often breaks on Linux. Method parameters change, structs get altered,
I think its roughly orthogonal - any C/C++ based project is a huge pain in the backside when it comes to ABI compatibility because as you say changes that appear tiny can break everything. My major beef with DLLs is the way that they have a table of functions such that adding a new function can shift the indices of everything in the table. If they used symbols all would be well. But as you say it's incredibly easy to break compatibility and not realise it even without that.