Skip to content

v0.4.0

Choose a tag to compare

@physics515 physics515 released this 18 Jun 17:52
· 27 commits to master since this release

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.0 was an earlier publish predating this work; the arti-0.43 changes ship as 0.4.0 (the API change below is breaking).

⚠️ Breaking changes

  • The optional existing_client argument to get, post, and ws is now Option<Arc<TorClient<PreferredRuntime>>> (was Option<TorClient<...>>). TorClient no longer implements Clone in arti 0.43, and create_bootstrapped now returns an Arc.

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 (unlike TorClientConfig::default(), whose shared location collides with co-located onion services). The uuid dependency is dropped.
  • HTTP protocol dispatch: requests unconditionally used an HTTP/2 handshake even when ALPN negotiated http/1.1, causing intermittent frame with invalid size errors 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 with cargo test -- --ignored).
  • onyums dev-dependency bumped to 0.3.1; tests install a rustls CryptoProvider; updated for the rand 0.10 API.

Full changelog: v0.2.3...v0.4.0