woboq / verdigris

Qt without moc: set of macros to use Qt without needing moc
https://woboq.com/blog/verdigris-qt-without-moc.html
GNU Lesser General Public License v3.0
643 stars 60 forks source link

Forward source compatibility guarantees #18

Closed rakhimov closed 6 years ago

rakhimov commented 6 years ago

How likely is it that Qt changes its internal APIs that Verdigris relies on? ABI compatibility is guaranteed by Qt, so the projects compiled with the current Verdigris should run ok with future releases of Qt.

However, let's say the project includes Verdigris source and is distributed w/ source (e.g., Linux distros). Now, there's risk that this source won't compile with some future versions of Qt (who knows what various distros are going to use).

Basically, we need Verdigris maintained by distros alongside (tied to) their Qt version, so the dependent don't need to worry.

ogoffart commented 6 years ago

I do not understand the question. You are asking weather verdigris will work with future Qt version? Qt maintains source and binary compatibility with the generated moc files, so overall it is prety safe. verdigris make some use of a couple of private meta-programming API (in the QtPrivate namespace). It is unlikely that these changes, but that's possible.

Also the tests are taken from Qt and might test some private API, which might start failling if changed in Qt.

So the answer is that it should normally work. There might be minor work to do to adapt for future version of Qt, but that should not be hard.

As a data point, verdigris was developped shortly before the Qt 5.7 release. And there was no incompatibility since then, and we are reaching Qt 5.11. (Only a minor change in the test had to be made.)

rakhimov commented 6 years ago

@ogoffart Thanks for the clarification.