here’s a thought experiment you might consider when choosing between AtomicRepresentable and AtomicValue:
should Double conform to this protocol?
in the current swift-atomics package, Double does not conform to AtomicValue, a decision with a number of justifications that all boil down to “floating point operations don’t mix with atomics”.
i personally found that decision unhelpful - most of the time i don’t care about incrementing atomic Doubles or checking them for floating point equality - all i am interested in is publishing some Double value to some concurrent observer, and the library forces me to encode and decode them through their raw bit patterns. but if you’ve named the protocol AtomicValue, you can kinda see why someone might want to keep Double away from that protocol.
but if you’ve got AtomicRepresentable instead, the name sort of evokes RawRepresentable and maybe it makes a lot more sense for Double to have an “raw atomic value” of say, UInt64.