{"id":2230500,"url":"http://patchwork.ozlabs.org/api/1.1/covers/2230500/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/cover/20260429192611.1581223-1-jsnow@redhat.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.1/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260429192611.1581223-1-jsnow@redhat.com>","date":"2026-04-29T19:25:58","name":"[v2,00/13] qapi: add formal \"intro\" section","submitter":{"id":64343,"url":"http://patchwork.ozlabs.org/api/1.1/people/64343/?format=json","name":"John Snow","email":"jsnow@redhat.com"},"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/cover/20260429192611.1581223-1-jsnow@redhat.com/mbox/","series":[{"id":502140,"url":"http://patchwork.ozlabs.org/api/1.1/series/502140/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502140","date":"2026-04-29T19:25:59","name":"qapi: add formal \"intro\" section","version":2,"mbox":"http://patchwork.ozlabs.org/series/502140/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2230500/comments/","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=OGLFFZaX;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5S3k6XSNz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 05:26:58 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wIAYH-0006IB-9F; Wed, 29 Apr 2026 15:26:29 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <jsnow@redhat.com>) id 1wIAYE-0006Bg-J2\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 15:26:26 -0400","from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <jsnow@redhat.com>) id 1wIAYC-0007dk-Tu\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 15:26:26 -0400","from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-210-xHU29jW2PUOFt8HqY24IHw-1; Wed,\n 29 Apr 2026 15:26:19 -0400","from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 863411800578; Wed, 29 Apr 2026 19:26:17 +0000 (UTC)","from jsnow-thinkpadp16vgen1.westford.csb (unknown [10.22.80.204])\n by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 8755F180045E; Wed, 29 Apr 2026 19:26:13 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777490782;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=gE7lnCa/yZ2FWSaG/fHh3KUOFynL2xQEVw/BkW7oA90=;\n b=OGLFFZaX2uiFtCaZD+gUnwUc2Btu+uzeiTN12Ek3yFqfQXLmX5M8qoEF/SiXZc6z1dO2rW\n wKje3VFy+SPokWizPh3RkQOIHxO9jZ+jrPCAfzi+ViCyAxWfgPnLYEesxLLec+t2Sjg8+2\n O1WQXVErDa+zx8Jw4O20GJ69z0op8RI=","X-MC-Unique":"xHU29jW2PUOFt8HqY24IHw-1","X-Mimecast-MFC-AGG-ID":"xHU29jW2PUOFt8HqY24IHw_1777490777","From":"John Snow <jsnow@redhat.com>","To":"qemu-devel@nongnu.org","Cc":"Michael Roth <michael.roth@amd.com>, Eric Blake <eblake@redhat.com>,\n\t=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n John Snow <jsnow@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,\n Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,\n \"Michael S. Tsirkin\" <mst@redhat.com>,\n Peter Maydell <peter.maydell@linaro.org>,\n Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,\n Igor Mammedov <imammedo@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>,\n Ani Sinha <anisinha@redhat.com>,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n Markus Armbruster <armbru@redhat.com>","Subject":"[PATCH v2 00/13] qapi: add formal \"intro\" section","Date":"Wed, 29 Apr 2026 15:25:58 -0400","Message-ID":"<20260429192611.1581223-1-jsnow@redhat.com>","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","X-Scanned-By":"MIMEDefang 3.4.1 on 10.30.177.111","Received-SPF":"pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"Hiya, this is a series that explores a potential syntax for a\ndesignated \"Intro\" section. Markus knows why I want this, but for\neveryone else: a designated \"Introduction\" section is useful for the\ndesired \"inliner\" feature for the new QAPI doc system. Commits explain\na bit more. This is prep work and doesn't really change anything\ntangibly except source code syntax for the QAPI docs.\n\nIt is designed so that this conversion can happen incrementally with\nno actual difference to the rendered manuals, so each QAPI module can\nbe converted one at a time for easier review and merging in an\narbitrary order.\n\nThis series demonstrates conversion of just four modules; if I'm given\na thumbs up, I will convert the rest of QAPI, one module (or\nmaintainer stanza) per patch like how I handled adding\ncross-references.\n\n**\n\nV2: punt intro sections to the subsequent line and adjust the parser\naccordingly. Left as an RFC patch that undoes some things this series\ndoes instead of properly factoring into the series.\n\nJohn Snow (13):\n  tests/qapi: generate output in source order\n  qapi/docs: remove unused QAPIDoc subsection members\n  qapi/docs: make remaining subsection members \"private\"\n  qapi/docs: add \"Intro\" section\n  qapi/docs: adjust stub member insertion algorithm\n  qapi/docs: remove implicit Plain section\n  qapi/docs: add \"Intro\" section parsing\n  qapi/docs: Add rendering for INTRO sections\n  qapi: convert intro sections for accelerator.json\n  qapi: convert intro sections for acpi-hest.json\n  qapi: convert intro sections for acpi.json\n  qapi: convert intro sections for audio.json\n  rfc: intro starts on next line\n\n docs/devel/qapi-code-gen.rst   |  17 ++-\n docs/sphinx/qapidoc.py         |  53 +++++----\n qapi/accelerator.json          |  18 +--\n qapi/acpi-hest.json            |   4 +-\n qapi/acpi.json                 |  18 ++-\n qapi/audio.json                |  88 ++++++---------\n scripts/qapi/parser.py         | 198 ++++++++++++++++++++-------------\n tests/qapi-schema/doc-good.out |  30 ++---\n tests/qapi-schema/test-qapi.py |  15 +--\n 9 files changed, 231 insertions(+), 210 deletions(-)"}