traits
traits copied to clipboard
1.0 releases
This is a tracking ticket for 1.0 releases of all of the crates in this repository, except for signature
which is already 1.0 (see #237).
The main blocker for 1.0 releases of crates in this repository has been a desire to stabilize them after Rust ships stable const generics. There is now hope this may happen soon enough to warrant putting together a 1.0 stabilization plan:
https://without.boats/blog/shipping-const-generics/
That said, many of the crates maintained by this org have relatively fancy usages of type-level arithmetic using GenericArray
which probably won't be available on stable Rust for a much longer period of time.
My best guess is we'll be trying to ship 1.0 versions some time in 2021. In the meantime, this is a place to track upstream Rust progress and make a plan for both replacing existing usage of GenericArray
with const generics as well as shipping 1.0 versions of these crates which use a const generic API.
Note that const generics MVP is not sufficient, even if we forget about the fancy type-level arithmetic used in some crates. It even mentioned in the blog post:
This will mean, for example, that use cases like cryptographic hash traits which allow each implementation to specify a different length for the hash they output will still be out of scope for the MVP. This is a shame, but this feature will come eventually.
IIUC the main blocker here is rust-lang/rust#68436.
Also ideally I would like to release 0.* versions dependent on const generics first and release 1.0 only if no big changes will be needed in half to one year. Another Rust feature which I hope to see implemented before 1.0 releases is rust-lang/rust#65262.
I agree 1.0 should be blocked on const generics. Appears progress is being made. :)
Indeed, and it's exciting! Unfortunately min_const_generics
aren't quite powerful enough for our use cases.
Namely we need the ability to use an associated constant of a trait as a const generic parameter. Pretty much every single one of our usages depends on this (i.e. we define sizes using typenum
as associated types of a trait, and use those sizes as a parameter for GenericArray
).
Here's an experiment I did on the 1.51 beta
release which demonstrates the limitation:
https://github.com/RustCrypto/utils/pull/325#issuecomment-791503136
The error message there suggests that both const_generics
and const_evaluatable_checked
will need to be stabilized before that's possible.
Are there any tools that "assign blame" to dependencies for their compiler resoruce usage?
Are there any tools that "assign blame" to dependencies for their compiler resoruce usage?
Take a look at cargo-bloat
and the --time
flag.
I just wanna note that the JWK implementation is broken / too strict in what it accepts. JWKs can contain other parameters like kid
(Key Identifier), use
(one of enc
=> encryption, sig
=> signing) and many more. You can find them in the IANA registry. I'm not saying that elliptic-curve
should support all these parameters, but it should just ignore them and not fail. Changing this behavior might be a breaking change, so this should be fixed before 1.0
@Erik1000 please open a separate issue for that
Done in #1016. Feel free to hide this comment