Draft changelog for 0.0.3.

This commit is contained in:
Nick Mathewson 2022-01-11 09:25:36 -05:00
parent cca29b46dc
commit 343b8c3642
1 changed files with 108 additions and 1 deletions

View File

@ -4,6 +4,113 @@ This file describes changes in Arti through the current release. Once Arti
is more mature, and we start to version crates independently, we will is more mature, and we start to version crates independently, we will
probably switch to using a separate changelog for each crate. probably switch to using a separate changelog for each crate.
# Arti 0.0.3 — 11 Jan 2022
This release adds support for preemptive circuit construction, refactors
Arti's configuration code and behavior, and adds numerous smaller features
needed for a correct Tor client implementation.
It breaks compatibility with previous releases, as is expected before
release 0.1.0 (scheduled March 2022).
### New features
- Arti now builds preemptive circuits in order to anticipate the user's
predicted needs. This change matches Tor's behavior more closely, and
should reduce latency for stream creation. ([!154])
- The configuration for a [`TorClient`] object can be changed while the
client is running. ([!181])
- Guard selection now obeys family restrictions concerning exit nodes.
([!139])
- Better support for overriding the [`TcpProvider`] on an Arti client and
having this change affect the [`TlsProvider`]. This helps with testing
support, with cases where TCP streams must be constructed specially, etc.
([!166])
- We no longer consider a directory to be "complete" until we have
microdescriptors for all of our primary guards. ([!220])
### Breaking changes
- Configuration files have been reorganized, and we have an all-new API for
creating configuration objects. ([!135], [!137])
- A few unused types and functions have been removed. ([214c251e] etc)
- `CircMgr` now returns `ClientCirc` directly, not wrapped in an `Arc`.
(ClientCirc instances are already cheap to clone.) ([!224])
- `TorClient` now has separate `connect` and `connect_with_prefs` methods.
([!229])
- Various other API refactorings and revisions. (Please remember that we plan
to break backward compatibility with _every_ release between now and 0.1.0
in early March.)
### Major bugfixes
- We fixed a bug in handling stream-level SENDMEs that would sometimes result
in an Arti client sending too much data, causing the exit relay to close
the circuit. ([!194])
### Infrastructure
- We now have an experimental benchmarking tool to compare Arti's performance
with Tor's, when running over a chutney network. So far, we seem
competitive, but we'll probably find cases where we underperform. ([!195])
- Our coverage tool now post-processes grcov's output to produce per-crate
results. ([!163])
- Our integration test scripts are more robust to cases where the user has
already configured a `CHUTNEY_PATH`. ([!168])
- We have lowered the required dependency versions in our Cargo.toml files
so that each one is the lowest version that actually works with our code.
([!227])
### Cleanups, minor features, and minor bugfixes
- We store fewer needless fields from Tor directory documents. ([!151],
[!165])
- We've gone through and converted _every_ `XXXX` comment in our code (which
indicated a must-fix issue) into a ticket, or a `TODO`. ([#231])
- Our SOCKS code is much more careful about sending error messages if
an error occurs before the SOCKS connection succeeds. ([!189])
- We no longer build non-directory circuits when the consensus is
super-old. ([!90])
- We no longer consider timeouts to indicate that our circuits are all timing
out unless we have seen _some_ recent incoming network traffic. ([!207])
- You can now configure logging to files, with support for rotating the
files hourly or daily. You can have separate filters for each logging
target. ([!222])
- Too many others to list!
### Acknowledgments
Thanks to everbody who has contributed to this release, including dagon,
Daniel Eades, Muhammad Falak R Wani, Neel Chauhan, Trinity Pointard, and
Yuan Lyu!
[!90]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/90
[!135]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/135
[!137]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/137
[!139]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/139
[!151]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/151
[!154]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/154
[!163]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/163
[!165]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/165
[!166]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/166
[!168]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/168
[!181]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/181
[!189]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/189
[!194]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/194
[!195]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/195
[!207]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/207
[!220]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/220
[!222]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/222
[!224]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/224
[!227]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/227
[!229]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/229
[#231]: https://gitlab.torproject.org/tpo/core/arti/-/issues/231
[214c251e]: https://gitlab.torproject.org/tpo/core/arti/-/commit/214c251e41a7583397cc5939b9447b89752ee323
[`TcpProvider`]: https://tpo.pages.torproject.net/core/doc/rust/tor_rtcompat/trait.TcpProvider.html
[`TlsProvider`]: https://tpo.pages.torproject.net/core/doc/rust/tor_rtcompat/trait.TlsProvider.html
[`TorClient`]: https://tpo.pages.torproject.net/core/doc/rust/arti_client/struct.TorClient.html
# Arti 0.0.2 — 30 Nov 2021 # Arti 0.0.2 — 30 Nov 2021
This release tries to move us towards a more permanent API, and sets the This release tries to move us towards a more permanent API, and sets the
@ -46,7 +153,7 @@ release 0.1.0 (scheduled March 2022).
reactor architecture, and reduce the need for locks. ([#205], [#217]). reactor architecture, and reduce the need for locks. ([#205], [#217]).
- By default, `cargo build --release` now chooses a more aggressive set - By default, `cargo build --release` now chooses a more aggressive set
of optimization flags. ([!124]) of optimization flags. ([!124])
- Too many smaller fixes to list. - Too many smaller fixes to list.
### Acknowledgments ### Acknowledgments