From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>, qemu-devel@nongnu.org
Subject: Re: [PATCH 00/33] First Rust update for QEMU 10.2
Date: Mon, 15 Sep 2025 18:51:45 +0100 [thread overview]
Message-ID: <aMhSMXOiUFs4_9UH@redhat.com> (raw)
In-Reply-To: <0c35eccb-890a-47d1-8c54-9945519f6164@redhat.com>
On Mon, Sep 15, 2025 at 04:27:47PM +0200, Paolo Bonzini wrote:
> On 9/11/25 12:04, Peter Maydell wrote:
> > On Mon, 8 Sept 2025 at 11:53, Paolo Bonzini <pbonzini@redhat.com> wrote:
> > >
> > > This includes:
> > > - bumping MSRV to 1.83.0 to support const_refs_to_static
> > > - Zhao's safe, builder-based implementation of migration callbacks
> > > - Manos's qdev properties macro. While bit-based properties are
> > > not yet supported, that's a small change overall.
> > > - the Rust crate split from Marc-André
> > > - adding proc macro aliases in individual crates, also from Marc-André
> > >
> > > I'm still not convinced about having "bql" depend on "migration",
> > > but I am convinced by the crate split between "util" and "bql",
> > > so we can move the implementation of VMState from "bql" to
> > > "migration" later if needed.
> > >
> > > For the purpose of getting this in as an easy-to-use base for future
> > > development, I'm disabling CI from Debian and Ubuntu. The plan is:
> > > - that Debian will require trixie to enable Rust usage
> > > - that Ubuntu will backport 1.83 to its 22.04 and 24.04 versions
> > > (https://bugs.launchpad.net/ubuntu/+source/rustc-1.83/+bug/2120318)
> > > - that Marc-André or someone else will add Rust to other CI jobs
> >
> > How far into the future does moving to 1.83.0 push our
> > "we can enable rust and make it mandatory" point? I was
> > hoping we would be able to do that sometime soon but this
> > sounds like we're going to be still a long way out from that :-(
> Sorry for not seeing the question, the good news is that it doesn't push it
> by much, if at all. Debian bookworm has even updated rustc-web last month
> to 1.85.0 (say thanks to Firefox), so the only remaining straggler is Ubuntu
> and they're working on it.
>
> As far as technical blockers go, Marc-André has a couple fixes pending in
> Meson, and of course tracing support is still in flight. But we could
> enable it for 10.2 in CI and 11.0 in configure.
>
> The bad news is that enabling Rust by default is a bit like a point of no
> return and, in that respect, other factors may matter more than distro
> support:
>
> * Community support: it's a lot of new code to deal with, and we're not
> Linux.
That is true, but we're already seeing alot of stuff that is directly
adjacent to QEMU that is written in Rust, with some overlaps amongst
contributors. Coconut SVSM, IGVM, Rust VMM, virtiofsd, libbkio, and
more besides.
So if we consider community as "open source virtualization devs" it
looks like there is a reasonable pool of talent with experience that
can cross-pollinate with QEMU.
> * What's the killer app: DMA support may take a bit longer, so right now
> Rust is limited to very simple devices for which memory safety is not a
> primary issue. Could it be BQL-free interrupts, where even simpler devices
> like interrupt controllers could benefit from a more picky compiler?
I suggest we don't try to over-think this too much, as it'll become
a bit of a chicken and egg problem.
IMHO initial ideas for Rust usage will inevitable be fairly simple,
as that's part of the learning process for all of us, avoiding trying
to bite off too much too quickly. As a result, the initial work will
not look very compelling The more worthwhile and substantial things
will only arrive once use of Rust in QEMU has had time to marinate,
and at least some of them will be things we can't thing of ahead of
time.
"if you build it, they will come"
Even if QEMU doesn't mandate Rust directly, Rust is already a part of
QEMU indirectly, so on the distro front the point of no return is
pretty much already here unless you want to cut out an increasing
number of interesting features.
eg we see ourselves integrating with libblkio, and igvm, both of which
we do via C shims around the Rust code. There are more of such things
to come - a Rust impl of the EDK vars storage is probable, there are
virtee crates for dealing with low level SEV pieces that have been
proposed before and seem interesting.
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 :|
prev parent reply other threads:[~2025-09-15 17:53 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-08 10:49 [PATCH 00/33] First Rust update for QEMU 10.2 Paolo Bonzini
2025-09-08 10:49 ` [PATCH 01/33] ci: temporarily remove rust from Debian and Ubuntu Paolo Bonzini
2025-09-11 3:14 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 03/33] meson, cargo: require Rust 1.83.0 Paolo Bonzini
2025-09-11 3:19 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 04/33] rust: add missing const markers for MSRV==1.83.0 Paolo Bonzini
2025-09-11 3:20 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 05/33] rust: use inline const expressions Paolo Bonzini
2025-09-11 6:15 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 06/33] rust: add qdev Device derive macro Paolo Bonzini
2025-09-11 6:58 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 07/33] rust: vmstate: convert to use builder pattern Paolo Bonzini
2025-09-08 10:49 ` [PATCH 08/33] rust: vmstate: use const_refs_to_static Paolo Bonzini
2025-09-11 10:07 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 09/33] rust: qdev: const_refs_to_static Paolo Bonzini
2025-09-11 10:20 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 10/33] docs/rust: update msrv Paolo Bonzini
2025-09-11 10:21 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 11/33] rust: remove unused global qemu "allocator" Paolo Bonzini
2025-09-11 10:21 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 12/33] rust: add workspace authors Paolo Bonzini
2025-09-11 10:23 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 13/33] rust: move vmstate_clock!() to qdev module Paolo Bonzini
2025-09-11 10:25 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 14/33] rust: move VMState handling to QOM module Paolo Bonzini
2025-09-11 10:26 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 15/33] rust: move Cell vmstate impl Paolo Bonzini
2025-09-11 10:31 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 16/33] rust: split Rust-only "common" crate Paolo Bonzini
2025-09-11 10:44 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 17/33] rust: make build.rs generic over various ./rust/projects Paolo Bonzini
2025-09-12 7:43 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 18/33] rust: split "util" crate Paolo Bonzini
2025-09-12 8:00 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 19/33] rust: split "migration" crate Paolo Bonzini
2025-09-12 8:09 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 20/33] rust: split "bql" crate Paolo Bonzini
2025-09-12 8:31 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 21/33] rust: split "qom" crate Paolo Bonzini
2025-09-08 10:49 ` [PATCH 22/33] rust: split "chardev" crate Paolo Bonzini
2025-09-12 8:35 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 23/33] rust: split "system" crate Paolo Bonzini
2025-09-12 8:38 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 24/33] rust: split "hwcore" crate Paolo Bonzini
2025-09-12 8:41 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 25/33] rust: rename qemu_api_macros -> qemu_macros Paolo Bonzini
2025-09-12 8:41 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 26/33] rust/hpet: drop now unneeded qemu_api dep Paolo Bonzini
2025-09-12 8:42 ` Zhao Liu
2025-09-08 10:49 ` [PATCH 27/33] rust/pl011: drop dependency on qemu_api Paolo Bonzini
2025-09-12 8:45 ` Zhao Liu
2025-09-08 10:50 ` [PATCH 28/33] rust: repurpose qemu_api -> tests Paolo Bonzini
2025-09-12 8:57 ` Zhao Liu
2025-09-08 10:50 ` [PATCH 29/33] rust: re-export qemu_macros internal helper in "bits" Paolo Bonzini
2025-09-12 9:01 ` Zhao Liu
2025-09-08 10:50 ` [PATCH 30/33] rust: re-export qemu macros from common/qom/hwcore Paolo Bonzini
2025-09-12 9:03 ` Zhao Liu
2025-09-08 10:50 ` [PATCH 31/33] docs: update rust.rst Paolo Bonzini
2025-09-12 9:13 ` Zhao Liu
2025-09-08 10:50 ` [PATCH 32/33] rust: meson: remove unnecessary complication in device crates Paolo Bonzini
2025-09-12 9:20 ` Zhao Liu
2025-09-08 10:50 ` [PATCH 33/33] rust: do not inline do_init_io Paolo Bonzini
2025-09-12 9:21 ` Zhao Liu
[not found] ` <20250908105005.2119297-3-pbonzini@redhat.com>
2025-09-11 3:17 ` [PATCH 02/33] configure: bump Meson to 1.9.0 for use with Rust Zhao Liu
2025-09-11 10:04 ` [PATCH 00/33] First Rust update for QEMU 10.2 Peter Maydell
2025-09-11 11:18 ` Marc-André Lureau
2025-09-12 7:42 ` Zhao Liu
2025-09-12 8:47 ` Marc-André Lureau
2025-09-15 14:27 ` Paolo Bonzini
2025-09-15 17:51 ` Daniel P. Berrangé [this message]
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=aMhSMXOiUFs4_9UH@redhat.com \
--to=berrange@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).