|
|
|
|
|
by asveikau
1106 days ago
|
|
I think you totally missed what the issue is here. In that scenario, Apple could still patch a system lib and it can break your application. It's not a question of the library updates being untrustworthy and code signing by the vendors fixes it. It's the library updates themselves breaking shit, not intentionally. Static linking prevents that, at the cost of disk space and memory and missing out on updates that might not (usually won't) break your app. Otoh, if you told me apple is more careful about breaking ABIs with updates to shared libraries, that is believable. |
|
In the mid-2000s, GCC switched C++ ABIs. Apple pushed out an update to Mac OS X 10.3 which replaced the static libstdc++ using the old ABI with a dynamic libstdc++ using the new ABI. This broke C++ compilation under Mac OS 10.3. They did not bother to update the compiler to use a new ABI; they had decided that if developers still wanted to compile for 10.3, their supported path -- compiling using the latest Xcode (available for 10.4 and up only) in its 10.3 backward compatibility mode was good enough. People still using 10.3 who wanted to build e.g., GNU software were just too niche a use case to warrant any kind of support.
Lesson learned: if you intend to build software on Apple systems, always have the latest shiny, or you risk being left in the lurch.