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.
Particular concerns:
Changes in
WolframLibraryVersion
(e.g. it changed from 3 to 4 between 11.1 and 11.2)New features introduced (e.g. the
WolframRawArrayLibrary.h
was introduced in 10.4)Changes in external dependencies (e.g. on OS X, M10.4 uses
libc++
, while previous versions used the incompatiblelibstdc++
)