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@xxxxxxxxx> 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.