Repository navigation
v0.4.0
artiqwest v0.4.0
Upgrade to arti-client / tor-rtcompat 0.43.0, with fixes for cache growth and HTTP protocol selection. Now published to crates.io.
Note: the crates.io
0.3.0was an earlier publish predating this work; the arti-0.43 changes ship as0.4.0(the API change below is breaking).
⚠️ Breaking changes
- The optional
existing_clientargument toget,post, andwsis nowOption<Arc<TorClient<PreferredRuntime>>>(wasOption<TorClient<...>>).TorClientno longer implementsClonein arti 0.43, andcreate_bootstrappednow returns anArc.
Fixes
- Unbounded cache growth (#4): the client previously created a fresh per-instance
tor/<uuid>directory on every process start. It now uses a single stable, arti-specific directory (./tor/arti/state,./tor/arti/cache) reused across runs — bloat-free, while staying isolated from any other arti instance on the machine (unlikeTorClientConfig::default(), whose shared location collides with co-located onion services). Theuuiddependency is dropped. - HTTP protocol dispatch: requests unconditionally used an HTTP/2 handshake even when ALPN negotiated
http/1.1, causing intermittentframe with invalid sizeerrors and breaking HTTP/1.1-only servers. Dispatch now follows the negotiated ALPN protocol, with an HTTP/1.1 fallback.
Internal
- GitHub Actions CI (build + clippy on stable, rustfmt on nightly, fast unit tests).
- Live-Tor integration tests marked
#[ignore](run withcargo test -- --ignored). onyumsdev-dependency bumped to 0.3.1; tests install a rustlsCryptoProvider; updated for therand0.10 API.
Full changelog: v0.2.3...v0.4.0