From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Cc: qemu-devel@nongnu.org,
"Gustavo Bueno Romero" <gustavo.romero@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Phil Mathieu-Daudé" <philmd@linaro.org>,
"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [PATCH v2 00/11] plugins: enable C++ plugins
Date: Fri, 16 Jan 2026 12:35:42 +0000 [thread overview]
Message-ID: <aWownlTDHCx10w9I@redhat.com> (raw)
In-Reply-To: <20260102214724.4128196-1-pierrick.bouvier@linaro.org>
On Fri, Jan 02, 2026 at 01:47:13PM -0800, Pierrick Bouvier wrote:
> Writing plugins in C can be sometimes tedious, especially when using Glib to
> keep track of execution state. We can directly use the same C API but write our
> plugin in C++, benefiting from its great standard library offering strings,
> smart pointers, data structures and synchronization mechanisms.
>
> It's common for downstream QEMU forks to provide C++ for plugins, like this:
> - https://github.com/panda-re/panda/tree/dev/panda/plugins
> - https://github.com/FlorentRevest/DejaView/tree/main/src/qemu_plugin
>
> Hopefully this will help more people to use upstream QEMU, and as a benefit, get
> their contribution back and help to develop plugins ecosystem upstream directly.
>
> This series first cleans up build system for plugins, factorizing details
> between contrib/plugins and tests/tcg/plugins folders.
> Then, we perform codebase cleanups to fix conflicts between existing headers
> and C++ headers.
> After that, we can update the C++ standard used by QEMU, to benefit fully
> from latest updates of the language.
> Finally, we define an empty C++ plugin, making sure we can keep track of
> possible regression in qemu-plugin header.
>
> Note: This series is *not* a trojan horse to bring C++ in QEMU
> codebase, nor to define an alternative C++ API for plugins. It's just enabling
> more users to get the most out of existing C plugin API.
That's somewhat misleading, because as the diffstat below shows,
this is indeed bringing new C++ source files into QEMU:
contrib/plugins/cpp.cpp | 119 ++++++++++++++++++++
and the description above talks about bringing more C++ plugins in
from external forks, and the meson.build files are modified to
deal with C++.
We've had a handful of C++ files historically we've worked to
reduce, with the eventual goal of not using a C++ toolchain for
any part of QEMU build. Given that IMHO qemu.git should not be
adding new C++ sources files, even if in the plugins dir.
Since the qemu-plugin.h file should be entirely self-contained,
do we actually need to be bundling all the plugins into qemu.git ?
Should we in fact have a sepate gitlab.com/qemu/qemu-plugins repository
where we keep plugins ?
Since the qemu-plugin.h file is defining a somewhat stable API, plugins
in that separate repo ought to be able to build against multiple QEMU
releases, and could thus benefit from not being bundled together and
don't need to be on the same release cycle.
The main qemu.git CI jobs could trigger testing of a separate
qemu-plugins.git repo, so we still validate no regressions.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2026-01-16 12:37 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-02 21:47 [PATCH v2 00/11] plugins: enable C++ plugins Pierrick Bouvier
2026-01-02 21:47 ` [PATCH v2 01/11] plugins: move win32_linker.c file to plugins directory Pierrick Bouvier
2026-01-03 12:46 ` Manos Pitsidianakis
2026-01-05 4:33 ` Richard Henderson
2026-01-02 21:47 ` [PATCH v2 02/11] plugins: factorize plugin dependencies and library details Pierrick Bouvier
2026-01-16 12:22 ` Daniel P. Berrangé
2026-01-17 0:02 ` Pierrick Bouvier
2026-01-19 8:09 ` Daniel P. Berrangé
2026-01-19 16:52 ` Pierrick Bouvier
2026-01-02 21:47 ` [PATCH v2 03/11] plugins: use complete filename for defining plugins sources Pierrick Bouvier
2026-01-03 12:47 ` Manos Pitsidianakis
2026-01-02 21:47 ` [PATCH v2 04/11] plugins: define plugin API symbols as extern "C" when compiling in C++ Pierrick Bouvier
2026-01-05 5:10 ` Richard Henderson
2026-01-18 18:30 ` Philippe Mathieu-Daudé
2026-01-02 21:47 ` [PATCH v2 05/11] tests/tcg/plugins/mem.c: remove dependency on qemu headers Pierrick Bouvier
2026-01-03 12:49 ` Manos Pitsidianakis
2026-01-18 18:30 ` Philippe Mathieu-Daudé
2026-01-02 21:47 ` [PATCH v2 06/11] plugins: move qemu-plugin.h to include/plugins/ Pierrick Bouvier
2026-01-03 12:53 ` Manos Pitsidianakis
2026-01-05 5:13 ` Richard Henderson
2026-01-02 21:47 ` [PATCH v2 07/11] meson: fix supported compiler arguments in other languages than C Pierrick Bouvier
2026-01-03 12:54 ` Manos Pitsidianakis
2026-01-03 20:39 ` Pierrick Bouvier
2026-01-04 10:03 ` Manos Pitsidianakis
2026-01-02 21:47 ` [PATCH v2 08/11] meson: enable cpp (optionally) for plugins Pierrick Bouvier
2026-01-03 13:02 ` Manos Pitsidianakis
2026-01-02 21:47 ` [PATCH v2 09/11] qga/vss-win32: fix clang warning with C++20 Pierrick Bouvier
2026-01-03 13:03 ` Manos Pitsidianakis
2026-01-02 21:47 ` [PATCH v2 10/11] meson: update C++ standard to C++23 Pierrick Bouvier
2026-01-03 13:04 ` Manos Pitsidianakis
2026-01-02 21:47 ` [PATCH v2 11/11] contrib/plugins: add empty cpp plugin Pierrick Bouvier
2026-01-03 13:05 ` Manos Pitsidianakis
2026-01-15 20:53 ` [PATCH v2 00/11] plugins: enable C++ plugins Pierrick Bouvier
2026-01-16 12:35 ` Daniel P. Berrangé [this message]
2026-01-16 18:52 ` Pierrick Bouvier
2026-01-19 19:13 ` Pierrick Bouvier
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=aWownlTDHCx10w9I@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=gustavo.romero@linaro.org \
--cc=manos.pitsidianakis@linaro.org \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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.