[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface
From: |
Andrea Bolognani |
Subject: |
Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface |
Date: |
Mon, 2 May 2022 05:04:13 -0400 |
On Mon, May 02, 2022 at 09:21:36AM +0200, Markus Armbruster wrote:
> Andrea Bolognani <abologna@redhat.com> writes:
> > The wire protocol would still retain the unappealing name, but at
> > least client libraries could hide the uglyness from users.
>
> At the price of mild inconsistency between the library interface and
> QMP.
That's fine, and in fact it already happens all the time when QAPI
names (log-append) are translated to C identifiers (log_append).
> We could clean up QMP if we care, keeping around the old names for
> compatibility. See also Kevin's work on QAPI aliases. Which is much
> more ambitious, though.
I wasn't aware of that effort. Personally I'm always in favor of
cleaning up inconsistencies, so I am automatically a fan :)
That said, the idea of exposing a sub-par Go API until such massive
undertaking can be completed is not terribly appealing. And it would
not address every facet of the issue (see below).
> > Capitalization of these acronyms is inconsistent across the schema,
>
> Common issue with camel-cased compounds containing acronyms, because
> either way is ugly.
Agreed :) But consistent ugliness is still preferable to inconsistent
ugliness.
> > with one of the two forms disagreeing with Go naming expectations.
>
> Pardon my ignorance: What are Go's expectations?
Acronyms are usually all upper case:
https://pkg.go.dev/net/http#ParseHTTPVersion
https://pkg.go.dev/net/http#ProxyURL
https://pkg.go.dev/crypto/tls#NewLRUClientSessionCache
The same seems to be true of Python:
https://docs.python.org/3/library/http.html#http.HTTPStatus
https://docs.python.org/3/library/urllib.error.html#urllib.error.URLError
https://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCServer
Rust, on the other hand, seems to prefer only capitalizing the first
letter of a word, no matter if it's an acronym:
https://doc.rust-lang.org/std/net/struct.TcpStream.html
https://doc.rust-lang.org/std/net/struct.Ipv4Addr.html
https://doc.rust-lang.org/std/ffi/struct.OsString.html
Whether different naming conventions are used for types, functions
and struct members is also language-dependent.
> > In this case we might be able to just change the schema without
> > introducing backwards compatibility issues, though? Type names are
> > not actually transmitted on the wire IIUC.
>
> Correct!
That's great, but even if we decided to change all type names so that
the schema is internally consistent and follows a naming convention
that's reasonable for C, Go and Python, we'd still leave the Rust
interface looking weird... There's no one-size-fits-all name,
unfortunately.
> > Of course such annotations would only be necessary to deal with
> > identifiers that are not already following the expected naming
> > conventions and when MLAs are involved.
>
> Pardon my ignorance some more: what are MLAs?
Multi Letter Acronyms. Which are actually just called "acronyms" I
guess? O:-)
The point is that, if we want to provide a language interface that
feels natural, we need a way to mark parts of a QAPI symbol's name in
a way that makes it possible for the generator to know they're
acronyms and treat them in an appropriate, language-specific manner.
The obvious way to implement this would be with an annotation along
the lines of the one I proposed. Other ideas?
--
Andrea Bolognani / Red Hat / Virtualization
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Markus Armbruster, 2022/05/02
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface,
Andrea Bolognani <=
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Markus Armbruster, 2022/05/02
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Andrea Bolognani, 2022/05/02
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Markus Armbruster, 2022/05/03
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Andrea Bolognani, 2022/05/03
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Kevin Wolf, 2022/05/03
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Daniel P . Berrangé, 2022/05/10
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Markus Armbruster, 2022/05/11
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Victor Toso, 2022/05/09
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Markus Armbruster, 2022/05/10
- Re: [RFC PATCH v1 0/8] qapi: add generator for Golang interface, Victor Toso, 2022/05/10