4 ms·
What constitutes "invalid dynamic linking" is ABI and therefore language (and toolset) dependent. In C++, adding or removing a variable or virtual function from
by ridiculous_fish 14y ago
What constitutes "invalid dynamic linking" is ABI and therefore language (and toolset) dependent. In C++, adding or removing a variable or virtual function from a class is an incompatible change: it will break binary compatibility with subclasses. In Haskell, adding a new entry to an algebraic data type also breaks binary compatibility. But in dynamically typed languages, these changes are usually benign.
The binary brittleness of C++ and Haskell is not a direct consequence of their lack of dynamic typing, but it is a consequence of the underlying assumption: that the compile time environment fully describes the runtime environment, and so no provisions need be made for their divergence.
I don't understand your second paragraph. Maybe you think that code written in dynamically typed languages cannot be compiled into shared objects? I work on a large Objective-C dynamic library, which is compiled to machine code and loaded by the dynamic linker, just like a C library. The dynamic aspects of ObjC pay us big dividends.