-
Notifications
You must be signed in to change notification settings - Fork 9
Description
@apoelstra pointed out in #43 (comment) that the api command will probably be a little too trigger happy with false positives. api currently looks for breaks at a syntax level, but there are some interesting corner cases where syntax changes but semantics do not. As in, the Rust type checker is still happy so it is not a breaking change.
There are 2 checks performed by the api command, additive and semver. Additive is between feature flags, while semver is between package versions. While the false positives are possible in both, they are more painful for the additive checks because they are re-surfaced on every change. Whereas the semver ones, for better or worse, show up once for a change and that is it. So a maintainer could OK a patch with a comment on how it is a false positive.
One solution is to switch to using the cargo-semver-checks crate for semver breaks. This is what the existing script in rust-bitcoin is using, and cargo-semver-checks publishes a library crate which we could use under the hood in rbmt. However, and this may be due to my naivety of the domain, the dependencies required look massive for the task. For example, bleeding edge MSRV (only two weeks old) and a whole rust native git library. This is a big step jump for cargo-rbmt which is really just meant to be a simple cargo orchestrator.
I am wondering if a whitelist approach can be taken with public-api instead, where known corner cases are OK'd once for a package and added to the rbmt.toml config.