All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Michael Roth" <michael.roth@amd.com>,
	"Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
	"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
	"Eric Blake" <eblake@redhat.com>
Subject: Re: [PATCH v5 60/62] qapi: expose integer signedness and width in introspection
Date: Wed, 14 Oct 2026 08:05:23 +0200	[thread overview]
Message-ID: <87tsmou89o.fsf@pond.sub.org> (raw)
In-Reply-To: <CAMxuvax65ysmLnOEWbC87GrZxfc86a+7dOb6ZVwenz-NWwvNQQ@mail.gmail.com> ("Marc-André Lureau"'s message of "Tue, 13 Oct 2026 19:29:19 +0400")

Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> Hi
>
> On Tue, Oct 13, 2026 at 5:56 PM Markus Armbruster <armbru@redhat.com> wrote:
>>
>> Marc-André Lureau <marcandre.lureau@redhat.com> writes:
>>
>> > Integer built-in types are currently canonicalized to "int" in
>> > query-qmp-schema. Consequently, clients cannot distinguish types such
>> > as int8, uint64, and size, even though they accept different ranges.
>>
>> This is by design.
>>
>> Width and signedness are an implementation detail.  We can change them
>> freely without affecting syntactic compatibility of the wire protocol.
>>
>> If we expose them, we can't anymore, and docs/devel/qapi-code-gen.rst
>> section "Compatibility considerations" needs an update.
>>
>> Why would this be useful?  Knowing width and signedness narrows down the
>> possible values some, but it need not be tight.
>
> Well, this was just a first step toward a better introspection support
> for constaints. I understand the wire format is just json int, but we
> may want to express ranges, enumeration of valid values, alignment,
> string format etc.. Exposing signdness and width is the basics, and
> establishes a pattern for carrying type-level metadata beyond just
> "json-type". This enable clients to do proper validation and UI
> generation without knowledge of commands and internals.

Let's assume for the sake of the argument we want to do this.

How to best communicate constraints to clients is not obvious.  Not
least because our idea on what constraints exactly we want to
communicate is little more than hand-waving so far.

Constraints on acceptable values for integer types could be encoded in
type names.  This is one way to communicate constraints.  Whether it's a
good way is not obvious.  But let's think about it some more.

We'd move from the single type name "int" to multiple ones.  In theory,
existing clients use type name "int" only to lookup the SchemaInfo, then
recognize "meta-type": "builtin", "json-type": "int".  Splitting up
built-in type "int" into several types does not affect such clients as
long as the @json-type value remains the same.  In practice, Hyrum's law
applies, and we'd have to work with client developers to make sure we're
not breaking existing clients.

Signedness and width are a crude approximation of the actual
constraints.  I doubt it's useful by itself, and I'm unwilling to commit
to a way to communicate constraints just for that.

Fortunately, this patch is only losely connected to what your series is
about, namely to "associate properties with QAPI schema types".  We can
simply drop it.  If you'd like to work on communicating constraints, we
can talk about scope and interface design separately.

[...]



  reply	other threads:[~2026-10-14  6:06 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-11 16:34 [PATCH v5 00/62] qom/qdev: associate properties with QAPI schema types Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 01/62] qapi: add QAPITypeInfo struct definition Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 02/62] qapi/gen: fix _module_basename for multi-dash 'what' parameters Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 03/62] qapi: factor out QAPISchemaUsedTypes from introspect visitor Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 04/62] qapi: register all introspectable types, not just QMP-reachable ones Marc-André Lureau
2026-09-18 13:36   ` Markus Armbruster
2026-09-18 14:02     ` Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 05/62] qapi: add type-infos generator Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 06/62] meson: add qapi-type-infos-*.c/h to build Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 07/62] qom: add qapi_type field to ObjectProperty Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 08/62] qapi/qom: add qapi-type field to ObjectPropertyInfo Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 09/62] qom/qmp: populate qapi-type in QMP handlers Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 10/62] qom/qmp: populate description & default-value in qom_property_info() Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 11/62] qom: add object_property_set_default_enum() Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 12/62] qom: add object_{class_}property_add_qapi Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 13/62] qom: add object_{class_}property_add_qapi_enum Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 14/62] tests: update check-qom-proplist for QAPI-aware property registration Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 15/62] qom: convert enum properties to QAPI-aware registration Marc-André Lureau
2026-10-13 13:40   ` Markus Armbruster
2026-09-11 16:34 ` [PATCH v5 16/62] qom: remove old enum property registration API Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 17/62] qom: convert struct properties to QAPI-aware registration Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 18/62] x86: convert OnOffAuto " Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 19/62] microvm: " Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 20/62] pc: convert OnOffAuto vmport property " Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 21/62] arm/virt: convert OnOffAuto acpi " Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 22/62] riscv/virt: convert OnOffAuto properties " Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 23/62] loongarch/virt: " Marc-André Lureau
2026-09-14  1:16   ` Bibo Mao
2026-09-11 16:34 ` [PATCH v5 24/62] hostmem-file: convert OnOffAuto rom property " Marc-André Lureau
2026-09-11 16:34 ` [PATCH v5 25/62] sev: convert OnOffAuto legacy-vm-type " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 26/62] whpx: convert OnOffAuto hyperv " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 27/62] whpx: convert OnOffAuto arch properties " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 28/62] accel/kvm: convert OnOffSplit property " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 29/62] whpx: " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 30/62] hw/ppc/spapr_caps: fix property type name Marc-André Lureau
2026-09-14  7:25   ` Amit Machhiwal
2026-09-11 16:35 ` [PATCH v5 31/62] ppc/spapr-caps: convert to QAPI-aware property registration Marc-André Lureau
2026-09-14  7:28   ` Amit Machhiwal
2026-09-11 16:35 ` [PATCH v5 32/62] net/colo-compare: fix compare_timeout setter visitor type Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 33/62] net/colo-compare: fix max_queue_size " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 34/62] hw/misc/xlnx-versal-trng: add missing getter for fips-fault-events Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 35/62] qom: convert scalar properties to QAPI-aware registration Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 36/62] i386/cpu: convert strList property " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 37/62] accel/hvf: convert OnOffSplit " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 38/62] i386/x86: convert SgxEPCList " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 39/62] virtio-balloon: convert guest-stats property to QAPI type Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 40/62] qom: replace object_property_add_tm with StructTm " Marc-André Lureau
2026-09-14  7:42   ` Amit Machhiwal
2026-09-11 16:35 ` [PATCH v5 41/62] hw/nvdimm: convert UUID property to QAPI-aware registration Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 42/62] hw/s390-virtio-ccw: convert loadparm " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 43/62] hw/ppc/spapr_drc: convert fdt " Marc-André Lureau
2026-09-14  7:43   ` Amit Machhiwal
2026-09-11 16:35 ` [PATCH v5 44/62] hw/gpio/pca955x: use QAPI enums for led and pin properties Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 45/62] include: add QEMU_REPEAT helper macro Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 46/62] hw/gpio/pca955x: convert pin/led property to QAPI-aware enum Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 47/62] hw/pci: change the busnr type to uint8 Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 48/62] qdev: add qapi_type field to PropertyInfo with fallback registration Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 49/62] qdev: convert core PropertyInfo definitions to use qapi_type Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 50/62] qdev: adjust PciDevfn declared type Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 51/62] qdev: convert system PropertyInfo definitions to use qapi_type Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 52/62] hw: convert device-local " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 53/62] target/riscv: convert " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 54/62] qdev: " Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 55/62] qdev: introduce typed array PropertyInfos Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 56/62] qdev: simplify DEFINE_PROP_ARRAY and remove generic array PropertyInfo Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 57/62] qdev: remove deprecated PropertyInfo.type and .enum_table fields Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 58/62] hw/i386: convert PCSouthBridgeOption to QAPI enum Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 59/62] qom: use QAPITypeInfo in object_property_get_enum Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 60/62] qapi: expose integer signedness and width in introspection Marc-André Lureau
2026-10-13 13:56   ` Markus Armbruster
2026-10-13 15:29     ` Marc-André Lureau
2026-10-14  6:05       ` Markus Armbruster [this message]
2026-09-11 16:35 ` [PATCH v5 61/62] tests/qmp-cmd-test: assert qapi-type resolves in query-qmp-schema Marc-André Lureau
2026-09-11 16:35 ` [PATCH v5 62/62] qapi: select introspectable types directly Marc-André Lureau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87tsmou89o.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=eblake@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@oss.qualcomm.com \
    --cc=pierrick.bouvier@oss.qualcomm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.