From: Kevin Wolf <kwolf@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [RFC PATCH 00/16] rust: allow older versions of rustc and bindgen
Date: Fri, 18 Oct 2024 15:09:58 +0200 [thread overview]
Message-ID: <ZxJeJtiMt1xVqk54@redhat.com> (raw)
In-Reply-To: <20241015131735.518771-1-pbonzini@redhat.com>
Am 15.10.2024 um 15:17 hat Paolo Bonzini geschrieben:
> This includes a few fixes to the Rust build system machinery, and
> removes constructs that were added or stabilized after version 1.63.0:
Most of this series looks harmless in the sense that we need to write
some workaround code in a single place and can forget about it. So
that's good.
> - "let else" (by patching bilge-impl, patch 4; stable in 1.65.0)
This one affects all of the code we'll write and the replacement is a
bit unwieldy. It might be the most annoying one from the list.
> - std::sync::OnceLock (patch 6; stable in 1.70.0)
>
> - core::ffi (patch 7; stable in 1.64.0)
>
> - c"" literals (patch 9; stable in 1.77.0)
This one will be fairly widespread, too, but only a minor inconvenience.
> - offset_of! (patch 10; stable in 1.77.0)
Requiring structs to be wrapped in with_offsets! has potential to become
quite annoying, too, but it seems we already have a solution for this
with the proc macro.
> - MaybeUninit::zeroed() (patch 11; stable in 1.75.0 in const context)
>
> It also replicates the configuration checks normally done by
> proc-macro2's build.rs into our Meson-based build rules, so that
> the crate can be made to work with an older version of rustc.
>
> As a small bonus, patch 11 removes some uses of unsafe, so that patch
> probably won't just be simply reverted even once we can assume version
> 1.75.0 of the language. And as another small bonus this series introduces
> the first use of Rust unit tests.
>
> On top of this, the required version of bindgen is still too new
> for Debian 12 and Ubuntu 22.04. This is fixed by the last four patches.
>
> This is an RFC for two reasons. First, because it would be a valid
> decision to delay enabling of Rust until at least some of these
> features are available in all supported distros. Another possibility
> could be to accept Rust 1.64.0 but require installing a newer bindgen
> (0.66.x for example) on those two distros with an older release. Second,
> because the series is missing the CI updates to actually ensure that
> these minimum versions keep working.
>
> The main purpose is to show the kind of hacks that would be needed
> to support older toolchains. The fixes (for example patches
> 1/2/3/6/8/11/13/14) can be easily extracted independent of the outcome
> of the discussion, and/or while the CI updates are made.
It would probably make sense to just go ahead and apply the fixes. They
seem a lot more obvious than the question which toolchains we want to
support.
Kevin
next prev parent reply other threads:[~2024-10-18 13:10 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-15 13:17 [RFC PATCH 00/16] rust: allow older versions of rustc and bindgen Paolo Bonzini
2024-10-15 13:17 ` [PATCH 01/16] meson: import rust module into a global variable Paolo Bonzini
2024-10-18 15:12 ` Zhao Liu
2024-10-15 13:17 ` [PATCH 02/16] meson: remove repeated search for rust_root_crate.sh Paolo Bonzini
2024-10-16 6:50 ` Junjie Mao
2024-10-18 15:16 ` Zhao Liu
2024-10-15 13:17 ` [PATCH 03/16] rust: pass rustc_args when building all crates Paolo Bonzini
2024-10-21 6:32 ` Zhao Liu
2024-10-21 13:38 ` Paolo Bonzini
2024-10-21 14:49 ` Zhao Liu
2024-10-22 2:22 ` Junjie Mao
2024-10-22 3:59 ` Paolo Bonzini
2024-10-15 13:17 ` [PATCH 04/16] rust: patch bilge-impl to allow compilation with 1.63.0 Paolo Bonzini
2024-10-18 15:55 ` Zhao Liu
2024-10-15 13:17 ` [PATCH 05/16] rust: fix cfgs of proc-macro2 for 1.63.0 Paolo Bonzini
2024-10-21 7:40 ` Zhao Liu
2024-10-15 13:17 ` [PATCH 06/16] rust: do not use OnceLock for properties Paolo Bonzini
2024-10-18 16:02 ` Zhao Liu
2024-10-15 13:17 ` [PATCH 07/16] rust: use std::os::raw instead of core::ffi Paolo Bonzini
2024-10-18 16:07 ` Zhao Liu
2024-10-15 13:17 ` [PATCH 08/16] rust: build tests for the qemu_api crate Paolo Bonzini
2024-10-21 9:07 ` Zhao Liu
2024-10-21 8:51 ` Paolo Bonzini
2024-10-21 14:51 ` Zhao Liu
2024-10-21 14:36 ` Paolo Bonzini
2024-10-21 16:04 ` Zhao Liu
2024-10-15 13:17 ` [PATCH 09/16] rust: introduce a c_str macro Paolo Bonzini
2024-10-15 13:17 ` [PATCH 10/16] rust: introduce alternative implementation of offset_of! Paolo Bonzini
2024-10-17 5:07 ` Junjie Mao
2024-10-17 8:44 ` Paolo Bonzini
2024-10-18 3:01 ` Junjie Mao
2024-10-18 6:51 ` Paolo Bonzini
2024-10-15 13:17 ` [PATCH 11/16] rust: do not use MaybeUninit::zeroed() Paolo Bonzini
2024-10-15 13:17 ` [PATCH 12/16] rust: allow version 1.63.0 of rustc Paolo Bonzini
2024-10-16 6:01 ` Junjie Mao
2024-10-16 7:51 ` Paolo Bonzini
2024-10-16 9:53 ` Junjie Mao
2024-10-18 2:44 ` Junjie Mao
2024-10-18 9:56 ` Paolo Bonzini
2024-10-15 13:17 ` [PATCH 13/16] rust: do not use TYPE_CHARDEV unnecessarily Paolo Bonzini
2024-10-15 13:17 ` [PATCH 14/16] rust: do not use --no-size_t-is-usize Paolo Bonzini
2024-10-15 13:17 ` [PATCH 15/16] rust: do not use --generate-cstr Paolo Bonzini
2024-10-15 13:17 ` [PATCH 16/16] rust: allow older version of bindgen Paolo Bonzini
2024-10-16 6:15 ` Junjie Mao
2024-10-16 7:50 ` Paolo Bonzini
2024-10-18 13:09 ` Kevin Wolf [this message]
2024-10-18 13:31 ` [RFC PATCH 00/16] rust: allow older versions of rustc and bindgen Daniel P. Berrangé
2024-10-18 15:43 ` Paolo Bonzini
2024-10-18 17:05 ` Kevin Wolf
2024-10-21 14:15 ` Peter Maydell
2024-10-21 14:48 ` Paolo Bonzini
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=ZxJeJtiMt1xVqk54@redhat.com \
--to=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--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).