chore: migrate off reqwest 0.11 to clear unmaintained transitives#188
Closed
dobby-coder[bot] wants to merge 2 commits into
Closed
chore: migrate off reqwest 0.11 to clear unmaintained transitives#188dobby-coder[bot] wants to merge 2 commits into
dobby-coder[bot] wants to merge 2 commits into
Conversation
Bumps `reqwest` 0.11 -> 0.12 in `pg-pkg` and `pg-cli`, and vendors `irma` 0.2.1 at `./irma/` (workspace member, patched in via `[patch.crates-io]`) so its `reqwest` dep can be bumped to 0.12 as well — upstream tweedegolf/irmars is dormant since 2021-12 and ships no 0.12 release. Clears RUSTSEC-2025-0134 (rustls-pemfile 1.x unmaintained) from the allowlist outright. RUSTSEC-2026-0058 (tokio-io unmaintained) is kept but re-scoped: it now comes from `tower-http` and `sqlx` 0.8 via `futures-util`'s io-compat shim rather than from reqwest 0.11. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
`cargo chef prepare` failed on `Build (amd64)` / `Build (arm64)` because the workspace now lists `./irma` as a member but the Dockerfile didn't COPY the directory into the planner/builder stages. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Contributor
Author
There was a problem hiding this comment.
Reviewed the diff, the vendored irma source, and CI. (Note: GitHub blocks self-approval since the bot authored this PR — leaving this as a comment review for @rubenhensen to approve.)
- All CI checks pass (build amd64/arm64, fmt, tests across core/cli/pkg/ffi, wasm tests, docker scan).
irma/src/is byte-identical to crates.ioirma 0.2.1(verified by diff against the published crate tarball). Only delta inirma/Cargo.tomlis thereqwest = "0.12"bump plus a few dev-dep version bumps; license + authors preserved.[patch.crates-io] irma = { path = "irma" }correctly redirects existingirma = "0.2.1"requirements in pg-pkg/pg-cli/pg-core with no manifest churn.- Dockerfile / dev.Dockerfile additions of
COPY irma ./irmaare necessary because each workspace member is copied explicitly. .cargo/audit.tomlchange accurately reflects the new state: RUSTSEC-2025-0134 cleared, RUSTSEC-2026-0058 retained with an updated comment explaining the remaining tower-http / sqlxfutures-util io-compatpath.- pg-cli adding
default-tlsback alongsidejsonis correct since reqwest 0.12 withdefault-features = falseno longer pulls a TLS backend implicitly.
No blockers — ready to merge from this agent's side.
Contributor
|
Superseded by #192. The encryption4all fork is now published on crates.io as |
rubenhensen
added a commit
that referenced
this pull request
May 18, 2026
The upstream tweedegolf/irma crate has been dormant since 2021 and never published a reqwest-0.12 release, leaving postguard pinned to reqwest 0.11 and pulling in the unmaintained rustls-pemfile 1.0.4. Switch every pg-* crate from the abandoned irma 0.2.1 to the encryption4all fork published as irmars 0.2.2. Use the Cargo package-rename trick so existing use irma::... call sites stay unchanged. irmars 0.2.2 ships with reqwest 0.12 and thiserror 2, which lets pg-pkg and pg-cli bump to reqwest 0.12 in the same step. Clears RUSTSEC-2025-0134 (rustls-pemfile unmaintained) from the cargo-audit allowlist. RUSTSEC-2026-0058 (tokio-io unmaintained) still surfaces through tower-http and sqlx-* via futures-util's compat shim, so its allowlist entry is retained with an updated comment explaining the remaining transitive path. Supersedes #188 (which used a vendored irma source as a workaround). Closes #186.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #186.
What
Bumps
reqwest0.11.x → 0.12 inpg-pkgandpg-cli, and vendors theirmacrate at./irma/(workspace member, redirected via[patch.crates-io]) so itsreqwestdependency can be bumped to 0.12 too. Upstreamtweedegolf/irmarshas been dormant since 2021-12 and never published a reqwest-0.12 release, so a published version isn't available.Why
Eliminates the
reqwest 0.11.27→rustls-pemfile 1.0.4transitive flagged by RUSTSEC-2025-0134, and reshapes thetokio-io(RUSTSEC-2026-0058) dependency tree so it no longer routes through reqwest 0.11.After this PR,
cargo auditfrom the repo root reports zero advisories beyond the existingrsaMarvin allowlist entry (tracked separately in #177).Changes
irma/(new)irma 0.2.1source from crates.io.Cargo.tomlpatched to usereqwest 0.12(json + default-tls); license unchanged (Apache-2.0); other source files byte-identical to crates.io.Cargo.tomlirmaadded to workspacemembers; new[patch.crates-io] irma = { path = "irma" }block.pg-pkg/Cargo.tomlreqwest = "0.11.10"→reqwest = "0.12".pg-cli/Cargo.tomlreqwest = { version = "0.11.14", default-features = false, features = ["json"] }→version = "0.12"withdefault-tlsadded back so the CLI still has a TLS backend..cargo/audit.tomlRUSTSEC-2025-0134removed (cleared).RUSTSEC-2026-0058retained with an updated comment — see Caveat below.Caveat: tokio-io advisory partially cleared
The issue body assumed both advisories would be cleared by the same migration. The reqwest 0.11 path is gone, but
RUSTSEC-2026-0058(tokio-io 0.1.13) still surfaces through a different chain:postguard does not call into the compat shim directly. The allowlist entry is retained with a revised comment explaining the remaining path; it'll need a tower-http / sqlx upstream fix to clear.
Verification
cargo build --workspace— clean.cargo test --manifest-path pg-core/Cargo.toml --features test,rust,stream→ 51 passed (matches CI matrix).cargo test --manifest-path pg-pkg/Cargo.toml --all-features→ 30 passed.cargo test --manifest-path pg-cli/Cargo.toml --all-features→ 7 passed.cargo test --manifest-path pg-ffi/Cargo.toml --all-features→ 1 passed.cargo build --profile edge --bin pg-pkg— clean (matches Docker CI invocation; Dockerfile pins rustc 1.91.1 which the dep bump is compatible with).cargo audit— no advisories triggered; one allowed warning (the rsa Marvin entry from chore: refresh dependency lockfile and address audit warnings #177).cargo fmt --all -- --check— clean.cargo tree -p pg-pkg -i rustls-pemfileno longer matches any package.Reviewer quickstart
Risks
irmasource into the postguard tree. Acceptable given upstream is dormant; if you'd rather track an encryption4all fork or a different downstream maintainer, swap the[patch.crates-io]line to point at a git url instead — the rest of the diff is unaffected.🤖 Generated with Claude Code