Commit ca31c540 authored by gabi-250's avatar gabi-250 🕸️
Browse files

Merge branch 'changelog-1.8.0' into 'main'

Add changelog for 1.8.0

See merge request tpo/core/arti!3514
parents dd0a9f6d a3dd8ec8
Loading
Loading
Loading
Loading
+314 −1
Original line number Diff line number Diff line
@@ -3,6 +3,319 @@
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.8.0 — 1 December 2025

Arti 1.8.0 continues work on relay and directory authority development.
This release introduces a new, usage-based timeout for strongly isolated circuits,
experimental [`tokio-console`] support, a new `arti hsc ctor-migrate` command,
and a configuration option for controlling which onion services to launch.

As usual, there are also various under-the-hood improvements and bug fixes,
which are documented below.

<!-- Up to date as of [f57f44a5]. -->

### Breaking changes

- In `arti-client`, `TorClient::launch_onion_service()` and
  `TorClient::launch_onion_service_with_hsid()` now return `None`
  if the onion service is disabled in the config.

### Security fixes

- Added `Host` header validation for non-CONNECT requests to HTTP CONNECT port,
  to prevent adversarial web pages from probing the version of Arti and its
  capabilities. ([!3429], [!3468])

### Major bugfixes

- Arti no longer exits with an error if configured with a log file with no
  directory prefix. ([!3491], [#2240])
- `fs-mistrust` now has consistent behavior with `stat` and `mkdir`, which
  consider `""` to be an invalid path, and all of its error messages now
  include the file name that triggered the error. ([!3491], [#2265], [#2266])

### Major features

- Implemented a usage-based timeout for strongly isolated circuits,
  as specified in [proposal 368]. ([!3430], [#2237])
- New experimental `arti hsc ctor-migrate` command line invocation
  for migrating C Tor onion service client keys to the Arti keystore.
  ([!3390], [!3485], [#2213])

### Breaking changes in lower-level crates

- In `tor-proto`, we no longer export `ClientCircSyncView`, and
  `IncomingStreamRequestFilter` now takes a `&CircSyncView`.
  `ClientInitiatorHandshake::connect()` now returns an
  `UnverifiedClientChannel`, and `VerifiedChannel` and
  `UnverifiedChannel` are no longer `pub`.
- In `tor-llcrypto`, `CtByteArray` no longer derives `Deref`.
- In `tor-hsservice`, we no longer export
  `RestrictedDiscoveryConfig::build_unvalidated()`. ([!3503])
- In `tor-hsservice`, `OnionService::launch()` now returns `None`
  if the service is disabled in the config.
- In `tor-circmgr`, the `CircMgrConfig` trait now requires
  that the implementing type also implements `AsRef<VanguardConfig>`,
  and the `vanguard_config()` function is no longer conditional upon
  feature flags.
- In `tor-netdoc`, individual relay flags are now variants of a `RelayFlag`
  enum, rather than constants, and `RelayFlag` has a different API.
  `RouterStatus` now contains the new `DocRelayFlags` type.
  The `parse2` entrypoints now take a new `ParseInput`,
  `parse2::MultiplicitySelector` replaces `ItemSetSelector` etc.

### Onion service development

- Individual onion services can now be disabled via the config. ([!3253], [#2133])

### Relay development

- Internal refactoring to support reusing `IncomingStreamRequestFilter` for exit
  relay streams. ([!3414])
- Various internal refactorings in `tor-proto`, to enable us to reuse
  implementation-agnostic parts of the client circuit reactor implementation
  for relays. ([!3408], [!3467], [!3470])
- Refactored the experimental `RelayCirc` API. ([!3410])
- Added an OR port listener task, for listening for incoming connections.
  ([!3396])
- In `tor-rtcompat`, TCP listening sockets have the same options set
  regardless of the underlying runtime. Additionally, we set `IPV6_V6ONLY`
  on Unix platforms to enable binding AF_INET and AF_INET6 sockets to the same
  port. ([!3457], [#2246])
- Added support for generating the keys and certificates relays need for TLS.
  ([!3349], [#2205])
- New configuration options for setting the OR port used for listening. ([!3466])
- Extracted the client- and relay-specific parts `UnverifiedChannel` and `VerifiedChannel`
  in separate modules. ([!3401])
- In `tor-circmgr`, `CircMgrConfig::vanguard_config()` is no longer
  feature-gated. ([!3498], [#2270])

### Directory authority development

- Added initial groundwork for the directory mirror component of `tor-dirserver`.
  ([!3301], [!3436], [!3426], [!3460], [!3501], [#2254], [#2255], [#2256])
- Many internal refactorings to reduce code duplication, and to improve the structure
  of the new netdoc parser. ([!3450], [!3456], [!3455], [!3486], [!3499])
- Overhauled `RelayFlags`, and added support for conditionally retaining unknown info.
  ([!3454], [!3477], [!3489])
- In `tor-netdoc`, much of the `encode` is now public. ([!3471])
- Improved the ergonomics of the new netdoc parser. ([!3478])

### Testing

- Updated the CLI tests to use use the new `cargo_bin_cmd!` macro,
  fixing a deprecation warning. ([4ed5695f844aec6bbe05ced9e8efde437bfece27])
- Fixed the flaky `client::circuit::test::bad_extend_crypto` test.
  ([!3433], [#2232])
- Replaced the deprecated `MockSleepProvider` with `SimpleMockTimeProvider`
  in a few crates.
  ([!3424], [#1885])

### Documentation

- Added `perl-Time-Piece` to the list of required dependencies on Red Hat-derived
  distributions in `CONTRIBUTING.md`.
  ([66eedd0140cd85bc8abd43d790d1a0093b35d21d])
- Removed security disclaimer about onion service support. ([!3464])
- Improved the documentation of the new netdoc parser. ([!3479])
- Added documentation clarifying the behavior of the
  `max_concurrent_streams_per_circuit` onion service setting.
  ([!3492])
- Added `rate_limit_at_intro` to the example onion service config.
  ([!3493])
- Updated the anonticket URL in the README and CONTRIBUTING.md. ([!3500])
- Moved a no-longer-intended naming convention to the `poc` module. ([!3505])

### Infrastructure

- Rust 1.91 is now our "recent" Rust image in CI. ([!3418], [!3419])
- In CI, bump `shadow` to the latest version. ([!3431])
- Refactored the shadow CI test script to have better output.
  ([335148a46e68a40c08181ea732a6aa5f6ca113c8])
- In CI, the shadow tests now have a higher success threshold
  for onion service transfers. ([!3428])
- New `maint` script for checking if all published crates specify
  an MSRV in their `Cargo.toml`. ([!3405])
- Imported the latest changes from [`rust-maint-common`]. ([!3438])

### Cleanups, minor features, and bugfixes

- Updated dependencies. ([!3417])
- Replaced `copy_interactive` with our new `futures-copy` crate,
  to avoid spawning extra tasks and reduce lock contention.
  ([!3416], [#786])
- Added vim `*.swp` files to `.gitignore`. ([!3437])
- Added experimental support for [`tokio-console`].
  ([!3441], [!3444], [!3445], [#2236])
- Bumped `pwd-grp` to 1.0.1. ([!3443], [#2136])
- Bumped `derive-deftly` to the latest version. ([!3448], [!3451], [!3494])
- Resolved the clippy lints reported by the beta version of Rust.
  ([!3449])
- Reduced the high-water mark for writes of `ChannelFrame`.
  ([!3447], [#2200])
- Renamed `OutPtr` to `OutBoxedPtr` for clarity in `arti-rpc-client-core`.
  ([!3439], [#1588])
- Added TODO about adding guardrails to prevent launching onion services
  with a different configuration than the one they were instantiated with.
  ([!3453], [#2249])
- Added an `InertTorClient` function for creating an `OnionService`.
  ([!3435], [#2118])
- Updated to the latest list of Tor fallback directories. ([!3459])
- Removed an outdated TODO. ([!3463])
- Added comment to explain why `RetryError` deduplicates the errors
  it displays. ([!3465], [!3474])
- Arti now displays a warning if the opentelemetry config is set,
  but the `opentelemetry` feature is not enabled. ([!3458], [#2247])
- Bumped `num-bugint-dig` to 0.8.6. ([!3475], [#2110])
- Improved error reporting in our HTTP CONNECT proxy. ([!3476])
- Fixed an incorrectly gated `match` arm in `tor-circmgr`. ([!3482])
- In `hashx`, the internal `Register::as_u8()` is now gated behind the
  `compiler` feature, fixing a dead code warning. ([!3483])
- `CtByteArray` no longer derives `Deref`. ([!3432], [#2172])
- Improved opentelemetry instrumentation, to help debug [#2079] and other
  related issues. ([!3403])
- Arti's HTTP CONNECT proxy now returns a status code derived from the remote
  END reason. Additionally, the proxy now includes its supported capabilities
  in the `Tor-Capabilities` response header, to conform with [proposal 365].
  ([!3481], [!3473], [#2259])
- Added a missing test host to the shadow CI script. ([!3490])
- Fixed a typo in an onion service client error message. ([!3488])
- INTRODUCE_ACK errors now include the index of the introduction point
  the error originates from. ([!3495])
- Fixed a typo in a debug log. ([!3504])
- Fixed a number of nightly warnings. ([!3508])

### Acknowledgments

Thanks to everybody who's contributed to this release, including
Dimitris Apostolou, hashcatHitman, hjrgrn, Mynacol, Neel Chauhan,
nield, Nihal, NoisyCoil.

Also, our deep thanks to
the [Bureau of Democracy, Human Rights and Labor],
and our [other sponsors]
for funding the development of Arti!

[!3253]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3253
[!3301]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3301
[!3349]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3349
[!3390]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3390
[!3396]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3396
[!3401]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3401
[!3403]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3403
[!3405]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3405
[!3408]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3408
[!3410]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3410
[!3414]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3414
[!3416]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3416
[!3417]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3417
[!3418]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3418
[!3419]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3419
[!3424]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3424
[!3426]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3426
[!3428]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3428
[!3429]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3429
[!3430]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3430
[!3431]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3431
[!3432]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3432
[!3433]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3433
[!3435]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3435
[!3436]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3436
[!3437]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3437
[!3438]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3438
[!3439]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3439
[!3441]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3441
[!3443]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3443
[!3444]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3444
[!3445]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3445
[!3447]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3447
[!3448]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3448
[!3449]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3449
[!3450]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3450
[!3451]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3451
[!3453]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3453
[!3454]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3454
[!3455]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3455
[!3456]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3456
[!3457]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3457
[!3458]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3458
[!3459]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3459
[!3460]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3460
[!3463]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3463
[!3464]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3464
[!3465]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3465
[!3466]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3466
[!3467]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3467
[!3468]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3468
[!3470]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3470
[!3471]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3471
[!3473]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3473
[!3474]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3474
[!3475]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3475
[!3476]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3476
[!3477]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3477
[!3478]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3478
[!3479]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3479
[!3481]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3481
[!3482]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3482
[!3483]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3483
[!3485]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3485
[!3486]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3486
[!3488]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3488
[!3489]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3489
[!3490]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3490
[!3491]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3491
[!3492]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3492
[!3493]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3493
[!3494]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3494
[!3495]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3495
[!3498]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3498
[!3499]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3499
[!3500]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3500
[!3501]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3501
[!3503]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3503
[!3504]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3504
[!3505]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3505
[!3508]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3508
[#1588]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1588
[#1885]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1885
[#2079]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2079
[#2110]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2110
[#2118]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2118
[#2133]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2133
[#2136]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2136
[#2172]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2172
[#2200]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2200
[#2205]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2205
[#2213]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2213
[#2232]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2232
[#2236]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2236
[#2237]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2237
[#2240]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2240
[#2246]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2246
[#2247]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2247
[#2249]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2249
[#2254]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2254
[#2255]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2255
[#2256]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2256
[#2259]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2259
[#2265]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2265
[#2266]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2266
[#2270]: https://gitlab.torproject.org/tpo/core/arti/-/issues/2270
[#786]: https://gitlab.torproject.org/tpo/core/arti/-/issues/786
[335148a46e68a40c08181ea732a6aa5f6ca113c8]: https://gitlab.torproject.org/tpo/core/arti/-/commit/335148a46e68a40c08181ea732a6aa5f6ca113c8
[4ed5695f844aec6bbe05ced9e8efde437bfece27]: https://gitlab.torproject.org/tpo/core/arti/-/commit/4ed5695f844aec6bbe05ced9e8efde437bfece27
[66eedd0140cd85bc8abd43d790d1a0093b35d21d]: https://gitlab.torproject.org/tpo/core/arti/-/commit/66eedd0140cd85bc8abd43d790d1a0093b35d21d
[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/
[`rust-maint-common`]: https://gitlab.torproject.org/tpo/core/rust-maint-common
[`tokio-console`]: https://crates.io/crates/tokio-console
[other sponsors]: https://www.torproject.org/about/sponsors/
[proposal 368]: https://spec.torproject.org/proposals/368-cdt-rethink.html
[proposal 365]: https://spec.torproject.org/proposals/365-http-connect-ext.html



# Arti 1.7.0 — 30 October 2025

Arti 1.7.0 continues high-level and low-level work on relay development.
@@ -13,7 +326,7 @@ proxy, and numerous smaller fixes and infrastructure improvements.
Arti 1.7.0 increases our MSRV (Minimum Supported Rust Version)
to 1.86, in accordance with our [MSRV policy].

<!-- Up to date as of cd223074f082fdb5ae6683b98bdaf48d4dea47a8. -->
<!-- Up to date as of [cd223074f082fdb5ae6683b98bdaf48d4dea47a8]. -->

### Breaking changes