Skip to content
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

Relax MSRV policy to exclude dependencies #44

Closed
Tracked by #31
Emoun opened this issue Jan 15, 2022 · 2 comments
Closed
Tracked by #31

Relax MSRV policy to exclude dependencies #44

Emoun opened this issue Jan 15, 2022 · 2 comments
Labels
D-accepted A decision (D) has been made and the issue will be worked on I-feature This issue (I) regards a (potential) feature in the project T-accepted Triage (T): Initial review accepted issue/PR as valid

Comments

@Emoun
Copy link
Owner

Emoun commented Jan 15, 2022

Short Description:

Relax MSRV policy to exclude any guarantees about the MSRV of duplicate's dependencies.

Motivation:

#42 showed that the current MSRV policy implementation of pinning any dependencies that don't have a compatible MSRV policy puts undue limits on users who want to use the same dependencies as duplicate.
The discussion in the same issue shows the problem isn't likely to be fixed by rust tooling, meaning pinning versions must be avoided by duplicate

As such, the MSRV is practically too restrictive and should be relaxed.

Design

The original vision of the MSRV was to promise that increasing it would always follow with a major version bump.
While this can be maintained by duplicate itself, it is unlikely to be a policy that is generally used by dependencies.

Therefore, to maintain as much of the promise as we can, while avoiding having to pin dependencies, the new policy is that dependencies don't necessarily have a compatible MSRV policy.
Instead, we will promise that the lowest version used by duplicate works for the MSRV. The user must then independently pin any dependencies they need that releases a version with a higher MSRV.

Misc:

@Emoun Emoun added D-discussion A decision (D) has not been made yet and is open to discussion I-feature This issue (I) regards a (potential) feature in the project labels Jan 15, 2022
@github-actions github-actions bot added the T-new Triage (T): Has yet to be reviewed label Jan 15, 2022
@Emoun Emoun added T-accepted Triage (T): Initial review accepted issue/PR as valid and removed T-new Triage (T): Has yet to be reviewed labels Jan 15, 2022
@Emoun Emoun mentioned this issue Jan 15, 2022
12 tasks
@Emoun
Copy link
Owner Author

Emoun commented Jan 16, 2022

To practically test the new policy, we could use the -Z minimal-versions cargo flag on the MSRV test. This would ensure that there is at least one usable set of versions that compile on MSRV.

Testing this showed that macrotest's serde dependency is too lax and should be set to 1.0.105 to work with duplicate.
eupn/macrotest#70 fixes this.

@Emoun Emoun added D-accepted A decision (D) has been made and the issue will be worked on and removed D-discussion A decision (D) has not been made yet and is open to discussion labels Jan 29, 2022
@Emoun
Copy link
Owner Author

Emoun commented Feb 12, 2022

Implemented awaiting next release

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
D-accepted A decision (D) has been made and the issue will be worked on I-feature This issue (I) regards a (potential) feature in the project T-accepted Triage (T): Initial review accepted issue/PR as valid
Projects
None yet
Development

No branches or pull requests

1 participant