why does libraw (for Linux) change its "so name" each release?

I converted the Linux photo edit program Fotoxx to use libraw in place of dcraw.
Until now, I was able to build an executable that would run on most Linux distributions.
Now this is no longer possible, because different distributions have different library names for libraw.
The usual convention is to keep a constant "so name" and change only the version number.
That way existing programs using libraw are not affected by libraw updates.

e.g. "so name":

New release file names:
libraw.so.1.1.1 bug fix
libraw.so.1.2 functional addition

Of course this assumes that APIs remain stable for existing functionality.


Please note, that different

Please note, that different LibRaw versions (e.g. 0.16 and 0.17) are NOT binary compatible. That's why major .so number changes.

-- Alex Tutubalin

Thanks. Fotoxx builds and

Thanks. Fotoxx builds and runs OK with libraw 9 or 15 (Ubuntu 14.04 and 16.04), so evidently the APIs that I use were not changed. API changes are evil and should be avoided. If the functionality must be changed, use a new API and implement the old API as a call to the new API, with parameters defaulted to reproduce the old functionality. Is that not possible?

API is compatible, while ABI

API is compatible, while ABI is not (because of structures size change)

-- Alex Tutubalin

so you need to recompile (to

so you need to recompile (to adopt to structures change) if major Libraw version changes.

-- Alex Tutubalin