* [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment
@ 2026-04-06 9:58 Miguel Ojeda
2026-04-06 9:58 ` [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` Miguel Ojeda
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Miguel Ojeda @ 2026-04-06 9:58 UTC (permalink / raw)
To: Miguel Ojeda, Nathan Chancellor
Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt,
llvm
`feature(file_with_nul)` [1] has been stabilized in Rust 1.92.0 [2].
Thus update the comment to keep track of it.
In addition, this will help to sort new conditionally enabled features
(i.e. `cfg_attr`) around it appropiately.
Link: https://github.com/rust-lang/rust/issues/141727 [1]
Link: https://github.com/rust-lang/rust/pull/145664 [2]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
rust/kernel/lib.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
index b48221a5b4ec..0fa9d820fe7c 100644
--- a/rust/kernel/lib.rs
+++ b/rust/kernel/lib.rs
@@ -23,7 +23,7 @@
// To be determined.
#![feature(used_with_arg)]
//
-// `feature(file_with_nul)` is expected to become stable. Before Rust 1.89.0, it did not exist, so
+// `feature(file_with_nul)` is stable since Rust 1.92.0. Before Rust 1.89.0, it did not exist, so
// enable it conditionally.
#![cfg_attr(CONFIG_RUSTC_HAS_FILE_WITH_NUL, feature(file_with_nul))]
base-commit: 232e79c72f572782434b43d0fc72581271cea7f3
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` 2026-04-06 9:58 [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Miguel Ojeda @ 2026-04-06 9:58 ` Miguel Ojeda 2026-04-06 14:46 ` Gary Guo ` (2 more replies) 2026-04-06 14:40 ` [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Gary Guo ` (3 subsequent siblings) 4 siblings, 3 replies; 9+ messages in thread From: Miguel Ojeda @ 2026-04-06 9:58 UTC (permalink / raw) To: Miguel Ojeda, Nathan Chancellor Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm `feature(cold_path)` is becoming stable [1] in the upcoming Rust 1.95.0 (expected 2026-04-16). `cold_path()` can be used directly, but it also allows us to provide `likely()` and `unlikely()`, based on `cold_path()`, similar to the C side ones. For instance, given: fn f1(a: i32) -> i32 { if a < 0 { return 123; } 42 } fn f2(a: i32) -> i32 { if likely(a < 0) { return 124; } 42 } fn f3(a: i32) -> i32 { if unlikely(a < 0) { return 125; } 42 } LLVM emits the same code it would for similar C functions: f1: test %edi,%edi mov $0x7b,%ecx mov $0x2a,%eax cmovs %ecx,%eax ret f2: mov $0x7c,%eax test %edi,%edi /-- jns <f2+0xa> | ret \-> mov $0x2a,%eax ret f3: test %edi,%edi /-- js <f3+0xa> | mov $0x2a,%eax | ret \-> mov $0x7d,%eax ret The feature itself, `feature(cold_path)`, was added in Rust 1.86.0 [2]. Previously, a PR in Rust 1.84.0 [3] fixed a number of issues with the `likely()` and `unlikely()` intrinsics (by implementing them on top of the new `cold_path()` intrinsic). So we could use that, in principle, for Rust 1.85.0. However, it is just a single version, and it is simpler to avoid intrinsics. Instead, approximate it with `#[cold]` [4]. Thus add support for `cold_path()` by applying several approaches: - For Rust >= 1.86.0, `use` directly `core`'s `cold_path()`. - For Rust 1.85, provide a `#[cold]` no-op, and vendor `core`s documentation. And, for all versions, simply provide `likely()` and `unlikely()` based on `cold_path()`, by vendoring `core`'s unstable ones (the one from `intrinsics`, not the `hint` wrapper, to save a layer). In the future, if `likely()` and `unlikely()` become stable [5], we may want to use them directly as well. Now, in the C side, the `likely()` and `unlikely()` macros come from `compiler.h`, which means it is pretty much available everywhere directly. Thus just add these to the prelude (instead of e.g. re-exporting them in the root or in a new `hint` module). This will also mean less churn when we can remove the `cold_path()` version from `std_vendor` (and potentially the other two too). I tested that Rust 1.93.0 generate the code above and, in a previous version of the patch, that Rust 1.83.0 and 1.78.0 do not, as expected. Link: https://github.com/rust-lang/rust/pull/151576 [1] Link: https://github.com/rust-lang/rust/pull/133695 [2] Link: https://github.com/rust-lang/rust/pull/120370 [3] Link: https://lore.kernel.org/rust-for-linux/DGA6GUR58QJ7.1XZZ0P4VZNW86@garyguo.net/ [4] Link: https://github.com/rust-lang/rust/issues/151619 [5] Signed-off-by: Miguel Ojeda <ojeda@kernel.org> --- v1: https://lore.kernel.org/rust-for-linux/20260208224659.18406-3-ojeda@kernel.org/ v2: - Drop the intrinsics and use `#[cold]` for Rust 1.85.0. - Sorted after `feature(file_with_nul)` since now we know which was the stable version when it happened (Rust 1.92.0). - Rebased and reworded accordingly. init/Kconfig | 3 + rust/kernel/lib.rs | 4 ++ rust/kernel/prelude.rs | 5 ++ rust/kernel/std_vendor.rs | 142 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+) diff --git a/init/Kconfig b/init/Kconfig index d9b795f70a38..f4c3368bf585 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -178,6 +178,9 @@ config LD_CAN_USE_KEEP_IN_OVERLAY # https://github.com/llvm/llvm-project/pull/130661 def_bool LD_IS_BFD || LLD_VERSION >= 210000 +config RUSTC_HAS_COLD_PATH + def_bool RUSTC_VERSION >= 108600 + config RUSTC_HAS_SPAN_FILE def_bool RUSTC_VERSION >= 108800 diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs index 0fa9d820fe7c..0615f741fcd4 100644 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@ -26,6 +26,10 @@ // `feature(file_with_nul)` is stable since Rust 1.92.0. Before Rust 1.89.0, it did not exist, so // enable it conditionally. #![cfg_attr(CONFIG_RUSTC_HAS_FILE_WITH_NUL, feature(file_with_nul))] +// +// `feature(cold_path)` is stable since Rust 1.95.0. Before Rust 1.86.0, it did not exist, so +// enable it conditionally. +#![cfg_attr(CONFIG_RUSTC_HAS_COLD_PATH, feature(cold_path))] // Ensure conditional compilation based on the kernel configuration works; // otherwise we may silently break things like initcall handling. diff --git a/rust/kernel/prelude.rs b/rust/kernel/prelude.rs index 44edf72a4a24..f5d6d9d9b629 100644 --- a/rust/kernel/prelude.rs +++ b/rust/kernel/prelude.rs @@ -97,6 +97,11 @@ pr_notice, pr_warn, static_assert, + std_vendor::{ + cold_path, + likely, + unlikely, // + }, str::CStrExt as _, try_init, try_pin_init, diff --git a/rust/kernel/std_vendor.rs b/rust/kernel/std_vendor.rs index abbab5050cc5..58d2db5b46a4 100644 --- a/rust/kernel/std_vendor.rs +++ b/rust/kernel/std_vendor.rs @@ -162,3 +162,145 @@ macro_rules! dbg { ($($crate::dbg!($val)),+,) }; } + +/// Hints to the compiler that a branch condition is likely to be true. +/// Returns the value passed to it. +/// +/// It can be used with `if` or boolean `match` expressions. +/// +/// When used outside of a branch condition, it may still influence a nearby branch, but +/// probably will not have any effect. +/// +/// It can also be applied to parts of expressions, such as `likely(a) && unlikely(b)`, or to +/// compound expressions, such as `likely(a && b)`. When applied to compound expressions, it has +/// the following effect: +/// ```text +/// likely(!a) => !unlikely(a) +/// likely(a && b) => likely(a) && likely(b) +/// likely(a || b) => a || likely(b) +/// ``` +/// +/// See also the function [`cold_path()`] which may be more appropriate for idiomatic Rust code. +/// +/// # Examples +/// +/// ``` +/// fn foo(x: i32) { +/// if likely(x > 0) { +/// pr_info!("this branch is likely to be taken\n"); +/// } else { +/// pr_info!("this branch is unlikely to be taken\n"); +/// } +/// +/// match likely(x > 0) { +/// true => pr_info!("this branch is likely to be taken\n"), +/// false => pr_info!("this branch is unlikely to be taken\n"), +/// } +/// +/// // Use outside of a branch condition may still influence a nearby branch +/// let cond = likely(x != 0); +/// if cond { +/// pr_info!("this branch is likely to be taken\n"); +/// } +/// } +/// ``` +// This implementation is taken from `core::intrinsics::likely()`, not the `hint` wrapper. +#[inline(always)] +pub const fn likely(b: bool) -> bool { + if b { + true + } else { + cold_path(); + false + } +} + +/// Hints to the compiler that a branch condition is unlikely to be true. +/// Returns the value passed to it. +/// +/// It can be used with `if` or boolean `match` expressions. +/// +/// When used outside of a branch condition, it may still influence a nearby branch, but +/// probably will not have any effect. +/// +/// It can also be applied to parts of expressions, such as `likely(a) && unlikely(b)`, or to +/// compound expressions, such as `unlikely(a && b)`. When applied to compound expressions, it has +/// the following effect: +/// ```text +/// unlikely(!a) => !likely(a) +/// unlikely(a && b) => a && unlikely(b) +/// unlikely(a || b) => unlikely(a) || unlikely(b) +/// ``` +/// +/// See also the function [`cold_path()`] which may be more appropriate for idiomatic Rust code. +/// +/// # Examples +/// +/// ``` +/// fn foo(x: i32) { +/// if unlikely(x > 0) { +/// pr_info!("this branch is unlikely to be taken\n"); +/// } else { +/// pr_info!("this branch is likely to be taken\n"); +/// } +/// +/// match unlikely(x > 0) { +/// true => pr_info!("this branch is unlikely to be taken\n"), +/// false => pr_info!("this branch is likely to be taken\n"), +/// } +/// +/// // Use outside of a branch condition may still influence a nearby branch +/// let cond = unlikely(x != 0); +/// if cond { +/// pr_info!("this branch is likely to be taken\n"); +/// } +/// } +/// ``` +// This implementation is taken from `core::intrinsics::unlikely()`, not the `hint` wrapper. +#[inline(always)] +pub const fn unlikely(b: bool) -> bool { + if b { + cold_path(); + true + } else { + false + } +} + +/// Hints to the compiler that given path is cold, i.e., unlikely to be taken. The compiler may +/// choose to optimize paths that are not cold at the expense of paths that are cold. +/// +/// Note that like all hints, the exact effect to codegen is not guaranteed. Using `cold_path` +/// can actually *decrease* performance if the branch is called more than expected. It is advisable +/// to perform benchmarks to tell if this function is useful. +/// +/// # Examples +/// +/// ``` +/// fn foo(x: &[i32]) { +/// if let Some(first) = x.first() { +/// // this is the fast path +/// } else { +/// // this path is unlikely +/// cold_path(); +/// } +/// } +/// +/// fn bar(x: i32) -> i32 { +/// match x { +/// 1 => 10, +/// 2 => 100, +/// 3 => { cold_path(); 1000 }, // this branch is unlikely +/// _ => { cold_path(); 10000 }, // this is also unlikely +/// } +/// } +/// ``` +/// +/// See also the [`likely()`] and [`unlikely()`] functions, which are similar to the C side macros. +#[cfg(not(CONFIG_RUSTC_HAS_COLD_PATH))] +#[inline(always)] +#[cold] +pub const fn cold_path() {} + +#[cfg(CONFIG_RUSTC_HAS_COLD_PATH)] +pub use core::hint::cold_path; -- 2.53.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` 2026-04-06 9:58 ` [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` Miguel Ojeda @ 2026-04-06 14:46 ` Gary Guo 2026-04-07 8:27 ` Alice Ryhl 2026-04-07 10:39 ` Miguel Ojeda 2 siblings, 0 replies; 9+ messages in thread From: Gary Guo @ 2026-04-06 14:46 UTC (permalink / raw) To: Miguel Ojeda, Nathan Chancellor Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm On Mon Apr 6, 2026 at 10:58 AM BST, Miguel Ojeda wrote: > `feature(cold_path)` is becoming stable [1] in the upcoming Rust 1.95.0 > (expected 2026-04-16). > > `cold_path()` can be used directly, but it also allows us to provide > `likely()` and `unlikely()`, based on `cold_path()`, similar to the C > side ones. > > For instance, given: > > fn f1(a: i32) -> i32 { > if a < 0 { > return 123; > } > > 42 > } > > fn f2(a: i32) -> i32 { > if likely(a < 0) { > return 124; > } > > 42 > } > > fn f3(a: i32) -> i32 { > if unlikely(a < 0) { > return 125; > } > > 42 > } > > LLVM emits the same code it would for similar C functions: > > f1: > test %edi,%edi > mov $0x7b,%ecx > mov $0x2a,%eax > cmovs %ecx,%eax > ret > > f2: > mov $0x7c,%eax > test %edi,%edi > /-- jns <f2+0xa> > | ret > \-> mov $0x2a,%eax > ret > > f3: > test %edi,%edi > /-- js <f3+0xa> > | mov $0x2a,%eax > | ret > \-> mov $0x7d,%eax > ret I haven't checked the assembly, but otherwise: Reviewed-by: Gary Guo <gary@garyguo.net> > > The feature itself, `feature(cold_path)`, was added in Rust 1.86.0 [2]. > > Previously, a PR in Rust 1.84.0 [3] fixed a number of issues with the > `likely()` and `unlikely()` intrinsics (by implementing them on top of > the new `cold_path()` intrinsic). So we could use that, in principle, > for Rust 1.85.0. However, it is just a single version, and it is simpler > to avoid intrinsics. Instead, approximate it with `#[cold]` [4]. > > Thus add support for `cold_path()` by applying several approaches: > > - For Rust >= 1.86.0, `use` directly `core`'s `cold_path()`. > > - For Rust 1.85, provide a `#[cold]` no-op, and vendor `core`s > documentation. > > And, for all versions, simply provide `likely()` and `unlikely()` based > on `cold_path()`, by vendoring `core`'s unstable ones (the one from > `intrinsics`, not the `hint` wrapper, to save a layer). > > In the future, if `likely()` and `unlikely()` become stable [5], we may > want to use them directly as well. > > Now, in the C side, the `likely()` and `unlikely()` macros come > from `compiler.h`, which means it is pretty much available everywhere > directly. Thus just add these to the prelude (instead of e.g. re-exporting > them in the root or in a new `hint` module). > > This will also mean less churn when we can remove the `cold_path()` > version from `std_vendor` (and potentially the other two too). > > I tested that Rust 1.93.0 generate the code above and, in a previous > version of the patch, that Rust 1.83.0 and 1.78.0 do not, as expected. > > Link: https://github.com/rust-lang/rust/pull/151576 [1] > Link: https://github.com/rust-lang/rust/pull/133695 [2] > Link: https://github.com/rust-lang/rust/pull/120370 [3] > Link: https://lore.kernel.org/rust-for-linux/DGA6GUR58QJ7.1XZZ0P4VZNW86@garyguo.net/ [4] > Link: https://github.com/rust-lang/rust/issues/151619 [5] > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> > --- > v1: https://lore.kernel.org/rust-for-linux/20260208224659.18406-3-ojeda@kernel.org/ > v2: > - Drop the intrinsics and use `#[cold]` for Rust 1.85.0. > > - Sorted after `feature(file_with_nul)` since now we know which was > the stable version when it happened (Rust 1.92.0). > > - Rebased and reworded accordingly. > > init/Kconfig | 3 + > rust/kernel/lib.rs | 4 ++ > rust/kernel/prelude.rs | 5 ++ > rust/kernel/std_vendor.rs | 142 ++++++++++++++++++++++++++++++++++++++ > 4 files changed, 154 insertions(+) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` 2026-04-06 9:58 ` [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` Miguel Ojeda 2026-04-06 14:46 ` Gary Guo @ 2026-04-07 8:27 ` Alice Ryhl 2026-04-07 10:39 ` Miguel Ojeda 2 siblings, 0 replies; 9+ messages in thread From: Alice Ryhl @ 2026-04-07 8:27 UTC (permalink / raw) To: Miguel Ojeda Cc: Nathan Chancellor, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm On Mon, Apr 06, 2026 at 11:58:20AM +0200, Miguel Ojeda wrote: > `feature(cold_path)` is becoming stable [1] in the upcoming Rust 1.95.0 > (expected 2026-04-16). > > `cold_path()` can be used directly, but it also allows us to provide > `likely()` and `unlikely()`, based on `cold_path()`, similar to the C > side ones. > > For instance, given: > > fn f1(a: i32) -> i32 { > if a < 0 { > return 123; > } > > 42 > } > > fn f2(a: i32) -> i32 { > if likely(a < 0) { > return 124; > } > > 42 > } > > fn f3(a: i32) -> i32 { > if unlikely(a < 0) { > return 125; > } > > 42 > } > > LLVM emits the same code it would for similar C functions: > > f1: > test %edi,%edi > mov $0x7b,%ecx > mov $0x2a,%eax > cmovs %ecx,%eax > ret > > f2: > mov $0x7c,%eax > test %edi,%edi > /-- jns <f2+0xa> > | ret > \-> mov $0x2a,%eax > ret > > f3: > test %edi,%edi > /-- js <f3+0xa> > | mov $0x2a,%eax > | ret > \-> mov $0x7d,%eax > ret > > The feature itself, `feature(cold_path)`, was added in Rust 1.86.0 [2]. > > Previously, a PR in Rust 1.84.0 [3] fixed a number of issues with the > `likely()` and `unlikely()` intrinsics (by implementing them on top of > the new `cold_path()` intrinsic). So we could use that, in principle, > for Rust 1.85.0. However, it is just a single version, and it is simpler > to avoid intrinsics. Instead, approximate it with `#[cold]` [4]. > > Thus add support for `cold_path()` by applying several approaches: > > - For Rust >= 1.86.0, `use` directly `core`'s `cold_path()`. > > - For Rust 1.85, provide a `#[cold]` no-op, and vendor `core`s > documentation. > > And, for all versions, simply provide `likely()` and `unlikely()` based > on `cold_path()`, by vendoring `core`'s unstable ones (the one from > `intrinsics`, not the `hint` wrapper, to save a layer). > > In the future, if `likely()` and `unlikely()` become stable [5], we may > want to use them directly as well. > > Now, in the C side, the `likely()` and `unlikely()` macros come > from `compiler.h`, which means it is pretty much available everywhere > directly. Thus just add these to the prelude (instead of e.g. re-exporting > them in the root or in a new `hint` module). > > This will also mean less churn when we can remove the `cold_path()` > version from `std_vendor` (and potentially the other two too). > > I tested that Rust 1.93.0 generate the code above and, in a previous > version of the patch, that Rust 1.83.0 and 1.78.0 do not, as expected. > > Link: https://github.com/rust-lang/rust/pull/151576 [1] > Link: https://github.com/rust-lang/rust/pull/133695 [2] > Link: https://github.com/rust-lang/rust/pull/120370 [3] > Link: https://lore.kernel.org/rust-for-linux/DGA6GUR58QJ7.1XZZ0P4VZNW86@garyguo.net/ [4] > Link: https://github.com/rust-lang/rust/issues/151619 [5] > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Reviewed-by: Alice Ryhl <aliceryhl@google.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` 2026-04-06 9:58 ` [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` Miguel Ojeda 2026-04-06 14:46 ` Gary Guo 2026-04-07 8:27 ` Alice Ryhl @ 2026-04-07 10:39 ` Miguel Ojeda 2 siblings, 0 replies; 9+ messages in thread From: Miguel Ojeda @ 2026-04-07 10:39 UTC (permalink / raw) To: Miguel Ojeda Cc: Nathan Chancellor, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm On Mon, Apr 6, 2026 at 11:59 AM Miguel Ojeda <ojeda@kernel.org> wrote: > > +#[cfg(CONFIG_RUSTC_HAS_COLD_PATH)] > +pub use core::hint::cold_path; This works inside the `kernel` crate, but Sashiko is correct: we will need to enable the feature to use it later. And while it can be done, it is not as simple as usual, because it is conditional. I was already on the fence of making a single function to share the signature anyway, so I think I will just do that in v3. Cheers, Miguel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment 2026-04-06 9:58 [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Miguel Ojeda 2026-04-06 9:58 ` [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` Miguel Ojeda @ 2026-04-06 14:40 ` Gary Guo 2026-04-06 15:32 ` Boqun Feng ` (2 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Gary Guo @ 2026-04-06 14:40 UTC (permalink / raw) To: Miguel Ojeda, Nathan Chancellor Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm On Mon Apr 6, 2026 at 10:58 AM BST, Miguel Ojeda wrote: > `feature(file_with_nul)` [1] has been stabilized in Rust 1.92.0 [2]. > > Thus update the comment to keep track of it. > > In addition, this will help to sort new conditionally enabled features > (i.e. `cfg_attr`) around it appropiately. > > Link: https://github.com/rust-lang/rust/issues/141727 [1] > Link: https://github.com/rust-lang/rust/pull/145664 [2] > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Reviewed-by: Gary Guo <gary@garyguo.net> > --- > rust/kernel/lib.rs | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment 2026-04-06 9:58 [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Miguel Ojeda 2026-04-06 9:58 ` [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` Miguel Ojeda 2026-04-06 14:40 ` [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Gary Guo @ 2026-04-06 15:32 ` Boqun Feng 2026-04-07 8:24 ` Alice Ryhl 2026-04-07 10:40 ` Miguel Ojeda 4 siblings, 0 replies; 9+ messages in thread From: Boqun Feng @ 2026-04-06 15:32 UTC (permalink / raw) To: Miguel Ojeda Cc: Nathan Chancellor, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm On Mon, Apr 06, 2026 at 11:58:19AM +0200, Miguel Ojeda wrote: > `feature(file_with_nul)` [1] has been stabilized in Rust 1.92.0 [2]. > > Thus update the comment to keep track of it. > > In addition, this will help to sort new conditionally enabled features > (i.e. `cfg_attr`) around it appropiately. > > Link: https://github.com/rust-lang/rust/issues/141727 [1] > Link: https://github.com/rust-lang/rust/pull/145664 [2] > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Acked-by: Boqun Feng <boqun@kernel.org> Regards, Boqun > --- > rust/kernel/lib.rs | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs > index b48221a5b4ec..0fa9d820fe7c 100644 > --- a/rust/kernel/lib.rs > +++ b/rust/kernel/lib.rs > @@ -23,7 +23,7 @@ > // To be determined. > #![feature(used_with_arg)] > // > -// `feature(file_with_nul)` is expected to become stable. Before Rust 1.89.0, it did not exist, so > +// `feature(file_with_nul)` is stable since Rust 1.92.0. Before Rust 1.89.0, it did not exist, so > // enable it conditionally. > #![cfg_attr(CONFIG_RUSTC_HAS_FILE_WITH_NUL, feature(file_with_nul))] > > > base-commit: 232e79c72f572782434b43d0fc72581271cea7f3 > -- > 2.53.0 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment 2026-04-06 9:58 [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Miguel Ojeda ` (2 preceding siblings ...) 2026-04-06 15:32 ` Boqun Feng @ 2026-04-07 8:24 ` Alice Ryhl 2026-04-07 10:40 ` Miguel Ojeda 4 siblings, 0 replies; 9+ messages in thread From: Alice Ryhl @ 2026-04-07 8:24 UTC (permalink / raw) To: Miguel Ojeda Cc: Nathan Chancellor, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm On Mon, Apr 06, 2026 at 11:58:19AM +0200, Miguel Ojeda wrote: > `feature(file_with_nul)` [1] has been stabilized in Rust 1.92.0 [2]. > > Thus update the comment to keep track of it. > > In addition, this will help to sort new conditionally enabled features > (i.e. `cfg_attr`) around it appropiately. > > Link: https://github.com/rust-lang/rust/issues/141727 [1] > Link: https://github.com/rust-lang/rust/pull/145664 [2] > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Reviewed-by: Alice Ryhl <aliceryhl@google.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment 2026-04-06 9:58 [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Miguel Ojeda ` (3 preceding siblings ...) 2026-04-07 8:24 ` Alice Ryhl @ 2026-04-07 10:40 ` Miguel Ojeda 4 siblings, 0 replies; 9+ messages in thread From: Miguel Ojeda @ 2026-04-07 10:40 UTC (permalink / raw) To: Miguel Ojeda Cc: Nathan Chancellor, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, rust-for-linux, Nick Desaulniers, Bill Wendling, Justin Stitt, llvm On Mon, Apr 6, 2026 at 11:59 AM Miguel Ojeda <ojeda@kernel.org> wrote: > > `feature(file_with_nul)` [1] has been stabilized in Rust 1.92.0 [2]. > > Thus update the comment to keep track of it. > > In addition, this will help to sort new conditionally enabled features > (i.e. `cfg_attr`) around it appropiately. > > Link: https://github.com/rust-lang/rust/issues/141727 [1] > Link: https://github.com/rust-lang/rust/pull/145664 [2] > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Applied (just this one) to `rust-next` -- thanks everyone! Cheers, Miguel ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-04-07 10:40 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-06 9:58 [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Miguel Ojeda 2026-04-06 9:58 ` [PATCH v2 2/2] rust: std_vendor: add `likely()`, `unlikely()` and `cold_path()` Miguel Ojeda 2026-04-06 14:46 ` Gary Guo 2026-04-07 8:27 ` Alice Ryhl 2026-04-07 10:39 ` Miguel Ojeda 2026-04-06 14:40 ` [PATCH v2 1/2] rust: kernel: update `file_with_nul` comment Gary Guo 2026-04-06 15:32 ` Boqun Feng 2026-04-07 8:24 ` Alice Ryhl 2026-04-07 10:40 ` Miguel Ojeda
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox