[Development] QtCS2019: moc and QMetaObject

Olivier Goffart olivier at woboq.com
Mon Nov 25 09:10:48 CET 2019

Here are the notes from the session



We discuss if we should rewrite moc using libclang.
moc currently hasn't still fully be ported to support C++11 yet. Features such 
as raw literals, trailing returns and other will confuse moc.
It is agreed that using clang for moc would be the path forward even if it is 
slower. We discussed that we should use the clang C API for compatibility 
reasons. we should avoid using Qt in the implementation to simplify the 
bootstrap proccess.
There is already a prototype i made years ago (but it is using the C++ API) 
However this was not seen as a blocking issue for Qt6 as the changes we want to 
do to the "generator" can easily be ported to the new moc without requiring to 
do all the work twice..

We discussed if Qt should provide an additional API such as
https://github.com/woboq/verdigris which allow to write code that does not use 
moc. But the consensus is that this wasn't usefull, and that verdigris can stay 
a separate library. However it should still be made possible. (And a solution 
for the new json output required by QML3 will be needed)

We discussed the reflexion features coming in future version of C++. But since 
this is for the far future and won't help us immediately, we won't consider 
them now. Later they can be adopted.

The QMetaObject itself will gain new feature for performance reasons so QML can 
be faster.


More information about the Development mailing list