<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in split_via_unchecked_dynamic_padding.x86-64</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>b079329b8691768962aa514b8f8c9077ca352459 - Merge tag &apos;rust-7.2&apos; of gitolite.kernel.org:pub/scm/linux/kernel/git/ojeda/linux</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64#b079329b8691768962aa514b8f8c9077ca352459</link>
        <description>Merge tag &apos;rust-7.2&apos; of gitolite.kernel.org:pub/scm/linux/kernel/git/ojeda/linuxPull Rust updates from Miguel Ojeda: &quot;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).  Toolchain and infrastructure:   - Introduce support for the &apos;zerocopy&apos; library [1][2]:         Fast, safe, compile error. Pick two.         Zerocopy makes zero-cost memory manipulation effortless. We write         `unsafe` so you don&apos;t have to.     It essentially provides derivable traits (e.g. &apos;FromBytes&apos;) and     macros (e.g. &apos;transmute!&apos;) for safely converting between byte     sequences and other types. Having such support allows us to remove     some &apos;unsafe&apos; code.     It is among the most downloaded Rust crates and it is also used by     the Rust compiler itself.     It is licensed under &quot;BSD-2-Clause OR Apache-2.0 OR MIT&quot;.     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     &apos;benches/&apos; 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 &apos;unsafe impl&apos;.     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 &apos;zerocopy&apos; version, even     with &apos;debug-assertions&apos; enabled, has no remaining panics, unlike a     few in the current code (since the compiler can prove the remaining     &apos;ub_checks&apos; statically).     So their &quot;fast, safe&quot; does indeed check out -- at least in that     case.   - 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 &apos;CONFIG_RUST_BITMAP_KUNIT_TEST&apos;.     They are placed within a new menu, &apos;CONFIG_RUST_KUNIT_TESTS&apos;, in     the new &apos;rust/kernel/Kconfig.test&apos; file.   - Support the upcoming Rust 1.98.0 release (expected 2026-08-20):     lint cleanups and an unstable flag rename.   - Disable &apos;rustdoc&apos; documentation inlining for all prelude items,     which bloats the generated documentation.   - Ignore (in Git) and clean (in Kbuild) the (rarely) &apos;rustc&apos;-generated     &apos;*.long-type-*.txt&apos; files.  &apos;kernel&apos; crate:   - Add new &apos;bitfield&apos; module with the &apos;bitfield!&apos; macro (extracted     from the existing &apos;register!&apos; one), which declares integer types     that are split into distinct bit fields of arbitrary length.     Each field is a &apos;Bounded&apos; of the appropriate bit width (ensuring     values are properly validated and avoiding implicit data loss) and     gets several generated getters and setters (infallible, &apos;const&apos; and     fallible) as well as associated constants (&apos;_MASK&apos;, &apos;_SHIFT&apos; and     &apos;_RANGE&apos;). It also supports fields that can be converted from/to     custom types, either fallibly (&apos;?=&gt;&apos;) or infallibly (&apos;=&gt;&apos;).     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::&lt;0x1f&gt;();         assert_eq!(color.green(), 0x1f);         assert_eq!(color.into_raw(), 0x1f &lt;&lt; Rgb::GREEN_SHIFT);     Add as well documentation and a test suite for it, as usual; and     update the &apos;register!&apos; macro to use it.     It will be maintained by Alexandre Courbot (with Yury Norov as     reviewer) under a new &apos;MAINTAINERS&apos; entry: &apos;RUST [BITFIELD]&apos;.   - &apos;ptr&apos; module: rework index projection syntax into keyworded syntax     and introduce panicking variant.     The keyword syntax (&apos;build:&apos;, &apos;try:&apos;, &apos;panic:&apos;) is more explicit     and paves the way of perhaps adding more flavors in the future,     e.g. an &apos;unsafe&apos; index projection.     For instance, projections now look like this:         fn f(p: *const [u8; 32]) -&gt; 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]);   - &apos;build_assert&apos; module: make the module the home of its macros     instead of rendering them twice.   - &apos;sync&apos; module: add &apos;UniqueArc::as_ptr()&apos; associated function.   - &apos;alloc&apos; module:       - Fix the &apos;Vec::reserve()&apos; doctest to properly account for the         existing vector length in the capacity assertion.       - Fix an incorrect operator in the &apos;Vec::extend_with()&apos; &apos;SAFETY&apos;         comment; add a doc test demonstrating basic usage and the         zero-length case.   - Clean imports across several modules to follow the &quot;kernel     vertical&quot; import style in order to minimize conflicts.  &apos;pin-init&apos; crate:   - User visible changes:       - Do not generate &apos;non_snake_case&apos; warnings for identifiers that         are syntactically just users of a field name. This would allow         all &apos;#[allow(non_snake_case)]&apos; 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&apos; 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 &apos;--envs&apos; for passing env vars for crates like &apos;zerocopy&apos;.  &apos;MAINTAINERS&apos;:   - Add the following reviewers to the &apos;RUST&apos; entry:       - Daniel Almeida       - Tamir Duberstein       - Alexandre Courbot       - Onur &#214;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&quot;Link: https://github.com/google/zerocopy [1]Link: https://docs.rs/zerocopy [2]Link: https://github.com/Rust-for-Linux/linux/issues/1239 [3]* tag &apos;rust-7.2&apos; of gitolite.kernel.org:pub/scm/linux/kernel/git/ojeda/linux: (86 commits)  MAINTAINERS: add Onur &#214;zkan as Rust reviewer  MAINTAINERS: add Alexandre Courbot as Rust reviewer  MAINTAINERS: add Tamir Duberstein as Rust reviewer  MAINTAINERS: add Daniel Almeida as Rust reviewer  kbuild: rust: clean `zerocopy-derive` in `mrproper`  rust: make `build_assert` module the home of related macros  rust: str: clean unused import for Rust &gt;= 1.98  rust: str: use the &quot;kernel vertical&quot; imports style  rust: aref: use the &quot;kernel vertical&quot; imports style  rust: page: use the &quot;kernel vertical&quot; imports style  gpu: nova-core: firmware: parse `FalconUCodeDescV2` via `zerocopy`  rust: prelude: add `zerocopy{,_derive}::FromBytes`  rust: zerocopy-derive: enable support in kbuild  rust: zerocopy-derive: add `README.md`  rust: zerocopy-derive: avoid generating non-ASCII identifiers  rust: zerocopy-derive: add SPDX License Identifiers  rust: zerocopy-derive: import crate  rust: zerocopy: enable support in kbuild  rust: zerocopy: add `README.md`  rust: zerocopy: remove float `Display` support  ...

            List of files:
            /linux/rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64</description>
        <pubDate>Mon, 15 Jun 2026 05:55:48 +0200</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>98cc68794c003bc76fc9da2e8a075e947eee5921 - Merge patch series &quot;`zerocopy` support&quot;</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64#98cc68794c003bc76fc9da2e8a075e947eee5921</link>
        <description>Merge patch series &quot;`zerocopy` support&quot;Introduce support for `zerocopy` [1][2]:    Fast, safe, compile error. Pick two.    Zerocopy makes zero-cost memory manipulation effortless. We write    `unsafe` so you don&apos;t have to.It essentially provides derivable traits (e.g. `FromBytes`) and macros(e.g. `transmute!`) for safely converting between byte sequences andother types. Having such support allows us to remove some `unsafe` code.It is among the most downloaded Rust crates (top #50 recent, top #100all-time downloads; according to crates.io), and it is also used by theRust compiler itself.The series starts with a few preparation commits, then the `zerocopy`and `zerocopy-derive` crates are added. Finally, an example patch usingit is on top, removing one `unsafe impl`.I had to adapt the crates slightly (just +2/-3 lines), but both patchescould potentially be provided upstream eventually. Please see thecommits 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 onthird-party crates in commit 54e3eae85562 (&quot;Merge patch series &quot;`syn`support&quot;&quot;).The codegen of an isolated example function similar to the patch on topis essentially identical. It also turns out that (for that particularcase) `zerocopy`&apos;s version, even under `debug-assertions` enabled, hasno remaining panics, unlike a few in the current code (because thecompiler can prove the remaining `ub_checks` statically).So their &quot;fast, safe&quot; 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_ptrLink: https://github.com/google/zerocopy [1]Link: https://docs.rs/zerocopy [2]Link: https://patch.msgid.link/20260608141439.182634-1-ojeda@kernel.orgSigned-off-by: Miguel Ojeda &lt;ojeda@kernel.org&gt;

            List of files:
            /linux/rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64</description>
        <pubDate>Tue, 09 Jun 2026 04:18:30 +0200</pubDate>
        <dc:creator>Miguel Ojeda &lt;ojeda@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>c37398010a05055e78cf0c75defb90df06c4e999 - rust: zerocopy: import crate</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64#c37398010a05055e78cf0c75defb90df06c4e999</link>
        <description>rust: zerocopy: import crateThis is a subset of the Rust `zerocopy` crate, version v0.8.50 (released2026-05-31), licensed under &quot;BSD-2-Clause OR Apache-2.0 OR MIT&quot;, from:    https://github.com/google/zerocopy/tree/v0.8.50The files are copied as-is, with no modifications whatsoever (not evenadding the SPDX identifiers).The `benches` folder is added (i.e. not just `src` like in other cases)since the files there are included in the rendered documentation,as well as the `rustdoc` CSS style file that is needed to make thosevisually more understandable.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-MITThe next two patches modify these files as needed for use within thekernel. This patch split allows reviewers to double-check the importand to clearly see the differences introduced.The following script may be used to verify the contents:    for path in $(cd rust/zerocopy/ &amp;&amp; find . -type f); do        curl --silent --show-error --location \            https://github.com/google/zerocopy/raw/v0.8.50/$path \            | diff --unified rust/zerocopy/$path - &amp;&amp; echo $path: OK    doneCc: Joshua Liebow-Feeser &lt;joshlf@google.com&gt;Cc: Jack Wrenn &lt;jswrenn@google.com&gt;Link: https://patch.msgid.link/20260608141439.182634-9-ojeda@kernel.orgSigned-off-by: Miguel Ojeda &lt;ojeda@kernel.org&gt;

            List of files:
            /linux/rust/zerocopy/benches/split_via_unchecked_dynamic_padding.x86-64</description>
        <pubDate>Mon, 08 Jun 2026 16:14:27 +0200</pubDate>
        <dc:creator>Miguel Ojeda &lt;ojeda@kernel.org&gt;</dc:creator>
    </item>
</channel>
</rss>
