summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md140
1 files changed, 122 insertions, 18 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95129934b..0c8f2526f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,11 +5,13 @@ is more mature, and we start to version crates independently, we may
switch to using a separate changelog for each crate.
-# Arti 0.2.0 — XXXX Apr 2022
+# Arti 0.2.0 — 1 Apr 2022
-BLURB
-
-(entries below are taken through 482b2e3256cc0c738dc1deb3029173b8619920dd)
+Arti 0.2.0 makes a large number of changes to Arti's code and
+infrastructure for better configurability, lower memory usage, support
+for running as a basic DNS resolver, improved stream isolation, better
+behavior under network failures, and API support for a "dormant mode" to
+suspend background activities.
### Breaking changes
@@ -26,17 +28,15 @@ Numerous other lower-level crates have breaking changes not noted here.
- To remove unnecessary ad-hoc accessor functions until they prove to be
needed.
- This change
- is not done in this release; we expect to have more breakage
- in this area in our next release as well. ([#314], [#371], [#372],
- [#374], [#396], [#418],
- [!391], [!401], [!417], [!421], [!423], [!425], [!427])
+ This change is not done in this release; we expect to have more
+ breakage in this area in our next release as well. ([#314], [#371],
+ [#372], [#374], [#396], [#418], [!391], [!401], [!417], [!421],
+ [!423], [!425], [!427])
- The [`Runtime`] trait now includes (and requires) UDP support. (Part
of [!390]'s support for DNS.)
- Stream isolation support is completely revised; see notes on isolation
below.
-
### New features
- Experimental feature to allow the [`DirMgr`] to be replaced by
@@ -70,9 +70,13 @@ Numerous other lower-level crates have breaking changes not noted here.
the directory is in an inconsistent or non-working state. ([#397], [!431])
- Arti now has initial support for a "Dormant Mode" where periodic events are
suspended. Later, even more background tasks will be shut
- down. ([#90], [!429])
+ down. ([#90], [!429], [!436])
+- Fallback directory caches are now handled with logic similar to guards,
+ so we can avoid ones that aren't working, and simplify our logic for
+ path construction. As a fringe benefit, this unification means that
+ we can now use our guards as directory caches even when we don't have
+ an up-to-date consensus. ([#220], [#406], [!433])
-### Major bugfixes
### Infrastructure
@@ -80,7 +84,7 @@ Numerous other lower-level crates have breaking changes not noted here.
perform various kinds of stress-testing on our implementation. It can
simulate several kinds of failure and overload conditions; we've been
using it to improve Arti's behavior when the network is broken or
- misbehaving. ([!378], [!392]; see also [#329])
+ misbehaving. ([#397], [!378], [!392], [!442]; see also [#329])
- The [`arti-bench`] tool now constructs streams in parallel and
supports isolated circuits, so we can
stress-test the performance of a simulated busy client. ([#380], [!384])
@@ -115,19 +119,119 @@ Numerous other lower-level crates have breaking changes not noted here.
attempt. ([#383], [!394])
- Always send an "If-Modified-Since" header on consensus requests, since
we wouldn't want a consensus that was far too old. ([#403], [!412])
-- Actually acknowledge preemptive circuits configuration. Previously,
+- Actually use "preemptive circuit" configuration. Previously,
we missed a place where we needed to copy it. (Part of [!417])
- Backend support for collecting clock skew information; not yet
used. ([#405], [!410])
- Major refactoring for periodic events, to support an intial version of
"dormant mode." ([!429])
+- Remove most uses of `SystemTime::now`, in favor of calling the equivalent
+ function on [`SleepProvider`]. ([#306], [!365])
+- Several bugs in the logic for retrying directory downloads
+ have been fixed, and several parameters have been tuned, to lead to
+ better behavior under certain network failure conditions. ([!439])
### Acknowledgments
-XXXXXXXXXXXXXXXXXXXXXXX
-
-
-
+Thanks to everybody who has contributed to this release, including
+Christian Grigis, Dimitris Apostolou, Lennart Kloock, Michael, solanav,
+Steven Murdoch, and Trinity Pointard.
+
+[!274]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/274
+[!318]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/318
+[!347]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/347
+[!365]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/365
+[!373]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/373
+[!374]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/374
+[!375]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/375
+[!377]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/377
+[!378]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/378
+[!379]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/379
+[!380]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/380
+[!381]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/381
+[!382]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/382
+[!383]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/383
+[!384]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/384
+[!386]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/386
+[!388]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/388
+[!389]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/389
+[!390]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/390
+[!391]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/391
+[!392]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/392
+[!393]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/393
+[!394]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/394
+[!396]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/396
+[!398]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/398
+[!401]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/401
+[!402]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/402
+[!403]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/403
+[!407]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/407
+[!408]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/408
+[!409]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/409
+[!410]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/410
+[!412]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/412
+[!415]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/415
+[!417]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/417
+[!418]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/418
+[!420]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/420
+[!421]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/421
+[!423]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/423
+[!425]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/425
+[!426]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/426
+[!427]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/427
+[!429]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/429
+[!431]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/431
+[!433]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/433
+[!434]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/434
+[!436]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/436
+[!439]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/439
+[!442]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/442
+[#90]: https://gitlab.torproject.org/tpo/core/arti/-/issues/90
+[#150]: https://gitlab.torproject.org/tpo/core/arti/-/issues/150
+[#220]: https://gitlab.torproject.org/tpo/core/arti/-/issues/220
+[#267]: https://gitlab.torproject.org/tpo/core/arti/-/issues/267
+[#306]: https://gitlab.torproject.org/tpo/core/arti/-/issues/306
+[#314]: https://gitlab.torproject.org/tpo/core/arti/-/issues/314
+[#329]: https://gitlab.torproject.org/tpo/core/arti/-/issues/329
+[#369]: https://gitlab.torproject.org/tpo/core/arti/-/issues/369
+[#371]: https://gitlab.torproject.org/tpo/core/arti/-/issues/371
+[#372]: https://gitlab.torproject.org/tpo/core/arti/-/issues/372
+[#374]: https://gitlab.torproject.org/tpo/core/arti/-/issues/374
+[#376]: https://gitlab.torproject.org/tpo/core/arti/-/issues/376
+[#377]: https://gitlab.torproject.org/tpo/core/arti/-/issues/377
+[#378]: https://gitlab.torproject.org/tpo/core/arti/-/issues/378
+[#380]: https://gitlab.torproject.org/tpo/core/arti/-/issues/380
+[#383]: https://gitlab.torproject.org/tpo/core/arti/-/issues/383
+[#384]: https://gitlab.torproject.org/tpo/core/arti/-/issues/384
+[#385]: https://gitlab.torproject.org/tpo/core/arti/-/issues/385
+[#386]: https://gitlab.torproject.org/tpo/core/arti/-/issues/386
+[#387]: https://gitlab.torproject.org/tpo/core/arti/-/issues/387
+[#388]: https://gitlab.torproject.org/tpo/core/arti/-/issues/388
+[#396]: https://gitlab.torproject.org/tpo/core/arti/-/issues/396
+[#397]: https://gitlab.torproject.org/tpo/core/arti/-/issues/397
+[#403]: https://gitlab.torproject.org/tpo/core/arti/-/issues/403
+[#405]: https://gitlab.torproject.org/tpo/core/arti/-/issues/405
+[#406]: https://gitlab.torproject.org/tpo/core/arti/-/issues/406
+[#407]: https://gitlab.torproject.org/tpo/core/arti/-/issues/407
+[#414]: https://gitlab.torproject.org/tpo/core/arti/-/issues/414
+[#415]: https://gitlab.torproject.org/tpo/core/arti/-/issues/415
+[#418]: https://gitlab.torproject.org/tpo/core/arti/-/issues/418
+[87a3f6b58a5e75f7]: https://gitlab.torproject.org/tpo/core/arti/-/commit/87a3f6b58a5e75f7060a6797b8e1b33175fd5329
+[cb103e04cf4d9853]: https://gitlab.torproject.org/tpo/core/arti/-/commit/cb103e04cf4d985333a6949f0fd646258dcedcd2
+[eed1f06662366511]: https://gitlab.torproject.org/tpo/core/arti/-/commit/eed1f06662366511fe5fd15ac0ab0cb69497f2cf
+[RFC 8305]: https://datatracker.ietf.org/doc/html/rfc8305
+[`DirMgr`]: https://tpo.pages.torproject.net/core/doc/rust/tor_dirmgr/struct.DirMgr.html
+[`DirProvider`]: https://tpo.pages.torproject.net/core/doc/rust/tor_dirmgr/trait.DirProvider.html
+[`Runtime`]: https://tpo.pages.torproject.net/core/doc/rust/tor_rtcompat/trait.Runtime.html
+[`SleepProvider`]: https://tpo.pages.torproject.net/core/doc/rust/tor_rtcompat/trait.SleepProvider.html
+[`arti-bench`]: https://tpo.pages.torproject.net/core/doc/rust/arti_bench/index.html
+[`arti-testing`]: https://tpo.pages.torproject.net/core/doc/rust/arti_testing/index.html
+[`derive_more`]: https://docs.rs/derive_more/latest/derive_more/index.html
+[`educe`]: https://docs.rs/educe/latest/educe/
+[`tor-basic-utils`]: https://tpo.pages.torproject.net/core/doc/rust/tor_basic_utils/index.html
+[forked version of `shellexpand`]: https://crates.io/crates/shellexpand-fork
+[proposal 336]: https://gitlab.torproject.org/tpo/core/torspec/-/blob/main/proposals/336-randomize-guard-retries.md
+[stream isolation API]: https://tpo.pages.torproject.net/core/doc/rust/tor_circmgr/isolation/index.html