Rust for Linux List
 help / color / mirror / Atom feed
* [GIT PULL] Rust for v7.2
@ 2026-06-14 20:24 Miguel Ojeda
  0 siblings, 0 replies; only message in thread
From: Miguel Ojeda @ 2026-06-14 20:24 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron,
	Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
	Danilo Krummrich, Daniel Almeida, Tamir Duberstein,
	Alexandre Courbot, Onur Özkan, rust-for-linux, linux-kernel

Hi Linus,

This is the next round of the Rust support.

This one is big due to the vendoring of the `zerocopy` library, which
allows us to replace a bunch of `unsafe` code dealing with conversions
between byte sequences and other types with safe alternatives. More
details on that below (and in its merge commit).

No conflicts expected at this time, but linux-next should generally have
the right resolutions.

All commits except 5 have been in linux-next for 3 rounds or more -- the
last ones are trivial but have been just on Friday's round.

I plan to send the new build system support for the upcoming cycle,
which solves the "not parallel Rust building in `prepare`" that you
mentioned (among other things).

I may also have a second, tiny PR later in the merge window with a small
patch to simplify cross-tree development for the next cycle.

Finally, I didn't include it in the log below, since it is going through
the tip tree, but another piece of good news is that we will have one
more `MAINTAINERS` entry: `RUST [SYNC]`.

Please pull for v7.2 -- thanks!

Cheers,
Miguel

