qemu/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
about
config
devel qapi: New special feature flag "unstable" 2021-10-29 15:55:52 +02:00
interop
specs
sphinx
sphinx-static
spin
system
tools
user
amd-memory-encryption.txt
block-replication.txt
bypass-iommu.txt
can.txt
ccid.txt
COLO-FT.txt
colo-proxy.txt
conf.py
confidential-guest-support.txt
defs.rst.inc
hyperv.txt
igd-assign.txt
image-fuzzer.txt
index.rst
memory-hotplug.txt
meson.build
multi-thread-compression.txt
multiseat.txt
nvdimm.txt
papr-pef.txt
pci_expander_bridge.txt
pcie_pci_bridge.txt
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