You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add automated ABI compatibility testing to the CI #2251
I did some tests on this here, using Claude I basically asked it to write the ABI check workflow, explaining its choice regarding which method / library to use for the check, which is visible as comments in the workflow file (it went for libabigail and not abi-compliance-checker, for reasons explained, whether they are sensible or not is to be reviewed).
Trying it on the RB-2.5 branch, it seems like it correctly detected the ABI break we introduced in 2.5.1, see the error, or below copy/paste:
Baseline library: /__w/_temp/old/install/lib64/libOpenColorIO.so.2.5.0
Proposed library: /__w/_temp/new/install/lib64/libOpenColorIO.so.2.5.2
Functions changes summary: 0 Removed, 1 Changed (6 filtered out), 0 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
1 function with some indirect sub-type change:
[C] 'method OpenColorIO_v2_5::GpuShaderDesc::GpuShaderDesc()' at GpuShaderDesc.cpp:406:1 has some indirect sub-type changes:
implicit parameter 0 of type 'OpenColorIO_v2_5::GpuShaderDesc*' has sub-type changes:
in pointed to type 'class OpenColorIO_v2_5::GpuShaderDesc' at OpenColorIO.h:3725:1:
type size hasn't changed
2 member function insertions:
'method virtual unsigned int OpenColorIO_v2_5::GpuShaderDesc::get3DTextureShaderBindingIndex(unsigned int) const' at OpenColorIO.h:3813:1, virtual at voffset 35/35
'method virtual unsigned int OpenColorIO_v2_5::GpuShaderDesc::getTextureShaderBindingIndex(unsigned int) const' at OpenColorIO.h:3797:1, virtual at voffset 31/35
3 member function changes (10 filtered):
'method virtual unsigned int OpenColorIO_v2_5::GpuShaderDesc::getNum3DTextures() const' has some sub-type changes:
the vtable offset of method virtual unsigned int OpenColorIO_v2_5::GpuShaderDesc::getNum3DTextures() const changed from 31 to 32
note that this is an ABI incompatible change to the vtable of class OpenColorIO_v2_5::GpuShaderDesc
'method virtual void OpenColorIO_v2_5::GpuShaderDesc::get3DTexture(unsigned int, const char*&, const char*&, unsigned int&, OpenColorIO_v2_5::Interpolation&) const' has some sub-type changes:
the vtable offset of method virtual void OpenColorIO_v2_5::GpuShaderDesc::get3DTexture(unsigned int, const char*&, const char*&, unsigned int&, OpenColorIO_v2_5::Interpolation&) const changed from 32 to 33
note that this is an ABI incompatible change to the vtable of class OpenColorIO_v2_5::GpuShaderDesc
'method virtual void OpenColorIO_v2_5::GpuShaderDesc::get3DTextureValues(unsigned int, const float*&) const' has some sub-type changes:
the vtable offset of method virtual void OpenColorIO_v2_5::GpuShaderDesc::get3DTextureValues(unsigned int, const float*&) const changed from 33 to 34
note that this is an ABI incompatible change to the vtable of class OpenColorIO_v2_5::GpuShaderDesc
There is probably some cleanup / review to do but this seem promising.
Activity
yosri-brh commentedon Jan 22, 2026
Hello ! I'd like to work on this issue.
doug-walker commentedon Jan 22, 2026
Thank you @yosri-brh , I've assigned it to you!
remia commentedon Jun 26, 2026
I did some tests on this here, using Claude I basically asked it to write the ABI check workflow, explaining its choice regarding which method / library to use for the check, which is visible as comments in the workflow file (it went for libabigail and not abi-compliance-checker, for reasons explained, whether they are sensible or not is to be reviewed).
Trying it on the RB-2.5 branch, it seems like it correctly detected the ABI break we introduced in 2.5.1, see the error, or below copy/paste:
There is probably some cleanup / review to do but this seem promising.