Open nsajko opened 7 months ago
The kind
change seems reasonable to me. That was one of the later pieces added to the design , although one advantage of symbols is that the C code needs to create them so doing more complicated things is annoying.
The type parameter ordering was very deliberate. The reasoning is that most code that works with GenericMemory
will be fairly generic on the eltype, but the atomic memory will usually require fairly different code because all the mutations need to supply a memory order.
https://github.com/JuliaLang/julia/issues/53854#issuecomment-2020469087 @oscardssmith
The order of the parameters: could the element type be moved to the front?GenericMemory
has three type parameters, of which the element type is set in stone, as it's required by theAbstractVector
supertype; the remaining two parameters seem subject to change. I think it would make sense to make the element type the first type parameter, and perhaps declare in the docs that the rest of the type parameters are experimental/subject to change. This would make it more convenient to useGenericMemory
as a type parameter in user types while avoiding the non-public type parameters ofGenericMemory
.For example, the FixedSizeArrays package (not registered yet), is currently backed by
Memory
storage, but it'd ideally supportGenericMemory
: JuliaArrays/FixedSizeArrays.jl#33. Currently thestruct
definition looks like this (ref):GenericMemory
support could look something like this:Moving the element type parameter of
GenericMemory
to the first place would enable avoiding the awkward<:Any
above.The
kind
parameter: could it be made a singleton type instead of aSymbol
value?Having something like this, unlike just
Symbol
s, would be typo-proof: