Skip to content

Pin or bump the rust-bitcoin constraint: ^0.32.9 currently accepts the 0.33 pre-release prep #1818

Description

@DanGould

Disclosure: claude coauthored but sanity checked.

The question for maintainers

payjoin/Cargo.toml declares bitcoin = { version = "0.32.7", features = ["base64"] }
in the working tree and 0.32.9 on master. Cargo.lock is gitignored, so CI
resolves fresh on every run.

Published bitcoin versions, newest first:

Version Published MSRV
0.32.102 2026-07-15 1.74.0
0.32.101 2026-06-24 1.74.0
0.32.100 2026-05-27 1.74.0 (yanked)
0.32.11 2026-07-22 1.56.1
0.32.10 2026-05-26 1.56.1
0.32.9 2026-05-05 1.56.1

Two lines are being published under the same major. The 0.32.1xx series carries
MSRV 1.74.0, matching 0.33.0-beta's, while the 0.32.x stable line stays at
1.56.1. which reads as rust-bitcoin's 0.33 pre-release channel shipped under the
0.32 major version number.

Cargo resolves ^0.32.9 as >=0.32.9, <0.33.0, and 0.32.102 satisfies that.
Semver-wise 0.32.102 outranks 0.32.11, so a fresh resolve picks the pre-release
line, not the stable one.

So: what is CI actually building against, and is that intended? Someone should
check a recent CI job's resolved tree before this issue is written up. payjoin
1.0.0 is published, which makes it worth knowing which of the two lines the
released artifact's users will resolve.

Depending on the answer, this issue becomes one of

(a) Constrain to the stable line. If the pre-release resolution is unintended,
tighten the constraint so 0.32.1xx cannot be selected, and bump to 0.32.11 on the
stable line. Small, mechanical, good first issue.

(b) Adopt the pre-release line deliberately. If 0.32.10x is where rust-bitcoin
wants consumers, then this is a real migration with an MSRV question attached
(1.74 for the dep against 1.85 for the workspace, so no conflict, but the CI matrix
should say so explicitly). (I favor B, but we should survey integrators to figure out their plans)

(c) Track the 0.33 migration. Separate, larger, and worth its own issue rather
than being folded in here.

Also in scope once the above is settled

bitcoin-units is pinned at 0.1.3 while 0.1.101 and 0.5.0 are both published — the
same two-line pattern, and it is listed under ignored in the manifest's
dependency-check config, which may be masking it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency file

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions