linux/rust/kernel
Miguel Ojeda 99ba0fa10d pin-init changes for v7.0
Added:
 
 - '&'static mut MaybeUninit<T>' now implements 'InPlaceWrite'. This
   enables users to use external allocation mechanisms such as
   'static_cell'.
 
 - Gary Guo as a Maintainer.
 
 Changed:
 
 - Rewrote all proc-macros ('[pin_]init!', '#[pin_data]',
   '#[pinned_drop]', 'derive([Maybe]Zeroable)'),  using 'syn' with better
   diagnostics.
 
 - 'derive([Maybe]Zeroable)' now support tuple structs.
 
 - '[pin_]init!' now supports attributes on fields (such as
   '#[cfg(...)]').
 
 - Add a '#[default_error(<type>)]' attribute to '[pin_]init!' to
   override the default error (when no '? Error' is specified).
 
 - Support packed struct in '[pin_]init!' with
   '#[disable_initialized_field_access]'.
 
 Removed:
 
 - 'try_[pin_]init!' have been removed in favor of merging their feature
   with '[pin_]init!'. The kernel's own 'try_[pin_]init!' macros have
   been updated to use the 'default_error' attribute.
 
 Fixed:
 
 - Corrected 'T: Sized' bounds to 'T: ?Sized' in the generated
   'PinnedDrop' check by '#[pin_data]'.
 -----BEGIN PGP SIGNATURE-----
 
 iIgEABYKADAWIQQjEG/HT3UeYLJybLTomd21rZaLygUCaXHz9BIcbG9zc2luQGtl
 cm5lbC5vcmcACgkQ6Jndta2Wi8q1AQD+IAf84ueKJ8vEfiSRP0IgteZakHxFHCyZ
 Uqsn0MQRUTgA/238IG65zYkrT8jaT3FY+LSoaNRY4rNS8/l9bxFWqqwA
 =dBj9
 -----END PGP SIGNATURE-----

Merge tag 'pin-init-v7.0' of https://github.com/Rust-for-Linux/linux into rust-next

Pull pin-init updates from Benno Lossin:
 "Added:

   - Implement 'InPlaceWrite' for '&'static mut MaybeUninit<T>'. This
     enables users to use external allocation mechanisms such as
     'static_cell'.

   - Add Gary Guo as a Maintainer.

  Changed:

   - Rewrote all proc-macros ('[pin_]init!', '#[pin_data]',
     '#[pinned_drop]', 'derive([Maybe]Zeroable)'), using 'syn' with
     better diagnostics.

   - Support tuple structs in 'derive([Maybe]Zeroable)'.

   - Support attributes on fields in '[pin_]init!' (such as
     '#[cfg(...)]').

   - Add a '#[default_error(<type>)]' attribute to '[pin_]init!' to
     override the default error (when no '? Error' is specified).

   - Support packed structs in '[pin_]init!' with
     '#[disable_initialized_field_access]'.

  Removed:

   - Remove 'try_[pin_]init!' in favor of merging their feature
     with '[pin_]init!'. Update the kernel's own 'try_[pin_]init!'
     macros to use the 'default_error' attribute.

  Fixed:

   - Correct 'T: Sized' bounds to 'T: ?Sized' in the generated
     'PinnedDrop' check by '#[pin_data]'."

* tag 'pin-init-v7.0' of https://github.com/Rust-for-Linux/linux:
  rust: pin-init: Implement `InPlaceWrite<T>` for `&'static mut MaybeUninit<T>`
  MAINTAINERS: add Gary Guo to pin-init
  rust: pin-init: internal: init: simplify Zeroable safety check
  rust: pin-init: internal: init: add escape hatch for referencing initialized fields
  rust: pin-init: internal: init: add support for attributes on initializer fields
  rust: init: use `#[default_error(err)]` for the initializer macros
  rust: pin-init: add `#[default_error(<type>)]` attribute to initializer macros
  rust: pin-init: rewrite the initializer macros using `syn`
  rust: pin-init: add `?Sized` bounds to traits in `#[pin_data]` macro
  rust: pin-init: rewrite `#[pin_data]` using `syn`
  rust: pin-init: rewrite the `#[pinned_drop]` attribute macro using `syn`
  rust: pin-init: rewrite `derive(Zeroable)` and `derive(MaybeZeroable)` using `syn`
  rust: pin-init: internal: add utility API for syn error handling
  rust: pin-init: add `syn` dependency and remove `proc-macro[2]` and `quote` workarounds
  rust: pin-init: allow the crate to refer to itself as `pin-init` in doc tests
  rust: pin-init: remove `try_` versions of the initializer macros
