-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Let's make fewer breaking changes #71
Comments
Now that
|
I vaguely remember an in-person discussion about this. Given that
Given that |
I'd strongly prefer if we make the It is not a hard requirement for
Not a hard requirement for |
I think we can close this now :) |
A
Multiaddr
is a core primitive of libp2p and thus an almost guaranteed dependency of everything libp2p. Every breaking change in this library will trigger a cascade of breaking changes across the ecosystem becauseMultiaddr
constantly appears in public type signatures.Just within our own crates, a breaking change here causes a breaking change in:
libp2p-core
->libp2p-swarm
->libp2p-identify
(for example) ->libp2p
. There are several users of libp2p that build their own libraries on top which continues the chain.We should do everything possible to:
After a quick survey, I see the following problems:
Protocol
is notnon_exhaustive
: There will always be more protocols, we should future proof the API for that.multihash
is re-exported and part of the public API despite being < 1.0: This is a problem. A fundamental crate likemultiaddr
should only have stable dependencies in its API.I am not sure how to deal with
multihash
. It is useful to representCerthash
andP2p
in a type-safe way. One thing we can do is just not update to the latest version as quickly unless we actually need a specific feature.Update: After looking at
multihash
in more detail and opening and issue there, I think the best way forward would be to splitmultihash
into two crates: one for the definition ofmultihash
and one for all the implementations of hash algorithms, the custom derive, etc.The text was updated successfully, but these errors were encountered: