diff options
| -rw-r--r-- | CHANGELOG.md | 383 |
1 files changed, 378 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index ddacdf017..42d5f5f3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,14 +3,387 @@ 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. -# UNRELEASED + +# Arti 1.3.0 - 31 October 2024 + +Arti 1.3.0 is a significant milestone: we have achieved parity on most +major client features with C Tor. The last big security feature needed for +Onion Services (resistance to out-of-memory DoS) landed in this release. +And, in Arti client 1.3.0, connecting to `.onion` domains is enabled by +default. + +Much other major work is taking place, too! We have continued our work on +Arti Relay. The work-in-progress RPC system is significantly more clearly +defined and implementation is proceeding. ### Breaking changes - * Several methods in (mostly in `tor-chanmgr` and `tor-proto`) - take new memory quota tracking arguments. - If memory tracking is not required, you can create a no-op memory - quota account with `SpecificAccount::new_noop()` or `Account::new_noop(). + * **Reject (managed) pluggable transport on non-localhost address:** If a + pluggable transport we spawn tells us it is listening on a non-localhost + address, reject that transport, since this is almost certainly a + security risk. (The goal is to detect buggy PTs. We aren't aware of + any such PTs.) ([!2454], [#1636]) + + * **API:** Several methods (mostly in `tor-chanmgr` and `tor-proto`) + take new memory quota tracking arguments. If memory tracking is not + required, you can create a no-op memory quota account with + `SpecificAccount::new_noop()` or `Account::new_noop(). + + * **API:** New API for `tor-socksproto`, which is more robust and avoids + many kinds of misuse, including bugs like TROVE-2024-010. The old + `.handshake` method still available, but deprecated, and now part of the + new `Handshake` trait. ([#1590], [#1627], [#1592], [!2436]) + + * **API:** Many places where a `SleepProvider` bound was used now also + require `CoarseTimeProvider`. In-tree `SleepProvider`s all implement + `CoarseTimeProvider`, so for most callers this can be fixed by + propagating the bounds. ([!2482]) + + * **cargo features:** Some cargo features of lower-layer crates are no + longer enabled by implication by higher-layer crates. External callers + may need to add feature requesgts to `Cargo.toml`s. ([!2498]) + +### Major new features + + * **Support memory quota tracking.** (Feature compiled in by default.) + Specifically: Arti can now try to limit the amount of memory it uses for + data that might be originated by untrusted parties. This is currently + useful as DoS resistance measure for Hidden Services (`.onion` + services). To actually enable this, a specific limit must be imposed in + the `[system]` section of of the Arti configuration. ([!2459], [!2461], + [!2484], [!2493], [!2508], [!2509], [!2518], [!2531], [!2536], [!2537], [!2545], + [!2555], [!2560], [!2569], [#1682], [#351]) + * **Enabled connecting to `.onion` addresses (Hidden Services) by + default,** by making `allow_onion_addrs` default to `true` in the + configuration. (This is appropriate now that we have Vanguard support.) + [#1402], [!2506]) + +### Bugfixes + + * Fixed the build of `arti-client` with just the features `experimental-api` + and `onion-service-client` enabled. ([!2457], [#1638]) + * Fixed the build on FreeBSD. ([!2533], [#1686]) + * Fixed the build on NetBSD. ([!2540], [rust-pwd-grp#4], [rust-pwd-grp!25]) + * Fixed config file watching (file notifier) on non-Windows platforms + without inotify. ([!2547], [#1644], [notify-rs#644]) + * Fixed a bug that rendered Arti unable to connect to the Tor network + when built with certain library combinations. + This could occur + when an out-of-tree user of the Arti libraries ends up enabling + `time-rs`'s `large-dates` cargo feature, by replacing `simple_asn1` + dependency with `der-parser` in `tor-llcrypto`. ([!2462], [#1632], + [simple_asn1#34], [simple_asn1!35], [time-rs#683]) + * Fixed the logging of backtraces, when an internal error occurs. + (Bug first appeared in Arti 1.2.7.) [!2588], [#1713]) + * Removed a false claim that we don't support pluggable transports. ([!2507]) + * Documented the `vanguards` cargo feature flag. ([!2507]) + +### Other user-facing improvements + + * Warn if we're configured to listen for SOCKS or DNS queries on a + non-localhost address, or if we're configured to use an + externally-managed pluggable transport with a non-localhost address, + These are very questionable configurations, but there may be unusual + situations where this is a sensible setup. ([!2454], [#1636]) + * Use new "restricted discovery" terminology throughout (for Hidden + Services, aka `.onion` services), replacing previous (misleading) + "client authorization". ([!2495], [#1476]) + * Experimental ability to read private keys from C Tor's on-disk keystore. + ([!2481], [!2514]) + * Experimental proof-of-work client-side support for Hidden Services + (`.onion` services). ([!2486], [!2026]) + +### New library and API features + + * Added `general::SocketAddr` type for unifying IP and AF\_UNIX (and + potentially other) sockets. ([!2519], [#1681], [!2553], [!2554], [#1701], + [!2592]) + * Added type-erased `DynTimeProvider` in `tor-rtcompat`. ([!2460], [!2500]) + * Added `SinkTrySend` and `SinkCloseChannel` traits, making the + functionality of `mpsc::Sender::try_send` and `::close` available as a + trait method and implementable for other types. ([!2468], [!2485], [!2490]) + * Added `SometimesUnboundedSink::as_inner` method. ([!2483]) + * Guarantee that `Slug`s will never contain colons (`:`), and explain why. + ([!2576]) + * Moved `tor-config`'s `path` module to a new crate `tor-config-path`. + ([!2590]) + * Added `default-runtime` feature in `arti`, to simplify building without + default features. ([!2551]) + +### Relay development + + * Support multiple channels for a single relay ID. ([!2442], [#1633]) + * Improved channel selection code. ([!2477], [#1602], [!2544]) + * Much other cleanup and refactoring in `tor-chanmgr`. ([!2523], [!2538], + [#1654], [!2566]) + * Made `arti-relay` be a binary crate only, for now at least, and abolish + the `relay` subcommand of the main `arti` CLI. ([!2525], [#1674], [!2542]) + +### RPC system development + + * Reorganised RPC documentation; soon it will be a mdbook. ([!2581]) + * Improved documentation for writing RPC callers, including a new Python + tool to build RPC method and type documentation. ([!2479], [!2489] + [!2574]) + * Finalised specifications for how RPC clients should find the Arti RPC + server, how the server should decide where to listen, and how + authentication will be done. ([!2439], [!2440], [!2439], [#1521], [!2563], + [#1702], [!2582], [#1711]) + * Finalised specifications for version compatibility (interworking of + newer/older Arti with newer/older RPC clients). ([!2475], [#1634], [!2510], + [#1665], [!2511], [#1662], [!2512]) + * Improvements to error handling, especially in the client library. + ([!2556]) + * Improved and clarified objectid/isolation rules in SOCKS interaction. + ([!2474], [torspec!292], [proposal 351], [socks-extensions.md]) + * Clarified (and weakened) guarantees provided on request cancellation. + ([!2564], [#818]) + * Changed `release` method to be a method on the object itself. ([!2573], + [#1663]) + * Other specification fixes/improvements. ([#1678], [!2539]) + * Fixed the shared library extension on OSX and Windows. ([!2469]) + * Removed the `Echo` testing/demo method. ([!2549], [#1525]) + * Started a Python client API, and adopted it for some integration + tests. ([!2515], [#1295], [!2567]) + * Reduced the dependencies of the client library. ([!2522], [!2524]) + * Internal cleanups. ([!2456], [#1587], [!2558]) + +### Documentation + + * Clarified `launch_onion_service_with_hsid()`. ([!2494], [#1626]) + * Use new "circuit stem" terminology. ([#1479], [!2410]) + * Added missing docs for `keypair_specifier`. ([!2532]) + +### Testing + + * Much better testing for the CircMgr. ([!2444], [!2513]) + * Fixed the flaky `circuit::test::accept_valid_sendme` CI test. ([!2501]) + * Added more miri tests. ([!2502]) + * Avoid writing `_ => panic!()` even in tests. ([!2534]) + * Allow more precise testing of conditional compilation which affects the + configuration reader. ([!2561]) + * Updated to the latest version of Shadow. ([!2585], [shadow!3428], [!2587]) + * Include more output from Shadow in CI artifacts. ([!2586]) + * Pin the version of Chutney used in Shadow tests to make arti.git CI more + hermetic. ([!2596]) + +### Cleanups and housekeeping + + * Updated the list of fallback directories. Clients use these to fetch + directory information when they have no cached directory or guard + nodes. ([!2589]) + * Updated some previous entries in `CHANGELOG.md` to more fully document + changes in `tor-circmgr` 0.23.0. + * Now we run a typechecker, linter, and autoformatter, on all our Python + scripts (and fix the issues identified). ([!2476], [!2578], [!2579], + [#1689], [!2584]) + * Minor cleanups and reformatting in `tor-key-forge`. ([!2552]) + * Commented out (temporarily) ill-shaped `RelaySigningKeySpecifier`. ([!2527]) + * Reduced the number of "unused" warnings arising from conditional + compilation (eg, cargo features). ([!2431], [!2463], [#1645], [!2551]) + * In `Cargo.toml`, avoid updating to a `typed-index-collections` which + would break our MSRV by requiring Rust 1.81. ([!2471], [#1647]) + * Tidied up the sealing of a pair of traits. ([!2472]) + * Use `{u64,usize}::div_ceil` where applicable. ([!2473]) + * Now we avoid some warnings about certain elided lifetimes. ([!2478], [!2575]) + * Fixed docs-rs cargo feature decorations on certain items. ([!2487]) + * Forbid hard tabs (in most files) in tree. ([!2488]) + * Fixed `no_default_features = true` typo in many `Cargo.toml`. ([!2498]) + * Bumped dependency requirements for `futures-*` `notify`. ([!2499]) + * Fixed indentation in a doc comment to address a new clippy lint. ([!2516], + [!2520]) + * Changed to depend on `slotmap-careful` instead of `slotmap`. ([!2530], + [#1531]) + * Abolished unneeded use of `python-is-python3` package in CI. ([!2535]) + * Reinstated the `tor-proto` circuit hop check in `test_create()`. ([!2546]) + * Updated download size numbers (for Project 101 Q3-2024). ([!2571]) + * Simplified `tor-config` path handling by using `path` feature of + `shellexpand`. ([!2583]) + * Work around a bug in `cargo license` by permitting a weird licence + string. ([!2591], [cargo-license#78]) + * Removed an obsolete TODO. ([!2562]) + +### Acknowledgments + +Thanks to everybody who's contributed to this release, including +Morgan, and Neel Chauhan. +Also, our welcome to Clara Engler as they join 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! + +[!2026]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2026 +[!2410]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2410 +[!2431]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2431 +[!2436]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2436 +[!2439]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2439 +[!2440]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2440 +[!2442]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2442 +[!2444]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2444 +[!2454]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2454 +[!2456]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2456 +[!2457]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2457 +[!2459]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2459 +[!2460]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2460 +[!2461]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2461 +[!2462]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2462 +[!2463]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2463 +[!2468]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2468 +[!2469]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2469 +[!2471]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2471 +[!2472]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2472 +[!2473]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2473 +[!2474]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2474 +[!2475]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2475 +[!2476]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2476 +[!2477]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2477 +[!2478]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2478 +[!2479]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2479 +[!2481]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2481 +[!2482]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2482 +[!2483]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2483 +[!2484]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2484 +[!2485]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2485 +[!2486]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2486 +[!2487]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2487 +[!2488]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2488 +[!2489]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2489 +[!2490]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2490 +[!2493]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2493 +[!2494]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2494 +[!2495]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2495 +[!2498]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2498 +[!2499]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2499 +[!2500]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2500 +[!2501]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2501 +[!2502]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2502 +[!2506]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2506 +[!2507]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2507 +[!2508]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2508 +[!2509]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2509 +[!2510]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2510 +[!2511]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2511 +[!2512]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2512 +[!2513]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2513 +[!2514]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2514 +[!2515]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2515 +[!2516]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2516 +[!2518]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2518 +[!2519]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2519 +[!2520]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2520 +[!2522]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2522 +[!2523]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2523 +[!2524]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2524 +[!2525]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2525 +[!2527]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2527 +[!2530]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2530 +[!2531]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2531 +[!2532]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2532 +[!2533]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2533 +[!2534]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2534 +[!2535]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2535 +[!2536]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2536 +[!2537]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2537 +[!2538]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2538 +[!2539]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2539 +[!2540]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2540 +[!2542]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2542 +[!2544]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2544 +[!2545]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2545 +[!2546]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2546 +[!2547]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2547 +[!2549]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2549 +[!2551]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2551 +[!2552]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2552 +[!2553]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2553 +[!2554]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2554 +[!2555]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2555 +[!2556]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2556 +[!2558]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2558 +[!2560]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2560 +[!2561]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2561 +[!2562]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2562 +[!2563]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2563 +[!2564]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2564 +[!2566]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2566 +[!2567]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2567 +[!2569]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2569 +[!2571]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2571 +[!2573]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2573 +[!2574]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2574 +[!2575]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2575 +[!2576]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2576 +[!2578]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2578 +[!2579]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2579 +[!2581]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2581 +[!2582]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2582 +[!2583]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2583 +[!2584]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2584 +[!2585]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2585 +[!2586]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2586 +[!2587]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2587 +[!2588]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2588 +[!2589]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2589 +[!2590]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2590 +[!2591]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2591 +[!2592]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2592 +[!2596]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2596 +[#1295]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1295 +[#1402]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1402 +[#1476]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1476 +[#1479]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1479 +[#1521]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1521 +[#1525]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1525 +[#1531]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1531 +[#1587]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1587 +[#1590]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1590 +[#1592]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1592 +[#1602]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1602 +[#1626]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1626 +[#1627]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1627 +[#1632]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1632 +[#1633]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1633 +[#1634]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1634 +[#1636]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1636 +[#1638]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1638 +[#1644]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1644 +[#1645]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1645 +[#1647]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1647 +[#1654]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1654 +[#1662]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1662 +[#1663]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1663 +[#1665]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1665 +[#1674]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1674 +[#1678]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1678 +[#1681]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1681 +[#1682]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1682 +[#1686]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1686 +[#1689]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1689 +[#1701]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1701 +[#1702]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1702 +[#1711]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1711 +[#1713]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1713 +[#351]: https://gitlab.torproject.org/tpo/core/arti/-/issues/351 +[#818]: https://gitlab.torproject.org/tpo/core/arti/-/issues/818 +[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/ +[cargo-license#78]: https://github.com/onur/cargo-license/issues/78 +[notify-rs#644]: https://github.com/notify-rs/notify/issues/644 +[other sponsors]: https://www.torproject.org/about/sponsors/ +[proposal 351]: https://spec.torproject.org/proposals/351-socks-auth-extensions.html +[rust-pwd-grp!25]: https://gitlab.torproject.org/tpo/core/rust-pwd-grp/-/merge_requests/25 +[rust-pwd-grp#4]: https://gitlab.torproject.org/tpo/core/rust-pwd-grp/-/issues/4 +[shadow!3428]: https://github.com/shadow/shadow/pull/3428 +[simple_asn1!35]: https://github.com/acw/simple_asn1/pull/35 +[simple_asn1#34]: https://github.com/acw/simple_asn1/issues/34 +[socks-extensions.md]: https://spec.torproject.org/socks-extensions.html +[time-rs#683]: https://github.com/time-rs/time/issues/638 +[torspec!292]: https://gitlab.torproject.org/tpo/core/torspec/-/merge_requests/292 + + # Arti 1.2.8 — 1 October 2024 |
