qemu-rust.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] rust: little clean-ups and updates
@ 2025-08-26 13:31 marcandre.lureau
  2025-08-26 13:31 ` [PATCH 1/4] rust: run cargo update marcandre.lureau
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: marcandre.lureau @ 2025-08-26 13:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Manos Pitsidianakis, Daniel P. Berrangé,
	Philippe Mathieu-Daudé, pbonzini, qemu-rust,
	Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Hi,

Here are just a few clean-up patches I collected.

Marc-André Lureau (4):
  rust: run cargo update
  rust: remove unused global qemu "allocator"
  build-sys/rust: update syn to v2.0.106
  rust/qemu-api-macros: make derive(Object) friendly when missing parent

 meson.build                     |   4 -
 rust/Cargo.lock                 |  40 +++++-----
 rust/Cargo.toml                 |   2 +-
 rust/qemu-api-macros/src/lib.rs |  10 ++-
 rust/qemu-api/Cargo.toml        |   1 -
 rust/qemu-api/meson.build       |   1 -
 rust/qemu-api/src/lib.rs        | 135 --------------------------------
 subprojects/.gitignore          |   2 +-
 subprojects/syn-2-rs.wrap       |   8 +-
 9 files changed, 35 insertions(+), 168 deletions(-)

-- 
2.50.1



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/4] rust: run cargo update
  2025-08-26 13:31 [PATCH 0/4] rust: little clean-ups and updates marcandre.lureau
@ 2025-08-26 13:31 ` marcandre.lureau
  2025-08-26 17:43   ` Paolo Bonzini
  2025-08-26 13:31 ` [PATCH 2/4] rust: remove unused global qemu "allocator" marcandre.lureau
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: marcandre.lureau @ 2025-08-26 13:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Manos Pitsidianakis, Daniel P. Berrangé,
	Philippe Mathieu-Daudé, pbonzini, qemu-rust,
	Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Usually, rust projects have CI bots to do that and check that nothing
breaks. We should add this to our TODO list.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 rust/Cargo.lock | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/rust/Cargo.lock b/rust/Cargo.lock
index b785c718f3..3433cdcf6e 100644
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -4,15 +4,15 @@ version = 3
 
 [[package]]
 name = "anyhow"
-version = "1.0.98"
+version = "1.0.99"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
+checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100"
 
 [[package]]
 name = "arbitrary-int"
-version = "1.2.7"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c84fc003e338a6f69fbd4f7fe9f92b535ff13e9af8997f3b14b6ddff8b1df46d"
+checksum = "825297538d77367557b912770ca3083f778a196054b3ee63b22673c4a3cae0a5"
 
 [[package]]
 name = "bilge"
@@ -46,15 +46,15 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.12.0"
+version = "1.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
 
 [[package]]
 name = "foreign"
-version = "0.3.1"
+version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17ca1b5be8c9d320daf386f1809c7acc0cb09accbae795c2001953fa50585846"
+checksum = "bec05eb9c07a3f66653535e5e50eb5eb935eb00d3bb7e06ea26a9d3a1d016182"
 dependencies = [
  "libc",
 ]
@@ -78,9 +78,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.162"
+version = "0.2.175"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398"
+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
 
 [[package]]
 name = "pl011"
@@ -118,9 +118,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.84"
+version = "1.0.101"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
+checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
 dependencies = [
  "unicode-ident",
 ]
@@ -146,18 +146,18 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.36"
+version = "1.0.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.66"
+version = "2.0.106"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
+checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -166,12 +166,12 @@ dependencies = [
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.12"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
 
 [[package]]
 name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-- 
2.50.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/4] rust: remove unused global qemu "allocator"
  2025-08-26 13:31 [PATCH 0/4] rust: little clean-ups and updates marcandre.lureau
  2025-08-26 13:31 ` [PATCH 1/4] rust: run cargo update marcandre.lureau
@ 2025-08-26 13:31 ` marcandre.lureau
  2025-08-26 13:31 ` [PATCH 3/4] build-sys/rust: update syn to v2.0.106 marcandre.lureau
  2025-08-26 13:31 ` [PATCH 4/4] rust/qemu-api-macros: make derive(Object) friendly when missing parent marcandre.lureau
  3 siblings, 0 replies; 7+ messages in thread
