summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md276
1 files changed, 276 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index beba2d866..3a902dde4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,282 @@
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 2.3.0 — 6 April 2026
+
+Arti 2.3.0 continues development on relay, directory authority, and RPC functionality.
+It also adds a couple new logging-related features, including the ability to log to syslog.
+We have also made improvements in memory usage, by moving the GeoIP database out of the
+heap and optimizing the format it's stored in.
+
+Users of the `arti-client` crate should note that in the release following this one,
+`TorClient` will be explicitly wrapped in an `Arc`, rather than implicitly having
+Arc-like semantics. Be prepared for this breaking change next release, and feel free
+to comment in [#2469] if you have any thoughts on this change.
+
+As usual, there are also many small changes and improvements which are detailed below.
+
+### Breaking changes
+
+* The minimum MacOS version supported by Arti is now 10.14, rather than 10.12. (!3920)
+
+### Breaking changes in lower-level crates
+
+* Removed `KeystoreItem::into_erased()` method from `tor-key-forge`. ([!3863])
+* Many breaking changes in `tor-netdoc`:
+ * Renamed `ItemEncoder::object()` to `.object_bytes()`. ([!3826])
+ * Renamed `AuthCertUnverified::verify_self_signed()` to `.verify()`. ([!3826])
+ * `Microdesc::ed25519_id` is now stored as a `Ed25519IdentityLine`. ([!3797])
+ * `Microdesc::family_ids` is now stored as a `RelayFamilyIds`. ([!3797])
+ * `Microdesc::ntor_onion_key` is now stored as a `Curve25519Public`. ([!3797])
+ * `PortRange`'s fields are now private. ([!3797])
+ * Removed `types::B64::into_array`; use methods on `Vec` and slice instead. ([!3870])
+ * `types::Nickname` and `FromStr` error types are now `InvalidNickname`. ([!3886])
+ * Changed several field types in `DirSource`. ([!3892])
+ * `netstatus::Preamble.consensus_method` and `.published` are now 1-element tuples. ([!3864])
+ * Renamed `VoteRepr` relay flags handling marker type to `NoImplicitRepr` ([!3864])
+ * `doc::netstatus::Preamble` has new `known_flags` field. ([!3864])
+ * Renamed `ConsensusVoterInfo` to `ConsensusAuthorityEntry`. ([!3892])
+ * Changed several field types in `ConsensusVoterInfo`. ([!3892])
+ * `NormalItemArgument` no longer has `FromStr` and `Display` as supertraits. ([!3923])
+ * Changed `Unknown::as_ref` signature, `.only_known()` may need to be used by some callers. ([!3923])
+* In `tor-rpcbase`:
+ * Renamed `Context::release_owned` to `Context::release`. ([!3883])
+ * `invoke_rpc_method` no longer takes an `Object`. ([!3883])
+ * `Context::release` returns a `bool` instead of an `Object`. ([!3883])
+* In `tor-geoip`:
+ * The legacy geoip database format is enforced more strictly. ([!3900])
+ * `new_from_legacy_format` takes an extra argument to determine whether to include ASN data. ([!3900])
+* In `tor-rtcompat`, if the application fails to install a rustls `CryptoProvider`,
+ `tor-rtcompat` no longer installs one itself. ([!3857])
+
+### Relay development
+
+* `arti-relay` now supports generating and rotating ntor keys. ([!3850], [!3874])
+* `arti-relay` now retrieves the signing key certificate from the keystore,
+ instead of regenerating it. ([!3863])
+* Added support for handling `CREATE_FAST` cells and launching circuits. ([!3846], [!3869])
+* `arti-relay` now logs public keys on startup.
+ Note that this behaviour may be removed in the future. ([!3882])
+* Enabled `flowctl-cc` and `counter-galois-onion` features
+ in low-level crates used by `arti-relay`. ([!3898])
+
+### Directory authority development
+
+* Implemented encoding and signing of directory authority key certificates. ([!3826], [!3851])
+* Implemented microdescriptor. ([!3797])
+* Implemented `ContactInfo` parsing. ([!3866])
+* Added `Hostname` and `InternetHost` types to `tor-netdoc`. ([!3886])
+* Implemented encoding for `netstatus::Preamble`, added `known_flags`, and cleaned up APIs. ([!3864])
+* Added types for router descriptors. ([!3908])
+* Added `EmbeddedCert` type to represent a certificate inside a netdoc,
+ which has been verified as having a correct and timely signature. ([!3918], [!3922])
+* Implemented parsing and encoding of authority sections in votes and consensuses. ([!3892])
+* Enforced that descriptors only have a `sha1` or a `sha2` hash, not both. ([!3917])
+* Improved handling of unknown keywords. ([!3923])
+* Cleaned up type for directory signature hash algorithm. ([!3923])
+
+### RPC development
+
+* Added APIs for inspecting tunnel paths. ([!3888])
+* Added support for [weak references]. ([!3883])
+
+### Logging development
+
+* Arti now supports logging to syslog when the `syslog` feature and the new `logging.syslog` config option are enabled. ([!3817])
+* Added `logging.protocol_warnings` option to make protocol violations warnings. ([!3805])
+
+### Testing
+
+* Added onion services to chutney tests. ([!3858])
+* Fixed downloading of test data in `tor-netdoc`. ([!3861])
+* Fixed timing in `test_rotation_link_key` test. ([!3873])
+* Reverted some non-default parameters for C Tor in shadow integration tests. ([!3871])
+* Enabled `flowctl-cc` and `counter-galois-onion` in `arti-extra` build. ([!3889])
+* Added relay channel handshake tests. ([!3853])
+* Added flake8 exceptions for `flake8-type-checking` extension. ([!3749])
+
+### Documentation
+
+* Documented policies around cargo features. ([!3799])
+* Begun documenting policy for upstream RUSTSEC issues. ([!3800])
+* Updated oniux version on website. ([!3840])
+* Adjusted the ordering of some steps in the release process. ([!3842])
+* Documented use of `ADDED` instead of `MODIFIED` in semver files. ([!3852])
+* Removed outdated references to `derive-adhoc`, which has been named `derive-deftly` for a while now. ([!3896])
+* Added documentation about overlapping work in `CONTRIBUTING.md`. ([!3934])
+* Documented how to update OSX SDK version. ([!3921])
+
+### Infrastructure
+
+* `maint/cargo-sort` now uses the `$CARGO` env var. ([!3842])
+* Added `maint/dependencies-bodge` crate to entice cargo to avoid some broken versions of upstream packages. ([!3838])
+* Commit hooks now use `set -x` instead of `echo`. ([!3847])
+* Updated CI image versions. ([!3839])
+* Updated chutney version. ([!3868])
+* Updated the OSX SDK used for reproducible builds, switching to the same pkg file used by Tor Browser. ([!3901])
+* Disabled worker spinning and cpu pinning in shadow tests, in order to play more nicely with the shared CI environment. ([!3911])
+
+### Cleanups, minor features, and bugfixes
+
+* Switched default crypto provider to `aws-lc-rs` from `ring`. ([!3857])
+* Reduced geoip database memory usage. ([!3895], !3900)
+* Added new `tor-geoip` tool for converting between geoip database formats.
+ This is currently for internal use, and is expected to be merged into the existing `geoip-db-tool` eventually. ([!3909])
+* Updated dependencies. ([!3835], [!3836], [!3837], [!3855], [!3880], [!3893], [!3913], [!3942], [!3928])
+* Cleaned up relay channel authentication related code. ([!3802])
+* Updated list of `maint/cargo-audit` exceptions. ([!3841])
+* `tor-proto`'s dependency on `tor-relay-crypto` is now optional. ([!3848])
+* Changed uses of `SystemTime::now` and `Instant::now` to use `SleepProvider` methods in some places. ([!3845])
+* Use `derive-deftly` string templating in `tor-netdoc`. ([!3854])
+* Allow sending `DATA` cells on closed streams. ([!3824])
+* Changed "removing circuit leg" log to be debug instead of warn. ([!3859])
+* Switched to new `derive-deftly` `meta_quoted rigorous` in `tor-netdoc`. ([!3856])
+* Changed `CircuitClosed` error to `NotConnected` in a case where it may be dropped without explicitly being closed. ([!3825])
+* Added `memquota::Account::add_parent()` API and changed `tor-proto` to use it. ([!3829])
+* Fixed `tor-netdoc` parsing and encoding macros generating invalid code. ([!3862])
+* Fixed incorrect help text for `arti -h`. ([!3860])
+* Implemented `NormalItemArgument` for `IpAddr` in `tor-netdoc`. ([!3867])
+* Changed `AuthLogDigest` to use separate types for sending and receiving. ([!3844])
+* Added tunnel IDs to some log statements. ([!3872], [!3875])
+* Removed superfluous `clippy(allow)`s. ([!3904], [!3944])
+* Fixed new warnings when compiling with Rust 1.95. ([!3902])
+* Added additional validation when creating a `ChanTarget`. ([!3843])
+* Changed channel reactor to take identity keys. ([!3877], [!3897])
+* Cleaned up base64/base16 related code. ([!3870], [!3908])
+* Fixed error type when trying to parse invalid `NormalItemArgument` in `tor-netdoc`. ([!3879])
+* Fixed bug in flow control sidechannel mitigation. ([!3884])
+* Switched to new `derive-deftly` `meta_quoted rigorous` for key specifiers. ([!3891])
+* Cleaned up `tor-netdoc` derive macros. ([!3887])
+* Removed dummy suffixes from a couple variable names. ([!3903])
+* Changed some comments and variable names. ([!3865])
+* Added support for `#[deftly(netdoc(skip))]` in `ItemValueParseable` and `ItemValueEncodable` derives. ([!3890])
+* Added `Debug` implementation to `ItemValueParseable` derive. ([!3881])
+* Sorted ntor keys by `valid_until` and created new struct to hold them. ([!3899])
+* Cleaned up feature flags in `tor-netdoc`, adding new `incomplete` feature for all incomplete parts. ([!3910], [!3915], [!3930])
+* Modified handling of `EXTEND2` to reject cells that target the previous hop. ([!3906])
+* Added `RsaIdentity::to_bytes` method. ([!3916])
+* Made a `derive(Deftly)` unconditional. ([!3929])
+* Added `serde(default)` to fields in `RelayIds`. ([!3933])
+* Begun refactoring `tor-dirserver`. ([!3931])
+* Stabilized experimental `tor-cert` `encode` feature. ([!3926])
+* Stabilized experimental `tor-netdoc` `hsdesc-inner-docs` feature. ([!3927])
+
+### Acknowledgments
+
+Thanks to everybody who's contributed to this release, including
+Andrew Kloet, hjrgrn, and moumenalaoui.
+
+Also, our deep thanks to
+the [Bureau of Democracy, Human Rights, and Labor],
+and our [other sponsors]
+for funding the development of Arti!
+
+[!3749]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3749
+[!3797]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3797
+[!3799]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3799
+[!3800]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3800
+[!3802]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3802
+[!3805]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3805
+[!3817]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3817
+[!3824]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3824
+[!3825]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3825
+[!3826]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3826
+[!3829]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3829
+[!3835]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3835
+[!3836]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3836
+[!3837]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3837
+[!3838]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3838
+[!3839]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3839
+[!3840]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3840
+[!3841]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3841
+[!3842]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3842
+[!3843]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3843
+[!3844]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3844
+[!3845]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3845
+[!3846]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3846
+[!3847]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3847
+[!3848]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3848
+[!3850]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3850
+[!3851]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3851
+[!3852]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3852
+[!3853]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3853
+[!3854]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3854
+[!3855]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3855
+[!3856]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3856
+[!3857]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3857
+[!3858]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3858
+[!3859]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3859
+[!3860]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3860
+[!3861]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3861
+[!3862]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3862
+[!3863]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3863
+[!3864]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3864
+[!3865]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3865
+[!3866]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3866
+[!3867]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3867
+[!3868]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3868
+[!3869]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3869
+[!3870]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3870
+[!3871]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3871
+[!3872]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3872
+[!3873]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3873
+[!3874]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3874
+[!3875]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3875
+[!3877]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3877
+[!3879]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3879
+[!3880]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3880
+[!3881]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3881
+[!3882]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3882
+[!3883]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3883
+[!3884]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3884
+[!3886]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3886
+[!3887]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3887
+[!3888]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3888
+[!3889]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3889
+[!3890]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3890
+[!3891]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3891
+[!3892]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3892
+[!3893]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3893
+[!3895]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3895
+[!3896]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3896
+[!3897]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3897
+[!3898]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3898
+[!3899]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3899
+[!3900]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3900
+[!3901]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3901
+[!3902]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3902
+[!3903]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3903
+[!3904]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3904
+[!3906]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3906
+[!3908]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3908
+[!3909]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3909
+[!3910]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3910
+[!3911]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3911
+[!3913]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3913
+[!3915]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3915
+[!3916]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3916
+[!3917]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3917
+[!3918]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3918
+[!3921]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3921
+[!3922]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3922
+[!3923]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3923
+[!3926]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3926
+[!3927]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3927
+[!3928]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3928
+[!3929]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3929
+[!3930]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3930
+[!3931]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3931
+[!3933]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3933
+[!3934]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3934
+[!3942]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3942
+[!3944]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3944
+[#2469]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2469
+[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/
+[other sponsors]: https://www.torproject.org/about/sponsors/
+[weak references]: https://gitlab.torproject.org/tpo/core/arti/-/blob/993a8158407dc3c2c1d759c1b0bb4c8554f5a4a1/doc/dev/rpc-book/src/basic-concepts.md#strong-and-weak-object-ids
+
+
+
# Arti 2.2.0 — 30 March 2026
Arti 2.2.0 continues our work on relay development,