2021.01.04 14:23 "[Tiff] Motions related to C99 use in libtiff", by Even Rouault

2021.01.06 14:42 "Re: [Tiff] Motions related to C99 use in libtiff", by Olivier Paquet

As long as the C99 data types correspond to the custom typedefs, won't the ABI remain the same?

Would temporarily freezing the last pre-C99 ABI help with the transition?

If Motion 2 includes C99 printf formats, is it worth separating that out?

Where ABI implies that existing dependent binaries continue to run, then the C ABI should usually remain the same. However, in C/C++, types of the same size are not actually the "same" so 'long' and 'long long' are different at a language level. In C++ the type is encoded into the function, method, and class signature so if any C++ code is re-using the type names that libtiff declares as part of their interfaces (including members of C++ class definitions), then the compiled result may be different (e.g. would no longer link or be compatible as a shared library with already compiled code) after the C99 switch.

libtiff is a C library. That would be broken C++ code and frankly none of our concern. At some point we have to draw a line and not accept responsibility for all the code in the universe.

I've had to deal with the exact same problem some 5-8 years ago from macOS switching the definition of some OpenGL type in a similar way. It's annoying but ultimately the C++ code is to blame.

Oilvier