Re: [PATCH v2 00/19] `zerocopy` support
Miguel Ojeda <[email protected]>
| Newsgroups | org.kernel.vger.linux-kbuild,org.kernel.vger.rust-for-linux |
|---|---|
| Message-ID | <CANiq72=2SXygiqrvnS-puR7YOfW-VX_TF4dujcpArHNej3yOKA@mail.gmail.com> |
On Mon, Jun 8, 2026 at 4:15 PM Miguel Ojeda <[email protected]> wrote: > > This patch series introduces support for `zerocopy`: > > 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 (top #50 recent, top #100 > all-time downloads; according to crates.io), and it is also used by the > Rust compiler itself. > > The series starts with a few preparation commits, then the `zerocopy` > and `zerocopy-derive` crates are added. Finally, an example patch using > it is on top, removing one `unsafe impl`. > > I had to adapt the crates slightly (just +2/-3 lines), but both patches > could potentially be provided upstream eventually. Please see the > commits for details. > > In total, it is about ~39k lines added, ~32k without counting `benches/` > which are just for documentation purposes. > > See the cover letter for `syn` for some more details about depending on > third-party crates in commit 54e3eae85562 ("Merge patch series "`syn` > support""). > > The codegen of an isolated example function similar to the patch on top > is essentially identical. It also turns out that (for that particular > case) `zerocopy`'s version, even under `debug-assertions` enabled, has > no remaining panics, unlike a few in the current code (because the > compiler can prove the remaining `ub_checks` statically). > > So their "fast, safe" does indeed check out -- at least in that case. > > P.S. This version of `zerocopy` has already the unstable `Ptr{,Inner}` > types -- to play with them, please use: > > make ... KRUSTFLAGS=--cfg=zerocopy_unstable_ptr > > --- > I will apply v2 for tomorrow's linux-next. Applied to `rust-next` (yesterday) -- thanks everyone! Cheers, Miguel