summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md203
1 files changed, 203 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6078061a0..eff5b039f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,209 @@
This file describes changes in Arti through the current release. Once Arti
is more mature, we may switch to using a separate changelog for each crate.
+# Arti 1.4.5 — 7 July 2025
+
+Arti 1.4.5 continues development on xon-based ([proposal 324]) flow control and
+[Conflux]. In addition, we have drafted an initial design for the directory
+cache storage model, which will be needed for the core relay functionality, and
+for the directory authority implementation.
+
+As usual, there are also various under-the-hood improvements and bug fixes,
+which are documented below.
+
+### Breaking changes
+
+- Console logging now goes to stderr instead of stdout. ([#2024], [!3020])
+
+### Breaking changes in lower-level crates
+
+- In `tor-proto`, `CongestionParams::use_fallback_alg()` is no longer public.
+- In `tor-proto`, `ClientCirc::extend_virtual()` now takes parameters by reference,
+ and a list of Protocol capabilities.
+- The `once-cell` feature was removed from `fs-mistrust`.
+- In `tor-netdir`, the `FromInt32Saturating` trait has an extra `from_checked`
+ function.
+
+### Onion service development
+
+- Decreased the minimum allowed duration of the `hsdir_interval` to 5 minutes,
+ according to the changes from [torspec!406]. ([!3042])
+- New experimental `arti keys list` and `arti keys list-keystores` subcommands
+ for listing the existing keys and configured keystores.
+ ([#2043], [!3023], [!3060])
+
+### Relay development
+
+- Design notes for the storage model of the directory cache. ([!3017])
+
+### Proposal 324 flow control development
+
+- `DataWriter` is now rate-limited. For now, the rate is set very high (`u64::MAX`),
+ but in the future it will be dynamically changed as we receive XON/XOFF signals.
+ ([#1992], [!3014], [!3029], [!3033])
+- Added experimental support for XON/XOFF cells,
+ gated behind the `flowctl-cc` feature. ([!3031], [!3061])
+- Add a new async notification channel that will be used in the flow control
+ implementation. ([!3066])
+
+### Conflux development
+
+- Updated conflux implementation to validate the congestion control algorithm used
+ by the join point hop. ([!3046])
+- Tunnels now have unique identifiers, which are distinct from the identifiers
+ of their underlying circuits. ([!3048], [!3050])
+- The conflux implementation now uses the circuit `UniqId` to identify circuits.
+ ([#1999], [!3053])
+- Fixed bug causing the circuits in a conflux tunnel to have disjoint stream maps.
+ ([#2011], [!3034])
+- Fixed a variety of conflux-related bugs that prevented the handshake from
+ completing successfully. ([!3034])
+- Addressed several small conflux-related TODOs and typos. ([!3045], [!3065])
+- Removed all uses of `HopNum` outside of `tor-proto`. ([!3075])
+- Fixed a bug causing multipath tunnels to send cells in violation of congestion
+ control. ([04754e99b8e5899bdb0a6511b486001905dea503]])
+- Fixed an off-by-one error which caused unnecessary leg switching when all
+ circuits in a multipath tunnel had the same, equally "best" RTT. ([712785e00911543030871d6360fc3c6eeb5b33b5])
+- Fixed a conflux sequence number accounting bug. ([e675585b9e8ecff1ccf097e3be320631253816d8])
+- Added tests for conflux stream management. ([!3034], [!3077])
+
+### Internal cleanup and refactoring
+- `NetDir::pick_n_relays` no longer logs an unnecessary warning
+ if there are fewer usable relays than requested. ([!3028])
+- Removed `tor-rtcompat`'s `rustls` dependency in favor of `futures-rustls`.
+ ([!2943])
+- Refactored `CircParameters` to use a different type for representing
+ the negotiated settings, and to simplify usage. ([#1967], [#1968], [!3021])
+- In `tor-proto`, the `CircHop` internals are now private. ([[!3034]])
+
+### Other user-facing improvements
+
+- Experimental support for launching a SOCKS proxy from a set of already
+ bound listeners. ([!3016])
+
+### Testing
+
+- Made the `tor-proto` benchmarks compile on non-x86 architectures too.
+ ([#2029], [!3032])
+- `MockExecutor::spawn_blocking` now uses `subthread_spawn` instead of
+ `spawn_identified`. ([#2033], [!3036])
+
+### Documentation
+
+- Removed inaccurate doc comment saying consensus diffs are not supported.
+ ([!3039])
+- Clarified the drop behavior of `Blocking::spawn_blocking`. ([!3062])
+- Fixed various typos in the README. ([!3078])
+
+### Infrastructure
+
+- CI now uses an updated version of [Chutney] that has native support
+ for Arti nodes. ([!3009])
+- CI no longer uses a pinned nightly Rust version.
+ ([#2018], [!3035])
+- In the Shadow integration tests, Arti processes now log to file instead of console.
+ ([!3020])
+- The Android builds are now reproducible. ([!3055])
+
+### Cleanups, minor features, and bugfixes
+
+- `tor-netdir` no longer uses a pinned version of `typed-index-collections`.
+ ([#1647], [!3037])
+- Upgraded to `hickory-proto` version 0.25.2. ([#1962], [!3038])
+- Upgraded to `rusqlite` version 0.36.0. ([!3041])
+- Removed the `once_cell` dependency from various crates. ([!3051])
+- In `tor-netdir`, we now log any unexpected or invalid network parameters.
+ ([!3043])
+- Replaced a runtime key length check with a compile-time check
+ in `tor-proto`. ([!3068])
+- Updated the `RttEstimator` logic to set all initial estimates to `None` instead of
+ `0`, and to report a minimum/EWMA RTT of `u32::MAX` if there are no measurements.
+ ([#2049], [!3074])
+- The `RttEstimator` now has a handle to the `DynTimeProvider` of the circuit,
+ to support mocking the time in tests. ([!3063])
+- Improved the log messages about rejecting relays. ([#2006], [!3072])
+- Reworked the `tor-proto` `StreamReader` into a `futures::Stream`. ([!3076])
+- Fixed various new clippy warnings in Rust 1.88. ([!3081])
+
+### Acknowledgments
+
+Thanks to everybody who's contributed to this release, including
+Dan Ballard, hashcatHitman, hjrgrn, nield, parazyd, and trinity-1686a.
+
+Also, our deep thanks to
+the [Bureau of Democracy, Human Rights and Labor],
+and our [other sponsors]
+for funding the development of Arti!
+
+[!2943]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2943
+[!3009]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3009
+[!3014]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3014
+[!3016]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3016
+[!3017]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3017
+[!3020]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3020
+[!3021]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3021
+[!3023]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3023
+[!3028]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3028
+[!3029]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3029
+[!3031]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3031
+[!3032]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3032
+[!3033]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3033
+[!3034]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3034
+[!3035]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3035
+[!3036]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3036
+[!3037]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3037
+[!3038]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3038
+[!3039]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3039
+[!3041]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3041
+[!3042]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3042
+[!3043]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3043
+[!3045]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3045
+[!3046]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3046
+[!3048]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3048
+[!3050]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3050
+[!3051]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3051
+[!3053]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3053
+[!3055]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3055
+[!3060]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3060
+[!3061]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3061
+[!3062]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3062
+[!3063]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3063
+[!3065]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3065
+[!3066]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3066
+[!3068]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3068
+[!3072]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3072
+[!3074]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3074
+[!3075]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3075
+[!3076]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3076
+[!3077]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3077
+[!3078]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3078
+[!3081]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3081
+[#1647]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1647
+[#1962]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1962
+[#1967]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1967
+[#1968]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1968
+[#1992]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1992
+[#1999]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1999
+[#2006]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2006
+[#2011]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2011
+[#2018]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2018
+[#2024]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2024
+[#2029]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2029
+[#2033]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2033
+[#2043]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2043
+[#2049]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2049
+[04754e99b8e5899bdb0a6511b486001905dea503]: https://gitlab.torproject.org/tpo/core/arti/-/commit/04754e99b8e5899bdb0a6511b486001905dea503
+[712785e00911543030871d6360fc3c6eeb5b33b5]: https://gitlab.torproject.org/tpo/core/arti/-/commit/712785e00911543030871d6360fc3c6eeb5b33b5
+[Bureau of Democracy, Human Rights and Labor]: https://www.state.gov/bureaus-offices/under-secretary-for-civilian-security-democracy-and-human-rights/bureau-of-democracy-human-rights-and-labor/
+[Chutney]: https://gitlab.torproject.org/tpo/core/chutney
+[Conflux]: https://spec.torproject.org/proposals/329-traffic-splitting.html
+[e675585b9e8ecff1ccf097e3be320631253816d8]: https://gitlab.torproject.org/tpo/core/arti/-/commit/e675585b9e8ecff1ccf097e3be320631253816d8
+[other sponsors]: https://www.torproject.org/about/sponsors/
+[proposal 324]: https://spec.torproject.org/proposals/324-rtt-congestion-control.html
+[torspec!406]: https://gitlab.torproject.org/tpo/core/torspec/-/merge_requests/406
+
+
+
# Arti 1.4.4 — 5 June 2025
Arti 1.4.4 continues our development efforts to support multi-legged tunnels in