From: marcandre.lureau @ 2025-08-26 13:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Manos Pitsidianakis, Daniel P. Berrangé,
	Philippe Mathieu-Daudé, pbonzini, qemu-rust,
	Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The global allocator has always been disabled. There is no clear reason
Rust and C should use the same allocator. Allocations made from Rust
must be freed by Rust, and same for C, otherwise we head into troubles.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 meson.build               |   4 --
 rust/Cargo.toml           |   2 +-
 rust/qemu-api/Cargo.toml  |   1 -
 rust/qemu-api/meson.build |   1 -
 rust/qemu-api/src/lib.rs  | 135 --------------------------------------
 5 files changed, 1 insertion(+), 142 deletions(-)

diff --git a/meson.build b/meson.build
index 50c774a195..ebbe9f8785 100644
--- a/meson.build
+++ b/meson.build
@@ -1090,9 +1090,6 @@ glib = declare_dependency(dependencies: [glib_pc, gmodule],
 # TODO: remove this check and the corresponding workaround (qtree) when
 # the minimum supported glib is >= 2.75.3
 glib_has_gslice = glib.version().version_compare('<2.75.3')
-# Check whether glib has the aligned_alloc family of functions.
-# <https://docs.gtk.org/glib/func.aligned_alloc.html>
-glib_has_aligned_alloc = glib.version().version_compare('>=2.72.0')
 
 # override glib dep to include the above refinements
 meson.override_dependency('glib-2.0', glib)
@@ -2706,7 +2703,6 @@ config_host_data.set('CONFIG_GETLOADAVG', cc.has_function('getloadavg'))
 config_host_data.set('HAVE_COPY_FILE_RANGE', cc.has_function('copy_file_range'))
 config_host_data.set('HAVE_GETIFADDRS', cc.has_function('getifaddrs'))
 config_host_data.set('HAVE_GLIB_WITH_SLICE_ALLOCATOR', glib_has_gslice)
-config_host_data.set('HAVE_GLIB_WITH_ALIGNED_ALLOC', glib_has_aligned_alloc)
 config_host_data.set('HAVE_OPENPTY', cc.has_function('openpty', dependencies: util))
 config_host_data.set('HAVE_STRCHRNUL', cc.has_function('strchrnul', prefix: osdep_prefix))
 config_host_data.set('HAVE_SYSTEM_FUNCTION', cc.has_function('system', prefix: '#include <stdlib.h>'))
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index 0868e1b426..1a24859cd7 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -17,7 +17,7 @@ rust-version = "1.77.0"
 
 [workspace.lints.rust]
 unexpected_cfgs = { level = "deny", check-cfg = [
-    'cfg(MESON)', 'cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)',
+    'cfg(MESON)',
 ] }
 
 # Occasionally, we may need to silence warnings and clippy lints that
diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml
index db7000dee4..603327945f 100644
--- a/rust/qemu-api/Cargo.toml
+++ b/rust/qemu-api/Cargo.toml
@@ -21,7 +21,6 @@ foreign = "~0.3.1"
 
 [features]
 default = ["debug_cell"]
-allocator = []
 debug_cell = []
 
 [lints]
diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build
index a090297c45..062009f161 100644
--- a/rust/qemu-api/meson.build
+++ b/rust/qemu-api/meson.build
@@ -2,7 +2,6 @@ _qemu_api_cfg = run_command(rustc_args,
   '--config-headers', config_host_h, '--features', files('Cargo.toml'),
   capture: true, check: true).stdout().strip().splitlines()
 
-# _qemu_api_cfg += ['--cfg', 'feature="allocator"']
 if get_option('debug_mutex')
   _qemu_api_cfg += ['--cfg', 'feature="debug_cell"']
 endif
diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs
index 86dcd8ef17..0f9231f398 100644
--- a/rust/qemu-api/src/lib.rs
+++ b/rust/qemu-api/src/lib.rs
@@ -32,139 +32,4 @@
 pub mod vmstate;
 pub mod zeroable;
 
-use std::{
-    alloc::{GlobalAlloc, Layout},
-    ffi::c_void,
-};
-
 pub use error::{Error, Result};
-
-#[cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)]
-extern "C" {
-    fn g_aligned_alloc0(
-        n_blocks: bindings::gsize,
-        n_block_bytes: bindings::gsize,
-        alignment: bindings::gsize,
-    ) -> bindings::gpointer;
-    fn g_aligned_free(mem: bindings::gpointer);
-}
-
-#[cfg(not(HAVE_GLIB_WITH_ALIGNED_ALLOC))]
-extern "C" {
-    fn qemu_memalign(alignment: usize, size: usize) -> *mut c_void;
-    fn qemu_vfree(ptr: *mut c_void);
-}
-
-extern "C" {
-    fn g_malloc0(n_bytes: bindings::gsize) -> bindings::gpointer;
-    fn g_free(mem: bindings::gpointer);
-}
-
-/// An allocator that uses the same allocator as QEMU in C.
-///
-/// It is enabled by default with the `allocator` feature.
-///
-/// To set it up manually as a global allocator in your crate:
-///
-/// ```ignore
-/// use qemu_api::QemuAllocator;
-///
-/// #[global_allocator]
-/// static GLOBAL: QemuAllocator = QemuAllocator::new();
-/// ```
-#[derive(Clone, Copy, Debug)]
-#[repr(C)]
-pub struct QemuAllocator {
-    _unused: [u8; 0],
-}
-
-#[cfg_attr(all(feature = "allocator", not(test)), global_allocator)]
-pub static GLOBAL: QemuAllocator = QemuAllocator::new();
-
-impl QemuAllocator {
-    // From the glibc documentation, on GNU systems, malloc guarantees 16-byte
-    // alignment on 64-bit systems and 8-byte alignment on 32-bit systems. See
-    // https://www.gnu.org/software/libc/manual/html_node/Malloc-Examples.html.
-    // This alignment guarantee also applies to Windows and Android. On Darwin
-    // and OpenBSD, the alignment is 16 bytes on both 64-bit and 32-bit systems.
-    #[cfg(all(
-        target_pointer_width = "32",
-        not(any(target_os = "macos", target_os = "openbsd"))
-    ))]
-    pub const DEFAULT_ALIGNMENT_BYTES: Option<usize> = Some(8);
-    #[cfg(all(
-        target_pointer_width = "64",
-        not(any(target_os = "macos", target_os = "openbsd"))
-    ))]
-    pub const DEFAULT_ALIGNMENT_BYTES: Option<usize> = Some(16);
-    #[cfg(all(
-        any(target_pointer_width = "32", target_pointer_width = "64"),
-        any(target_os = "macos", target_os = "openbsd")
-    ))]
-    pub const DEFAULT_ALIGNMENT_BYTES: Option<usize> = Some(16);
-    #[cfg(not(any(target_pointer_width = "32", target_pointer_width = "64")))]
-    pub const DEFAULT_ALIGNMENT_BYTES: Option<usize> = None;
-
-    pub const fn new() -> Self {
-        Self { _unused: [] }
-    }
-}
-
-impl Default for QemuAllocator {
-    fn default() -> Self {
-        Self::new()
-    }
-}
-
-// Sanity check.
-const _: [(); 8] = [(); ::core::mem::size_of::<*mut c_void>()];
-
-unsafe impl GlobalAlloc for QemuAllocator {
-    unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
-        if matches!(Self::DEFAULT_ALIGNMENT_BYTES, Some(default) if default.checked_rem(layout.align()) == Some(0))
-        {
-            // SAFETY: g_malloc0() is safe to call.
-            unsafe { g_malloc0(layout.size().try_into().unwrap()).cast::<u8>() }
-        } else {
-            #[cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)]
-            {
-                // SAFETY: g_aligned_alloc0() is safe to call.
-                unsafe {
-                    g_aligned_alloc0(
-                        layout.size().try_into().unwrap(),
-                        1,
-                        layout.align().try_into().unwrap(),
-                    )
-                    .cast::<u8>()
-                }
-            }
-            #[cfg(not(HAVE_GLIB_WITH_ALIGNED_ALLOC))]
-            {
-                // SAFETY: qemu_memalign() is safe to call.
-                unsafe { qemu_memalign(layout.align(), layout.size()).cast::<u8>() }
-            }
-        }
-    }
-
-    unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
-        if matches!(Self::DEFAULT_ALIGNMENT_BYTES, Some(default) if default.checked_rem(layout.align()) == Some(0))
-        {
-            // SAFETY: `ptr` must have been allocated by Self::alloc thus a valid
-            // glib-allocated pointer, so `g_free`ing is safe.
-            unsafe { g_free(ptr.cast::<_>()) }
-        } else {
-            #[cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)]
-            {
-                // SAFETY: `ptr` must have been allocated by Self::alloc thus a valid aligned
-                // glib-allocated pointer, so `g_aligned_free`ing is safe.
-                unsafe { g_aligned_free(ptr.cast::<_>()) }
-            }
-            #[cfg(not(HAVE_GLIB_WITH_ALIGNED_ALLOC))]
-            {
-                // SAFETY: `ptr` must have been allocated by Self::alloc thus a valid aligned
-                // glib-allocated pointer, so `qemu_vfree`ing is safe.
-                unsafe { qemu_vfree(ptr.cast::<_>()) }
-            }
-        }
-    }
-}
-- 
2.50.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/4] build-sys/rust: update syn to v2.0.106
  2025-08-26 13:31 [PATCH 0/4] rust: little clean-ups and updates marcandre.lureau
  2025-08-26 13:31 ` [PATCH 1/4] rust: run cargo update marcandre.lureau
  2025-08-26 13:31 ` [PATCH 2/4] rust: remove unused global qemu "allocator" marcandre.lureau
