qemu/docs/devel
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
..
atomics.rst
bitops.rst
blkdebug.txt
blkverify.txt
block-coroutine-wrapper.rst
build-system.rst
ci-definitions.rst.inc
ci-jobs.rst.inc
ci-runners.rst.inc
ci.rst
clocks.rst
code-of-conduct.rst
conflict-resolution.rst
control-flow-integrity.rst
decodetree.rst
ebpf_rss.rst
fuzzing.rst
index.rst
kconfig.rst
loads-stores.rst
lockcnt.txt
memory.rst
migration.rst
modules.rst
multi-process.rst
multi-thread-tcg.rst
multiple-iothreads.txt
qapi-code-gen.rst qapi: New special feature flag "unstable" 2021-10-29 15:55:52 +02:00
qgraph.rst
qom.rst
qtest.rst
rcu.txt
replay.txt
reset.rst
s390-dasd-ipl.rst
secure-coding-practices.rst
stable-process.rst
style.rst
tcg-icount.rst
tcg-plugins.rst
tcg.rst
testing.rst
tracing.rst
ui.rst
vfio-migration.rst
virtio-migration.txt
writing-qmp-commands.rst