rust: zerocopy: update to v0.8.52
Miguel Ojeda
maintainerPATCH 1/1 rust: zerocopy: update to v0.8.52
Update our vendored copy of zerocopy (and zerocopy-derive) to v0.8.52.
Most SPDX identifiers have been added upstream at our request [1] (without parentheses -- supporting them is an issue on the kernel side, but it does already reduce our differences). The CSS one for rustdoc was added too [2], but will be picked up in a later version.
For zerocopy, enable --cfg no_fp_fmt_parse, which was added at our request to avoid our local workaround [3]. This means one less difference, thus indicate so in our README.md.
For zerocopy-derive, enable --cfg zerocopy_unstable_linux. This allows us to use #[derive(zerocopy_derive::most_traits)], a new feature upstream added for us [4]. We noticed a minor doc render bug [5], which will be fixed for a future version too.
The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do
curl --silent --show-error --location \
https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/zerocopy-derive/src/$path |
git diff --no-index - rust/zerocopy-derive/$path &&
echo $path: OK
done
for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do
curl --silent --show-error --location \
https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/$path |
git diff --no-index - rust/zerocopy/$path &&
echo $path: OK
done--- rust/Makefile | 16 ++++-- rust/zerocopy-derive/README.md | 14 +++--- rust/zerocopy-derive/derive/from_bytes.rs | 2 +- rust/zerocopy-derive/derive/into_bytes.rs | 2 +- rust/zerocopy-derive/derive/known_layout.rs | 3 +- rust/zerocopy-derive/derive/mod.rs | 20 +++++--- rust/zerocopy-derive/derive/try_from_bytes.rs | 6 +-- rust/zerocopy-derive/derive/unaligned.rs | 2 +- rust/zerocopy-derive/lib.rs | 36 +++++++++++++- rust/zerocopy-derive/repr.rs | 2 +- rust/zerocopy-derive/util.rs | 34 ++++++++++--- rust/zerocopy/README.md | 15 +++--- rust/zerocopy/src/byte_slice.rs | 2 +- rust/zerocopy/src/byteorder.rs | 49 +++++++++++++++---- rust/zerocopy/src/deprecated.rs | 2 +- rust/zerocopy/src/error.rs | 2 +- rust/zerocopy/src/impls.rs | 4 +- rust/zerocopy/src/layout.rs | 2 +- rust/zerocopy/src/lib.rs | 13 +++-- rust/zerocopy/src/macros.rs | 2 +- rust/zerocopy/src/pointer/inner.rs | 2 +- rust/zerocopy/src/pointer/invariant.rs | 2 +- rust/zerocopy/src/pointer/mod.rs | 2 +- rust/zerocopy/src/pointer/ptr.rs | 2 +- rust/zerocopy/src/pointer/transmute.rs | 2 +- rust/zerocopy/src/ref.rs | 2 +- rust/zerocopy/src/split_at.rs | 2 +- rust/zerocopy/src/util/macro_util.rs | 2 +- rust/zerocopy/src/util/macros.rs | 2 +- rust/zerocopy/src/util/mod.rs | 2 +- rust/zerocopy/src/wrappers.rs | 2 +- 31 files changed, 174 insertions(+), 76 deletions(-)
rust/Makefile +13 -3
@@ -84,11 +84,15 @@ core-flags := \ --edition=$(core-edition) \ $(call cfgs-to-flags,$(core-cfgs)) +zerocopy-cfgs := \ + no_fp_fmt_parse + zerocopy-flags := \ - --cap-lints=allow + --cap-lints=allow \ + $(call cfgs-to-flags,$(zerocopy-cfgs)) zerocopy-envs := \ - CARGO_PKG_VERSION=0.8.50 + CARGO_PKG_VERSION=0.8.52 proc_macro2-cfgs := \ feature="proc-macro" \
@@ -128,11 +132,15 @@ syn-flags := \ --extern quote \ $(call cfgs-to-flags,$(syn-cfgs)) +zerocopy_derive-cfgs := \ + zerocopy_unstable_linux + zerocopy_derive-flags := \ --cap-lints=allow \ --extern proc_macro2 \ --extern quote \ - --extern syn + --extern syn \ + $(call cfgs-to-flags,$(zerocopy_derive-cfgs)) pin_init_internal-cfgs := \ kernel USE_RUSTC_FEATURES
@@ -644,9 +652,11 @@ quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L rust-analyzer: $(Q)MAKEFLAGS= $(srctree)/scripts/generate_rust_analyzer.py \ --cfgs='core=$(core-cfgs)' $(core-edition) \ + --cfgs='zerocopy=$(zerocopy-cfgs)' \ --cfgs='proc_macro2=$(proc_macro2-cfgs)' \ --cfgs='quote=$(quote-cfgs)' \ --cfgs='syn=$(syn-cfgs)' \ + --cfgs='zerocopy_derive=$(zerocopy_derive-cfgs)' \ --cfgs='pin_init_internal=$(pin_init_internal-cfgs)' \ --cfgs='pin_init=$(pin_init-cfgs)' \ --envs='zerocopy=$(zerocopy-envs)' \
rust/zerocopy-derive/README.md +7 -7
@@ -1,14 +1,14 @@ # `zerocopy-derive` -These source files come from the Rust `zerocopy-derive` crate, version v0.8.50 -(released 2026-05-31), hosted in the <https://github.com/google/zerocopy> +These source files come from the Rust `zerocopy-derive` crate, version v0.8.52 +(released 2026-06-09), hosted in the <https://github.com/google/zerocopy> repository, licensed under "BSD-2-Clause OR Apache-2.0 OR MIT" and only -modified to add the SPDX license identifiers and to remove the generation of +modified to tweak the SPDX license identifiers and to remove the generation of non-ASCII identifiers. For copyright details, please see: - https://github.com/google/zerocopy/blob/v0.8.50/README.md?plain=1 - https://github.com/google/zerocopy/blob/v0.8.50/LICENSE-BSD - https://github.com/google/zerocopy/blob/v0.8.50/LICENSE-APACHE - https://github.com/google/zerocopy/blob/v0.8.50/LICENSE-MIT + https://github.com/google/zerocopy/blob/v0.8.52/README.md?plain=1 + https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-BSD + https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-APACHE + https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-MIT
rust/zerocopy-derive/derive/from_bytes.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// use proc_macro2::{Span ,TokenStream };use syn::{ parse_quote,Data ,DataEnum ,DataStruct ,DataUnion ,Error ,Expr ,ExprLit ,ExprUnary ,Lit ,UnOp ,
rust/zerocopy-derive/derive/into_bytes.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// use proc_macro2::{Span ,TokenStream };use quote::quote;use syn::{Data ,DataEnum ,DataStruct ,DataUnion ,Error ,Type };
rust/zerocopy-derive/derive/known_layout.rs +1 -2
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// use proc_macro2::TokenStream ;use quote::quote;use syn::{parse_quote,Data ,Error ,Type };
@@ -87,7 +87,6 @@ fn pointer_to_metadata(ptr: *mut Self) -> <Self as #zerocopy_crate::KnownLayout> };let inner_extras = { -let leading_fields_tys = leading_fields_tys.clone ();let methods =make_methods (*trailing_field_ty);let (_, ty_generics, _) = ctx.ast.generics.split_for_impl ();
rust/zerocopy-derive/derive/mod.rs +12 -8
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// pub mod from_bytes;pub mod into_bytes;pub mod known_layout;
@@ -15,8 +15,8 @@ util::{Ctx, DataExt, FieldBounds, ImplBlockBuilder, Trait}, }; -pub (crate )fn derive_immutable (ctx: &Ctx , _top_level:Trait ) ->TokenStream { -match &ctx.ast.data { +pub(crate) fn derive_immutable(ctx: &Ctx, _top_level: Trait) -> Result<TokenStream, Error> { + Ok(match &ctx.ast.data { Data::Struct(strct) => { ImplBlockBuilder::new(ctx, strct, Trait::Immutable, FieldBounds::ALL_SELF).build() }
@@ -26,7 +26,7 @@ pub(crate) fn derive_immutable(ctx: &Ctx, _top_level: Trait) -> TokenStream { Data::Union(unn) => {ImplBlockBuilder ::new (ctx, unn,Trait ::Immutable ,FieldBounds ::ALL_SELF ).build () } - } + }) }pub (crate )fn derive_hash (ctx: &Ctx , _top_level:Trait ) ->Result <TokenStream ,Error > {
@@ -97,16 +97,20 @@ pub(crate) fn derive_split_at(ctx: &Ctx, _top_level: Trait) -> Result<TokenStreamatch &ctx.ast.data {Data ::Struct (_) => {}Data ::Enum (_) |Data ::Union (_) => { -return Err (Error ::new (Span ::call_site (),"can only be applied to structs" )); +return ctx + .error_or_skip (Error ::new (Span ::call_site (),"can only be applied to structs" )); } };if repr.get_packed ().is_some () { -return Err (Error ::new (Span ::call_site (),"must not have #[repr(packed)] attribute" )); +return ctx.error_or_skip (Error ::new ( +Span ::call_site (), +"must not have #[repr(packed)] attribute" , + )); }if !(repr.is_c () || repr.is_transparent ()) { -return Err (Error ::new ( +return ctx.error_or_skip (Error ::new (Span ::call_site (),"must have #[repr(C)] or #[repr(transparent)] in order to guarantee this type's layout is splitable" , ));
@@ -116,7 +120,7 @@ pub(crate) fn derive_split_at(ctx: &Ctx, _top_level: Trait) -> Result<TokenStrealet trailing_field =if let Some (((_, _, trailing_field), _)) = fields.split_last () { trailing_field }else { -return Err (Error ::new (Span ::call_site (),"must at least one field" )); +return ctx.error_or_skip (Error ::new (Span ::call_site (),"must at least one field" )); };let zerocopy_crate = &ctx.zerocopy_crate;
rust/zerocopy-derive/derive/try_from_bytes.rs +3 -3
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// use proc_macro2::TokenStream ;use quote::quote;use syn::{
@@ -531,8 +531,8 @@ fn project(slf: #zerocopy_crate::pointer::PtrInner<'_, Self>) -> *mut <Self as # data, Trait::ProjectField { variant_id: variant_id.clone(), - field: field.clone(), - field_id: field_id.clone(), + field, + field_id, invariants: parse_quote!((Aliasing, Alignment, #zerocopy_crate::invariant::Initialized)), }, FieldBounds::None,
rust/zerocopy-derive/derive/unaligned.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// use proc_macro2::{Span ,TokenStream };use syn::{Data ,DataEnum ,DataStruct ,DataUnion ,Error };
rust/zerocopy-derive/lib.rs +35 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2019 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
@@ -129,6 +129,40 @@ fn into_ts(self) -> proc_macro2::TokenStream {derive! (ByteEq => derive_eq =>crate ::derive::derive_eq);derive! (SplitAt => derive_split_at =>crate ::derive::derive_split_at); +#[cfg_attr(zerocopy_unstable_linux, doc(hidden))] +#[proc_macro_derive(most_traits, attributes(zerocopy))] +pub fn most_traits (ts: proc_macro::TokenStream ) -> proc_macro::TokenStream { +let ast = syn::parse_macro_input!(tsas DeriveInput ); +let ctx =match Ctx ::try_from_derive_input (ast) { +Ok (ctx) => ctx, +Err (e) =>return e.into_compile_error ().into (), + } + .skip_on_error (); + +// top-level traits for which to attempt a derive +let derives: [(fn (&Ctx ,Trait ) ->_ ,_ );6 ] = [ + (crate ::derive::known_layout::derive,Trait ::KnownLayout ), + (crate ::derive::derive_immutable,Trait ::Immutable ), + (crate ::derive::from_bytes::derive_from_bytes,Trait ::FromBytes ), + (crate ::derive::into_bytes::derive_into_bytes,Trait ::IntoBytes ), + (crate ::derive::derive_split_at,Trait ::SplitAt ), + (crate ::derive::unaligned::derive_unaligned,Trait ::Unaligned ), + ]; + +let mut tokens = proc_macro2::TokenStream ::new (); +for (derive, t)in derives { + tokens.extend (derive (&ctx, t)) + } + +// We wrap in `const_block` as a backstop in case any derive fails +// to wrap its output in `const_block` (and thus fails to annotate) +// with the full set of `#[allow(...)]` attributes). +let ts =const_block ([Some (tokens)]); +#[cfg(test)] +crate ::util::testutil::check_hygiene (ts.clone ()); + ts.into () +} +/// Deprecated: prefer [`FromZeros`] instead. #[deprecated(since = "0.8.0" , note = "`FromZeroes` was renamed to `FromZeros`" )] #[doc(hidden)]
rust/zerocopy-derive/repr.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2019 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy-derive/util.rs +26 -8
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2019 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
@@ -98,6 +98,11 @@ pub(crate) fn with_input(&self, input: &DeriveInput) -> Self { } } +pub (crate )fn skip_on_error (mut self) ->Self { + self.skip_on_error =true ; + self + } +pub (crate )fn core_path (&self) ->TokenStream {let zerocopy_crate = &self.zerocopy_crate;quote! (#zerocopy_crate::util::macro_util::core_reexport)
@@ -106,20 +111,21 @@ pub(crate) fn core_path(&self) -> TokenStream {pub (crate )fn cfg_compile_error (&self) ->TokenStream {// By checking both during the compilation of the proc macro *and* in // the generated code, we ensure that `--cfg -// zerocopy_unstable_derive_on_error` need only be passed *either* when +// zerocopy_unstable_linux` need only be passed *either* when // compiling this crate *or* when compiling the user's crate. The former // is preferable, but in some situations (such as when cross-compiling // using `cargo build --target`), it doesn't get propagated to this // crate's build by default. -if cfg! (zerocopy_unstable_derive_on_error) { +if cfg! (zerocopy_unstable_linux) {quote! () }else if let Some (span) = self.on_error_span {let core = self.core_path (); -let error_message ="`on_error` is experimental; pass '--cfg zerocopy_unstable_derive_on_error' to enable" ; +let error_message = +"`on_error` is experimental; pass '--cfg zerocopy_unstable_linux' to enable" ; quote::quote_spanned! {span=>#[allow(unused_attributes, unexpected_cfgs)] const _: () = { -#[cfg(not(zerocopy_unstable_derive_on_error))] +#[cfg(not(zerocopy_unstable_linux))] #core::compile_error!(#error_message); }; }
@@ -612,6 +618,20 @@ fn bound_tt(ty: &Type, traits: impl Iterator<Item = Trait>, ctx: &Ctx) -> WhereP } }; +let zerocopy_bounds = + field_type_bounds + .into_iter () + .chain (padding_check_bound) + .chain (self_bounds) + .map (|bound| { +if self.ctx.skip_on_error { +parse_quote! (for <'zc> #bound) + }else { + bound.clone () + } + }) + .collect ::<Vec <_ >>(); +let bounds = self .ctx .ast
@@ -621,9 +641,7 @@ fn bound_tt(ty: &Type, traits: impl Iterator<Item = Trait>, ctx: &Ctx) -> WhereP .map(|where_clause| where_clause.predicates.iter()) .into_iter () .flatten () - .chain (field_type_bounds.iter ()) - .chain (padding_check_bound.iter ()) - .chain (self_bounds.iter ()); + .chain (zerocopy_bounds.iter ());// The parameters with trait bounds, but without type defaults. let mut params:Vec <_ > = self
rust/zerocopy/README.md +7 -8
@@ -1,14 +1,13 @@ # `zerocopy` -These source files come from the Rust `zerocopy` crate, version v0.8.50 -(released 2026-05-31), hosted in the <https://github.com/google/zerocopy> +These source files come from the Rust `zerocopy` crate, version v0.8.52 +(released 2026-06-09), hosted in the <https://github.com/google/zerocopy> repository, licensed under "BSD-2-Clause OR Apache-2.0 OR MIT" and only -modified to add the SPDX license identifiers and to remove `Display` -for `f32` and `f64`. +modified to tweak the SPDX license identifiers. For copyright details, please see: - https://github.com/google/zerocopy/blob/v0.8.50/README.md?plain=1 - https://github.com/google/zerocopy/blob/v0.8.50/LICENSE-BSD - https://github.com/google/zerocopy/blob/v0.8.50/LICENSE-APACHE - https://github.com/google/zerocopy/blob/v0.8.50/LICENSE-MIT + https://github.com/google/zerocopy/blob/v0.8.52/README.md?plain=1 + https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-BSD + https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-APACHE + https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-MIT
rust/zerocopy/src/byte_slice.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/byteorder.rs +40 -9
73 lines not on this page · raw message
rust/zerocopy/src/deprecated.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
rust/zerocopy/src/error.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
rust/zerocopy/src/impls.rs +2 -2
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
@@ -1359,7 +1359,7 @@ mod $mod {#[cfg(not(no_zerocopy_aarch64_simd_1_59_0))] simd_arch_mod!( #[cfg(all( - target_arch = "aarch64", + target_arch = "aarch64", any( target_endian = "little", not(no_zerocopy_aarch64_simd_be_1_87_0)
rust/zerocopy/src/layout.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
rust/zerocopy/src/lib.rs +8 -5
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2018 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
@@ -12,7 +12,7 @@// After updating the following doc comment, make sure to run the following // command to update `README.md` based on its contents: // -// cargo -q run --manifest-path tools/Cargo.toml -p generate-readme > README.md +// (cd .. && cargo -q run --manifest-path tools/Cargo.toml -p generate-readme) > README.md //! ***<span style="font-size: 140%">Fast, safe, <span //! style="color:red;">compile error</span>. Pick two.</span>***
@@ -174,7 +174,7 @@//! //! [Miri]: https://github.com/rust-lang/miri //! [Kani]: https://github.com/model-checking/kani -//! [soundness policy]: https://github.com/google/zerocopy/blob/main/POLICIES.md#soundness +//! [soundness policy]: https://github.com/google/zerocopy/blob/main/zerocopy/POLICIES.md#soundness //! //! # Relationship to Project Safe Transmute //!
@@ -203,7 +203,7 @@//! //! See our [MSRV policy]. //! -//! [MSRV policy]: https://github.com/google/zerocopy/blob/main/POLICIES.md#msrv +//! [MSRV policy]: https://github.com/google/zerocopy/blob/main/zerocopy/POLICIES.md#msrv //! //! # Changelog //!
@@ -435,6 +435,9 @@WARNING }; +#[doc(hidden)] +#[cfg(all(any(feature = "derive" , test), zerocopy_unstable_linux))] +pub use zerocopy_derive::most_traits;/// Implements [`KnownLayout`]. /// /// This derive analyzes various aspects of a type's layout that are needed for
@@ -2832,7 +2835,7 @@ fn try_ref_from_suffix_with_elems(/// ``` /// /// [`try_mut_from_bytes`]: TryFromBytes::try_mut_from_bytes -/// +/// #[doc = codegen_header! ( "h5" , "try_mut_from_bytes_with_elems" )] /// /// See [`TryFromBytes::try_ref_from_bytes_with_elems`](#method.try_ref_from_bytes_with_elems.codegen).
rust/zerocopy/src/macros.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
rust/zerocopy/src/pointer/inner.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/pointer/invariant.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/pointer/mod.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2023 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/pointer/ptr.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2023 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/pointer/transmute.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2025 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/ref.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2024 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
rust/zerocopy/src/split_at.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2025 The Fuchsia Authors // // Licensed under the 2-Clause BSD License <LICENSE-BSD or
rust/zerocopy/src/util/macro_util.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2022 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/util/macros.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2023 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/util/mod.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2023 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
rust/zerocopy/src/wrappers.rs +1 -1
@@ -1,5 +1,5 @@// SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT - +// // Copyright 2023 The Fuchsia Authors // // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
base-commit: 4edcdefd4083ae04b1a5656f4be6cd83ae919ef4
Signature · 1 line
2.54.0
Quoted 115 lines · Miguel Ojeda
Update our vendored copy of
zerocopy(andzerocopy-derive) to v0.8.52.Most SPDX identifiers have been added upstream at our request [1] (without parentheses -- supporting them is an issue on the kernel side, but it does already reduce our differences). The CSS one for
rustdocwas added too [2], but will be picked up in a later version.For
zerocopy, enable--cfg no_fp_fmt_parse, which was added at our request to avoid our local workaround [3]. This means one less difference, thus indicate so in ourREADME.md.For
zerocopy-derive, enable--cfg zerocopy_unstable_linux. This allows us to use#[derive(zerocopy_derive::most_traits)], a new feature upstream added for us [4]. We noticed a minor doc render bug [5], which will be fixed for a future version too.The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/zerocopy-derive/src/$path | git diff --no-index - rust/zerocopy-derive/$path && echo $path: OK done for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/$path | git diff --no-index - rust/zerocopy/$path && echo $path: OK doneCc Joshua Liebow-Feeser <[email protected]>Cc Jack Wrenn <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>--- rust/Makefile | 16 ++++-- rust/zerocopy-derive/README.md | 14 +++--- rust/zerocopy-derive/derive/from_bytes.rs | 2 +- rust/zerocopy-derive/derive/into_bytes.rs | 2 +- rust/zerocopy-derive/derive/known_layout.rs | 3 +- rust/zerocopy-derive/derive/mod.rs | 20 +++++--- rust/zerocopy-derive/derive/try_from_bytes.rs | 6 +-- rust/zerocopy-derive/derive/unaligned.rs | 2 +- rust/zerocopy-derive/lib.rs | 36 +++++++++++++- rust/zerocopy-derive/repr.rs | 2 +- rust/zerocopy-derive/util.rs | 34 ++++++++++--- rust/zerocopy/README.md | 15 +++--- rust/zerocopy/src/byte_slice.rs | 2 +- rust/zerocopy/src/byteorder.rs | 49 +++++++++++++++---- rust/zerocopy/src/deprecated.rs | 2 +- rust/zerocopy/src/error.rs | 2 +- rust/zerocopy/src/impls.rs | 4 +- rust/zerocopy/src/layout.rs | 2 +- rust/zerocopy/src/lib.rs | 13 +++-- rust/zerocopy/src/macros.rs | 2 +- rust/zerocopy/src/pointer/inner.rs | 2 +- rust/zerocopy/src/pointer/invariant.rs | 2 +- rust/zerocopy/src/pointer/mod.rs | 2 +- rust/zerocopy/src/pointer/ptr.rs | 2 +- rust/zerocopy/src/pointer/transmute.rs | 2 +- rust/zerocopy/src/ref.rs | 2 +- rust/zerocopy/src/split_at.rs | 2 +- rust/zerocopy/src/util/macro_util.rs | 2 +- rust/zerocopy/src/util/macros.rs | 2 +- rust/zerocopy/src/util/mod.rs | 2 +- rust/zerocopy/src/wrappers.rs | 2 +- 31 files changed, 174 insertions(+), 76 deletions(-)rust/Makefile +11
-3@@ -84,11 +84,15 @@ core-flags := \ --edition=$(core-edition) \ $(call cfgs-to-flags,$(core-cfgs)) +zerocopy-cfgs := \ + no_fp_fmt_parse + zerocopy-flags := \ - --cap-lints=allow + --cap-lints=allow \ + $(call cfgs-to-flags,$(zerocopy-cfgs)) zerocopy-envs := \ - CARGO_PKG_VERSION=0.8.50 + CARGO_PKG_VERSION=0.8.52 proc_macro2-cfgs := \ feature="proc-macro" \@@ -128,11 +132,15 @@ syn-flags := \ --extern quote \ $(call cfgs-to-flags,$(syn-cfgs)) +zerocopy_derive-cfgs := \ + zerocopy_unstable_linux + zerocopy_derive-flags := \ --cap-lints=allow \ --extern proc_macro2 \ --extern quote \ - --extern syn + --extern syn \ + $(call cfgs-to-flags,$(zerocopy_derive-cfgs)) pin_init_internal-cfgs := \ kernel USE_RUSTC_FEATURES@@ -644,9 +652,11 @@ quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L rust-analyzer:
rust/Makefile quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L · line 662
Quoted 10 lines
rust/Makefile +2
-0$(Q)MAKEFLAGS= $(srctree)/scripts/generate_rust_analyzer.py \ --cfgs='core=$(core-cfgs)' $(core-edition) \ + --cfgs='zerocopy=$(zerocopy-cfgs)' \ --cfgs='proc_macro2=$(proc_macro2-cfgs)' \ --cfgs='quote=$(quote-cfgs)' \ --cfgs='syn=$(syn-cfgs)' \ + --cfgs='zerocopy_derive=$(zerocopy_derive-cfgs)' \ --cfgs='pin_init_internal=$(pin_init_internal-cfgs)' \ --cfgs='pin_init=$(pin_init-cfgs)' \ --envs='zerocopy=$(zerocopy-envs)' \
Thanks!
Miguel Ojeda
AppliedQuoted 33 lines · Miguel Ojeda
Update our vendored copy of
zerocopy(andzerocopy-derive) to v0.8.52.Most SPDX identifiers have been added upstream at our request [1] (without parentheses -- supporting them is an issue on the kernel side, but it does already reduce our differences). The CSS one for
rustdocwas added too [2], but will be picked up in a later version.For
zerocopy, enable--cfg no_fp_fmt_parse, which was added at our request to avoid our local workaround [3]. This means one less difference, thus indicate so in ourREADME.md.For
zerocopy-derive, enable--cfg zerocopy_unstable_linux. This allows us to use#[derive(zerocopy_derive::most_traits)], a new feature upstream added for us [4]. We noticed a minor doc render bug [5], which will be fixed for a future version too.The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/zerocopy-derive/src/$path | git diff --no-index - rust/zerocopy-derive/$path && echo $path: OK done for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/$path | git diff --no-index - rust/zerocopy/$path && echo $path: OK done
Quoted 8 lines
Cc Joshua Liebow-Feeser <[email protected]>Cc Jack Wrenn <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>
Applied to rust-fixes -- thanks everyone!
Tags still welcome for a couple days.
Cheers,
Miguel
Quoted 32 lines · Miguel Ojeda
Update our vendored copy of
zerocopy(andzerocopy-derive) to v0.8.52.Most SPDX identifiers have been added upstream at our request [1] (without parentheses -- supporting them is an issue on the kernel side, but it does already reduce our differences). The CSS one for
rustdocwas added too [2], but will be picked up in a later version.For
zerocopy, enable--cfg no_fp_fmt_parse, which was added at our request to avoid our local workaround [3]. This means one less difference, thus indicate so in ourREADME.md.For
zerocopy-derive, enable--cfg zerocopy_unstable_linux. This allows us to use#[derive(zerocopy_derive::most_traits)], a new feature upstream added for us [4]. We noticed a minor doc render bug [5], which will be fixed for a future version too.The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/zerocopy-derive/src/$path | git diff --no-index - rust/zerocopy-derive/$path && echo $path: OK done for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.52/zerocopy/$path | git diff --no-index - rust/zerocopy/$path && echo $path: OK done
Quoted 8 lines
Cc Joshua Liebow-Feeser <[email protected]>Cc Jack Wrenn <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>