As proposed in the past in e.g. LPC 2025 and the Maintainers Summit [1], we are going to follow Debian Stable's Rust versions as our minimum supported version.
Debian Trixie was released with a Rust 1.85.0 toolchain [2], which it still uses to this day [3] (i.e. no update to Rust 1.85.1). Debian Trixie was released with `bindgen` 0.71.1, which it also still uses to this day [4]. Debian Trixie's release happened on 2025-08-09 [5], which means that a fair amount of time has passed since its release for kernel developers to upgrade. Thus bump the minimum to the new versions, i.e. - Rust: 1.78.0 -> 1.85.0 - bindgen: 0.65.1 -> 0.71.1 There are a few main parts to the series, in this order: - A few cleanups that can be performed before the bumps. - The Rust bump (and its cleanups). - The `bindgen` bump (and its cleanups). - Documentation updates. - The `cfi_encoding` patch, added here, which needs the bump. - The per-version flags support and a Clippy cleanup on top. Link: https://lwn.net/Articles/1050174/ [1] Link: https://www.debian.org/releases/trixie/release-notes/whats-new.en.html#desktops-and-well-known-packages [2] Link: https://packages.debian.org/trixie/rustc [3] Link: https://packages.debian.org/trixie/bindgen [4] Link: https://www.debian.org/releases/trixie/ [5] --- v1: https://lore.kernel.org/rust-for-linux/[email protected]/ v2: - Added patch to globally allow `incompatible_msrv` and removed the last instance. - Replaced `--remap-path-prefix` patches with one that drops the workaround entirely (and place it as the first one) and summarizes the discussion. I also noticed that `--remap-path-prefix` for `rustdoc` is still unstable (unlike `rustc`'s one), so I added it to our list as usual (https://github.com/Rust-for-Linux/linux/issues/2). There does not seem to be a tracking issue, so I asked upstream about it. We will need these two lines as the resolution for the conflict: $(RUSTDOC) $(filter-out $(skip_flags) --remap-path-scope=%,$(if $(rustdoc_host),$(rust_common_flags),$(rust_flags))) \ $(RUSTDOC) --test $(filter-out --remap-path-scope=%,$(rust_flags)) \ - Reworked the `extract_if` patch to use it (unstably). The feature last major change happened in Rust 1.85.0, so that is fine. - Moved `$(HOSTRUSTFLAGS)` below so that per-version flags (like lints) can be overridden too. Please see the details in the commit and my reply to v1. - Added `feature(extract_if)` and `feature(non_null_convenience)` items to https://github.com/Rust-for-Linux/linux/issues/1223. Then reworded the commits accordingly to include the references to tracking issues and PRs. - Other rewords, e.g. the "beyond" typo. - Rebased on top of `rust-next`. - Picked up tags. Alice Ryhl (1): rust: declare cfi_encoding for lru_status Miguel Ojeda (32): rust: kbuild: remove `--remap-path-prefix` workarounds rust: kbuild: remove "`try` keyword" workaround for `bindgen` < 0.59.2 rust: kbuild: remove unneeded old `allow`s for generated layout tests gpu: nova-core: bindings: remove unneeded `cfg_attr` rust: bump Rust minimum supported version to 1.85.0 (Debian Trixie) rust: bump Clippy's MSRV and clean `incompatible_msrv` allows rust: allow globally `clippy::incompatible_msrv` rust: simplify `RUSTC_VERSION` Kconfig conditions rust: remove `RUSTC_HAS_SLICE_AS_FLATTENED` and simplify code rust: remove `RUSTC_HAS_COERCE_POINTEE` and simplify code rust: kbuild: remove skipping of `-Wrustdoc::unescaped_backticks` rust: kbuild: remove `feature(...)`s that are now stable rust: transmute: simplify code with Rust 1.80.0 `split_at_*checked()` rust: alloc: simplify with `NonNull::add()` now that it is stable rust: macros: simplify code using `feature(extract_if)` rust: block: update `const_refs_to_static` MSRV TODO comment rust: bump `bindgen` minimum supported version to 0.71.1 (Debian Trixie) rust: rust_is_available: remove warning for `bindgen` 0.66.[01] rust: rust_is_available: remove warning for `bindgen` < 0.69.5 && libclang >= 19.1 rust: kbuild: update `bindgen --rust-target` version and replace comment rust: kbuild: remove "dummy parameter" workaround for `bindgen` < 0.71.1 docs: rust: quick-start: openSUSE provides `rust-src` package nowadays docs: rust: quick-start: update Ubuntu versioned packages docs: rust: quick-start: update minimum Ubuntu version docs: rust: quick-start: add Ubuntu 26.04 LTS and remove subsection title docs: rust: quick-start: remove Gentoo "testing" note docs: rust: quick-start: remove Nix "unstable channel" note docs: rust: quick-start: remove GDB/Binutils mention docs: rust: general-information: simplify Kconfig example docs: rust: general-information: use real example rust: kbuild: support global per-version flags rust: kbuild: allow `clippy::precedence` for Rust < 1.86.0 .clippy.toml | 2 +- Documentation/process/changes.rst | 4 +- Documentation/rust/general-information.rst | 4 +- Documentation/rust/quick-start.rst | 52 +++++++---------- Makefile | 12 +++- arch/Kconfig | 3 +- arch/arm64/Kconfig | 8 --- arch/riscv/Kconfig | 3 - drivers/android/binder/Makefile | 3 +- drivers/android/binder/page_range.rs | 6 +- drivers/android/binder/page_range_helper.c | 24 -------- drivers/android/binder/page_range_helper.h | 15 ----- drivers/gpu/nova-core/gsp/cmdq.rs | 6 +- drivers/gpu/nova-core/gsp/fw/r570_144.rs | 3 - init/Kconfig | 15 +---- rust/Makefile | 31 ++-------- rust/bindgen_parameters | 8 +-- rust/bindings/bindings_helper.h | 1 - rust/bindings/lib.rs | 5 +- rust/kernel/alloc/allocator/iter.rs | 8 +-- rust/kernel/alloc/kbox.rs | 29 +--------- rust/kernel/block/mq/gen_disk.rs | 4 +- rust/kernel/lib.rs | 30 +--------- rust/kernel/list/arc.rs | 22 +------ rust/kernel/prelude.rs | 3 - rust/kernel/ptr.rs | 1 - rust/kernel/slice.rs | 49 ---------------- rust/kernel/sync/arc.rs | 21 +------ rust/kernel/transmute.rs | 35 ++--------- rust/macros/helpers.rs | 1 - rust/macros/kunit.rs | 9 +-- rust/macros/lib.rs | 3 + rust/uapi/lib.rs | 5 +- scripts/Makefile.build | 6 +- scripts/min-tool-version.sh | 4 +- scripts/rust_is_available.sh | 36 +----------- scripts/rust_is_available_bindgen_0_66.h | 2 - ...ust_is_available_bindgen_libclang_concat.h | 3 - scripts/rust_is_available_test.py | 58 +------------------ 39 files changed, 83 insertions(+), 451 deletions(-) delete mode 100644 drivers/android/binder/page_range_helper.c delete mode 100644 drivers/android/binder/page_range_helper.h delete mode 100644 rust/kernel/slice.rs delete mode 100644 scripts/rust_is_available_bindgen_0_66.h delete mode 100644 scripts/rust_is_available_bindgen_libclang_concat.h base-commit: 36f5a2b09e650b82d7b2a106e3b93af48c2010d9 -- 2.53.0
