Start a changelog for Arti 0.2.0

This commit is contained in:
Nick Mathewson 2022-03-28 10:10:18 -04:00
parent 482b2e3256
commit 65b7751767
1 changed files with 136 additions and 2 deletions

View File

@ -1,8 +1,142 @@
### Notes ### Notes
This file describes changes in Arti through the current release. Once Arti 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 may
probably switch to using a separate changelog for each crate. switch to using a separate changelog for each crate.
# Arti 0.2.0 — XXXX Apr 2022
BLURB
(entries below are taken through 482b2e3256cc0c738dc1deb3029173b8619920dd)
### Breaking changes
Here are the main breaking changes visible from the arti-client crate.
Numerous other lower-level crates have breaking changes not noted here.
- Significant refactoring to our configuration handling logic and APIs.
The goals here are:
- To have the current `ConfigBuilder` types
become the only user-visible configuration objects, and to have the
current `Config` objects become implementation details.
- To remove `arti-config` entirely, and fold its contents into
`arti` or `arti-client` as appropriate.
- To remove unnecessary ad-hoc accessor functions until they prove to be
needed.
This change
is not done in this release; we expect to have more breakage
in this area in our next release as well. ([#314], [#371], [#372],
[#374], [#396], [#418],
[!391], [!401], [!417], [!421], [!423], [!425], [!427])
- The [`Runtime`] trait now includes (and requires) UDP support. (Part
of [!390]'s support for DNS.)
- Stream isolation support is completely revised; see notes on isolation
below.
### New features
- Experimental feature to allow the [`DirMgr`] to be replaced by
a user-provided [`DirProvider`]. ([#267], [!318], [!347])
- Arti now tolerates IPv6-only environments, by using a basic form of
the [RFC 8305] "happy eyeballs" algorithm to try connections to
relays' IPv4 and IPv6 addresses in parallel. ([!382])
- New experimental APIs for modifying consensus objects ([!318], [!402])
- The `arti` crate now exists as a library, to better expose features
like its top-level configuration logic. ([!403])
- Arti now supports a `dns_port` to relay A, AAAA, and PTR requests over
the Tor network, like the C tor implementation's DnsPort. ([!390],
[!408], [!409])
- Arti has a new full-featured [stream isolation API] that supports more
complicated isolation rules, including user-supplied rules. ([#150],
[#414], [!377], [!418], [!420], [!429], [!434])
- Channel and Circuit objects now remember the peers that they used
when they were constructed, and allow queries of this information as
part of their API. ([#415])
- The logic for retrying failed guards has been revised to use
the same decorrelated-jitter algorithm as directory requests, per
[proposal 336]. ([cb103e04cf4d9853], part of [#407], [!426])
- When all our guards have failed, we no longer retry them all
agressively, but rather assume that our net connection is down and
wait a while. ([eed1f06662366511], part of [#407], [!426])
- When running as a directory client, we now remember more information
about the source of each request, so we can avoid caches that have
failed. ([87a3f6b58a5e75f7])
- Experimental feature to install a "filter" for modifying incoming
directory objects. Used for testing, to observe client behavior when
the directory is in an inconsistent or non-working state. ([#397], [!431])
- Arti now has initial support for a "Dormant Mode" where periodic events are
suspended. Later, even more background tasks will be shut
down. ([#90], [!429])
### Major bugfixes
### Infrastructure
- We have a new [`arti-testing`] crate (not published on crates.io) to
perform various kinds of stress-testing on our implementation. It can
simulate several kinds of failure and overload conditions; we've been
using it to improve Arti's behavior when the network is broken or
misbehaving. ([!378], [!392]; see also [#329])
- The [`arti-bench`] tool now constructs streams in parallel and
supports isolated circuits, so we can
stress-test the performance of a simulated busy client. ([#380], [!384])
- Reproducible build scripts now use Rust 1.59 and Alpine 3.15. ([#376],
[!380])
- Improved messages from reproducible build script. ([#378], [!383])
- Scripts to launch chutney are now refactored and de-duplicated ([!396])
### Documentation and Examples
- Better documentation for default configuration paths. ([!386])
- Instructions for using Tor Browser with Arti on Windows. ([!388])
- Better instructions for building Arti on Windows. ([!389], [!393])
- Improved documentation for stress-testing Arti. ([!407])
### Cleanups, minor features, and minor bugfixes
- Use [`derive_more`] and [`educe`] (and simple built-in `derive`) in
many places to simplify our code. ([!374], [!375])
- Use a [forked version of `shellexpand`] to provide correct behavior on
Windows. ([!274], [!373])
- Avoid unnecessary `Arc::clone()`s in `arti-client` experimental
APIs. ([#369], [!379])
- New [`tor-basic-utils`] crates for small pieces of low-level
functionality.
- Small performance improvements to parsing and allocating directory objects,
to improve start-up and download times. ([#377], [!381])
- Use significantly less memory (on the order of a few megabytes less per
running client) to store directory objects. ([#384], [#385], [#386], [#387],
[#388], [!389], [!398], [!415])
- Avoid allocating a backtrace object for each channel-creation
attempt. ([#383], [!394])
- Always send an "If-Modified-Since" header on consensus requests, since
we wouldn't want a consensus that was far too old. ([#403], [!412])
- Actually acknowledge preemptive circuits configuration. Previously,
we missed a place where we needed to copy it. (Part of [!417])
- Backend support for collecting clock skew information; not yet
used. ([#405], [!410])
- Major refactoring for periodic events, to support an intial version of
"dormant mode." ([!429])
### Acknowledgments
XXXXXXXXXXXXXXXXXXXXXXX
# Arti 0.1.0 — 1 Mar 2022 # Arti 0.1.0 — 1 Mar 2022