[Development] Compatibility between Qt4 and Qt5 APIs

Andrey Ponomarenko aponomarenko at rosalab.ru
Mon Dec 24 09:46:15 CET 2012

Rick Stockton wrote:
> On 12/21/2012 05:31 AM, Andrey Ponomarenko wrote:
>> Hi,
>> Here are useful reports about binary and source compatibility between
>> Qt4 and Qt5 APIs:
>> Binary compatibility:
>> http://upstream-tracker.org/compat_reports/qt/4.8.4_to_5.0.0/abi_compat_report.html
>> Source compatibility:
>> http://upstream-tracker.org/compat_reports/qt/4.8.4_to_5.0.0/src_compat_report.html
> Thank you for the links! It is wonderful that Rosa makes such work
> public, I am delighted to see it!
> However, I noticed immediately that source compatibility 'problems' are
> significantly over-counted. For example, I looked at my own change to
> Qt::MouseButton and Qt::MouseButtons. This is binary incompatible,
> because the size of the field has been widened to 32 bits. But it is
> source compatible: Any source code use (e.g., checking which button was
> responsible for causing the event) of a Qt::MouseButton or
> Qt::Mousebuttons value which exists in a 4.8.4 Program will compile
> correctly, because I have not eliminated or changed any of the Enum
> values or names which did exist in 4.8.4. I only added new values.

The report shows all changes in the API and divide them into groups of 
high/medium/low severity changes and a group of "Other Changes in Data 
Types" (green colour in the summary). Added values in the MouseButton 
enum are listed in the last group of safe changes and they are not 
counted as problems.

> The report generator is definitely making an incorrect assessment in
> such cases. Or, is the report intended to require compatibility in both
> directions? (If so, then it is of very little use for Qt users- they
> already know that they MUST recompile/rebuild in order to run with the
> Qt 5.x library versions).

Andrey Ponomarenko, ROSA Lab.

More information about the Development mailing list