rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/13] Quality of life improvements for pin-init
@ 2023-08-14  8:46 Benno Lossin
  2023-08-14  8:46 ` [PATCH v4 01/13] rust: init: consolidate init macros Benno Lossin
                   ` (13 more replies)
  0 siblings, 14 replies; 20+ messages in thread
From: Benno Lossin @ 2023-08-14  8:46 UTC (permalink / raw)
  To: Miguel Ojeda, Wedson Almeida Filho, Alex Gaynor
  Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
	Alice Ryhl, Andreas Hindborg, rust-for-linux, linux-kernel,
	patches

This patch series adds several improvements to the pin-init api:
- a derive macro for the `Zeroable` trait,
- makes hygiene of fields in initializers behave like normal struct
  initializers would behave,
- prevent stackoverflow without optimizations
- add `..Zeroable::zeroed()` syntax to zero missing fields,
- support arbitrary paths in initializer macros.

It is based on the `rust-dev` branch.

This is the fourth version of this patch series.
- v3: https://lore.kernel.org/rust-for-linux/20230729090838.225225-1-benno.lossin@proton.me/
- v2: https://lore.kernel.org/rust-for-linux/20230719141918.543938-1-benno.lossin@proton.me/
- v1: https://lore.kernel.org/rust-for-linux/20230624092330.157338-1-benno.lossin@proton.me/

Changes not present on modified commits:
v3 -> v4:
No changes.

v2 -> v3:
- make `#[pin_data]` work better with `#[cfg]` attributes on fields.

v1 -> v2:
- implement `Zeroable` for `Opaque`,
- remove blanket impl of `PinInit` for `Init` and make it a supertrait
  instead,
- add `{pin_}chain` functions to execute code after initialization,
- update the example macro expansion.

Benno Lossin (13):
  rust: init: consolidate init macros
  rust: init: make `#[pin_data]` compatible with conditional compilation
    of fields
  rust: add derive macro for `Zeroable`
  rust: init: make guards in the init macros hygienic
  rust: init: wrap type checking struct initializers in a closure
  rust: init: make initializer values inaccessible after initializing
  rust: init: add `..Zeroable::zeroed()` syntax for zeroing all missing
    fields
  rust: init: Add functions to create array initializers
  rust: init: add support for arbitrary paths in init macros
  rust: init: implement `Zeroable` for `UnsafeCell<T>` and `Opaque<T>`
  rust: init: make `PinInit<T, E>` a supertrait of `Init<T, E>`
  rust: init: add `{pin_}chain` functions to `{Pin}Init<T, E>`
  rust: init: update expanded macro explanation

 rust/kernel/init.rs            | 646 ++++++++++++++-------------------
 rust/kernel/init/__internal.rs |  39 +-
 rust/kernel/init/macros.rs     | 519 +++++++++++++++++++++++---
 rust/kernel/prelude.rs         |   2 +-
 rust/macros/lib.rs             |  20 +
 rust/macros/quote.rs           |  12 +
 rust/macros/zeroable.rs        |  72 ++++
 7 files changed, 857 insertions(+), 453 deletions(-)
 create mode 100644 rust/macros/zeroable.rs


base-commit: e73e793b32b7c440a53fd4da75a34c062841b66f
-- 
2.41.0



^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2023-08-21 12:33 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-14  8:46 [PATCH v4 00/13] Quality of life improvements for pin-init Benno Lossin
2023-08-14  8:46 ` [PATCH v4 01/13] rust: init: consolidate init macros Benno Lossin
2023-08-14  8:46 ` [PATCH v4 02/13] rust: init: make `#[pin_data]` compatible with conditional compilation of fields Benno Lossin
2023-08-14  8:46 ` [PATCH v4 03/13] rust: add derive macro for `Zeroable` Benno Lossin
2023-08-15  1:04   ` Martin Rodriguez Reboredo
2023-08-16 17:40   ` Gary Guo
2023-08-14  8:46 ` [PATCH v4 04/13] rust: init: make guards in the init macros hygienic Benno Lossin
2023-08-14  8:46 ` [PATCH v4 05/13] rust: init: wrap type checking struct initializers in a closure Benno Lossin
2023-08-14  8:47 ` [PATCH v4 06/13] rust: init: make initializer values inaccessible after initializing Benno Lossin
2023-08-14  8:47 ` [PATCH v4 07/13] rust: init: add `..Zeroable::zeroed()` syntax for zeroing all missing fields Benno Lossin
2023-08-14  8:47 ` [PATCH v4 08/13] rust: init: Add functions to create array initializers Benno Lossin
2023-08-16 17:43   ` Gary Guo
2023-08-14  8:47 ` [PATCH v4 09/13] rust: init: add support for arbitrary paths in init macros Benno Lossin
2023-08-14  8:47 ` [PATCH v4 10/13] rust: init: implement `Zeroable` for `UnsafeCell<T>` and `Opaque<T>` Benno Lossin
2023-08-14  8:47 ` [PATCH v4 11/13] rust: init: make `PinInit<T, E>` a supertrait of `Init<T, E>` Benno Lossin
2023-08-14  8:47 ` [PATCH v4 12/13] rust: init: add `{pin_}chain` functions to `{Pin}Init<T, E>` Benno Lossin
2023-08-21 11:24   ` Alice Ryhl
2023-08-14  8:47 ` [PATCH v4 13/13] rust: init: update expanded macro explanation Benno Lossin
2023-08-21 11:30   ` Alice Ryhl
2023-08-21 12:33 ` [PATCH v4 00/13] Quality of life improvements for pin-init Miguel Ojeda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).