@ 2025-08-26 13:31 ` marcandre.lureau
  2025-08-26 13:31 ` [PATCH 4/4] rust/qemu-api-macros: make derive(Object) friendly when missing parent marcandre.lureau
  3 siblings, 0 replies; 7+ messages in thread
From: marcandre.lureau @ 2025-08-26 13:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Manos Pitsidianakis, Daniel P. Berrangé,
	Philippe Mathieu-Daudé, pbonzini, qemu-rust,
	Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Necessary for the following patch.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 subprojects/.gitignore    | 2 +-
 subprojects/syn-2-rs.wrap | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/subprojects/.gitignore b/subprojects/.gitignore
index f4281934ce..0073d61003 100644
--- a/subprojects/.gitignore
+++ b/subprojects/.gitignore
@@ -18,5 +18,5 @@
 /proc-macro-error-attr-1.0.4
 /proc-macro2-1.0.84
 /quote-1.0.36
-/syn-2.0.66
+/syn-2.0.106
 /unicode-ident-1.0.12
diff --git a/subprojects/syn-2-rs.wrap b/subprojects/syn-2-rs.wrap
index d79cf750fb..560942befc 100644
--- a/subprojects/syn-2-rs.wrap
+++ b/subprojects/syn-2-rs.wrap
@@ -1,8 +1,8 @@
 [wrap-file]
