Message ID | 20250320020740.1631171-2-contact@antoniohickey.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v5,01/17] rust: enable `raw_ref_op` feature | expand |
"Antonio Hickey" <contact@antoniohickey.com> writes: > Since Rust 1.82.0 the `raw_ref_op` feature is stable. > > By enabling this feature we can use `&raw const place` and > `&raw mut place` instead of using `addr_of!(place)` and > `addr_of_mut!(place)` macros. > > Allowing us to reduce macro complexity, and improve consistency > with existing reference syntax as `&raw const`, `&raw mut` are > similar to `&`, `&mut` making it fit more naturally with other > existing code. > > Suggested-by: Benno Lossin <benno.lossin@proton.me> > Link: https://github.com/Rust-for-Linux/linux/issues/1148 > Signed-off-by: Antonio Hickey <contact@antoniohickey.com> Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org> Best regards, Andreas Hindborg
On Thu Mar 20, 2025 at 3:07 AM CET, Antonio Hickey wrote: > Since Rust 1.82.0 the `raw_ref_op` feature is stable. > > By enabling this feature we can use `&raw const place` and > `&raw mut place` instead of using `addr_of!(place)` and > `addr_of_mut!(place)` macros. > > Allowing us to reduce macro complexity, and improve consistency > with existing reference syntax as `&raw const`, `&raw mut` are > similar to `&`, `&mut` making it fit more naturally with other > existing code. > > Suggested-by: Benno Lossin <benno.lossin@proton.me> > Link: https://github.com/Rust-for-Linux/linux/issues/1148 > Signed-off-by: Antonio Hickey <contact@antoniohickey.com> Reviewed-by: Benno Lossin <benno.lossin@proton.me> > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > index 993708d11874..a73aaa028e34 100644 > --- a/scripts/Makefile.build > +++ b/scripts/Makefile.build > @@ -224,9 +224,9 @@ $(obj)/%.lst: $(obj)/%.c FORCE > $(call if_changed_dep,cc_lst_c) > > # Compile Rust sources (.rs) > -# --------------------------------------------------------------------------- > +# -------------------------------------------------------------------------------------- Not sure about this change. --- Cheers, Benno > > -rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons > +rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons,raw_ref_op > > # `--out-dir` is required to avoid temporaries being created by `rustc` in the > # current working directory, which may be not accessible in the out-of-tree
On Sat, Mar 22, 2025 at 10:16:01AM +0000, Benno Lossin wrote: > On Thu Mar 20, 2025 at 3:07 AM CET, Antonio Hickey wrote: > > Since Rust 1.82.0 the `raw_ref_op` feature is stable. > > > > By enabling this feature we can use `&raw const place` and > > `&raw mut place` instead of using `addr_of!(place)` and > > `addr_of_mut!(place)` macros. > > > > Allowing us to reduce macro complexity, and improve consistency > > with existing reference syntax as `&raw const`, `&raw mut` are > > similar to `&`, `&mut` making it fit more naturally with other > > existing code. > > > > Suggested-by: Benno Lossin <benno.lossin@proton.me> > > Link: https://github.com/Rust-for-Linux/linux/issues/1148 > > Signed-off-by: Antonio Hickey <contact@antoniohickey.com> > > Reviewed-by: Benno Lossin <benno.lossin@proton.me> > > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > > index 993708d11874..a73aaa028e34 100644 > > --- a/scripts/Makefile.build > > +++ b/scripts/Makefile.build > > @@ -224,9 +224,9 @@ $(obj)/%.lst: $(obj)/%.c FORCE > > $(call if_changed_dep,cc_lst_c) > > > > # Compile Rust sources (.rs) > > -# --------------------------------------------------------------------------- > > +# -------------------------------------------------------------------------------------- > > Not sure about this change. This change is so I could enable the `raw_ref_op` feature for doctests since the minimum Rust version 1.78 still has `raw_ref_op` as an expiramental feature, and will throw errors at compile if a doctest uses it. Is there a better way to do this? Thanks, Antonio > > --- > Cheers, > Benno > > > > > -rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons > > +rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons,raw_ref_op > > > > # `--out-dir` is required to avoid temporaries being created by `rustc` in the > > # current working directory, which may be not accessible in the out-of-tree > >
On Sat, Mar 22, 2025 at 11:08 AM Antonio Hickey <contact@antoniohickey.com> wrote: > > On Sat, Mar 22, 2025 at 10:16:01AM +0000, Benno Lossin wrote: > > On Thu Mar 20, 2025 at 3:07 AM CET, Antonio Hickey wrote: > > > Since Rust 1.82.0 the `raw_ref_op` feature is stable. > > > > > > By enabling this feature we can use `&raw const place` and > > > `&raw mut place` instead of using `addr_of!(place)` and > > > `addr_of_mut!(place)` macros. > > > > > > Allowing us to reduce macro complexity, and improve consistency > > > with existing reference syntax as `&raw const`, `&raw mut` are > > > similar to `&`, `&mut` making it fit more naturally with other > > > existing code. > > > > > > Suggested-by: Benno Lossin <benno.lossin@proton.me> > > > Link: https://github.com/Rust-for-Linux/linux/issues/1148 > > > Signed-off-by: Antonio Hickey <contact@antoniohickey.com> > > > > Reviewed-by: Benno Lossin <benno.lossin@proton.me> > > > > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > > > index 993708d11874..a73aaa028e34 100644 > > > --- a/scripts/Makefile.build > > > +++ b/scripts/Makefile.build > > > @@ -224,9 +224,9 @@ $(obj)/%.lst: $(obj)/%.c FORCE > > > $(call if_changed_dep,cc_lst_c) > > > > > > # Compile Rust sources (.rs) > > > -# --------------------------------------------------------------------------- > > > +# -------------------------------------------------------------------------------------- > > > > Not sure about this change. > > This change is so I could enable the `raw_ref_op` feature for doctests > since the minimum Rust version 1.78 still has `raw_ref_op` as an > expiramental feature, and will throw errors at compile if a doctest uses > it. Is there a better way to do this? I think Benno is just asking about the extension of the dashed line. > > > > > > -rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons > > > +rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons,raw_ref_op This looks correct to me. > > > > > > # `--out-dir` is required to avoid temporaries being created by `rustc` in the > > > # current working directory, which may be not accessible in the out-of-tree > > > > Reviewed-by: Tamir Duberstein <tamird@gmail.com>
On Sat, Mar 22, 2025 at 02:24:30PM -0400, Tamir Duberstein wrote: > On Sat, Mar 22, 2025 at 11:08 AM Antonio Hickey > <contact@antoniohickey.com> wrote: > > > > On Sat, Mar 22, 2025 at 10:16:01AM +0000, Benno Lossin wrote: > > > On Thu Mar 20, 2025 at 3:07 AM CET, Antonio Hickey wrote: > > > > Since Rust 1.82.0 the `raw_ref_op` feature is stable. > > > > > > > > By enabling this feature we can use `&raw const place` and > > > > `&raw mut place` instead of using `addr_of!(place)` and > > > > `addr_of_mut!(place)` macros. > > > > > > > > Allowing us to reduce macro complexity, and improve consistency > > > > with existing reference syntax as `&raw const`, `&raw mut` are > > > > similar to `&`, `&mut` making it fit more naturally with other > > > > existing code. > > > > > > > > Suggested-by: Benno Lossin <benno.lossin@proton.me> > > > > Link: https://github.com/Rust-for-Linux/linux/issues/1148 > > > > Signed-off-by: Antonio Hickey <contact@antoniohickey.com> > > > > > > Reviewed-by: Benno Lossin <benno.lossin@proton.me> > > > > > > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > > > > index 993708d11874..a73aaa028e34 100644 > > > > --- a/scripts/Makefile.build > > > > +++ b/scripts/Makefile.build > > > > @@ -224,9 +224,9 @@ $(obj)/%.lst: $(obj)/%.c FORCE > > > > $(call if_changed_dep,cc_lst_c) > > > > > > > > # Compile Rust sources (.rs) > > > > -# --------------------------------------------------------------------------- > > > > +# -------------------------------------------------------------------------------------- > > > > > > Not sure about this change. > > > > This change is so I could enable the `raw_ref_op` feature for doctests > > since the minimum Rust version 1.78 still has `raw_ref_op` as an > > expiramental feature, and will throw errors at compile if a doctest uses > > it. Is there a better way to do this? > > I think Benno is just asking about the extension of the dashed line. Ahh ok yea that makes sense, thanks Tamir, sorry Benno I misunderstood. So the reason I extended the dashed line was because before my change the dashed line perfectly aligned with number of characters in the line I changed. I figured it was supposed to match the amount of characters of the line. Giving this a deeper look it looks like the all the other dashed lines are maxed at 77 characters. I will update this. Thanks, Antonio > > > > > > > > > -rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons > > > > +rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons,raw_ref_op > > This looks correct to me. > > > > > > > > > # `--out-dir` is required to avoid temporaries being created by `rustc` in the > > > > # current working directory, which may be not accessible in the out-of-tree > > > > > > > > Reviewed-by: Tamir Duberstein <tamird@gmail.com>
On Sat Mar 22, 2025 at 8:12 PM CET, Antonio Hickey wrote: > On Sat, Mar 22, 2025 at 02:24:30PM -0400, Tamir Duberstein wrote: >> On Sat, Mar 22, 2025 at 11:08 AM Antonio Hickey >> <contact@antoniohickey.com> wrote: >> > On Sat, Mar 22, 2025 at 10:16:01AM +0000, Benno Lossin wrote: >> > > On Thu Mar 20, 2025 at 3:07 AM CET, Antonio Hickey wrote: >> > > > Since Rust 1.82.0 the `raw_ref_op` feature is stable. >> > > > >> > > > By enabling this feature we can use `&raw const place` and >> > > > `&raw mut place` instead of using `addr_of!(place)` and >> > > > `addr_of_mut!(place)` macros. >> > > > >> > > > Allowing us to reduce macro complexity, and improve consistency >> > > > with existing reference syntax as `&raw const`, `&raw mut` are >> > > > similar to `&`, `&mut` making it fit more naturally with other >> > > > existing code. >> > > > >> > > > Suggested-by: Benno Lossin <benno.lossin@proton.me> >> > > > Link: https://github.com/Rust-for-Linux/linux/issues/1148 >> > > > Signed-off-by: Antonio Hickey <contact@antoniohickey.com> >> > > >> > > Reviewed-by: Benno Lossin <benno.lossin@proton.me> >> > > >> > > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build >> > > > index 993708d11874..a73aaa028e34 100644 >> > > > --- a/scripts/Makefile.build >> > > > +++ b/scripts/Makefile.build >> > > > @@ -224,9 +224,9 @@ $(obj)/%.lst: $(obj)/%.c FORCE >> > > > $(call if_changed_dep,cc_lst_c) >> > > > >> > > > # Compile Rust sources (.rs) >> > > > -# --------------------------------------------------------------------------- >> > > > +# -------------------------------------------------------------------------------------- >> > > >> > > Not sure about this change. >> > >> > This change is so I could enable the `raw_ref_op` feature for doctests >> > since the minimum Rust version 1.78 still has `raw_ref_op` as an >> > expiramental feature, and will throw errors at compile if a doctest uses >> > it. Is there a better way to do this? >> >> I think Benno is just asking about the extension of the dashed line. > > Ahh ok yea that makes sense, thanks Tamir, sorry Benno I misunderstood. No worries, it is exactly as Tamir said. > So the reason I extended the dashed line was because before my change > the dashed line perfectly aligned with number of characters in the line > I changed. I figured it was supposed to match the amount of characters > of the line. > > Giving this a deeper look it looks like the all the other dashed lines > are maxed at 77 characters. Yeah that's also what I thought, so I wouldn't change it. > I will update this. If you send another version, you can update this, but Miguel might pick the patch early, he can then remove the change above when taking the patch (so I wouldn't send a new version just to change this single line). --- Cheers, Benno
On Sat, Mar 22, 2025 at 8:12 PM Antonio Hickey <contact@antoniohickey.com> wrote: > > Ahh ok yea that makes sense, thanks Tamir, sorry Benno I misunderstood. > > So the reason I extended the dashed line was because before my change > the dashed line perfectly aligned with number of characters in the line > I changed. I figured it was supposed to match the amount of characters > of the line. > > Giving this a deeper look it looks like the all the other dashed lines > are maxed at 77 characters. Yeah, it is just following other section "lines". > I will update this. Benno is right -- no need to send another version for that, I can remove the change on apply. :) Thanks! Cheers, Miguel
On Sat, Mar 22, 2025 at 08:41:11PM +0100, Miguel Ojeda wrote: > On Sat, Mar 22, 2025 at 8:12 PM Antonio Hickey > <contact@antoniohickey.com> wrote: > > > > Ahh ok yea that makes sense, thanks Tamir, sorry Benno I misunderstood. > > > > So the reason I extended the dashed line was because before my change > > the dashed line perfectly aligned with number of characters in the line > > I changed. I figured it was supposed to match the amount of characters > > of the line. > > > > Giving this a deeper look it looks like the all the other dashed lines > > are maxed at 77 characters. > > Yeah, it is just following other section "lines". > > > I will update this. > > Benno is right -- no need to send another version for that, I can > remove the change on apply. :) Yay my first patch to be applied :) Hopefully many more to come, thanks a lot everyone I have learned so much just through this simple patch series. Appreciate all the help and patience +1 Thanks, Antonio > > Thanks! > > Cheers, > Miguel
diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs index 398242f92a96..1d078f69bb19 100644 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@ -19,6 +19,8 @@ #![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(unsize))] #![feature(inline_const)] #![feature(lint_reasons)] +// Stable in Rust 1.82 +#![feature(raw_ref_op)] // Stable in Rust 1.83 #![feature(const_maybe_uninit_as_mut_ptr)] #![feature(const_mut_refs)] diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 993708d11874..a73aaa028e34 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -224,9 +224,9 @@ $(obj)/%.lst: $(obj)/%.c FORCE $(call if_changed_dep,cc_lst_c) # Compile Rust sources (.rs) -# --------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------- -rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons +rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons,raw_ref_op # `--out-dir` is required to avoid temporaries being created by `rustc` in the # current working directory, which may be not accessible in the out-of-tree
Since Rust 1.82.0 the `raw_ref_op` feature is stable. By enabling this feature we can use `&raw const place` and `&raw mut place` instead of using `addr_of!(place)` and `addr_of_mut!(place)` macros. Allowing us to reduce macro complexity, and improve consistency with existing reference syntax as `&raw const`, `&raw mut` are similar to `&`, `&mut` making it fit more naturally with other existing code. Suggested-by: Benno Lossin <benno.lossin@proton.me> Link: https://github.com/Rust-for-Linux/linux/issues/1148 Signed-off-by: Antonio Hickey <contact@antoniohickey.com> --- rust/kernel/lib.rs | 2 ++ scripts/Makefile.build | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-)