2026-01-28 00:19:32 +01:00
..
alloc rust: alloc: use kernel::fmt 2025-10-20 04:04:23 +02:00
block rust: block: update ARef and AlwaysRefCounted imports from sync::aref 2025-11-05 18:24:10 -07:00
debugfs rust: use consistent backtick formatting for NULL in docs 2026-01-26 03:13:27 +01:00
device rust: device: use kernel::{fmt,prelude::fmt!} 2025-09-16 09:26:59 +02:00
drm drm-next for 6.19-rc1: 2025-12-04 08:53:30 -08:00
fs rust: fs: add file::Offset type alias 2025-11-05 00:05:38 +01:00
io rust: io: add typedef for phys_addr_t 2025-11-13 20:17:24 +11:00
irq rust: irq: add &Device<Bound> argument to irq callbacks 2025-08-12 20:33:33 +02:00
list rust: list: remove nonexistent generic parameter in link 2025-07-20 19:29:19 +02:00
mm mm: introduce VMA flags bitmap type 2025-11-29 10:41:09 -08:00
net Networking changes for 6.18. 2025-10-02 15:17:01 -07:00
num rust: num: bounded: rename try_into_bitint to try_into_bounded 2025-11-24 16:38:23 +01:00
pci rust: pci: fix typos in Bar struct's comments 2026-01-06 20:58:43 +01:00
str rust: str: add radix prefixed integer parsing functions 2025-11-03 14:40:45 +01:00
sync rust: sync: atomic: separate import "blocks" 2025-12-06 08:44:10 -08:00
time rust: add udelay() function 2025-11-04 13:25:29 +01:00
.gitignore rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
acpi.rs rust: acpi: replace core::mem::zeroed with pin_init::zeroed 2025-10-27 20:27:05 +01:00
alloc.rs Summary of significant series in this pull request: 2025-10-02 18:18:33 -07:00
auxiliary.rs rust: Add trait to convert a device reference to a bus device reference 2025-11-18 11:00:51 +13:00
bitmap.rs rust: bitmap: add BitmapVec::new_inline() 2025-11-26 11:25:35 -05:00
bits.rs rust: bits: add support for bits/genmask macros 2025-07-19 23:18:18 +02:00
block.rs rust: block: add block related constants 2025-09-02 05:23:56 -06:00
bug.rs rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
build_assert.rs rust: build_assert: add instructions for use with function arguments 2026-01-19 01:13:22 +01:00
clk.rs rust: use consistent backtick formatting for NULL in docs 2026-01-26 03:13:27 +01:00
configfs.rs rust: configfs: use CStr::as_char_ptr 2025-10-22 07:14:57 +02:00
cpu.rs rust: kernel: cpu: mark CpuId::current() inline 2025-09-14 23:58:45 +02:00
cpufreq.rs Merge 6.18-rc3 into driver-core-next 2025-10-27 08:02:50 +01:00
cpumask.rs rust: cpumask: Mark CpumaskVar as transparent 2025-08-14 09:55:47 +05:30
cred.rs Char/Misc/IIO/Binder changes for 6.18-rc1 2025-10-04 16:26:32 -07:00
debugfs.rs Driver core changes for 6.19-rc1 2025-12-05 21:29:02 -08:00
device.rs rust: device: Remove explicit import of CStrExt 2026-01-06 21:18:31 +01:00
device_id.rs rust: device_id: replace incorrect word in safety documentation 2025-12-29 14:09:18 +01:00
devres.rs Driver core changes for 6.19-rc1 2025-12-05 21:29:02 -08:00
dma.rs rust: dma: fix broken intra-doc links 2026-01-02 19:04:12 +01:00
driver.rs rust: driver: fix broken intra-doc links to example driver types 2025-12-30 23:22:41 +01:00
error.rs rust: replace CStr with core::ffi::CStr 2025-10-22 07:47:27 +02:00
faux.rs rust: faux: fix C header link 2025-08-13 17:40:28 +02:00
firmware.rs rust: firmware: replace kernel::c_str! with C-Strings 2025-11-17 00:53:47 +01:00
fmt.rs rust: support formatting of foreign types 2025-10-22 07:15:31 +02:00
fs.rs rust: fs: add Kiocb struct 2025-09-06 13:27:20 +02:00
generated_arch_reachable_asm.rs.S rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
generated_arch_static_branch_asm.rs.S rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
generated_arch_warn_asm.rs.S rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
i2c.rs rust: i2c: replace kernel::c_str! with C-Strings 2026-01-19 01:13:22 +01:00
id_pool.rs rust: id_pool: do not immediately acquire new ids 2025-12-02 14:17:09 -05:00
init.rs rust: init: use #[default_error(err)] for the initializer macros 2026-01-17 10:51:42 +01:00
io.rs rust: io: add typedef for phys_addr_t 2025-11-13 20:17:24 +11:00
ioctl.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
iov.rs rust: iov: add iov_iter abstractions for ITER_DEST 2025-09-06 13:27:20 +02:00
irq.rs rust: irq: add support for threaded IRQs and handlers 2025-08-12 20:22:09 +02:00
jump_label.rs rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
kunit.rs rust: use consistent backtick formatting for NULL in docs 2026-01-26 03:13:27 +01:00
lib.rs USB/Thunderbolt changes for 6.19-rc1 2025-12-06 18:42:12 -08:00
list.rs rust: list: add warning to List::remove docs about mem::take 2025-11-26 13:26:59 +01:00
maple_tree.rs rust: maple_tree: rcu_read_lock() in destructor to silence lockdep 2025-12-23 11:23:15 -08:00
miscdevice.rs Char/Misc/IIO/Binder changes for 6.18-rc1 2025-10-04 16:26:32 -07:00
mm.rs rust: mm: update ARef and AlwaysRefCounted imports from sync::aref 2025-09-13 16:55:15 -07:00
module_param.rs Modules changes for v6.19-rc1 2025-12-06 08:27:07 -08:00
net.rs rust: core abstractions for network PHY drivers 2023-12-15 09:35:50 +00:00
num.rs rust: num: add Bounded integer wrapping type 2025-11-19 00:22:24 +01:00
of.rs rust: of: use core::ffi::CStr method names 2025-09-16 09:26:59 +02:00
opp.rs Rust changes for v6.19 2025-12-03 14:16:49 -08:00
page.rs Char/Misc/IIO/Binder changes for 6.18-rc1 2025-10-04 16:26:32 -07:00
pci.rs rust: Add trait to convert a device reference to a bus device reference 2025-11-18 11:00:51 +13:00
pid_namespace.rs rust: pid_namespace: update AlwaysRefCounted imports from sync::aref 2025-08-19 13:08:41 +02:00
platform.rs rust: Add trait to convert a device reference to a bus device reference 2025-11-18 11:00:51 +13:00
prelude.rs drm-next for 6.19-rc1: 2025-12-04 08:53:30 -08:00
print.rs rust: use kernel::{fmt,prelude::fmt!} 2025-07-21 01:16:35 +02:00
processor.rs rust: Add cpu_relax() helper 2025-08-21 16:58:07 +02:00
ptr.rs rust: ptr: replace unneeded use of build_assert 2026-01-19 01:13:22 +01:00
pwm.rs pwm: Fix Rust formatting 2025-11-13 10:21:01 +01:00
rbtree.rs rust: rbtree: reduce unsafe blocks on pointer derefs 2026-01-19 09:38:10 +01:00
regulator.rs rust: regulator: use CStr::as_char_ptr 2025-10-22 07:14:57 +02:00
revocable.rs Rust changes for v6.17 2025-08-03 13:49:10 -07:00
scatterlist.rs rust: scatterlist: import ResourceSize from kernel::io 2025-11-13 20:17:24 +11:00
security.rs rust_binder: add Rust Binder driver 2025-09-19 09:40:46 +02:00
seq_file.rs rust: replace CStr with core::ffi::CStr 2025-10-22 07:47:27 +02:00
sizes.rs rust: sizes: add constants up to SZ_2G 2025-06-23 18:12:30 +02:00
slice.rs rust: slice: fix broken intra-doc links 2025-11-20 10:13:35 +00:00
static_assert.rs rust: use absolute paths in macros referencing core and kernel 2025-05-23 00:12:14 +02:00
std_vendor.rs rust: convert raw URLs to Markdown autolinks in comments 2025-05-12 00:20:25 +02:00
str.rs Modules changes for v6.19-rc1 2025-12-06 08:27:07 -08:00
sync.rs Modules changes for v6.19-rc1 2025-12-06 08:27:07 -08:00
task.rs rust: task: update ARef and AlwaysRefCounted imports from sync::aref 2025-09-08 00:11:19 +02:00
time.rs rust: time: Implement basic arithmetic operations for Delta 2025-09-04 16:56:48 +02:00
tracepoint.rs rust: add tracepoint support 2024-11-04 16:21:44 -05:00
transmute.rs rust: transmute: implement FromBytes and AsBytes for inhabited ZSTs 2026-01-26 03:16:31 +01:00
types.rs rust: allow clippy::disallowed_names for doctests 2025-11-17 22:53:27 +01:00
uaccess.rs rust: uaccess: add UserSliceWriter::write_slice_file() 2025-11-05 00:35:37 +01:00
usb.rs rust: Add trait to convert a device reference to a bus device reference 2025-11-18 11:00:51 +13:00
workqueue.rs rust: pin-init: add pin projections to #[pin_data] 2025-09-11 23:26:20 +02:00
xarray.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00