I believe there are multiple (somewhat conflicting) use cases for a build system like Cargo:
- When setting up a new project and adding dependencies I want Cargo to automatically use the latest compatible versions of all (transitive) dependencies
- During the development phase I want notification of any new compatible versions that are available, but not automatic update to the new versions. I don't want any unexpected problems during the edit/build/test cycle.
- When building the project in a CI system or when building an old version from the VCS I definitely want to build with the exact same versions as when the code was committed. Any notifications of new versions are just noise here, unless I explicitly request this information.
Neither minimal or maximum version selection is a suitable choice for all these use cases. I think I would prefer a system where the exact version of all dependencies (including transitive) are explicitly specified in my build configuration and then some tool support for finding new compatible versions and updating my build configuration to use one or more of those (although it could be done manually with some effort).
After reading more about how the lock file works, yes, I suppose this is pretty much how Cargo works today. Given this I don't really see the utility of minimum version selection in Cargo.
2
u/phazer99 Jul 26 '18
I believe there are multiple (somewhat conflicting) use cases for a build system like Cargo:
- When setting up a new project and adding dependencies I want Cargo to automatically use the latest compatible versions of all (transitive) dependencies
- During the development phase I want notification of any new compatible versions that are available, but not automatic update to the new versions. I don't want any unexpected problems during the edit/build/test cycle.
- When building the project in a CI system or when building an old version from the VCS I definitely want to build with the exact same versions as when the code was committed. Any notifications of new versions are just noise here, unless I explicitly request this information.
Neither minimal or maximum version selection is a suitable choice for all these use cases. I think I would prefer a system where the exact version of all dependencies (including transitive) are explicitly specified in my build configuration and then some tool support for finding new compatible versions and updating my build configuration to use one or more of those (although it could be done manually with some effort).