xemu/docs
Markus Armbruster a3c45b3e62 qapi: New special feature flag "unstable"
By convention, names starting with "x-" are experimental.  The parts
of external interfaces so named may be withdrawn or changed
incompatibly in future releases.

The naming convention makes unstable interfaces easy to recognize.
Promoting something from experimental to stable involves a name
change.  Client code needs to be updated.  Occasionally bothersome.

Worse, the convention is not universally observed:

* QOM type "input-barrier" has properties "x-origin", "y-origin".
  Looks accidental, but it's ABI since 4.2.

* QOM types "memory-backend-file", "memory-backend-memfd",
  "memory-backend-ram", and "memory-backend-epc" have a property
  "x-use-canonical-path-for-ramblock-id" that is documented to be
  stable despite its name.

We could document these exceptions, but documentation helps only
humans.  We want to recognize "unstable" in code, like "deprecated".

So support recognizing it the same way: introduce new special feature
flag "unstable".  It will be treated specially by the QAPI generator,
like the existing feature flag "deprecated", and unlike regular
feature flags.

This commit updates documentation and prepares tests.  The next commit
updates the QAPI schema.  The remaining patches update the QAPI
generator and wire up -compat policy checking.

Management applications can then use query-qmp-schema and -compat to
manage or guard against use of unstable interfaces the same way as for
deprecated interfaces.

docs/devel/qapi-code-gen.txt no longer mandates the naming convention.
Using it anyway might help writers of programs that aren't
full-fledged management applications.  Not using it can save us
bothersome renames.  We'll see how that shakes out.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Message-Id: <20211028102520.747396-2-armbru@redhat.com>
2021-10-29 15:55:52 +02:00
..
_templates docs: Add QEMU version information to HTML footer 2021-07-18 10:59:47 +01:00
about qapi: Enable enum member introspection to show more than name 2021-10-27 17:18:43 +02:00
config
devel qapi: New special feature flag "unstable" 2021-10-29 15:55:52 +02:00
interop docs: standardize directory index to --- with overline 2021-09-13 13:56:26 +02:00
specs docs: standardize directory index to --- with overline 2021-09-13 13:56:26 +02:00
sphinx qapidoc: introduce QAPISchemaIfCond.docgen() 2021-08-26 13:53:56 +02:00
sphinx-static sphinx: adopt kernel readthedoc theme 2021-05-14 15:05:03 +04:00
spin
system docs: Add documentation for vhost based RNG implementation 2021-10-20 04:37:55 -04:00
tools virtiofsd: xattr mapping add a new type "unsupported" 2021-10-25 18:48:23 +01:00
user docs: standardize directory index to --- with overline 2021-09-13 13:56:26 +02:00
amd-memory-encryption.txt docs: Add SEV-ES documentation to amd-memory-encryption.txt 2021-06-17 14:11:06 -04:00
block-replication.txt
bypass-iommu.txt docs: Add documentation for iommu bypass 2021-07-16 11:10:45 -04:00
can.txt
ccid.txt hw/usb/ccid: remove references to NSS 2021-07-14 14:33:53 +01:00
COLO-FT.txt
colo-proxy.txt
conf.py docs: Fix documentation Copyright date 2021-07-18 10:59:46 +01:00
confidential-guest-support.txt
defs.rst.inc
hyperv.txt i386: Change the default Hyper-V version to match WS2016 2021-10-01 19:04:45 +02:00
igd-assign.txt
image-fuzzer.txt
index.rst docs: standardize book titles to === with overline 2021-09-13 13:56:26 +02:00
memory-hotplug.txt
meson.build trace: move configuration from configure to Meson 2021-10-14 09:50:56 +02:00
multi-thread-compression.txt
multiseat.txt
nvdimm.txt docs/nvdimm: Update nvdimm option value in machine example 2021-09-27 10:57:21 +02:00
papr-pef.txt
pci_expander_bridge.txt
pcie_pci_bridge.txt docs: add slot when adding new PCIe root port 2021-07-03 03:12:35 -04:00
pcie.txt
pvrdma.txt
qcow2-cache.txt
qdev-device-use.txt
qemu_logo.pdf
qemu-option-trace.rst.inc
qemupciserial.inf
rdma.txt
replay.txt
spice-port-fqdn.txt
throttle.txt
u2f.txt
virtio-balloon-stats.txt
xbzrle.txt
xen-save-devices-state.txt