Commit d78038ef authored by gabi-250's avatar gabi-250 🤸
Browse files

Merge branch 'changelog-1.2.7' into 'main'

Add changelog for 1.2.7.

See merge request tpo/core/arti!2382
parents 2a0dc09a 7cf58d6c
Loading
Loading
Loading
Loading
+277 −0
Original line number Diff line number Diff line
@@ -3,6 +3,283 @@
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.2.7 — 3 September 2024

Arti 1.2.7 continues development on onion service client authorization,
the RPC subsystem, and relay infrastructure.

### Breaking changes in lower-level crates
- In [`tor-hsservice`],
  `OnionServiceProxyConfigBuilder` no longer derives `Eq` and `PartialEq`,
  and `DescEncryptionConfig`, `DescEncryptionConfig`,
  `AuthorizedClientConfig,` and `AuthorizedClientParseError` are removed.
  ([!2266])
- In [`tor-ptmgr`], `PtClientMethod` is now exported from the top-level.
  ([5774dd456265ef4cb8771342538a07ba76e5a5d9])

### RPC development
- Expose the OS errno of the FFI error types that have one. ([!2311])
- Fix typos in an FFI comment. ([!2310])
- Always re-encode requests and responses, and preserve unrecognized struct fields.
  ([#1491], [!2312])
- Expose the object ID for the session object. ([!2318])
- Use `JsonValue` to re-encode responses and requests.
  ([#1512], [#1511], [!2315])
- Add support for request handles in our FFI code. ([!2317])
- Add an unstable RPC method to list every RPC method. ([!2332])
- Build [`arti-rpc-client-core`] as a C dynamic library. ([!2331])
- Use more sophisticated handling for `ConnectionError`s in `arti-rpcserver`.
  ([#1517], [!2335])
- New `slotmap-careful` crate to use when we mustn't re-use keys. ([!2298])
- Rename various identifiers in our FFI code. ([!2344])
- Use the new `slotmap-careful` instead of `generational-arena` in
  `arti-rpcserver`. ([#1282], [!2343])
- Implement RPC method delegation support. ([#1523], [!2342])
- Allow simultaneous calls to `arti_rpc_handle_wait()`.
  ([#1532], [!2360])
- Add experimental method to list SOCKS proxy addresses. ([#1523], [!2359])

### Relay development
- Add initial support for relay configuration. ([#1534], [!2352])

### Internal cleanup and refactoring
- Major refactoring to the `tor-proto` circuit reactor code,
  which simplifies the implementation and will enable us to support
  opportunistic packing for [proposal 340].
  Introduce `StreamPollSet` for polling streams in priority order.
  ([!2285], [#1513], [!2319], [!2334])
- Refactoring in our key management code to prevent accidental misuse
  of relative key paths. ([#1494], [!2291])
- Refactor `KeyedFuturesUnordered` so that the underlying futures
  are accessible. ([!2321])
- Allow access to the inner streams of `StreamPollSet`,
  refactor `StreamMap` ([#1421], [!2326], [!2333]).
- Make `GuardMgr` mandatory throughout our circuit management code.
  ([#1465], [!2339], [!2347])
- Encapsulate flow-control into a separate object,
  abstracting away the difference between window-based (legacy) flow control and
  xon-based ([proposal 324]) flow control. ([!2340], [!2358])
- Introduce a `PeekableStream` trait to get rid of redundant buffering.
  ([!2345])

### Onion service development
- Implement hidden service restricted discovery mode (previously known as
  "client authorization"). ([#1292], [!2266], [!2336], [!2316])
- Add support for live-reloading the restricted discovery configuration.
  ([#1505], [!2329], [!2353], [!2369])
- Provide an MPSC queue with memory quota tracking. ([#351], [!2292])
- Make arrangements in `tor-memquota` for memory tracking to be optional,
  and gate `MemoryQuotaTracker::new` behind the `memquota` feature.
  ([!2351])

### Minor features
- Stop requiring the TRANSPORT key in pluggable transport STATUS messages.
  ([#1488], [!2307])
- In [`fs-mistrust`], add a `CheckedDir::metadata()` function
  for retrieving file metadata.
  ([72c3a1a661284844806b34e9ca5e81a43b8d0913], [!2324])
- In [`tor-ptmgr`], make managed pluggable transports optional.
  ([#1334], [!2354])
- Add an `InertTorClient` for accessing client state. ([#1496], [!2370],
  [!2314])
- Move `tor_async_utils::oneshot` into a new [`oneshot-fused-workaround`] crate.
  ([!2371], [!2383])

### Testing
- Make the `hsc` subcommand documentation serve as a test case. ([!2304])
- In the expected output of the CLI tests,
  match any number of lines in the `-c` help.
  ([#1509], [!2313])
- Fix broken reference to `apt-install` script in the Shadow integration tests.
  ([!2309])
- Add a Shadow integration test for restricted discovery mode. ([#1292],
  [!2272])
- Don't explicitly set `storage.keystore.enabled` in the Shadow CI tests.
  ([222b0eae48ae88d1a64cf5f0c11e662bf61dda4d])
- Test `cbindgen` correctness in CI. ([#1502], [!2320], [!2322], [!2330])
- Add `LogState` tests in `tor-log-ratelim`. ([!2349])
- Fix `arti_socket_closed` RPC test, which was previously flakey on OSX.
  ([#1510], [!2348])
- Add an arti obfs4 managed pluggable transport client and a tor obfs4
  server to the Shadow CI tests ([#1538], [!2355]).
- Temporarily disable a flaky configuration watcher test. ([!2364])
- Add circuit reactor test for stream handling fairness. ([!2365])
- Rewrite the `hsc` tests using `InertTorClient`.
  ([#1496], [1d3e59f2e9572a9710de2c2a9c925c5c38a6874c])
- Set the `COLUMNS` env var in the CLI tests.
  ([#1574], [f1779cfbb3e27b04ba3cca9206170f1e1ea904db])

### Documentation
- Remove obsolete documentation from [`tor-proto`]. ([!2366])
- Discourage use of `tor_rtmock_test_with_*` macros. ([!2372])

### Infrastructure
- Add a few more Tor employees to exclude from our acknowledgments. ([!2306])
- Remove the no-longer-necessary `--cfg docsrs` flag from our rustdoc invocation.
  ([!2308])
- Fix handling of items ending in `;` in `check_doc_features`
  maintenance script. ([!2316])
- Use the `via-cargo-install-in-ci` maintenance script to cache `grcov`
  in the `coverage-aggregated` job. ([!2325])
- Add initial support for building an Arti deb package. ([!2323], [!2367])
- Add script for testing without any features enabled.
  ([7a9bf49870533cc052b12680336f067f77d87b34])
- Run tests of every crate, with all features disabled. ([!2350])
- Explicitly specify the deployment target of macOS to 10.7
  to fix the failing `build-repro-macos` job.
  ([#1394], [#1507], [!2377], [!2346])
- Rename "Sponsor 101" to "Project 101". ([!2379])

### Cleanups, minor features, and bugfixes
- Make `arti hss onion-name` return a non-zero status if the service doesn't
  exist. ([!2305])
- Use `std::backtrace` instead of the [`backtrace`] crate. ([!2301])
- Add missing `docsrs` `cfg_attr` to fix a `cargo doc` warning. ([!2337])
- Resolve `unreachable_patterns` warnings from nightly. ([!2338])
- Make `blind_keypair` build without the `hsv3-client` feature.
  ([#1504], [!2341])
- Move `Qty` to [`tor-basic-utils`] as `ByteQty` and significantly improve it.
  ([!2363])
- Move `stream_peek` to [`tor-async-utils`]. ([!2362], [!2357])
- Various typo fixes in comments and messages. ([!2380])

### Acknowledgments

Thanks to everybody who's contributed to this release, including Alexander
Hansen Færøy, ambiso, Dimitris Apostolou, kn0sys, Kunal Mehta, NoisyCoil, opara,
Robin Leander Schröder, and Steven Engler.
Also, our welcome to Steven Engler as he joins the team!

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

[!2266]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2266
[!2272]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2272
[!2285]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2285
[!2291]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2291
[!2292]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292
[!2298]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2298
[!2301]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2301
[!2304]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2304
[!2305]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2305
[!2306]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2306
[!2307]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2307
[!2308]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2308
[!2309]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2309
[!2310]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2310
[!2311]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2311
[!2312]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2312
[!2313]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2313
[!2314]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2314
[!2315]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2315
[!2316]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2316
[!2317]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2317
[!2318]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2318
[!2319]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2319
[!2320]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2320
[!2321]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2321
[!2322]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2322
[!2323]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2323
[!2324]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2324
[!2325]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2325
[!2326]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2326
[!2329]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2329
[!2330]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2330
[!2331]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2331
[!2332]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2332
[!2333]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2333
[!2334]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2334
[!2335]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2335
[!2336]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2336
[!2337]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2337
[!2338]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2338
[!2339]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2339
[!2340]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2340
[!2341]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2341
[!2342]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2342
[!2343]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2343
[!2344]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2344
[!2345]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2345
[!2346]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2346
[!2347]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2347
[!2348]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2348
[!2349]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2349
[!2350]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2350
[!2351]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2351
[!2352]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2352
[!2353]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2353
[!2354]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2354
[!2355]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2355
[!2357]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2357
[!2358]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2358
[!2359]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2359
[!2360]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2360
[!2362]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2362
[!2363]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2363
[!2364]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2364
[!2365]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2365
[!2366]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2366
[!2367]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2367
[!2369]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2369
[!2370]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2370
[!2371]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2371
[!2372]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2372
[!2377]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2377
[!2379]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2379
[!2380]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2380
[!2383]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2383
[#1282]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1282
[#1292]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1292
[#1334]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1334
[#1394]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1394
[#1421]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1421
[#1465]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1465
[#1488]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1488
[#1491]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1491
[#1494]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1494
[#1496]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1496
[#1502]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1502
[#1504]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1504
[#1505]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1505
[#1507]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1507
[#1509]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1509
[#1510]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1510
[#1511]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1511
[#1512]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1512
[#1513]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1513
[#1517]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1517
[#1523]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1523
[#1532]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1532
[#1534]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1534
[#1538]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1538
[#1574]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1574
[#351]: https://gitlab.torproject.org/tpo/core/arti/-/issues/351
[1d3e59f2e9572a9710de2c2a9c925c5c38a6874c]: https://gitlab.torproject.org/tpo/core/arti/-/commit/1d3e59f2e9572a9710de2c2a9c925c5c38a6874c
[222b0eae48ae88d1a64cf5f0c11e662bf61dda4d]: https://gitlab.torproject.org/tpo/core/arti/-/commit/222b0eae48ae88d1a64cf5f0c11e662bf61dda4d
[5774dd456265ef4cb8771342538a07ba76e5a5d9]: https://gitlab.torproject.org/tpo/core/arti/-/commit/5774dd456265ef4cb8771342538a07ba76e5a5d9
[72c3a1a661284844806b34e9ca5e81a43b8d0913]: https://gitlab.torproject.org/tpo/core/arti/-/commit/72c3a1a661284844806b34e9ca5e81a43b8d0913
[7a9bf49870533cc052b12680336f067f77d87b34]: https://gitlab.torproject.org/tpo/core/arti/-/commit/7a9bf49870533cc052b12680336f067f77d87b34
[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/
[Zcash Community Grants]: https://zcashcommunitygrants.org/
[`arti-rpc-client-core`]: https://tpo.pages.torproject.net/core/doc/rust/arti_rpc_client_core/index.html
[`backtrace`]: https://docs.rs/backtrace/latest/backtrace/
[`fs-mistrust`]: https://tpo.pages.torproject.net/core/doc/rust/fs_mistrust/index.html
[`oneshot-fused-workaround`]: https://tpo.pages.torproject.net/core/doc/rust/oneshot_fused_workaround/index.html
[`tor-async-utils`]: https://tpo.pages.torproject.net/core/doc/rust/tor_async_utils/index.html
[`tor-basic-utils`]: https://tpo.pages.torproject.net/core/doc/rust/tor_basic_utils/index.html
[`tor-hsservice`]: https://tpo.pages.torproject.net/core/doc/rust/tor_hsservice/index.html
[`tor-proto`]: https://tpo.pages.torproject.net/core/doc/rust/tor_proto/index.html
[`tor-ptmgr`]: https://tpo.pages.torproject.net/core/doc/rust/tor_ptmgr/index.html
[f1779cfbb3e27b04ba3cca9206170f1e1ea904db]: https://gitlab.torproject.org/tpo/core/arti/-/commit/f1779cfbb3e27b04ba3cca9206170f1e1ea904db
[other sponsors]: https://www.torproject.org/about/sponsors/
[proposal 324]: https://spec.torproject.org/proposals/324-rtt-congestion-control.html
[proposal 340]: https://spec.torproject.org/proposals/340-packed-and-fragmented.html



# Arti 1.2.6 — 1 August 2024

Arti 1.2.6 continues development on onion service client authorization,