HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Compatibility

Although SideFX strives to ensure that the HDK's API is compatible for major releases, changes are sometimes done in order to fix critical bugs or in low impact APIs where deemed beneficial. This because the HDK is a subset of the headers for the libraries that are directly used by Houdini, and not just used for plugins. Thus, the HDK's ABI can change from time to time, requiring plugins to be recompiled.

For versioning, you can use the HDK_API_VERSION macro defined in UT_HDKVersion.h (new since Houdini 15.5.500). This is a monotonically increasing value that is updated to the last Houdini version that an ABI incompatible change was made. Typically, this will be set on every major release and only occasionally on releases within a X.Y version.

The format of HDK_API_VERSION is a packed 8 digit integer consisting of the following printf format: ("%02d%02d%04d", major, minor, build). For example,

#if HDK_API_VERSION >= 15050499
// In an HDK version where ABI was last broken in Houdini 15.5.499
#endif

Note that the HDK_API_VERSION only changes when ABI compatibility is broken so that it can be as a signal to rebuild plugins. In general, new functions can be added without breaking ABI compatibility, in which case HDK_API_VERSION will not be modified. If desired, finer grained version checks are also possible by using the macros in the SYS_Version.h header file where the build number is incremented for every Houdini build.