Closed
Milestone
Nov 1, 2021–Mar 1, 2022
Arti 0.1.0 release: Okay for experimental embedding
The criteria for 0.1.0 is that we believe Arti is suitable for experimental embedded use by app developers.
4 months to complete
Proposal: https://forum.zcashcommunity.com/t/arti-a-pure-rust-tor-implementation-for-zcash-and-beyond/38776
Unstarted Issues (open and unassigned)
0
Ongoing Issues (open and assigned)
0
Completed Issues (closed)
99
- Simplify API of create_unbootstrapped, maybe
- Audit ErrorKind names for reasonableness and adherence to convention.
- Eliminate tor_circmgr::Error::PendingCanceled.
- Port new tor-netdoc errors to use bad_api_usage as appropriate
- Change from deny(clippy::all) to warn(clippy::all)
- Try to simplify the wait_for_bootstrap logic
- Refactor arti crate to create client unbootstrapped
- Release statemgr lock if bootstrapping fails.
- Give the documentation some care and attention before 0.1
- Make CircMap:open_ent_count O(1)
- Use an atomic for the value of channels' unused-since timestamps
- Eliminate ErrorKind::TODO
- Initial error-handling followups for !262
- Drop for TorClient flushes state too frequently.
- Tests that run Arti shouldn't use default configuration or directories
- nightly fails in CI because of clippy::needless_borrow
- maint and tests scripts should not have implementation language in filename
- CI: Run shellcheck on all shell scripts
- "static" feature turns on native-tls even when it isn't wanted
- tor-rtcompat: uniform API for getting Runtimes
- tor-rtcompat: Make native-tls optional
- Cache files put in the wrong place
- Circuit reactor has to enqueue cells due to backpressure
- We permit unauthenticated SENDMEs exactly when we shouldn't.
- Have a way to create an unbootstrapped client?
- Flesh out arti-bench a bit more to make it suitable for long-term tracking
- Broken link(s) in docs depending on features
- way to stuff prefs into `TorClient` (or bind them)
- arti_client: Restructure client construction API
- Declare a MSRV policy
- Expose stream timeout config builder from client config builder
- Expose arti_client::Result alias
- Provide an isolate-all-streams convenience API.
- Convenience API (or example) for a lazy-init TorClient
- Better document non-rust dependencies and troubleshooting
- Possible intermittent failure in tor_guardmgr::sample::test::sample_test
- Minimize required versions for all dependencies
- Attempts to replace consensus find consensus in cache, and do nothing.
- Restructure connect to connect_with_prefs or something
- Reload configuration files (when they change?)
- "Manual" blocking/removing of Tor nodes
- thread 'tokio-runtime-worker' panicked at 'overflow when subtracting duration from instant'
- Use write_all and flush for socks replies
- We stopped decrementing stream SENDME windows.
- Handle RELAY_TRUNCATED cells less incorrectly
- rusqlite yanks have broken our minimal-versions CI
- Only note_circ_timeout when we have recent network activity.
- Consider separating out parts of the `Runtime` for easy reimplementation
- Reconsider and document IntoTorAddr interface
- Integrate test coverage tracking with gitlab CI
- Can we get per-crate coverage data in a reasonable manner?
- Migrate coverage.sh to use with_coverage.
- Design and implement an improved set of Error objects for arti-client
- Investigate and document envvar issues with tor-config
- Follow-up from "Build circuits preemptively": Make things configurable.
- Testing PFX file breaks with latest vendored openssl
- Update to a newer version of simple_asn1, once available.
- Build interface for hooking into TCP socket creation for guard connections before they connect
- Convert every XXXX into a TODO or a ticket.
- Measured test coverage 50% for arti, arti-client.
- Coverage support for integration tests
- Should BEGIN_DIR connections use optimistic data?
- Use test_with_all_runtimes() in place of tokio::test
- Reproducible build for osx is stuck on SDK 10.11
- Stop using FuturesUnordered<onshot::Receiver<...>> in tor-guardmgr
- Guard against use of `dbg!` in production code
- Do some small refactors in `tor-proto`
- Implement `last_time_on_internet` for tor-guardmgr
- Get API users, so we can get API feedback
- Ship more example programs with Arti 0.1.0
- Have a CI job that makes sure we build with our oldest dependencies
- At some point, upgrade to 2021 edition
- Consider leaning into the reactor pattern more, instead of using mutexes
- Create a typed event reporting mechanism
- Avoid same-family bugs with guards, and chosen exits
- Limit the public dependencies of tor-client, a lot.
- Inspect and adjust mutex usage in all crates
- Keep track of "the last time we were verifiably online"
- A NetDir should not be "usable" until we have descriptors for all our primary guards
- Persistence support for multiple guard selections in GuardMgr
- Begin to track download size and binary size
- Make multiple log types configurable, each with its own fliters
- All crates above 75% test coverage
- Add support for log files
- Implement Property Testing where appropriate
- Reliable cross-compilation process for iOS
- Find code that doesn't belong in tor clients, and put it behind features
- Upgrade to latest `rand`, after solving dalek-crypto migration issue
- API for bootstrap/status checking
- Support other TLS backends
- Full API support for configuration
- Improved lockfile support to prevent concurrent modification of state
- Integration-test Arti in a chutney network
- Build circuits preemptively
- Declare a somewhat-stable API for using a Tor client
- Implement SendmeAcceptMinVersion and SendmeEmitMinVersion
- chanmgr: Discard channels after sufficient disuse
- Support RESOLVE and RESOLVE_PTR commands
- Evaluate Tower for use at some level
Loading
Loading
Loading