Alexandre Courbot
2025-Aug-04 07:32 UTC
[PATCH 1/3] rust: add `num` module with `PowerOfTwo` type
On Mon Aug 4, 2025 at 12:15 AM JST, Miguel Ojeda wrote:> On Sun, Aug 3, 2025 at 3:13?PM Alexandre Courbot <acourbot at nvidia.com> wrote: >> >> We got some interesting feedback on the ACP already. I have been pointed >> to `checked_ilog2` as an equivalent of `last_set_bit`, and it *does* >> indeed work well as a replacement - with the caveat that the name is >> not very natural to me (or anyone familiar with the C interface). Is >> this something we can live with? If we decide to go with the existing >> standard library method, how can we make sure that folks looking for an >> equivalent of `fls` find `checked_ilog2`? > > One option is using the `doc(alias = ...)` attribute, which makes it > appear in the search in the rendered docs, and would show easily in > greps too. > > Another option is simply wrapping it in an `inline(always)`, I guess, > but I think we can just use the upstream ones, unless we want slightly > different semantics.That would be useful - let's see what the Rust lib folks say, as you brought up that question on the ACP as well. In any case, since we have reasonable alternatives for both `fls` (`checked_ilog2`) and `ffs` (`NonZero::trailing_zeros`), I guess this means we want to use these directly in the kernel and can drop patch 2 of this series?
Alexandre Courbot
2025-Aug-06 05:02 UTC
[PATCH 1/3] rust: add `num` module with `PowerOfTwo` type
On Mon Aug 4, 2025 at 4:32 PM JST, Alexandre Courbot wrote:> On Mon Aug 4, 2025 at 12:15 AM JST, Miguel Ojeda wrote: >> On Sun, Aug 3, 2025 at 3:13?PM Alexandre Courbot <acourbot at nvidia.com> wrote: >>> >>> We got some interesting feedback on the ACP already. I have been pointed >>> to `checked_ilog2` as an equivalent of `last_set_bit`, and it *does* >>> indeed work well as a replacement - with the caveat that the name is >>> not very natural to me (or anyone familiar with the C interface). Is >>> this something we can live with? If we decide to go with the existing >>> standard library method, how can we make sure that folks looking for an >>> equivalent of `fls` find `checked_ilog2`? >> >> One option is using the `doc(alias = ...)` attribute, which makes it >> appear in the search in the rendered docs, and would show easily in >> greps too. >> >> Another option is simply wrapping it in an `inline(always)`, I guess, >> but I think we can just use the upstream ones, unless we want slightly >> different semantics. > > That would be useful - let's see what the Rust lib folks say, as you > brought up that question on the ACP as well. > > In any case, since we have reasonable alternatives for both `fls` > (`checked_ilog2`) and `ffs` (`NonZero::trailing_zeros`), I guess this > means we want to use these directly in the kernel and can drop patch > 2 of this series?I didn't expect that, but it looks like the Rust folks want these methods after all: https://github.com/rust-lang/libs-team/issues/631#issuecomment-3156000663 I'll proceed with sending a PR, and I guess we can have temporary implementations in the kernel as well?