-directory = syn-2.0.66
-source_url = https://crates.io/api/v1/crates/syn/2.0.66/download
-source_filename = syn-2.0.66.0.tar.gz
-source_hash = c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5
+directory = syn-2.0.106
+source_url = https://crates.io/api/v1/crates/syn/2.0.106/download
+source_filename = syn-2.0.106.0.tar.gz
+source_hash = ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6
 #method = cargo
 patch_directory = syn-2-rs
 
-- 
2.50.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/4] rust/qemu-api-macros: make derive(Object) friendly when missing parent
  2025-08-26 13:31 [PATCH 0/4] rust: little clean-ups and updates marcandre.lureau
                   ` (2 preceding siblings ...)
  2025-08-26 13:31 ` [PATCH 3/4] build-sys/rust: update syn to v2.0.106 marcandre.lureau
@ 2025-08-26 13:31 ` marcandre.lureau
  2025-08-27  2:58   ` Zhao Liu
  3 siblings, 1 reply; 7+ messages in thread
From: marcandre.lureau @ 2025-08-26 13:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Manos Pitsidianakis, Daniel P. Berrangé,
	Philippe Mathieu-Daudé, pbonzini, qemu-rust,
	Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 rust/qemu-api-macros/src/lib.rs | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib.rs
index b525d89c09..a614741889 100644
--- a/rust/qemu-api-macros/src/lib.rs
+++ b/rust/qemu-api-macros/src/lib.rs
@@ -85,7 +85,15 @@ fn derive_object_or_error(input: DeriveInput) -> Result<proc_macro2::TokenStream
     is_c_repr(&input, "#[derive(Object)]")?;
 
     let name = &input.ident;
-    let parent = &get_fields(&input, "#[derive(Object)]")?[0].ident;
+    let parent = &get_fields(&input, "#[derive(Object)]")?
+        .get(0)
+        .ok_or_else(|| {
+            Error::new(
+                input.ident.span(),
+                "#[derive(Object)] requires a parent field",
+            )
+        })?
+        .ident;
 
     Ok(quote! {
         ::qemu_api::assert_field_type!(#name, #parent,
-- 
2.50.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/4] rust: run cargo update
  2025-08-26 13:31 ` [PATCH 1/4] rust: run cargo update marcandre.lureau
@ 2025-08-26 17:43   ` Paolo Bonzini
  0 siblings, 0 replies; 7+ messages in thread
From: Paolo Bonzini @ 2025-08-26 17:43 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Manos Pitsidianakis, Daniel P. Berrangé,
	Philippe Mathieu-Daudé, qemu-rust

On 8/26/25 15:31, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Usually, rust projects have CI bots to do that and check that nothing
> breaks. We should add this to our TODO list.

You have to adjust the subprojects as well to keep them in sync. :(

I was going to wait until Meson does it for us via cargo subprojects, or 
do it as needed until then; for example I have lying around a patch to 
update proc_macro2 and syn, because some experiments I did needed a 
newer version.

I am applying 
https://lore.kernel.org/qemu-devel/20250717062727.305466-2-pbonzini@redhat.com/ 
and your patch 4.

Paolo



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] rust/qemu-api-macros: make derive(Object) friendly when missing parent
  2025-08-26 13:31 ` [PATCH 4/4] rust/qemu-api-macros: make derive(Object) friendly when missing parent marcandre.lureau
@ 2025-08-27  2:58   ` Zhao Liu
  0 siblings, 0 replies; 7+ messages in thread
From: Zhao Liu @ 2025-08-27  2:58 UTC (permalink / raw)
  To: marcandre.lureau
  Cc: qemu-devel, Manos Pitsidianakis, Daniel P. Berrangé,
	Philippe Mathieu-Daudé, pbonzini, qemu-rust

On Tue, Aug 26, 2025 at 05:31:32PM +0400, marcandre.lureau@redhat.com wrote:
> Date: Tue, 26 Aug 2025 17:31:32 +0400
> From: marcandre.lureau@redhat.com
> Subject: [PATCH 4/4] rust/qemu-api-macros: make derive(Object) friendly
>  when missing parent
> 
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  rust/qemu-api-macros/src/lib.rs | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-08-27  2:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-26 13:31 [PATCH 0/4] rust: little clean-ups and updates marcandre.lureau
2025-08-26 13:31 ` [PATCH 1/4] rust: run cargo update marcandre.lureau
2025-08-26 17:43   ` Paolo Bonzini
2025-08-26 13:31 ` [PATCH 2/4] rust: remove unused global qemu "allocator" marcandre.lureau
2025-08-26 13:31 ` [PATCH 3/4] build-sys/rust: update syn to v2.0.106 marcandre.lureau
2025-08-26 13:31 ` [PATCH 4/4] rust/qemu-api-macros: make derive(Object) friendly when missing parent marcandre.lureau
2025-08-27  2:58   ` Zhao Liu

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