• Linus Torvalds's avatar
    Merge tag 'rust-6.11' of https://github.com/Rust-for-Linux/linux · 910bfc26
    Linus Torvalds authored
    Pull Rust updates from Miguel Ojeda:
     "The highlight is the establishment of a minimum version for the Rust
      toolchain, including 'rustc' (and bundled tools) and 'bindgen'.
    
      The initial minimum will be the pinned version we currently have, i.e.
      we are just widening the allowed versions. That covers three stable
      Rust releases: 1.78.0, 1.79.0, 1.80.0 (getting released tomorrow),
      plus beta, plus nightly.
    
      This should already be enough for kernel developers in distributions
      that provide recent Rust compiler versions routinely, such as Arch
      Linux, Debian Unstable (outside the freeze period), Fedora Linux,
      Gentoo Linux (especially the testing channel), Nix (unstable) and
      openSUSE Slowroll and Tumbleweed.
    
      In addition, the kernel is now being built-tested by Rust's pre-merge
      CI. That is, every change that is attempting to land into the Rust
      compiler is tested against the kernel, and it is merged only if it
      passes. Similarly, the bindgen tool has agreed to build the kernel in
      their CI too.
    
      Thus, with the pre-merge CI in place, both projects hope to avoid
      unintentional changes to Rust that break the kernel. This means that,
      in general, apart from intentional changes on their side (that we will
      need to workaround conditionally on our side), the upcoming Rust
      compiler versions should generally work.
    
      In addition, the Rust project has proposed getting the kernel into
      stable Rust (at least solving the main blockers) as one of its three
      flagship goals for 2024H2 [1].
    
      I would like to thank Niko, Sid, Emilio et al. for their help
      promoting the collaboration between Rust and the kernel.
    
      Toolchain and infrastructure:
    
       - Support several Rust toolchain versions.
    
       - Support several bindgen versions.
    
       - Remove 'cargo' requirement and simplify 'rusttest', thanks to
         'alloc' having been dropped last cycle.
    
       - Provide proper error reporting for the 'rust-analyzer' target.
    
      'kernel' crate:
    
       - Add 'uaccess' module with a safe userspace pointers abstraction.
    
       - Add 'page' module with a 'struct page' abstraction.
    
       - Support more complex generics in workqueue's 'impl_has_work!'
         macro.
    
      'macros' crate:
    
       - Add 'firmware' field support to the 'module!' macro.
    
       - Improve 'module!' macro documentation.
    
      Documentation:
    
       - Provide instructions on what packages should be installed to build
         the kernel in some popular Linux distributions.
    
       - Introduce the new kernel.org LLVM+Rust toolchains.
    
       - Explain '#[no_std]'.
    
      And a few other small bits"
    
    Link: https://rust-lang.github.io/rust-project-goals/2024h2/index.html#flagship-goals [1]
    
    * tag 'rust-6.11' of https://github.com/Rust-for-Linux/linux: (26 commits)
      docs: rust: quick-start: add section on Linux distributions
      rust: warn about `bindgen` versions 0.66.0 and 0.66.1
      rust: start supporting several `bindgen` versions
      rust: work around `bindgen` 0.69.0 issue
      rust: avoid assuming a particular `bindgen` build
      rust: start supporting several compiler versions
      rust: simplify Clippy warning flags set
      rust: relax most deny-level lints to warnings
      rust: allow `dead_code` for never constructed bindings
      rust: init: simplify from `map_err` to `inspect_err`
      rust: macros: indent list item in `paste!`'s docs
      rust: add abstraction for `struct page`
      rust: uaccess: add typed accessors for userspace pointers
      uaccess: always export _copy_[from|to]_user with CONFIG_RUST
      rust: uaccess: add userspace pointers
      kbuild: rust-analyzer: improve comment documentation
      kbuild: rust-analyzer: better error handling
      docs: rust: no_std is used
      rust: alloc: add __GFP_HIGHMEM flag
      rust: alloc: fix typo in docs for GFP_NOWAIT
      ...
    910bfc26
helpers.c 6.49 KB