I am looking for practical advice on the cross-version compatibility of LibraryLink libraries.
In particular, I would like to understand the significance of the
WolframLibraryVersion define, which is normally returned from the
WolframLibrary_getVersion function manually (meaning that one can in principle return whatever).
Under what circumstances will libraries compiled with an old version of Mathematica fail to load in a new version?
When will libraries compiled with a new Mathematica fail to load in an old Mathematica?
Does Wolfram provide any guarantees for binary compatibility? What about source compatibility?
Why is there a version value for
WolframLibrary.h, but not for any of the ancillary headers like
WolframSparseLibrary.h? Note that
WolframLibraryVersion was not increased when new ancillary headers were added.
WolframLibraryVersion(e.g. it changed from 3 to 4 between 11.1 and 11.2)
New features introduced (e.g. the
WolframRawArrayLibrary.hwas introduced in 10.4)
Changes in external dependencies (e.g. on OS X, M10.4 uses
libc++, while previous versions used the incompatible