The following changes since commit 5200f5f493f79f14bbdc349e402a40dfb32f23c8:

  Linux 7.1-rc4 (2026-05-17 13:59:58 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux.git tags/rust-7.2

for you to fetch changes up to 48b375e482027ba6566107cec40c1b21b453fa4e:

  MAINTAINERS: add Onur Özkan as Rust reviewer (2026-06-11 23:05:48 +0200)

----------------------------------------------------------------
Rust changes for v7.2

Toolchain and infrastructure:

 - Introduce support for the 'zerocopy' library [1][2]:

       Fast, safe, compile error. Pick two.

       Zerocopy makes zero-cost memory manipulation effortless. We write
       `unsafe` so you don't have to.

   It essentially provides derivable traits (e.g. 'FromBytes') and
   macros (e.g. 'transmute!') for safely converting between byte
   sequences and other types. Having such support allows us to remove
   some 'unsafe' code.

   It is among the most downloaded Rust crates and it is also used by
   the Rust compiler itself.

   It is licensed under "BSD-2-Clause OR Apache-2.0 OR MIT".

   The crates are imported essentially as-is (only +2/-3 lines needed
   to be adapted), plus SPDX identifiers. Upstream has since added the
   SPDX identifiers as well as one of the tweaks at my request, thus
   reducing our future diffs on updates -- I keep the details in one of
   our usual live lists [3].

   In total, it is about ~39k lines added, ~32k without counting
   'benches/' which are just for documentation purposes.

   The series includes a few Kbuild and rust-analyzer improvements and
   an example patch using it in Nova, removing one 'unsafe impl'.

   I checked that the codegen of an isolated example function (similar
   to the Nova patch on top) is essentially identical. It also turns out
   that (for that particular case) the 'zerocopy' version, even with
   'debug-assertions' enabled, has no remaining panics, unlike a few in
   the current code (since the compiler can prove the remaining
   'ub_checks' statically).

   So their "fast, safe" does indeed check out -- at least in that case.

   Link: https://github.com/google/zerocopy [1]
   Link: https://docs.rs/zerocopy [2]
   Link: https://github.com/Rust-for-Linux/linux/issues/1239 [3]

 - Support AutoFDO. This allows Rust code to be profiled and optimized
   based on the profile. Tested with Rust Binder: ~13% slower without
   AutoFDO in the binderAddInts benchmark (using an app-launch benchmark
   for the profile).

 - Support Software Tag-Based KASAN.

   In addition, fix KASAN Kconfig by requiring Clang.

 - Add Kconfig options for each existing Rust KUnit test suite, such as
   'CONFIG_RUST_BITMAP_KUNIT_TEST'. They are placed within a new menu,
   'CONFIG_RUST_KUNIT_TESTS', in the new 'rust/kernel/Kconfig.test'
   file.

 - Support the upcoming Rust 1.98.0 release (expected 2026-08-20): lint
   cleanups and an unstable flag rename.

 - Disable 'rustdoc' documentation inlining for all prelude items, which
   bloats the generated documentation.

 - Ignore (in Git) and clean (in Kbuild) the (rarely) 'rustc'-generated
   '*.long-type-*.txt' files.

'kernel' crate:

 - Add new 'bitfield' module with the 'bitfield!' macro (extracted from
   the existing 'register!' one), which declares integer types that are
   split into distinct bit fields of arbitrary length.

   Each field is a 'Bounded' of the appropriate bit width (ensuring
   values are properly validated and avoiding implicit data loss) and
   gets several generated getters and setters (infallible, 'const' and
   fallible) as well as associated constants ('_MASK', '_SHIFT' and
   '_RANGE'). It also supports fields that can be converted from/to
   custom types, either fallibly ('?=>') or infallibly ('=>').

   For instance:

       bitfield! {
           struct Rgb(u16) {
               15:11 blue;
               10:5 green;
               4:0 red;
           }
       }

       // Compile-time checks.
       let color = Rgb::zeroed().with_const_green::<0x1f>();

       assert_eq!(color.green(), 0x1f);
       assert_eq!(color.into_raw(), 0x1f << Rgb::GREEN_SHIFT);

   Add as well documentation and a test suite for it, as usual; and
   update the 'register!' macro to use it.

   It will be maintained by Alexandre Courbot (with Yury Norov as
   reviewer) under a new 'MAINTAINERS' entry: 'RUST [BITFIELD]'.

 - 'ptr' module: rework index projection syntax into keyworded syntax
   and introduce panicking variant.

   The keyword syntax ('build:', 'try:', 'panic:') is more explicit and
   paves the way of perhaps adding more flavors in the future, e.g. an
   'unsafe' index projection.

   For instance, projections now look like this:

       fn f(p: *const [u8; 32]) -> Result {
           // Ok, within bounds, checked at build time.
           project!(p, [build: 1]);

           // Build error.
           project!(p, [build: 128]);

           // `OutOfBound` runtime error (convertible to `ERANGE`).
           project!(p, [try: 128]);

           // Runtime panic.
           project!(p, [panic: 128]);

           Ok(())
       }

   Update as well the users, which now look like e.g.

       // Pointer to the first entry of the GSP message queue.
       let data = project!(self.0.as_ptr(), .gspq.msgq.data[build: 0]);

 - 'build_assert' module: make the module the home of its macros instead
   of rendering them twice.

 - 'sync' module: add 'UniqueArc::as_ptr()' associated function.

 - 'alloc' module:

    + Fix the 'Vec::reserve()' doctest to properly account for the
      existing vector length in the capacity assertion.

    + Fix an incorrect operator in the 'Vec::extend_with()' 'SAFETY'
      comment; add a doc test demonstrating basic usage and the
      zero-length case.

 - Clean imports across several modules to follow the "kernel vertical"
   import style in order to minimize conflicts.

'pin-init' crate:

 - User visible changes:

    + Do not generate 'non_snake_case' warnings for identifiers that are
      syntactically just users of a field name. This would allow all
      '#[allow(non_snake_case)]' in nova-core to be removed, which Gary
      will send to the nova tree next cycle.

    + Filter non-cfg attributes out properly in derived structs. This
      improves pin-init compatibility with other derive macros.

    + Insert projection types' where clause properly.

 - Other changes:

    + Bump MSRV to 1.82, plus associated cleanups.

    + Overhaul how init slots are projected. The new approach is easier
      to justify with safety comments.

    + Mark more functions as inline, which should help mitigate the
      super-long symbol name issue due to lack of inlining.

rust-analyzer:

 - Support '--envs' for passing env vars for crates like 'zerocopy'.

'MAINTAINERS':

 - Add the following reviewers to the 'RUST' entry:

    + Daniel Almeida
    + Tamir Duberstein
    + Alexandre Courbot
    + Onur Özkan

   They have been involved in the Rust for Linux project for about
   7 collective years and bring expertise across several domains, which
   will be very useful to have around in the future.

   Thanks everyone for stepping up!

And some other fixes, cleanups and improvements.

----------------------------------------------------------------
Alexandre Courbot (3):
      rust: extract `bitfield!` macro from `register!`
      rust: io: use the `bitfield!` macro in `register!`
      rust: inline some init methods

Alice Ryhl (3):
      kbuild: rust: add AutoFDO support
      rust: kasan: KASAN+RUST requires clang
      rust: kasan: add support for Software Tag-Based KASAN

Alistair Francis (1):
      rust: pin-init: examples: mark as `#[inline]` all `From::from()`s for `Error`

Andreas Hindborg (3):
      rust: sync: add `UniqueArc::as_ptr`
      rust: page: use the "kernel vertical" imports style
      rust: aref: use the "kernel vertical" imports style

Ashutosh Desai (1):
      rust: sync: add #[must_use] to GlobalGuard and GlobalLock::try_lock

Benno Lossin (1):
      rust: pin-init: internal: adjust license identifier of `zeroable.rs`

Daniel del Castillo (1):
      rust: error: replace match + panic in const context with const expect

Danilo Krummrich (2):
      rust: alloc: cleanup imports and use "kernel vertical" style
      rust: alloc: cleanup doctest imports to "kernel vertical" style

Gary Guo (25):
      rust: pin-init: bump minimum Rust version to 1.82
      rust: pin-init: internal: remove redundant `#[pin]` filtering
      rust: pin-init: fix badge URL in README
      rust: pin-init: cleanup workaround for old Rust compiler
      rust: pin-init: internal: turn `PhantomPinned` error into warnings
      rust: pin-init: internal: remove `collect_tuple` polyfill after MSRV bump
      rust: pin-init: examples: fix `useless_borrows_in_formatting` clippy warning
      rust: pin-init: internal: pin_data: use closure for `handle_field`
      rust: pin-init: internal: add `PhantomInvariant` and `PhantomInvariantLifetime`
      rust: pin-init: internal: init: handle code blocks early
      rust: pin-init: internal: use marker on drop guard type for pinned fields
      rust: pin-init: internal: make `make_closure` inherent methods
      rust: pin-init: internal: project slots instead of references
      rust: pin-init: internal: project using full slot
      rust: doc: disable doc inlining for all prelude items
      rust: pin-init: move `InitClosure` out from `__internal`
      rust: pin-init: remove `E` from `InitClosure`
      rust: pin_init: internal: use `loop {}` to produce never value
      rust: ptr: rename `ProjectIndex::index` to `build_index`
      rust: ptr: use `match` instead of `unwrap_or_else` for `build_index`
      rust: ptr: add panicking index projection variant
      rust: dma: update to keyworded index projection syntax
      gpu: nova-core: convert to keyworded projection syntax
      rust: ptr: remove implicit index projection syntax
      rust: make `build_assert` module the home of related macros

Hsiu Che Yu (3):
      rust: alloc: fix assert in `Vec::reserve` doc test
      rust: alloc: add doc test for `Vec::extend_with`
      rust: alloc: fix `Vec::extend_with` SAFETY comment

Joel Fernandes (1):
      rust: bitfield: Add KUnit tests for bitfield

Joel Kamminga (1):
      kbuild: rust: clean `*.long-type-*.txt` files

Ke Sun (1):
      rust: fmt: use vertical import style

Manos Pitsidianakis (1):
      .gitignore: ignore rustc long type txt files

Martin Kletzander (1):
      rust: pin-init: internal: pin_data: filter non-`#[cfg]` attr in generated code

Miguel Ojeda (31):
      Merge tag 'alloc-7.2-rc1' of https://github.com/Rust-for-Linux/linux into rust-next
      rust: cpufreq: clean new `clippy::map_or_identity` lint for Rust 1.98.0
      kbuild: rust: rename flag to `-Zdebuginfo-for-profiling` for Rust >= 1.98
      Merge tag 'pin-init-v7.2' of https://github.com/Rust-for-Linux/linux into rust-next
      scripts: generate_rust_analyzer: support passing env vars
      rust: kbuild: show the right `quiet_cmd_rustc_procmacrolibrary`
      rust: kbuild: remove unused variable
      rust: kbuild: define `procmacro-name` function
      rust: kbuild: define `procmacro-extension` variable
      rust: kbuild: support per-target environment variables
      rust: kbuild: support `skip_clippy` for `rustc_procmacro`
      rust: zerocopy: import crate
      rust: zerocopy: add SPDX License Identifiers
      rust: zerocopy: remove float `Display` support
      rust: zerocopy: add `README.md`
      rust: zerocopy: enable support in kbuild
      rust: zerocopy-derive: import crate
      rust: zerocopy-derive: add SPDX License Identifiers
      rust: zerocopy-derive: avoid generating non-ASCII identifiers
      rust: zerocopy-derive: add `README.md`
      rust: zerocopy-derive: enable support in kbuild
      rust: prelude: add `zerocopy{,_derive}::FromBytes`
      gpu: nova-core: firmware: parse `FalconUCodeDescV2` via `zerocopy`
      Merge patch series "`zerocopy` support"
      rust: str: use the "kernel vertical" imports style
      rust: str: clean unused import for Rust >= 1.98
      kbuild: rust: clean `zerocopy-derive` in `mrproper`
      MAINTAINERS: add Daniel Almeida as Rust reviewer
      MAINTAINERS: add Tamir Duberstein as Rust reviewer
      MAINTAINERS: add Alexandre Courbot as Rust reviewer
      MAINTAINERS: add Onur Özkan as Rust reviewer

Mirko Adzic (2):
      rust: pin-init: internal: suppress `non_snake_case` lint in `#[pin_data]`
      rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`

Mohamad Alsadhan (4):
      rust: pin-init: cleanup `Zeroable` and `ZeroableOptions`
      rust: pin-init: extend `impl_zeroable_option` macro to handle generics
      rust: pin-init: internal: add missing where clause to projection types
      rust: pin-init: internal: pin_data: add struct to record field info

Xiaobo Liu (1):
      rust: pin-init: docs: fix typos in MaybeZeroable documentation

Yury Norov (3):
      rust: tests: drop 'use crate' in bitmap and atomic KUnit tests
      rust: tests: add Kconfig for KUnit test
      Documentation: rust: testing: add Kconfig guidance

 .gitignore                                         |    3 +
 Documentation/rust/testing.rst                     |    5 +
 MAINTAINERS                                        |   11 +
 Makefile                                           |    6 +-
 drivers/gpu/nova-core/bitfield.rs                  |    4 +-
 drivers/gpu/nova-core/firmware.rs                  |    5 +-
 drivers/gpu/nova-core/gsp/cmdq.rs                  |    6 +-
 drivers/gpu/nova-core/num.rs                       |    2 +-
 drivers/gpu/nova-core/vbios.rs                     |    6 +-
 init/Kconfig                                       |    5 +-
 rust/Makefile                                      |   96 +-
 rust/kernel/Kconfig.test                           |   86 +
 rust/kernel/alloc.rs                               |    8 +-
 rust/kernel/alloc/allocator.rs                     |   35 +-
 rust/kernel/alloc/allocator/iter.rs                |    8 +-
 rust/kernel/alloc/kbox.rs                          |   78 +-
 rust/kernel/alloc/kvec.rs                          |   82 +-
 rust/kernel/alloc/kvec/errors.rs                   |    6 +-
 rust/kernel/alloc/layout.rs                        |   10 +-
 rust/kernel/bitfield.rs                            |  862 +++
 rust/kernel/bitmap.rs                              |    5 +-
 rust/kernel/build_assert.rs                        |   19 +-
 rust/kernel/cpufreq.rs                             |    2 +-
 rust/kernel/dma.rs                                 |   15 +-
 rust/kernel/error.rs                               |    6 +-
 rust/kernel/fmt.rs                                 |   19 +-
 rust/kernel/init.rs                                |    2 +
 rust/kernel/io/register.rs                         |  265 +-
 rust/kernel/io/resource.rs                         |    2 +-
 rust/kernel/ioctl.rs                               |    2 +-
 rust/kernel/kunit.rs                               |    1 +
 rust/kernel/lib.rs                                 |    1 +
 rust/kernel/net/phy/reg.rs                         |    8 +-
 rust/kernel/num/bounded.rs                         |    2 +-
 rust/kernel/page.rs                                |   18 +-
 rust/kernel/prelude.rs                             |   19 +-
 rust/kernel/ptr/projection.rs                      |   99 +-
 rust/kernel/str.rs                                 |   24 +-
 rust/kernel/sync/arc.rs                            |   12 +
 rust/kernel/sync/aref.rs                           |    7 +-
 rust/kernel/sync/atomic/internal.rs                |    9 +-
 rust/kernel/sync/atomic/predefine.rs               |    9 +-
 rust/kernel/sync/lock/global.rs                    |    2 +
 rust/kernel/sync/locked_by.rs                      |    2 +-
 rust/kernel/sync/refcount.rs                       |    8 +-
 rust/kernel/xarray.rs                              |   10 +-
 rust/pin-init/README.md                            |    2 +-
 rust/pin-init/examples/big_struct_in_place.rs      |    3 -
 rust/pin-init/examples/error.rs                    |    2 +
 rust/pin-init/examples/linked_list.rs              |    2 -
 rust/pin-init/examples/mutex.rs                    |    4 +-
 rust/pin-init/examples/pthread_mutex.rs            |    4 +-
 rust/pin-init/examples/static_init.rs              |    4 +-
 rust/pin-init/internal/src/diagnostics.rs          |   14 +
 rust/pin-init/internal/src/init.rs                 |  169 +-
 rust/pin-init/internal/src/lib.rs                  |    1 -
 rust/pin-init/internal/src/pin_data.rs             |  268 +-
 rust/pin-init/internal/src/zeroable.rs             |    2 +-
 rust/pin-init/src/__internal.rs                    |  231 +-
 rust/pin-init/src/lib.rs                           |  137 +-
 rust/zerocopy-derive/README.md                     |   14 +
 rust/zerocopy-derive/derive/from_bytes.rs          |  192 +
 rust/zerocopy-derive/derive/into_bytes.rs          |  164 +
 rust/zerocopy-derive/derive/known_layout.rs        |  350 +
 rust/zerocopy-derive/derive/mod.rs                 |  132 +
 rust/zerocopy-derive/derive/try_from_bytes.rs      |  765 ++
 rust/zerocopy-derive/derive/unaligned.rs           |   80 +
 rust/zerocopy-derive/lib.rs                        |  146 +
 rust/zerocopy-derive/repr.rs                       |  851 +++
 rust/zerocopy-derive/util.rs                       |  845 +++
 rust/zerocopy/README.md                            |   14 +
 rust/zerocopy/benches/as_bytes_dynamic_size.rs     |    9 +
 rust/zerocopy/benches/as_bytes_dynamic_size.x86-64 |    5 +
 .../benches/as_bytes_dynamic_size.x86-64.mca       |   47 +
 rust/zerocopy/benches/as_bytes_static_size.rs      |    9 +
 rust/zerocopy/benches/as_bytes_static_size.x86-64  |    4 +
 .../benches/as_bytes_static_size.x86-64.mca        |   45 +
 rust/zerocopy/benches/extend_vec_zeroed.rs         |    9 +
 rust/zerocopy/benches/extend_vec_zeroed.x86-64     |   60 +
 rust/zerocopy/benches/extend_vec_zeroed.x86-64.mca |  147 +
 .../benches/formats/coco_dynamic_padding.rs        |   24 +
 rust/zerocopy/benches/formats/coco_dynamic_size.rs |   27 +
 rust/zerocopy/benches/formats/coco_static_size.rs  |   27 +
 rust/zerocopy/benches/insert_vec_zeroed.rs         |   13 +
 rust/zerocopy/benches/insert_vec_zeroed.x86-64     |   79 +
 rust/zerocopy/benches/insert_vec_zeroed.x86-64.mca |  183 +
 rust/zerocopy/benches/new_box_zeroed.rs            |    9 +
 rust/zerocopy/benches/new_box_zeroed.x86-64        |    7 +
 rust/zerocopy/benches/new_box_zeroed.x86-64.mca    |   51 +
 .../new_box_zeroed_with_elems_dynamic_padding.rs   |   11 +
 ...ew_box_zeroed_with_elems_dynamic_padding.x86-64 |   24 +
 ...ox_zeroed_with_elems_dynamic_padding.x86-64.mca |   81 +
 .../new_box_zeroed_with_elems_dynamic_size.rs      |    9 +
 .../new_box_zeroed_with_elems_dynamic_size.x86-64  |   22 +
 ...w_box_zeroed_with_elems_dynamic_size.x86-64.mca |   77 +
 rust/zerocopy/benches/new_vec_zeroed.rs            |    9 +
 rust/zerocopy/benches/new_vec_zeroed.x86-64        |   40 +
 rust/zerocopy/benches/new_vec_zeroed.x86-64.mca    |  113 +
 rust/zerocopy/benches/new_zeroed.rs                |    9 +
 rust/zerocopy/benches/new_zeroed.x86-64            |    3 +
 rust/zerocopy/benches/new_zeroed.x86-64.mca        |   43 +
 rust/zerocopy/benches/read_from_bytes.rs           |    7 +
 rust/zerocopy/benches/read_from_bytes.x86-64       |   15 +
 rust/zerocopy/benches/read_from_bytes.x86-64.mca   |   65 +
 rust/zerocopy/benches/read_from_prefix.rs          |   10 +
 rust/zerocopy/benches/read_from_prefix.x86-64      |   14 +
 rust/zerocopy/benches/read_from_prefix.x86-64.mca  |   63 +
 rust/zerocopy/benches/read_from_suffix.rs          |   10 +
 rust/zerocopy/benches/read_from_suffix.x86-64      |   15 +
 rust/zerocopy/benches/read_from_suffix.x86-64.mca  |   65 +
 .../benches/ref_from_bytes_dynamic_padding.rs      |    7 +
 .../benches/ref_from_bytes_dynamic_padding.x86-64  |   22 +
 .../ref_from_bytes_dynamic_padding.x86-64.mca      |   77 +
 .../benches/ref_from_bytes_dynamic_size.rs         |    7 +
 .../benches/ref_from_bytes_dynamic_size.x86-64     |   20 +
 .../benches/ref_from_bytes_dynamic_size.x86-64.mca |   75 +
 .../zerocopy/benches/ref_from_bytes_static_size.rs |    7 +
 .../benches/ref_from_bytes_static_size.x86-64      |    8 +
 .../benches/ref_from_bytes_static_size.x86-64.mca  |   53 +
 .../ref_from_bytes_with_elems_dynamic_padding.rs   |   10 +
 ...ef_from_bytes_with_elems_dynamic_padding.x86-64 |   19 +
 ...rom_bytes_with_elems_dynamic_padding.x86-64.mca |   71 +
 .../ref_from_bytes_with_elems_dynamic_size.rs      |   10 +
 .../ref_from_bytes_with_elems_dynamic_size.x86-64  |   16 +
 ...f_from_bytes_with_elems_dynamic_size.x86-64.mca |   65 +
 .../benches/ref_from_prefix_dynamic_padding.rs     |   10 +
 .../benches/ref_from_prefix_dynamic_padding.x86-64 |   22 +
 .../ref_from_prefix_dynamic_padding.x86-64.mca     |   77 +
 .../benches/ref_from_prefix_dynamic_size.rs        |   10 +
 .../benches/ref_from_prefix_dynamic_size.x86-64    |   17 +
 .../ref_from_prefix_dynamic_size.x86-64.mca        |   67 +
 .../benches/ref_from_prefix_static_size.rs         |   10 +
 .../benches/ref_from_prefix_static_size.x86-64     |    8 +
 .../benches/ref_from_prefix_static_size.x86-64.mca |   53 +
 .../ref_from_prefix_with_elems_dynamic_padding.rs  |   13 +
 ...f_from_prefix_with_elems_dynamic_padding.x86-64 |   26 +
 ...om_prefix_with_elems_dynamic_padding.x86-64.mca |   85 +
 .../ref_from_prefix_with_elems_dynamic_size.rs     |   13 +
 .../ref_from_prefix_with_elems_dynamic_size.x86-64 |   22 +
 ..._from_prefix_with_elems_dynamic_size.x86-64.mca |   77 +
 .../benches/ref_from_suffix_dynamic_padding.rs     |   10 +
 .../benches/ref_from_suffix_dynamic_padding.x86-64 |   23 +
 .../ref_from_suffix_dynamic_padding.x86-64.mca     |   79 +
 .../benches/ref_from_suffix_dynamic_size.rs        |   10 +
 .../benches/ref_from_suffix_dynamic_size.x86-64    |   13 +
 .../ref_from_suffix_dynamic_size.x86-64.mca        |   63 +
 .../benches/ref_from_suffix_static_size.rs         |   10 +
 .../benches/ref_from_suffix_static_size.x86-64     |   13 +
 .../benches/ref_from_suffix_static_size.x86-64.mca |   61 +
 .../ref_from_suffix_with_elems_dynamic_padding.rs  |   13 +
 ...f_from_suffix_with_elems_dynamic_padding.x86-64 |   27 +
 ...om_suffix_with_elems_dynamic_padding.x86-64.mca |   85 +
 .../ref_from_suffix_with_elems_dynamic_size.rs     |   13 +
 .../ref_from_suffix_with_elems_dynamic_size.x86-64 |   23 +
 ..._from_suffix_with_elems_dynamic_size.x86-64.mca |   77 +
 rust/zerocopy/benches/split_at_dynamic_padding.rs  |   12 +
 .../benches/split_at_dynamic_padding.x86-64        |   12 +
 .../benches/split_at_dynamic_padding.x86-64.mca    |   59 +
 rust/zerocopy/benches/split_at_dynamic_size.rs     |   12 +
 rust/zerocopy/benches/split_at_dynamic_size.x86-64 |   12 +
 .../benches/split_at_dynamic_size.x86-64.mca       |   59 +
 .../benches/split_at_unchecked_dynamic_padding.rs  |   12 +
 .../split_at_unchecked_dynamic_padding.x86-64      |    6 +
 .../split_at_unchecked_dynamic_padding.x86-64.mca  |   49 +
 .../benches/split_at_unchecked_dynamic_size.rs     |   12 +
 .../benches/split_at_unchecked_dynamic_size.x86-64 |    6 +
 .../split_at_unchecked_dynamic_size.x86-64.mca     |   49 +
 .../benches/split_via_immutable_dynamic_padding.rs |   11 +
 .../split_via_immutable_dynamic_padding.x86-64     |   14 +
 .../split_via_immutable_dynamic_padding.x86-64.mca |   65 +
 .../benches/split_via_immutable_dynamic_size.rs    |   11 +
 .../split_via_immutable_dynamic_size.x86-64        |   13 +
 .../split_via_immutable_dynamic_size.x86-64.mca    |   63 +
 .../split_via_runtime_check_dynamic_padding.rs     |   11 +
 .../split_via_runtime_check_dynamic_padding.x86-64 |   22 +
 ...it_via_runtime_check_dynamic_padding.x86-64.mca |   79 +
 .../split_via_runtime_check_dynamic_size.rs        |   11 +
 .../split_via_runtime_check_dynamic_size.x86-64    |   13 +
 ...split_via_runtime_check_dynamic_size.x86-64.mca |   63 +
 .../benches/split_via_unchecked_dynamic_padding.rs |   11 +
 .../split_via_unchecked_dynamic_padding.x86-64     |   14 +
 .../split_via_unchecked_dynamic_padding.x86-64.mca |   65 +
 .../benches/split_via_unchecked_dynamic_size.rs    |   11 +
 .../split_via_unchecked_dynamic_size.x86-64        |   13 +
 .../split_via_unchecked_dynamic_size.x86-64.mca    |   63 +
 rust/zerocopy/benches/transmute.rs                 |   16 +
 rust/zerocopy/benches/transmute.x86-64             |    3 +
 rust/zerocopy/benches/transmute.x86-64.mca         |   43 +
 .../zerocopy/benches/transmute_ref_dynamic_size.rs |   16 +
 .../benches/transmute_ref_dynamic_size.x86-64      |    4 +
 .../benches/transmute_ref_dynamic_size.x86-64.mca  |   45 +
 rust/zerocopy/benches/transmute_ref_static_size.rs |   15 +
 .../benches/transmute_ref_static_size.x86-64       |    3 +
 .../benches/transmute_ref_static_size.x86-64.mca   |   43 +
 rust/zerocopy/benches/try_read_from_bytes.rs       |    7 +
 rust/zerocopy/benches/try_read_from_bytes.x86-64   |   23 +
 .../benches/try_read_from_bytes.x86-64.mca         |   79 +
 rust/zerocopy/benches/try_read_from_prefix.rs      |   10 +
 rust/zerocopy/benches/try_read_from_prefix.x86-64  |   16 +
 .../benches/try_read_from_prefix.x86-64.mca        |   67 +
 rust/zerocopy/benches/try_read_from_suffix.rs      |   10 +
 rust/zerocopy/benches/try_read_from_suffix.x86-64  |   18 +
 .../benches/try_read_from_suffix.x86-64.mca        |   71 +
 .../benches/try_ref_from_bytes_dynamic_padding.rs  |    7 +
 .../try_ref_from_bytes_dynamic_padding.x86-64      |   24 +
 .../try_ref_from_bytes_dynamic_padding.x86-64.mca  |   81 +
 .../benches/try_ref_from_bytes_dynamic_size.rs     |    7 +
 .../benches/try_ref_from_bytes_dynamic_size.x86-64 |   22 +
 .../try_ref_from_bytes_dynamic_size.x86-64.mca     |   79 +
 .../benches/try_ref_from_bytes_static_size.rs      |    7 +
 .../benches/try_ref_from_bytes_static_size.x86-64  |   13 +
 .../try_ref_from_bytes_static_size.x86-64.mca      |   59 +
 ...ry_ref_from_bytes_with_elems_dynamic_padding.rs |   10 +
 ...ef_from_bytes_with_elems_dynamic_padding.x86-64 |   21 +
 ...rom_bytes_with_elems_dynamic_padding.x86-64.mca |   75 +
 .../try_ref_from_bytes_with_elems_dynamic_size.rs  |   10 +
 ...y_ref_from_bytes_with_elems_dynamic_size.x86-64 |   18 +
 ...f_from_bytes_with_elems_dynamic_size.x86-64.mca |   69 +
 .../benches/try_ref_from_prefix_dynamic_padding.rs |   10 +
 .../try_ref_from_prefix_dynamic_padding.x86-64     |   29 +
 .../try_ref_from_prefix_dynamic_padding.x86-64.mca |   91 +
 .../benches/try_ref_from_prefix_dynamic_size.rs    |   10 +
 .../try_ref_from_prefix_dynamic_size.x86-64        |   22 +
 .../try_ref_from_prefix_dynamic_size.x86-64.mca    |   77 +
 .../benches/try_ref_from_prefix_static_size.rs     |   10 +
 .../benches/try_ref_from_prefix_static_size.x86-64 |   15 +
 .../try_ref_from_prefix_static_size.x86-64.mca     |   63 +
 ...y_ref_from_prefix_with_elems_dynamic_padding.rs |   13 +
 ...f_from_prefix_with_elems_dynamic_padding.x86-64 |   30 +
 ...om_prefix_with_elems_dynamic_padding.x86-64.mca |   91 +
 .../try_ref_from_prefix_with_elems_dynamic_size.rs |   13 +
 ..._ref_from_prefix_with_elems_dynamic_size.x86-64 |   26 +
 ..._from_prefix_with_elems_dynamic_size.x86-64.mca |   83 +
 .../benches/try_ref_from_suffix_dynamic_padding.rs |   10 +
 .../try_ref_from_suffix_dynamic_padding.x86-64     |   26 +
 .../try_ref_from_suffix_dynamic_padding.x86-64.mca |   85 +
 .../benches/try_ref_from_suffix_dynamic_size.rs    |   10 +
 .../try_ref_from_suffix_dynamic_size.x86-64        |   18 +
 .../try_ref_from_suffix_dynamic_size.x86-64.mca    |   71 +
 .../benches/try_ref_from_suffix_static_size.rs     |   10 +
 .../benches/try_ref_from_suffix_static_size.x86-64 |   16 +
 .../try_ref_from_suffix_static_size.x86-64.mca     |   67 +
 ...y_ref_from_suffix_with_elems_dynamic_padding.rs |   13 +
 ...f_from_suffix_with_elems_dynamic_padding.x86-64 |   32 +
 ...om_suffix_with_elems_dynamic_padding.x86-64.mca |   95 +
 .../try_ref_from_suffix_with_elems_dynamic_size.rs |   13 +
 ..._ref_from_suffix_with_elems_dynamic_size.x86-64 |   28 +
 ..._from_suffix_with_elems_dynamic_size.x86-64.mca |   87 +
 rust/zerocopy/benches/try_transmute.rs             |   16 +
 rust/zerocopy/benches/try_transmute.x86-64         |    9 +
 rust/zerocopy/benches/try_transmute.x86-64.mca     |   55 +
 .../benches/try_transmute_ref_dynamic_size.rs      |   18 +
 .../benches/try_transmute_ref_dynamic_size.x86-64  |    6 +
 .../try_transmute_ref_dynamic_size.x86-64.mca      |   49 +
 .../benches/try_transmute_ref_static_size.rs       |   17 +
 .../benches/try_transmute_ref_static_size.x86-64   |    5 +
 .../try_transmute_ref_static_size.x86-64.mca       |   47 +
 rust/zerocopy/benches/write_to_dynamic_size.rs     |    9 +
 rust/zerocopy/benches/write_to_dynamic_size.x86-64 |   21 +
 .../benches/write_to_dynamic_size.x86-64.mca       |   77 +
 .../benches/write_to_prefix_dynamic_size.rs        |   12 +
 .../benches/write_to_prefix_dynamic_size.x86-64    |   21 +
 .../write_to_prefix_dynamic_size.x86-64.mca        |   77 +
 .../benches/write_to_prefix_static_size.rs         |   12 +
 .../benches/write_to_prefix_static_size.x86-64     |   11 +
 .../benches/write_to_prefix_static_size.x86-64.mca |   57 +
 rust/zerocopy/benches/write_to_static_size.rs      |    9 +
 rust/zerocopy/benches/write_to_static_size.x86-64  |   11 +
 .../benches/write_to_static_size.x86-64.mca        |   57 +
 .../benches/write_to_suffix_dynamic_size.rs        |   12 +
 .../benches/write_to_suffix_dynamic_size.x86-64    |   22 +
 .../write_to_suffix_dynamic_size.x86-64.mca        |   79 +
 .../benches/write_to_suffix_static_size.rs         |   12 +
 .../benches/write_to_suffix_static_size.x86-64     |   11 +
 .../benches/write_to_suffix_static_size.x86-64.mca |   57 +
 rust/zerocopy/benches/zero_dynamic_padding.rs      |    9 +
 rust/zerocopy/benches/zero_dynamic_padding.x86-64  |    7 +
 .../benches/zero_dynamic_padding.x86-64.mca        |   51 +
 rust/zerocopy/benches/zero_dynamic_size.rs         |    9 +
 rust/zerocopy/benches/zero_dynamic_size.x86-64     |    5 +
 rust/zerocopy/benches/zero_dynamic_size.x86-64.mca |   47 +
 rust/zerocopy/benches/zero_static_size.rs          |    9 +
 rust/zerocopy/benches/zero_static_size.x86-64      |    4 +
 rust/zerocopy/benches/zero_static_size.x86-64.mca  |   45 +
 rust/zerocopy/rustdoc/style.css                    |   57 +
 rust/zerocopy/src/byte_slice.rs                    |  434 ++
 rust/zerocopy/src/byteorder.rs                     | 1564 ++++
 rust/zerocopy/src/deprecated.rs                    |  281 +
 rust/zerocopy/src/error.rs                         | 1350 ++++
 rust/zerocopy/src/impls.rs                         | 2389 ++++++
 rust/zerocopy/src/layout.rs                        | 2225 ++++++
 rust/zerocopy/src/lib.rs                           | 7612 ++++++++++++++++++++
 rust/zerocopy/src/macros.rs                        | 1825 +++++
 rust/zerocopy/src/pointer/inner.rs                 |  754 ++
 rust/zerocopy/src/pointer/invariant.rs             |  298 +
 rust/zerocopy/src/pointer/mod.rs                   |  410 ++
 rust/zerocopy/src/pointer/ptr.rs                   | 1586 ++++
 rust/zerocopy/src/pointer/transmute.rs             |  522 ++
 rust/zerocopy/src/ref.rs                           | 1358 ++++
 rust/zerocopy/src/split_at.rs                      | 1090 +++
 rust/zerocopy/src/util/macro_util.rs               | 1310 ++++
 rust/zerocopy/src/util/macros.rs                   | 1067 +++
 rust/zerocopy/src/util/mod.rs                      |  938 +++
 rust/zerocopy/src/wrappers.rs                      | 1034 +++
 samples/rust/rust_dma.rs                           |   12 +-
 scripts/Makefile.autofdo                           |    6 +-
 scripts/Makefile.build                             |    1 +
 scripts/Makefile.kasan                             |    2 -
 scripts/Makefile.lib                               |    3 +
 scripts/generate_rust_analyzer.py                  |   38 +-
 310 files changed, 40553 insertions(+), 841 deletions(-)
 create mode 100644 rust/kernel/Kconfig.test
 create mode 100644 rust/kernel/bitfield.rs
 create mode 100644 rust/zerocopy-derive/README.md
 create mode 100644 rust/zerocopy-derive/derive/from_bytes.rs
 create mode 100644 rust/zerocopy-derive/derive/into_bytes.rs
 create mode 100644 rust/zerocopy-derive/derive/known_layout.rs
 create mode 100644 rust/zerocopy-derive/derive/mod.rs
 create mode 100644 rust/zerocopy-derive/derive/try_from_bytes.rs
 create mode 100644 rust/zerocopy-derive/derive/unaligned.rs
 create mode 100644 rust/zerocopy-derive/lib.rs
 create mode 100644 rust/zerocopy-derive/repr.rs
 create mode 100644 rust/zerocopy-derive/util.rs
 create mode 100644 rust/zerocopy/README.md
 create mode 100644 rust/zerocopy/benches/as_bytes_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/as_bytes_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/as_bytes_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/as_bytes_static_size.rs
 create mode 100644 rust/zerocopy/benches/as_bytes_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/as_bytes_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/extend_vec_zeroed.rs
 create mode 100644 rust/zerocopy/benches/extend_vec_zeroed.x86-64
 create mode 100644 rust/zerocopy/benches/extend_vec_zeroed.x86-64.mca
 create mode 100644 rust/zerocopy/benches/formats/coco_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/formats/coco_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/formats/coco_static_size.rs
 create mode 100644 rust/zerocopy/benches/insert_vec_zeroed.rs
 create mode 100644 rust/zerocopy/benches/insert_vec_zeroed.x86-64
 create mode 100644 rust/zerocopy/benches/insert_vec_zeroed.x86-64.mca
 create mode 100644 rust/zerocopy/benches/new_box_zeroed.rs
 create mode 100644 rust/zerocopy/benches/new_box_zeroed.x86-64
 create mode 100644 rust/zerocopy/benches/new_box_zeroed.x86-64.mca
 create mode 100644 rust/zerocopy/benches/new_box_zeroed_with_elems_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/new_box_zeroed_with_elems_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/new_box_zeroed_with_elems_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/new_box_zeroed_with_elems_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/new_box_zeroed_with_elems_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/new_box_zeroed_with_elems_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/new_vec_zeroed.rs
 create mode 100644 rust/zerocopy/benches/new_vec_zeroed.x86-64
 create mode 100644 rust/zerocopy/benches/new_vec_zeroed.x86-64.mca
 create mode 100644 rust/zerocopy/benches/new_zeroed.rs
 create mode 100644 rust/zerocopy/benches/new_zeroed.x86-64
 create mode 100644 rust/zerocopy/benches/new_zeroed.x86-64.mca
 create mode 100644 rust/zerocopy/benches/read_from_bytes.rs
 create mode 100644 rust/zerocopy/benches/read_from_bytes.x86-64
 create mode 100644 rust/zerocopy/benches/read_from_bytes.x86-64.mca
 create mode 100644 rust/zerocopy/benches/read_from_prefix.rs
 create mode 100644 rust/zerocopy/benches/read_from_prefix.x86-64
 create mode 100644 rust/zerocopy/benches/read_from_prefix.x86-64.mca
 create mode 100644 rust/zerocopy/benches/read_from_suffix.rs
 create mode 100644 rust/zerocopy/benches/read_from_suffix.x86-64
 create mode 100644 rust/zerocopy/benches/read_from_suffix.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_static_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_with_elems_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_with_elems_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_with_elems_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_with_elems_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_with_elems_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_bytes_with_elems_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_static_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_with_elems_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_with_elems_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_with_elems_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_with_elems_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_with_elems_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_prefix_with_elems_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_static_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_with_elems_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_with_elems_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_with_elems_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_with_elems_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_with_elems_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/ref_from_suffix_with_elems_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_at_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/split_at_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/split_at_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_at_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/split_at_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/split_at_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_at_unchecked_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/split_at_unchecked_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/split_at_unchecked_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_at_unchecked_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/split_at_unchecked_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/split_at_unchecked_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_via_immutable_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/split_via_immutable_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/split_via_immutable_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_via_immutable_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/split_via_immutable_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/split_via_immutable_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_via_runtime_check_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/split_via_runtime_check_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/split_via_runtime_check_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_via_runtime_check_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/split_via_runtime_check_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/split_via_runtime_check_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_via_unchecked_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/split_via_unchecked_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/split_via_unchecked_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/split_via_unchecked_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/transmute.rs
 create mode 100644 rust/zerocopy/benches/transmute.x86-64
 create mode 100644 rust/zerocopy/benches/transmute.x86-64.mca
 create mode 100644 rust/zerocopy/benches/transmute_ref_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/transmute_ref_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/transmute_ref_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/transmute_ref_static_size.rs
 create mode 100644 rust/zerocopy/benches/transmute_ref_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/transmute_ref_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_read_from_bytes.rs
 create mode 100644 rust/zerocopy/benches/try_read_from_bytes.x86-64
 create mode 100644 rust/zerocopy/benches/try_read_from_bytes.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_read_from_prefix.rs
 create mode 100644 rust/zerocopy/benches/try_read_from_prefix.x86-64
 create mode 100644 rust/zerocopy/benches/try_read_from_prefix.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_read_from_suffix.rs
 create mode 100644 rust/zerocopy/benches/try_read_from_suffix.x86-64
 create mode 100644 rust/zerocopy/benches/try_read_from_suffix.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_static_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_with_elems_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_with_elems_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_static_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_with_elems_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_with_elems_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_static_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_with_elems_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_with_elems_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_transmute.rs
 create mode 100644 rust/zerocopy/benches/try_transmute.x86-64
 create mode 100644 rust/zerocopy/benches/try_transmute.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_transmute_ref_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/try_transmute_ref_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_transmute_ref_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/try_transmute_ref_static_size.rs
 create mode 100644 rust/zerocopy/benches/try_transmute_ref_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/try_transmute_ref_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/write_to_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/write_to_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/write_to_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/write_to_prefix_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/write_to_prefix_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/write_to_prefix_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/write_to_prefix_static_size.rs
 create mode 100644 rust/zerocopy/benches/write_to_prefix_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/write_to_prefix_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/write_to_static_size.rs
 create mode 100644 rust/zerocopy/benches/write_to_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/write_to_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/write_to_suffix_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/write_to_suffix_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/write_to_suffix_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/write_to_suffix_static_size.rs
 create mode 100644 rust/zerocopy/benches/write_to_suffix_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/write_to_suffix_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/zero_dynamic_padding.rs
 create mode 100644 rust/zerocopy/benches/zero_dynamic_padding.x86-64
 create mode 100644 rust/zerocopy/benches/zero_dynamic_padding.x86-64.mca
 create mode 100644 rust/zerocopy/benches/zero_dynamic_size.rs
 create mode 100644 rust/zerocopy/benches/zero_dynamic_size.x86-64
 create mode 100644 rust/zerocopy/benches/zero_dynamic_size.x86-64.mca
 create mode 100644 rust/zerocopy/benches/zero_static_size.rs
 create mode 100644 rust/zerocopy/benches/zero_static_size.x86-64
 create mode 100644 rust/zerocopy/benches/zero_static_size.x86-64.mca
 create mode 100644 rust/zerocopy/rustdoc/style.css
 create mode 100644 rust/zerocopy/src/byte_slice.rs
 create mode 100644 rust/zerocopy/src/byteorder.rs
 create mode 100644 rust/zerocopy/src/deprecated.rs
 create mode 100644 rust/zerocopy/src/error.rs
 create mode 100644 rust/zerocopy/src/impls.rs
 create mode 100644 rust/zerocopy/src/layout.rs
 create mode 100644 rust/zerocopy/src/lib.rs
 create mode 100644 rust/zerocopy/src/macros.rs
 create mode 100644 rust/zerocopy/src/pointer/inner.rs
 create mode 100644 rust/zerocopy/src/pointer/invariant.rs
 create mode 100644 rust/zerocopy/src/pointer/mod.rs
 create mode 100644 rust/zerocopy/src/pointer/ptr.rs
 create mode 100644 rust/zerocopy/src/pointer/transmute.rs
 create mode 100644 rust/zerocopy/src/ref.rs
 create mode 100644 rust/zerocopy/src/split_at.rs
 create mode 100644 rust/zerocopy/src/util/macro_util.rs
 create mode 100644 rust/zerocopy/src/util/macros.rs
 create mode 100644 rust/zerocopy/src/util/mod.rs
 create mode 100644 rust/zerocopy/src/wrappers.rs

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-14 20:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-14 20:24 [GIT PULL] Rust for v7.2 Miguel Ojeda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox