anvilsign in

collin/anvil

1# Duplicates `clippy::multiple_crate_versions` is allowed to ignore.
2#
3# The lint is on (see `[workspace.lints.clippy]` in Cargo.toml) so that a *new*
4# duplicate has to be argued for. Everything below is a duplicate we cannot
5# remove from here: some other crate in the tree pins the older copy, and the
6# only fix is that crate moving. Each entry says who is holding it, so this
7# list doubles as the "what are we waiting on" record — when a bump makes an
8# entry unnecessary, delete it rather than leaving it to rot.
9#
10# Nothing here is ours to collapse today: `argon2` was, and was taken, which
11# is what removed argon2, blake2 and password-hash from this list.
12
13allowed-duplicate-crates = [
14 # --- The RustCrypto `digest` 0.10 -> 0.11 seam ------------------------
15 # Half the tree has moved to digest 0.11 (aes-gcm, ssh-key, russh, our own
16 # sha2/hmac) and half has not (gix's sha1, `rsa` 0.9 in anvil-web's tests,
17 # argon2 0.5). Every crate below is simply the same crate on both sides of
18 # that line, and they collapse when the stragglers move — mostly gix.
19 "block-buffer",
20 "const-oid",
21 "cpufeatures",
22 "crypto-common",
23 "digest",
24 "generic-array",
25 "sha1",
26 "sha3",
27
28 # --- Held by direct dependencies of ours ------------------------------
29 "hashlink", # rusqlite 0.40 moved to 0.12; something older wants 0.11.
30 "rand", # axum's websockets are on 0.9; ssh-key needs rand_core 0.10,
31 # so we cannot meet them — see the note below.
32 # `base64` used to sit here: we were on 0.23 and axum 0.8 on 0.22. We hold
33 # at 0.22 to match axum rather than carry two copies — 0.23 bought us
34 # nothing we use, so the duplicate was the whole cost. Revisit when axum
35 # moves. `tower-http` also used to sit here and turned out to be declared
36 # and never used at all, so it left with the dependency.
37 #
38 # `rand` is the case where meeting in the middle does not work: axum's
39 # websockets pull 0.9, but ssh-key rc.11 will only take an RNG on
40 # rand_core 0.10, which is rand 0.10. Downgrading trades one duplicate for
41 # a compile error, so this one waits for axum.
42
43 # --- Entirely inside other crates' trees ------------------------------
44 "bitflags", # 1.x lingers under a few transitive crates.
45 "foldhash", # gix-pack's clru vs jaq-json.
46 "getrandom", # 0.2/0.3/0.4 across rand, ring and gix.
47 "hashbrown", # three copies, all within gix's own sub-crates.
48 "r-efi", # a getrandom UEFI backend, one per getrandom major.
49 "rand_core", # tracks the getrandom split above.
50 "syn", # proc-macro crates mid-migration from 2.x to 3.x.
51]