On Wed, Oct 27, 2021 at 6:31 AM Kevin Wolf <kwolf@redhat.com> wrote:
> Am 26.10.2021 um 23:23 hat John Snow geschrieben:
> > On Fri, Sep 17, 2021 at 12:13 PM Kevin Wolf <kwolf@redhat.com> wrote:
> >
> > > This series introduces alias definitions for QAPI object types (structs
> > > and unions).
> > >
> > > This allows using the same QAPI type and visitor even when the syntax
> > > has some variations between different external interfaces such as QMP
> > > and the command line.
> > >
> > >
> > I'm absurdly late to the party here, and I'm afraid my involvement may
> only
> > stall your progress even further, but ...
>
> I'm not sure if it's worth investing much of your time in this. After a
>
ACK, understood. Still, I had this on my review pile for a while and I want
to know what problem we're trying to solve, and why Markus wasn't
enthralled by it.
> year of discussing implementation details, Markus decided that he
> doesn't like the whole approach, so the series is probably dead in this
> shape. Maybe parts of it (possibly even large parts) can be saved and
> used in a modified approach, depending on how radically different the
> new approach is.
>
> Markus promised that he'll think of alternative approaches to solve the
> problem. I'm waiting for that before I waste more time implementing
> something else that is also dead from the start.
>
> > can you fill me in on the slightly-less-higher-level details here?
> >
> > I'm curious as to the nature of "has some variations" and how the aliases
> > help alleviate them. Do you accomplish that compatibility by using
> > different names for different fields of the struct?
>
> > so e.g. x.foo can be used as an alias for x.bar, but both map ultimately
> > onto 'x.foo'? Or does this series provide for some more fundamental
> > mechanical changes to map one type onto another?
>
> I would recommend reading the changes to docs/devel/qapi-code-gen.rst in
> patch 7, which explain the implemented mechanism.
>
> For -chardev, most of "some varations" are different names for the same
> member of a struct, or nesting in QMP that you don't want to have on the
> command line. I went through all cases in one of the last messages in
> the v3 thread, but I think these are the two important categories of
> cases.
>
> The C types stay the same as they have always been, aliases just provide
> an alternative way to specify the same thing in the input.
>
>
Thanks very much for the pointers!
> > > It also provides a new tool for evolving the schema while maintaining
> > > backwards compatibility (possibly during a deprecation period).
> > >
> > > The first user is intended to be a QAPIfied -chardev command line
> > > option, for which I'll send a separate series. A git tag is available
> > > that contains both this series and the chardev changes that make use of
> > > it:
> > >
> > > https://repo.or.cz/qemu/kevin.git qapi-alias-chardev-v4
>
> You may also want to have a look at this, and specifically
> qapi/char.json, to see how I used aliases in practice.
>
> Kevin
>
>