Skip to content

Downgrading broken dependencies to fix MSRV CI test#237

Merged
Manishearth merged 1 commit intorust-fuzz:mainfrom
ngildenhuys:downgrading_msrv_deps
Mar 13, 2026
Merged

Downgrading broken dependencies to fix MSRV CI test#237
Manishearth merged 1 commit intorust-fuzz:mainfrom
ngildenhuys:downgrading_msrv_deps

Conversation

@ngildenhuys
Copy link
Contributor

Downgrading syn, quote, and unicode-ident.

unicode-ident 1.0.22
syn 2.0.106
quote 1.0.41

Fish script made to find these version numbers.
Minimum version numbers based on the latest release number of those packages at the last time CI was successful.

#!/usr/bin/env fish
set fish_trace 1
set -x
set quote_version_min 40
set quote_version_max 45
set syn_version_min 104
set syn_version_max 106
# set proc_version_max 117
set unicode_version_max 24
set unicode_version_min 18

for qv in (seq $quote_version_max -1 $quote_version_min)
  cargo update -p quote --precise 1.0.$qv
  for sv in (seq $syn_version_max -1 $syn_version_min)
    cargo update -p syn --precise 2.0.$sv
    for uv in (seq $unicode_version_max -1 $unicode_version_min)
      cargo update -p unicode-ident --precise 1.0.$uv
      if cargo +1.63 check --lib --all-features
        echo "quote($qv) | syn($sv) | unicode($uv)"
        exit 0
      end
    end
  end
end
echo "No viable combination found"
exit 1

@ngildenhuys
Copy link
Contributor Author

For issue: #235

@ngildenhuys
Copy link
Contributor Author

okay, locally seems like my proc-macro2 version was 1.0.91...so I'm gonna just add another layer to find the max version for proc-macro2 as well to the script, and that should cover all deps

@ngildenhuys ngildenhuys force-pushed the downgrading_msrv_deps branch from b9a8a65 to 9b68ef4 Compare March 13, 2026 16:16
@ngildenhuys
Copy link
Contributor Author

cargo tree --all results from full search

derive_arbitrary v1.4.2 (proc-macro) (/home/ngildenhuys/projects/tmp_arb/derive)
├── proc-macro2 v1.0.103
│   └── unicode-ident v1.0.22
├── quote v1.0.41
│   └── proc-macro2 v1.0.103
│       └── unicode-ident v1.0.22
└── syn v2.0.106
    ├── proc-macro2 v1.0.103
    │   └── unicode-ident v1.0.22
    ├── quote v1.0.41
    │   └── proc-macro2 v1.0.103
    │       └── unicode-ident v1.0.22
    └── unicode-ident v1.0.22

@ngildenhuys
Copy link
Contributor Author

Noting here a much faster way to find these versions is via binary search and the cargo-msrv tool does just that. If you remove the Cargo.lock file and target dir, then run cargo msrv, it should find the msrv, and running a cargo tree --all after that will show you the versions of the packages that it found.

full script

rm -rf target Cargo.lock
cargo msrv find
cargo tree --all

output

warning: the `cargo tree` --all flag has been changed to --no-dedupe, and may be removed in a future version
  |
  = help: if you are looking to display all workspace members, use the --workspace flag
arbitrary v1.4.2 (/home/ngildenhuys/projects/tmp_arb)
[dev-dependencies]
└── exhaustigen v0.1.0

arbitrary-fuzz v0.0.0 (/home/ngildenhuys/projects/tmp_arb/fuzz)
├── arbitrary v1.4.2 (/home/ngildenhuys/projects/tmp_arb)
│   [dev-dependencies]
│   └── exhaustigen v0.1.0
└── libfuzzer-sys v0.4.12
    └── arbitrary v1.4.2
    [build-dependencies]
    └── cc v1.2.56
        ├── find-msvc-tools v0.1.9
        ├── jobserver v0.1.34
        │   └── libc v0.2.183
        ├── libc v0.2.183
        └── shlex v1.3.0

derive_arbitrary v1.4.2 (proc-macro) (/home/ngildenhuys/projects/tmp_arb/derive)
├── proc-macro2 v1.0.106
│   └── unicode-ident v1.0.24
├── quote v1.0.45
│   └── proc-macro2 v1.0.106
│       └── unicode-ident v1.0.24
└── syn v2.0.117
    ├── proc-macro2 v1.0.106
    │   └── unicode-ident v1.0.24
    ├── quote v1.0.45
    │   └── proc-macro2 v1.0.106
    │       └── unicode-ident v1.0.24
    └── unicode-ident v1.0.24

@Manishearth Manishearth merged commit 341a8fd into rust-fuzz:main Mar 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants