Description
We have HWLOC_API_VERSION and get_api_version() for checking the API version at build-time and runtime. This version increases with API changes, but it's often be the same for 2.x and 2.x.1 (it's even the same between 2.5 and 2.7.2).
We also have HWLOC_VERSION for checking the version of the lib at build-time. This version increases with each new release, but there's no way to check it at runtime afaik. For instance, how to check whether we're running on 2.7.1 or 2.7.2 to avoid the LevelZero backend crash on PVC in 2.7.1 (open-mpi/ompi#11246) ?
We also have a ABI soname which gets updated with every release but I don't know how to use that in the code at runtime.
Do we need a runtime function to check the lib version instead of the API ? Or should we increase the API version in every release and rely on get_version() at runtime?
Afaik, get_api_version() is mostly used to compare the major version number (avoid mixing hwloc 1 and 2). I am not sure anybody cares about the API lower bits at runtime. The new get_version() would be enough for this.
CC'ing @jsquyres @rhc54 and @ggouaillardet since they were involved in some discussion about this in the past.