curve25519-dalek currently defines the following backends, modeled as crate features:
u32_backend
u64_backend
fiat_u32_backend
fiat_u64_backend
simd_backend
avx2_backend
First, avx2_backend can be removed: it's a deprecated legacy alias for simd_backend.
Second, I think u32_backend and u64_backend could be selected automatically by gating on e.g. cfg(target_pointer_width = "64"). If this selection were automatic, I think these features could be removed completely, with u32_backend/u64_backend selected and used by default unless another backend has been explicitly enabled.
Likewise, fiat_u64_backend and fiat_u32_backend can be collapsed down to fiat_backend using similar target_pointer_width-based gating.
If all of the above were done, the list above could be simplified down to just fiat_backend and simd_backend.
curve25519-dalekcurrently defines the following backends, modeled as crate features:u32_backendu64_backendfiat_u32_backendfiat_u64_backendsimd_backendavx2_backendFirst,
avx2_backendcan be removed: it's a deprecated legacy alias forsimd_backend.Second, I think
u32_backendandu64_backendcould be selected automatically by gating on e.g.cfg(target_pointer_width = "64"). If this selection were automatic, I think these features could be removed completely, withu32_backend/u64_backendselected and used by default unless another backend has been explicitly enabled.Likewise,
fiat_u64_backendandfiat_u32_backendcan be collapsed down tofiat_backendusing similartarget_pointer_width-based gating.If all of the above were done, the list above could be simplified down to just
fiat_backendandsimd_backend.