Start a changelog for 1.1.0.

This commit is contained in:
Nick Mathewson 2022-11-28 13:02:18 -05:00
parent b36a23cfd3
commit ffeb427bef
1 changed files with 133 additions and 0 deletions

View File

@ -3,6 +3,139 @@
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.1.0 — 30 November 2022
Arti 1.1.0 adds support for Tor's anticensorship features: Bridges
(unlisted relays), and Pluggable Transports (external tools to hide what
protocol you're using).
BLURB MORE XXXX
### Breaking changes
- Arti now requires Rust 1.60 or later. This allows us to use a few new
features, and to upgrade a few of our dependencies that had grown
stale. See ["Minimum supported Rust Version" in `README.md`] for more
information on our MSRV policy. ([#591], [#526], [#613], [#621], [!837])
### Breaking changes in lower level crates
- `SocksHandshake` has been renamed to `SocksProxyHandshake`, to
distinguish it from `SocksClientHandshake`. ([b08073c2d43d7be5])
- Numerous changes to the bridge-related APIs introduced in 1.0.1.
([!758], [#600], [!759]], [!780])
- API changes to `tor-dirclient::Response`. ([!782])
- Netinfo cell constructors have been renamed. ([!793])
- The guard manager API no long accepts `NetDir` arguments to most of
its methods; instead, it expects to be given a `NetDirProvider`.
([95a95076a77f4447])
- Move the responsibility for creating a GuardMgr to the `arti-client`
crate. ([!850])
- Numerous other changes to lower-level APIs.
### New features
- Arti can now connect to bridges when compiled with the `bridge-client`
feature. (This is on by default in the `arti` binary.)
As part of this feature, we have had to implement:
- Configuration logic for bridges ([#599], [!744], [!745], [!767],
[!781], [!780], [!783], [!826], [!874], [!877], [!881])
- Data structures to keep track of relays based on possibly
non-overlapping sets of keys ([!747], [!774], [!797], [!806])
- Improved functionality for parsing router descriptors and integrating
them with our list of bridges ([!755])
- Large-scale refactoring of the channel-manager internals to handle
bridges and relays while treating them as distinct. ([!773])
- Code to download, store, and cache bridge descriptors. ([!782], [!795],
[!810], [!820], [!827], [!828], [!831], [!834], [!845], [!851],)
- Allow the guard manager to treat bridges as a kind of guard, and to
treat bridge-lists and network directories as two kinds of a "universe"
of possible guards.
([!785], [!808], [!815], [!832], [!840])
- Support code to integrate directory management code with guard management
code. ([!847], [!852])
- More careful logging about changes in guard status. ([!869])
- Logic to retire circuits when the bridge configuration changes.
([#650], [!880])
- Arti can now connect via pluggable transports when compiled with the `pt-client`
feature. (This is on by default in the `arti` binary.) This has
required us to implement:
- Configuration logic for pluggable transports ([!823])
- The client side of the SOCKS protocol ([!746])
- An abstraction mechanism to allow the `ChanMgr` code to delegate
channel construction to caller-provided code. ([!769], [!771], [!887],
[!888])
- Integrating the SOCKS client code into the `ChanMgr` code. ([!776])
- Launching pluggable transports and communicating with them using
Tor's pluggable transport IPC protocol. ([#394], [!779], [!813])
- Code to keep track of which pluggable transports are needed,
and launch them on demand. ([!886], [!893])
- Support code to integrate the pluggable transport manager with
`arti-client`. ([#659])
- Paths in the configuration can now be configured using
`${PROGRAM_DIR}`, which means "the directory containing the current
executable". ([#586], [!760])
- Some objects can now be marked as "Redactable". A "Redactable" object
is one that can be displayed in the logs with some of its contents
suppressed. For example, whereas a full IP might be "192.0.2.7",
and a completely removed IP would be logged as "[scrubbed]",
a redacted IP might be displayed as "192.x.x.x". ([#648], [!882])
### Testing
- We now use the [Shadow] discrete event simulator to test Arti against a
simulated Tor network in our CI tests. ([#174], [!634])
- Fuzzing for SOCKS client implementations. ([dc55272602cbc9ff])
- Fuzzing for more types of cells ([c41305d1100d9685])
- Fuzzing for pluggable transport IPC ([!814])
- CI testing for more combinations of features. ([#303], [!775])
- CI testing for more targets. ([#585], [!844])
- Better reproducible builds, even on environments with small /dev/shm
configured. ([#614], [!818])
### Cleanups, minor features, and bugfixes
- We now use the [`hostname-validator`] crate to check hostnames for
correctness. ([!739])
- Now that we require a more recent Rust, we no longer need to duplicate
all of our README.md files explicitly in our crate-level
documentation. ([#603], [!768])
- A few small refactorings to avoid copying. ([!790], [!791])
- Refactor guard-manager code to make it harder to become confused about
which sample a guard came from. ([19fdf196d89e670f])
- More robust conversion to `u16` at some places in `tor-cell`, to avoid
future integer overflows. ([!803])
- Refactor our "flag event" to make it easier to (eventually) use in other
crates. ([!804])
- Significant refactoring of our file-change watching code. ([#562], [!819])
- Upgrade to [`clap` v3] for our command-line option parsing. ([#616], [!830])
- Fix documentation for starting Tor Browser with Arti on Windows. ([!849])
- Allow empty lines at the end of a router descriptor. ([!857])
- Improve some error messages while parsing directory documents.
([#640], [!859])
- Internal refactoring in `ChanMgr` to better match current design. ([#606],
[!864])
- Improve display output for describing relays as channel targets, to provide
a more useful summary, and avoid displaying too much information about
guards. ([#647], [!868])
- Better error reporting for some kinds of router descriptor parsing failures
([!870])
- Numerous typo and comment fixes.
HAVE REVIEWED THROUGH: b36a23cfd331aa5b3527fc825e5c867b97da97ab
# Arti 1.0.1 — 3 October 2022
Arti 1.0.1 fixes a few bugs in our previous releases.