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.
Disclosure: claude coauthored but sanity checked.
The question for maintainers
payjoin/Cargo.tomldeclaresbitcoin = { version = "0.32.7", features = ["base64"] }in the working tree and
0.32.9on master.Cargo.lockis gitignored, so CIresolves fresh on every run.
Published
bitcoinversions, newest first:Two lines are being published under the same major. The
0.32.1xxseries carriesMSRV 1.74.0, matching
0.33.0-beta's, while the0.32.xstable line stays at1.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.9as>=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.
payjoin1.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.1xxcannot be selected, and bump to 0.32.11 on thestable 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-unitsis pinned at 0.1.3 while 0.1.101 and 0.5.0 are both published — thesame two-line pattern, and it is listed under
ignoredin the manifest'sdependency-check config, which may be masking it.