From: Boqun Feng <boqun.feng@gmail.com>
To: Kent Overstreet <kent.overstreet@linux.dev>
Cc: "Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com>,
"Benno Lossin" <benno.lossin@proton.me>,
"Gary Guo" <gary@garyguo.net>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arch@vger.kernel.org, llvm@lists.linux.dev,
"Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Wedson Almeida Filho" <wedsonaf@gmail.com>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Andreas Hindborg" <a.hindborg@samsung.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Alan Stern" <stern@rowland.harvard.edu>,
"Andrea Parri" <parri.andrea@gmail.com>,
"Will Deacon" <will@kernel.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Nicholas Piggin" <npiggin@gmail.com>,
"David Howells" <dhowells@redhat.com>,
"Jade Alglave" <j.alglave@ucl.ac.uk>,
"Luc Maranget" <luc.maranget@inria.fr>,
"Paul E. McKenney" <paulmck@kernel.org>,
"Akira Yokosawa" <akiyks@gmail.com>,
"Daniel Lustig" <dlustig@nvidia.com>,
"Joel Fernandes" <joel@joelfernandes.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
kent.overstreet@gmail.com,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
elver@google.com, "Mark Rutland" <mark.rutland@arm.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Ingo Molnar" <mingo@redhat.com>,
"Borislav Petkov" <bp@alien8.de>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
"Catalin Marinas" <catalin.marinas@arm.com>,
torvalds@linux-foundation.org,
linux-arm-kernel@lists.infradead.org,
linux-fsdevel@vger.kernel.org, "Trevor Gross" <tmgross@umich.edu>,
dakr@redhat.com
Subject: Re: [RFC 2/2] rust: sync: Add atomic support
Date: Sun, 16 Jun 2024 10:30:03 -0700 [thread overview]
Message-ID: <Zm8hG58nuE3HrnyS@Boquns-Mac-mini.home> (raw)
In-Reply-To: <Zm8KoUNQ4v7UvVOE@Boquns-Mac-mini.home>
On Sun, Jun 16, 2024 at 08:54:09AM -0700, Boqun Feng wrote:
> On Sun, Jun 16, 2024 at 11:32:31AM -0400, Kent Overstreet wrote:
> > On Sun, Jun 16, 2024 at 05:14:56PM +0200, Miguel Ojeda wrote:
> > > On Sun, Jun 16, 2024 at 4:16 PM Boqun Feng <boqun.feng@gmail.com> wrote:
> > > >
> > > > Hmm? Have you seen the email I replied to John, a broader Rust community
> > > > seems doesn't appreciate the idea of generic atomics.
> > >
> > > I don't think we can easily draw that conclusion from those download
> > > numbers / dependent crates.
> > >
> > > portable-atomic may be more popular simply because it provides
> > > features for platforms the standard library does not. The interface
> > > being generic or not may have nothing to do with it. Or perhaps
> > > because it has a 1.x version, while the other doesn't, etc.
> > >
> > > In fact, the atomic crate is essentially about providing `Atomic<T>`,
> > > so one could argue that all those downloads are precisely from people
> > > that want a generic atomic.
> > >
> > > Moreover, I noticed portable-atomic's issue #1 in GitHub is,
> > > precisely, adding `Atomic<T>` support. The maintainer has a PR for
> > > that updated over time, most recently a few hours ago.
> > >
> > > There is also `AtomicCell<T>` from crossbeam, which is the first
> > > feature listed in its docs.
> > >
> > > Anyway...
> > >
> > > The way I see it, both approaches seem similar (i.e. for what we are
> > > going to use them for today, at least) and neither apparently has a
> > > major downside today for those use cases (apart from needed refactors
> > > later to go to another approach).
> > >
> > > (By the "generic approach", by the way, I mean just providing
> > > `Atomic<{i32,i64}>`, not a complex design)
> > >
> > > So it is up to you on what you send for the non-RFC patches, of
> > > course, and if nobody has the time / wants to do the work for the
> > > "simple" generic approach, then we can just go ahead with this for the
> > > moment. But I think it would be nice to at least consider the "simple"
> > > generic approach to see how much worse it would be.
> > >
> > > Other bits to consider, that perhaps give you arguments for one or the
> > > other: consequences on the compilation time, on inlining, on the error
> > > messages for new users, on the generated documentation, on how easy to
> > > grep they are, etc.
> >
> > Yeah, rereading the thread - I'm with Miguel and Gary.
> >
> > Generics are simply the correct way to do it, if the wider rust
> > community didn't do it that way I think that can be chalked up more to
> > historical baggage or needlessly copying the base integer type scheme.
> >
> > Let's please do it right here, and generics are the correct approach.
>
I think the disagreement here is not non-generic atomic vs generic
atomic, it's pure generic atomic vs. AtomicI{32,64} etc + generic
atomic. I said multiple times that I'm OK with generic atomics if there
are real users, just I'm not sure it's something we want to do right now
(or we have enough information to go fully on that direction). And I
think it's fine to have non-generic atomic and generic atomic coexist.
Regards,
Boqun
> If so, maybe we should do u<Wide> instead of u8, u16, oh, and probably
> just Integer<Sign, Wide> instead of i{8,16,32,64) and u{8,16,32,64} ;-)
>
> Regards,
> Boqun
next prev parent reply other threads:[~2024-06-16 17:30 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-12 22:30 [RFC 0/2] Initial LKMM atomics support in Rust Boqun Feng
2024-06-12 22:30 ` [RFC 1/2] rust: Introduce atomic API helpers Boqun Feng
2024-06-13 5:38 ` Greg Kroah-Hartman
2024-06-13 9:17 ` Peter Zijlstra
2024-06-13 10:03 ` Greg Kroah-Hartman
2024-06-13 10:36 ` Mark Rutland
2024-06-14 10:31 ` Mark Rutland
2024-06-14 20:13 ` Boqun Feng
2024-06-12 22:30 ` [RFC 2/2] rust: sync: Add atomic support Boqun Feng
2024-06-13 5:40 ` Greg Kroah-Hartman
2024-06-13 13:44 ` Gary Guo
2024-06-13 16:30 ` Boqun Feng
2024-06-13 17:19 ` Gary Guo
2024-06-13 17:22 ` Miguel Ojeda
2024-06-13 19:05 ` Boqun Feng
2024-06-14 9:59 ` Miguel Ojeda
2024-06-14 14:33 ` Boqun Feng
2024-06-14 21:22 ` Benno Lossin
2024-06-15 1:33 ` Boqun Feng
2024-06-15 7:09 ` Benno Lossin
2024-06-15 22:12 ` Boqun Feng
2024-06-16 9:46 ` Benno Lossin
2024-06-16 14:08 ` Boqun Feng
2024-06-16 15:06 ` Benno Lossin
2024-06-16 15:34 ` Boqun Feng
2024-06-16 15:55 ` Benno Lossin
2024-06-16 16:30 ` Boqun Feng
2024-06-19 9:09 ` Benno Lossin
2024-06-19 15:00 ` Boqun Feng
2024-06-16 17:05 ` Boqun Feng
2024-06-16 9:51 ` Kent Overstreet
2024-06-16 14:16 ` Boqun Feng
2024-06-16 14:35 ` Boqun Feng
2024-06-16 15:14 ` Miguel Ojeda
2024-06-16 15:32 ` Kent Overstreet
2024-06-16 15:54 ` Boqun Feng
2024-06-16 17:30 ` Boqun Feng [this message]
2024-06-16 17:59 ` Kent Overstreet
2024-06-16 15:50 ` Boqun Feng
2024-06-16 15:23 ` Kent Overstreet
2024-06-15 1:03 ` John Hubbard
2024-06-15 1:24 ` Boqun Feng
2024-06-15 1:28 ` John Hubbard
2024-06-15 2:39 ` Boqun Feng
2024-06-15 2:51 ` John Hubbard
2024-06-16 14:51 ` Gary Guo
2024-06-16 15:06 ` Boqun Feng
2024-06-17 5:36 ` Boqun Feng
2024-06-17 5:42 ` Boqun Feng
2024-06-19 9:30 ` Benno Lossin
2024-06-16 0:51 ` Andrew Lunn
2024-06-14 9:51 ` Peter Zijlstra
2024-06-14 14:18 ` Boqun Feng
2024-06-13 20:25 ` Boqun Feng
2024-06-14 10:40 ` Mark Rutland
2024-06-14 20:20 ` Boqun Feng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zm8hG58nuE3HrnyS@Boquns-Mac-mini.home \
--to=boqun.feng@gmail.com \
--cc=a.hindborg@samsung.com \
--cc=akiyks@gmail.com \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=dakr@redhat.com \
--cc=dave.hansen@linux.intel.com \
--cc=dhowells@redhat.com \
--cc=dlustig@nvidia.com \
--cc=elver@google.com \
--cc=gary@garyguo.net \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=j.alglave@ucl.ac.uk \
--cc=joel@joelfernandes.org \
--cc=kent.overstreet@gmail.com \
--cc=kent.overstreet@linux.dev \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=luc.maranget@inria.fr \
--cc=mark.rutland@arm.com \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=mingo@redhat.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=npiggin@gmail.com \
--cc=ojeda@kernel.org \
--cc=parri.andrea@gmail.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=stern@rowland.harvard.edu \
--cc=tglx@linutronix.de \
--cc=tmgross@umich.edu \
--cc=torvalds@linux-foundation.org \
--cc=wedsonaf@gmail.com \
--cc=will@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).