Commit 6598a0a0 authored by Ian Jackson's avatar Ian Jackson 💬
Browse files

Merge branch 'changelog-3' into 'main'

Finish changelog for 1.4.0

See merge request tpo/core/arti!2779
parents 31fb8616 d4306e04
Loading
Loading
Loading
Loading
+162 −122
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ See also what other projects are writing about Lunar:

- `Runtime` now implies `SpawnBlocking` with `spawn_blocking`.
  Out-of-tree implementors of `Runtime` will need to change.
  !2678
  ([!2678])

### Major features

@@ -53,24 +53,24 @@ See also what other projects are writing about Lunar:
### Breaking changes in lower-level crates

- `tor-chanmgr`: `AbstractChannel` now has a `reparameterize_kist()` method.
  !2706
  ([!2706])
- `tor-key-forge`: `ErasedKey` is now `Box<dyn ItemType>`;
  `EncodableItem::item_type()` moved to `ItemType`;
  `ToEncodableCert::Cert` replaced with `::ParsedCert` and `::EncodableCert`;
  `ToEncodableCert::validate` now takes a `Self::ParsedCert`
  and returns `Self`;
  `ToEncodableCert::from_encodableCert` removed.
  !2672
  ([!2672])
- `tor-proto`: `StreamOps` trait now has a (defaulted) `new_handle` function;
  any wrapper implementing `StreamOps` should also wrap it.
  !2706
  ([!2706])
- `tor-proto`: stream types are now required to implement `StreamOps`.
  !2706
  ([!2706])
- `tor-rtcompat`: in many traits, stream types must now implement `StreamOps`.
  !2706
  ([!2706])
- `tor-proto`: `ConversationInHandler` now only has one lifetime parameter;
  and `::send_message` is now `async`.
  !2747
  ([!2747])
- `fs-mistrust`: A few methods now take `&self` rather than `self`.
  !2707

@@ -78,188 +78,124 @@ See also what other projects are writing about Lunar:

- Major refactoring of the circuit reactor, to use `select!`, lifting it from
  async Rust's low-level "poll" to "async fn".
  !2747
  !2733
  #1816
  !2720
  !2760
  #1832
  !2768
  !2765
  ([!2747], [!2733], [#1816], [!2720], [!2760], [#1832], [!2768], [!2765])
- Improved CLI and add config loading.
  !2699
  #1736
  !2709
  ([!2699], [#1736], [!2709])
- High-level certificate types (implementing `ToEncodableCert`)
  in `tor-relay-crypto`.
  !2672
  #1777
  ([!2672], [#1777])
- Initial [KIST] support (Linux-only) in `tor-proto`.
  !2706
  #1728
  #1728
  #1729
  #1730
  ([!2706], [#1728], [#1728], [#1729], [#1730])
- Congestion control.
  [proposal 324]
  !2675 
  #534
  ([proposal 324], [!2675], [#534])
- Apply the standard lint block.
  !2708
  ([!2708])

### RPC development

- Cookie authentication.
  !2702
  #1529
  !2716
  ([!2702], [#1529], [!2716])
- Fixed the remaining outstanding TODOs in the RPC code.
  !2740
  !2743
  !2745
  !2737
  !2731
  ([!2740], [!2743], [!2745], [!2737], [!2731])
- Improved names for many type and methods:
  `MethodNotFound` to `NoSuchMethod`
  !2714
  #1500
  ;
  ([!2714], [#1500]);
  `new_stream_handle` to `new_oneshot_client`
  !2715
  #1664
  ;
  ([!2715], [#1664]);
  make `Params`/`Reply` structs consistent.
  !2729
  #1586
  !2732
  ([!2729], [#1586], [!2732])
- Implement request cancellation.
  !2722 
  #818
  ([!2722], [#818])
- Fix portability problems on Windows.
  !2761
  #1831
  !2713
  #1798
  !2756
  !2718 
  ([!2761], [#1831], [!2713], [#1798], [!2756], [!2718])
- Move support for weak references behind an experimental feature,
  and clean up some related comments.
  !2742
  #868
  !2741
  ([!2742], [#868], [!2741])
- Improve and write a bunch of RPC documentation.
  !2748
  #1520
  #1527
  #1296
  ([!2748], [#1520], [#1527], [#1296])
- Fixes and maintenance on rpc-docs-tool.
  !2736
  #1520
  #1708
  ([!2736], [#1520], [#1708])
- No longer generate internal errors for expected situations.
  !2730
  ([!2730])
- Tolerate nonexistence of a the connect point directory.
  !2735
  ([!2735])
- Improve error outputs, including the origin of each failed connect attempt.
  !2766
  #1650
  #1826
  !2744
  #1826
  ([!2766], [#1650], [#1826], [!2744], [#1826])
- `fs-mistrust`: New facilities for file access.
  !2707
  #1746
  ([!2707], [#1746])
- Clarify and fix some issues surrounding relative paths.
  !2712
  #1748
  #1749
  ([!2712], [#1748], [#1749])
- Tweaked `tor-proto` `StreamCtrl` APIs to better support use with RPC.
  !2755
  ([!2755])
- Document stream optimism.
  !2753 
  #1583
  ([!2753], [#1583])
- Specify the RPC connection banner format.
  !2700
  #1753
  ([!2700], [#1753])

### Other development

- Update plan for Proof of Work DoS prevention, `service-side-pow.md`.
  !2701
  ([!2701])
- Design notes for implementation of [Conflux].
  !2750
  ([!2750])

### Documentation

- Rewrite download manager example.
  !2725
  #1471
  #1386
  ([!2725], [#1471], [#1386])
- `arti`: Add `restricted-discovery` to the list of experimental
  features in the crate documentation.
  !2719
  #1808
  ([!2719], [#1808])
- `tor-config`: clarify that `ConfigurationSources::set_mistrust`is
  unrelated to the paths defined within the configuration file itself,
  and reference `storage.permissions.dangerously_trust_everyone`.
  !2727
  ([!2727])
- Integrate the Docusaurus-based documentation overhaul
  (aka [`arti-doc-project-2023`]) into `arti.git/web/`
  and deploy it to <https://tpo.pages.torproject.net/core/arti/>.
  !2746
  !2752
  !2754
  !2757
  ([!2746], [!2752], [!2754], [!2757])

### Cleanups, minor features, and bugfixes

- Fix `watch_configuration = true`.  Previously this caused an infinite loop
  and was not useable.
  #1794
  !2696
  ([#1794], [!2696])
- `tor-circmgr`: Add trace log on circuit build timeout.
  !2698
  ([!2698])
- `tor-proto`: Make `Channel::wait_for_close` non-experimental.
  !2666
  ([!2666])
- Fix non-Unix build and test failures.
  !2615
  !2738
  #1809
  !2717
  ([!2615], [!2738], [#1809], [!2717])
- Replace an async `Mutex` with a sync one in file watcher.
  !2763
  ([!2763])
- Remove confusing `use asynchronous_codec as futures_codec`
  #1690
  !2769
  ([#1690], [!2769])
- Fix many typos.
  !2751
  ([!2751])

### Testing

- `tor-rtmock`: Fix misleading task lists from `MockExecutor` when panicking
  due to stall and tasks unstick each other in `Drop`.
  !2682
  ([!2682])
- `tor-proto`: Fix flaky test `invalid_circ_sendme` by using
  `MockExecutor` and replacing `sleep()` with `advance_until_stalled()`.
  !2721
  ([!2721])
- More uniform handling of some test key data.
  !2764
  #1396
  ([!2764], [#1396])

### Infrastructure

- `maint/matrix-check`: properly find the crate subdir.
  !2762
  ([!2762])
- Un-ignore [RUSTSEC-2024-0421] as we no longer use an affected `hickory`.
  !2693
  #1773
  ([!2693], [#1773])
- Update our main CI image (`RECENT_RUST_IMAGE`) to 1.83.
  !2694
  ([!2694])
- Better instructions for handling new MPL-licensed dependencies.
  !2726
  ([!2726])
- Style guide for this changelog, and small script to help format it.
  !2739
  !2616
  ([!2739], [!2616])

### Acknowledgments

@@ -272,6 +208,110 @@ the [Bureau of Democracy, Human Rights and Labor],
and our [other sponsors]
for funding the development of Arti!

[!2615]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2615
[!2616]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2616
[!2666]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2666
[!2672]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2672
[!2675]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2675
[!2678]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2678
[!2682]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2682
[!2693]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2693
[!2694]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2694
[!2696]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2696
[!2698]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2698
[!2699]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2699
[!2700]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2700
[!2701]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2701
[!2702]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2702
[!2706]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2706
[!2707]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2707
[!2708]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2708
[!2709]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2709
[!2712]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2712
[!2713]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2713
[!2714]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2714
[!2715]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2715
[!2716]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2716
[!2717]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2717
[!2718]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2718
[!2719]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2719
[!2720]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2720
[!2721]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2721
[!2722]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2722
[!2725]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2725
[!2726]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2726
[!2727]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2727
[!2729]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2729
[!2730]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2730
[!2731]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2731
[!2732]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2732
[!2733]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2733
[!2735]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2735
[!2736]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2736
[!2737]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2737
[!2738]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2738
[!2739]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2739
[!2740]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2740
[!2741]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2741
[!2742]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2742
[!2743]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2743
[!2744]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2744
[!2745]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2745
[!2746]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2746
[!2747]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2747
[!2748]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2748
[!2750]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2750
[!2751]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2751
[!2752]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2752
[!2753]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2753
[!2754]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2754
[!2755]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2755
[!2756]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2756
[!2757]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2757
[!2760]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2760
[!2761]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2761
[!2762]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2762
[!2763]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2763
[!2764]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2764
[!2765]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2765
[!2766]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2766
[!2768]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2768
[!2769]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2769
[#1296]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1296
[#1386]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1386
[#1396]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1396
[#1471]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1471
[#1500]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1500
[#1520]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1520
[#1527]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1527
[#1529]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1529
[#1583]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1583
[#1586]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1586
[#1650]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1650
[#1664]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1664
[#1690]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1690
[#1708]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1708
[#1728]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1728
[#1729]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1729
[#1730]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1730
[#1736]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1736
[#1746]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1746
[#1748]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1748
[#1749]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1749
[#1753]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1753
[#1773]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1773
[#1777]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1777
[#1794]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1794
[#1798]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1798
[#1808]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1808
[#1809]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1809
[#1816]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1816
[#1826]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1826
[#1831]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1831
[#1832]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1832
[#534]: https://gitlab.torproject.org/tpo/core/arti/-/issues/534
[#818]: https://gitlab.torproject.org/tpo/core/arti/-/issues/818
[#868]: https://gitlab.torproject.org/tpo/core/arti/-/issues/868
[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/
[Conflux]: https://spec.torproject.org/proposals/329-traffic-splitting.html
[KIST]: https://blog.torproject.org/kist-and-tell-tors-new-traffic-scheduling-feature/