Skip to content

rust-6.12

@ojeda ojeda tagged this 24 Sep 22:01
Toolchain and infrastructure:

 - Support 'MITIGATION_{RETHUNK,RETPOLINE,SLS}' (which cleans up objtool
   warnings), teach objtool about 'noreturn' Rust symbols and mimic
   '___ADDRESSABLE()' for 'module_{init,exit}'. With that, we should be
   objtool-warning-free, so enable it to run for all Rust object files.

 - KASAN (no 'SW_TAGS'), KCFI and shadow call sanitizer support.

 - Support 'RUSTC_VERSION', including re-config and re-build on change.

 - Split helpers file into several files in a folder, to avoid conflicts
   in it. Eventually those files will be moved to the right places with
   the new build system. In addition, remove the need to manually export
   the symbols defined there, reusing existing machinery for that.

 - Relax restriction on configurations with Rust + GCC plugins to just
   the RANDSTRUCT plugin.

'kernel' crate:

 - New 'list' module: doubly-linked linked list for use with reference
   counted values, which is heavily used by the upcoming Rust Binder.
   This includes 'ListArc' (a wrapper around 'Arc' that is guaranteed
   unique for the given ID), 'AtomicTracker' (tracks whether a 'ListArc'
   exists using an atomic), 'ListLinks' (the prev/next pointers for an
   item in a linked list), 'List' (the linked list itself), 'Iter' (an
   iterator over a 'List'), 'Cursor' (a cursor into a 'List' that allows
   to remove elements), 'ListArcField' (a field exclusively owned by a
   'ListArc'), as well as support for heterogeneous lists.

 - New 'rbtree' module: red-black tree abstractions used by the upcoming
   Rust Binder. This includes 'RBTree' (the red-black tree itself),
   'RBTreeNode' (a node), 'RBTreeNodeReservation' (a memory reservation
   for a node), 'Iter' and 'IterMut' (immutable and mutable iterators),
   'Cursor' (bidirectional cursor that allows to remove elements), as
   well as an entry API similar to the Rust standard library one.

 - 'init' module: add 'write_[pin_]init' methods and the 'InPlaceWrite'
   trait. Add the 'assert_pinned!' macro.

 - 'sync' module: implement the 'InPlaceInit' trait for 'Arc' by
   introducing an associated type in the trait.

 - 'alloc' module: add 'drop_contents' method to 'BoxExt'.

 - 'types' module: implement the 'ForeignOwnable' trait for
   'Pin<Box<T>>' and improve the trait's documentation. In addition,
   add the 'into_raw' method to the 'ARef' type.

 - 'error' module: in preparation for the upcoming Rust support for
   32-bit architectures, like arm, locally allow Clippy lint for those.

Documentation:

 - https://rust.docs.kernel.org has been announced, so link to it.

 - Enable rustdoc's "jump to definition" feature, making its output a
   bit closer to the experience in a cross-referencer.

 - Debian Testing now also provides recent Rust releases (outside of
   the freeze period), so add it to the list.

MAINTAINERS:

 - Trevor is joining as reviewer of the "RUST" entry.

And a few other small bits.
Assets 2
Loading