Skip to content

Commit b35565b

Browse files
committed
docs(resolver): Describe the role of the lockfile
I put it after version numbers and version requirements as it builds on those two topics. Unsure whether this fully resolves the concern from rust-lang#15587 of users coming from other ecosystems that have been burned by library lockfiles affecting them to know that they won't be subject to that.
1 parent c9593ee commit b35565b

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

src/doc/src/reference/resolver.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,30 @@ ecosystem if you publish a SemVer-incompatible version of a popular library.
204204
[semver trick]: https://github.com/dtolnay/semver-trick
205205
[`downcast_ref`]: ../../std/any/trait.Any.html#method.downcast_ref
206206

207+
### Lock file
208+
209+
Cargo gives the highest priority to versions contained in the [`Cargo.lock` file], when used.
210+
This is intended to balance reproducible builds with adjusting to changes in the manifest.
211+
212+
For example, if you had a package in the resolve graph with:
213+
```toml
214+
[dependencies]
215+
bitflags = "*"
216+
```
217+
If at the time your `Cargo.lock` file is generated, the greatest version of
218+
`bitflags` is `1.2.1`, then the package will use `1.2.1` and recorded in the `Cargo.lock` file.
219+
220+
By the time Cargo next runs, `bitflags` `1.3.5` is out.
221+
When resolving dependencies,
222+
`1.2.1` will still be used because it is present in your `Cargo.lock` file.
223+
224+
The package is then edited to:
225+
```toml
226+
[dependencies]
227+
bitflags = "1.3.0"
228+
```
229+
`bitflags` `1.2.1` does not match this version requirement and so that entry in your `Cargo.lock` file is ignored and version `1.3.5` will now be used and recorded in your `Cargo.lock` file.
230+
207231
### Rust version
208232

209233
To support developing software with a minimum supported [Rust version],

0 commit comments

Comments
 (0)