Hi On Fri, Sep 18, 2026 at 5:36 PM Markus Armbruster <[email protected]> wrote: > > Marc-André Lureau <[email protected]> writes: > > > Rename QAPISchemaUsedTypes to QAPISchemaTypeAnalysis and broaden type > > collection: instead of discovering types transitively from commands and > > events, register every non-implicit type upfront in visit_needed() and > > let visit_end() resolve their dependencies. > > > > This is needed so that QOM property types that are defined in the QAPI > > schema but not referenced by any command or event still appear in > > query-qmp-schema output, making them introspectable by management tools. > > > > Commands and events still register their (often implicit) argument and > > return types, which visit_needed() intentionally skips. > > Either I'm confused, or this paragraph is misleading. > > Before the patch, we emit the types used directly or indirectly by > commands and events. This ensures that you can start introspection at a > command or and event, then follow type references. We emit exactly the > types reachable that way. > > Afterwards, we emit the types used directly or indirectly by commands, > events, and user-defined types. Now you can also start introspection at > a QOM property, then follow type references. Since we don't know which > types are referenced from QOM properties, we emit all the types that > could be. The only types that can't are implicit base types and the > builtin integer types we don't expose externally. > > We could instead simply emit all types and call it a day.
Indeed :), in v5: - added "qapi: select introspectable types directly", simplifying type discovery > > This makes the x86-64 query-qmp-schema grow from 244K to 265K. > > Based on current master I see it grow by 9% from 246KiB to 267KiB. > > If I make it emit *all* types, it instead grows by 11% to 274KiB. > > > Signed-off-by: Marc-André Lureau <[email protected]> > > If we simply emit all types, we can drop the previous patch, and dumb > down introspect.py to visit the types without ado: drop .visit_needed(), > ._use_type() and all that. > > Thoughts? Yes, I would rather do it in the later patch, rather than make all the changes in one go. That reflects the actual progress. But I am fine if you want to squash them.
