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 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.