chore: bump reqwest 0.12 → 0.13#488
Conversation
- Add `form` feature (was implicit in 0.12, explicit in 0.13) - Enables single reqwest version for all workspace crates - Unblocks openai-oxide provider PR (moltis-org#487) without dual-reqwest May need minor type annotations on `.json()` calls if inference changed.
Greptile SummaryThis PR bumps the workspace
The PR description frames the bump as eliminating "dual-version compilation," but the presence of Confidence Score: 2/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["workspace Cargo.toml\nreqwest = 0.13 + form"] -->|"feature unification"| B["reqwest 0.13.2\n(currently: only genai)"]
A -->|"Cargo.lock NOT regenerated\nfor workspace crates"| C["reqwest 0.12.28\nmoltis-agents, moltis-cli,\nmoltis-discord, etc."]
D["teloxide-core"] --> E["reqwest 0.11.27"]
F["async-openai / serenity"] --> C
G["genai"] --> B
C -->|"compile"| H["Binary: 3 reqwest versions\n0.11 + 0.12 + 0.13"]
B -->|"compile"| H
E -->|"compile"| H
style H fill:#f88,stroke:#c00
style C fill:#fa0,stroke:#c60
Reviews (2): Last reviewed commit: "chore: bump reqwest 0.12 → 0.13" | Re-trigger Greptile |
| sqlx = { features = ["migrate", "runtime-tokio", "sqlite"], version = "0.8" } | ||
| # HTTP client | ||
| reqwest = { features = ["json", "multipart", "stream"], version = "0.12" } | ||
| reqwest = { features = ["json", "multipart", "stream", "form"], version = "0.13" } |
There was a problem hiding this comment.
Cargo.lock not regenerated — bump has no effect
The Cargo.toml was updated to version = "0.13", but Cargo.lock was not regenerated. Because Cargo.lock is committed and takes precedence over Cargo.toml version constraints, every workspace crate is still resolved to reqwest 0.12.28. A spot-check of several crates confirms this:
moltis-agents→reqwest 0.12.28moltis-discord→reqwest 0.12.28moltis-mcp→reqwest 0.12.28- (and all other workspace crates similarly)
The stated goal — eliminating the dual-version compilation of 0.12 and 0.13 — is not achieved by this PR as-is.
Fix: Run cargo update reqwest (or cargo update -p reqwest) after the Cargo.toml change and commit the updated Cargo.lock alongside it.
There was a problem hiding this comment.
Fixed — ran cargo update reqwest@0.12.28 which upgraded all workspace crates to reqwest 0.13.2. Third-party crates (async-openai, chromiumoxide, matrix-sdk, oauth2) still pin 0.12; teloxide-core pins 0.11 — these can't be resolved at the workspace level.
| sqlx = { features = ["migrate", "runtime-tokio", "sqlite"], version = "0.8" } | ||
| # HTTP client | ||
| reqwest = { features = ["json", "multipart", "stream"], version = "0.12" } | ||
| reqwest = { features = ["json", "multipart", "stream", "form"], version = "0.13" } |
There was a problem hiding this comment.
query feature not added (also opt-in in 0.13)
The reqwest 0.13 release notes state: "query and form are now crate features, disabled by default." The PR correctly adds the form feature, but query is not included. A search of the codebase found no existing RequestBuilder::query() calls, so this likely won't cause an immediate compile error. However, if any future code (including the openai-oxide provider in PR #487) uses .query(...) on a reqwest builder, it will silently fail to compile without this feature enabled.
Consider adding "query" to the feature list proactively:
| reqwest = { features = ["json", "multipart", "stream", "form"], version = "0.13" } | |
| reqwest = { features = ["json", "multipart", "stream", "form", "query"], version = "0.13" } |
There was a problem hiding this comment.
Done — added query feature to the reqwest feature list.
|
No longer needed — openai-oxide now supports reqwest 0.12 natively via |
|
Reopened — this is still useful as a standalone workspace upgrade, independent of #487 (which no longer needs it thanks to Note from Greptile: |
|
Greptile is right — cargo update reqwestIf a maintainer can run that and push, the PR is complete. Alternatively, delete This PR is now independent of #487 — just a housekeeping reqwest upgrade for the workspace. |
| sqlx = { features = ["migrate", "runtime-tokio", "sqlite"], version = "0.8" } | ||
| # HTTP client | ||
| reqwest = { features = ["json", "multipart", "stream"], version = "0.12" } | ||
| reqwest = { features = ["json", "multipart", "stream", "form"], version = "0.13" } |
There was a problem hiding this comment.
Three reqwest versions will still coexist after this bump
The PR description says the bump is needed to avoid compiling both reqwest 0.12 and 0.13 into the binary. Inspecting the current Cargo.lock reveals three distinct versions are already present and will remain after the workspace crates are upgraded:
| Version | Pulled in by |
|---|---|
0.11.27 |
teloxide-core (Telegram integration) |
0.12.28 |
async-openai (via reqwest-eventsource), serenity |
0.13.x |
workspace crates + genai (once lock file is regenerated) |
teloxide-core hard-depends on reqwest 0.11, which is incompatible with Cargo's semver-major deduplication. There is no workspace-level knob to remove it. The binary will therefore always carry 0.11.27 alongside the upgraded workspace version.
If reducing binary size / compile time from duplicate reqwest versions is a hard requirement, the only paths forward are:
- Upgrade or replace
teloxide-coreto a version that supportsreqwest 0.12+ - Accept the triple-version state and update the PR description to reflect that the goal is only partially achieved
This doesn't block the bump itself, but the motivating rationale in the PR description overstates what the change achieves.
There was a problem hiding this comment.
Acknowledged — this is expected and can't be resolved at the workspace level. teloxide-core pins 0.11, and async-openai/serenity/chromiumoxide/oauth2 pin 0.12. The PR now correctly upgrades all workspace crates to 0.13. Updated PR description would be appropriate to reflect this partial improvement.
# Conflicts: # Cargo.toml
- Run `cargo update reqwest@0.12.28` so all workspace crates resolve to reqwest 0.13.2 instead of 0.12.28 - Add `query` feature which became opt-in in reqwest 0.13 - Third-party crates (async-openai, chromiumoxide, matrix-sdk, oauth2) still pull reqwest 0.12; teloxide-core still pulls 0.11 — these cannot be resolved at the workspace level Entire-Checkpoint: e7e417b27a80
Summary
Bumps
reqwestfrom 0.12 to 0.13 in workspace root.formfeature (was implicit in 0.12)Cargo.tomlWhy
reqwest 0.13 is the current stable. This unblocks PR #487 (openai-oxide provider) which depends on reqwest 0.13 — without this bump, both versions would be compiled into the binary.
Breaking changes in reqwest 0.13
Minimal:
.form()requiresformfeature → already added.json()calls may need type annotations if inference changedrustls-tls-no-provider→rustls-no-provider(only matters if used directly)Test plan
.json()calls compile (may needjson::<Type>()turbofish in a few spots)🤖 Generated with Claude Code