Skip to content

fix(deps): update rust crate reqwest to 0.13 - #222

Draft
Romuald Lemesle (RomuDeuxfois) wants to merge 5 commits into
mainfrom
fix/reqwest-0.13-tls-features
Draft

fix(deps): update rust crate reqwest to 0.13#222
Romuald Lemesle (RomuDeuxfois) wants to merge 5 commits into
mainfrom
fix/reqwest-0.13-tls-features

Conversation

@RomuDeuxfois

@RomuDeuxfois Romuald Lemesle (RomuDeuxfois) commented Aug 18, 2026

Copy link
Copy Markdown
Member

reqwest 0.13 dropped the rustls-tls-* feature family — hence the Renovate bump (#140) being red since February: it changed the version, not the features.

 features = [
     "blocking",
-    "rustls-tls",
-    "rustls-tls-native-roots",
+    "rustls",
     "json",
 ]

Cargo.lock regenerated with cargo update -p reqwest: 0.12.28 → 0.13.4, 23 packages added, webpki-roots removed.

Two intended behaviour changes, since rustls expands to aws-lc-rs + platform-verifier where rustls-tls expanded to webpki-roots + ring:

  • crypto provider ring → aws-lc-rs, which adds cmake and a C compiler to the build requirements — the thing to watch in CI, notably windows-arm64
  • trust store bundled Mozilla roots + system store → OS verifier only

Side effect: ring leaves the compiled graph (cargo tree -i ring --target all is empty), though it stays as an inert lock entry that cargo audit still scans.

Not compiled locally — no linker on this machine, and aws-lc-sys now needs cmake too. CI decides.

renovate Bot and others added 2 commits August 18, 2026 17:38
reqwest 0.13 removed the whole rustls-tls-* feature family, which is why
the Renovate bump could not resolve since February. Replace rustls-tls
and rustls-tls-native-roots with rustls.

Two behaviour changes come with that feature, by design:
- crypto provider moves from ring to aws-lc-rs, which adds a cmake and C
  compiler requirement for aws-lc-sys at build time
- roots move from bundled webpki-roots to rustls-platform-verifier, i.e.
  the OS trust store rather than Mozilla roots plus the system store
Copilot AI lite review requested due to automatic review settings August 18, 2026 15:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the project’s HTTP client dependency to reqwest 0.13 by switching to the new rustls feature name (replacing the removed rustls-tls-* feature family) and regenerating Cargo.lock so dependency resolution succeeds again.

Changes:

  • Bump reqwest from 0.12.15 to 0.13.0 in Cargo.toml.
  • Replace reqwest features rustls-tls / rustls-tls-native-roots with the new rustls feature.
  • Regenerate Cargo.lock, pulling in the updated reqwest dependency graph (including aws-lc-* / cmake related build deps).

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.

File Description
Cargo.toml Updates reqwest version and switches to the new rustls feature for reqwest 0.13 compatibility.
Cargo.lock Regenerated lockfile to reflect reqwest 0.13.x resolution and updated transitive dependencies.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@RomuDeuxfois
Romuald Lemesle (RomuDeuxfois) marked this pull request as draft August 18, 2026 16:08
reqwest 0.13's `rustls` verifies against the OS trust store only, where
0.12's rustls-tls + rustls-tls-native-roots also trusted the bundled
Mozilla roots. Passing those roots through add_root_certificate puts
reqwest on Verifier::new_with_extra_roots, i.e. OS store plus bundled
roots, so the dependency bump stays behaviour-neutral. Narrowing the
trust policy is left to the migrate-out-of-ring work.

Also add the symmetric TLS test: the existing one only asserts that an
invalid certificate is rejected, which a broken root store satisfies too,
so nothing currently fails if public CAs stop resolving.
@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 32.26%. Comparing base (db2e2a3) to head (20adc57).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #222      +/-   ##
==========================================
+ Coverage   31.86%   32.26%   +0.39%     
==========================================
  Files          12       12              
  Lines         681      685       +4     
==========================================
+ Hits          217      221       +4     
  Misses        464      464              
Flag Coverage Δ
agent 32.26% <100.00%> (+0.39%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/api/mod.rs 87.75% <100.00%> (+1.08%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Adds a CI job that generates a private CA, installs it into the system
trust store of each host OS, serves a certificate signed by it with
openssl s_server, then runs an #[ignore]d test against that endpoint. No
bundled Mozilla root can vouch for the chain, so a pass is evidence that
rustls-platform-verifier really reads the store — which
test_valid_certificate_is_accepted cannot show, since the bundled roots
satisfy it on their own.

Host targets only (gnu on Linux rather than the musl release target),
since the test has to actually run.
MSYS path conversion turned /CN=... into C:/Program Files/Git/CN=...,
failing the certificate generation on the Windows runner only.
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