[Releasing] BC/SC in patch releases
Marc Mutz
marc.mutz at qt.io
Tue Aug 22 23:27:09 CEST 2023
Hi,
We have
https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B
for backwards binary compatibility issues and we have
https://contribute.qt-project.org/quips/6 for acceptable and
unacceptable backwards source compatibility.
However, please keep in mind that the Qt project promises that we
maintain _forward_ BC and SC within patch releases:
https://wiki.qt.io/Qt-Version-Compatibility
Without further clarification (absent from the linked wiki page), this
means no new symbols that are (legally) referencible by user code may be added post .0 release.
One could argue that if user code uses new symbols (for BC) or variable,
constants, functions or classes, or templates thereof (for SC), it's
their own problem that the code doesn't work against older releases of
the same minor release. But that's something we need to clarify in
https://wiki.qt.io/Qt-Version-Compatibility and, at a minimum, we'd need
a \since 6.5.2 (say) to document the in-patch-release addition.
That argument doesn't help with symbols that unchanged user code might
reference by a mere recompilation. This includes new overloads or
overrides of existing functions. Merely recompiling user code against a
new patch release should never make the result incompatible with older
releases from the same minor version. That would mean we have no SC/BC
guarantees at all in that situation.
I've looked around git diff v6.5.0..gerrit/6.5 a bit and added some
comments to changes that think are suspect in this regard.
I think we should decide what we mean by forward BC and SC and describe
it in https://wiki.qt.io/Qt-Version-Compatibility more precisely.
Thanks,
Marc
--
Marc Mutz <marc.mutz at qt.io>
Principal Software Engineer
The Qt Company
Erich-Thilo-Str. 10 12489
Berlin, Germany
www.qt.io
Geschäftsführer: Mika Pälsi, Juha Varelius, Jouni Lintunen
Sitz der Gesellschaft: Berlin,
Registergericht: Amtsgericht Charlottenburg,
HRB 144331 B
More information about the Releasing
mailing list