-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
A feature of a crate is part of its public API, but many crate authors don't realise this and constantly re-arrange their features. This in fact breaks semver, because someone depending on e.g. cc/rayon (present in version 1.0.37) will have this broken by cc version 1.0.47 which does not have this feature. What one should actually be depending on is the parallel feature which points to rayon in version 1.0.37, but points instead to num_cpus, jobserver in version 1.0.47 thereby retaining semver compatibility.
However the fact that the "public/private"-ness of features is not even typically discussed, means that many crate authors are unaware of this, and freely add and remove features/optional-dependencies from their crates without thinking about semver compatibility.
Not sure if this is related to #6129 or not - that issue seems more to be about the --extern flag to rustc.