Skip to content

build: zeroize is pinned in Cargo.lock to hold MSRV 1.75 #12

Description

@OR13

curve25519-dalek pulls in zeroize, and zeroize 1.9.0 sets edition2024, which Cargo 1.75 cannot parse:

failed to parse manifest at .../zeroize-1.9.0/Cargo.toml
  feature `edition2024` is required

Workaround: Cargo.lock pins zeroize to 1.8.2 (MSRV 1.60). Also curve25519-dalek is held at the 4.x line because 5.x requires Rust 1.85.

Why this is fragile: a lockfile pin only binds this repository. It works here because the crate is publish = false and CI builds the committed lockfile — a published library would leave downstreams to resolve zeroize themselves and break their 1.75 builds.

Options if this becomes annoying: raise MSRV to 1.85 and take curve25519-dalek 5.x; or add an explicit zeroize = ">=1, <1.9" dependency so the constraint travels with the manifest instead of the lockfile. Neither is worth doing while the profile is experimental.

CI covers it: the MSRV job builds --all-features on 1.75.0.


Update — still load-bearing after swapping to p256

The dependency changed but the pin did not become unnecessary. p256 reaches
zeroize transitively through elliptic-curve, so zeroize 1.9.0 and its
edition2024 manifest still break a 1.75 build. Verified by unpinning and
rebuilding:

$ cargo update -p zeroize --precise 1.9.0 && cargo +1.75.0 build --all-features --locked
  The package requires the Cargo feature called `edition2024`, but that feature is
  not stabilized in this version of Cargo (1.75.0)

Cargo.lock therefore still pins zeroize to 1.8.2. The version bounds that
matter are now:

  • p256 held at the 0.13 line — 0.14 requires Rust 1.85
  • zeroize pinned to 1.8.2 in the lockfile — 1.9.0 requires edition2024

Same fragility as before: a lockfile pin only binds this repository, which is
acceptable while the crate is publish = false. Options if it becomes annoying are
unchanged — raise MSRV to 1.85 and take p256 0.14, or carry an explicit
zeroize = ">=1, <1.9" so the constraint travels with the manifest.

Metadata

Metadata

Assignees

No one assigned

    Labels

    exp-ihatConcerns the experimental IHAT profile

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions