Arti: Feature parity with the C implementation
Deliverable 1: Parity with C tor client: all relevant non-deprecated C Tor client features are present.
Deliverable 2: Full embedding support: Arti exposes a set of APIs sufficient developing applications that use it in Rust and non-rust languages.
Milestone 2.0.0 for ZC
From the grant proposal:
In time, we want Arti to become the primary Tor implementation, so that we can focus our efforts on a high-productivity, high-security program environment without all of the drawbacks of our old C implementation. But before we can do that, we need Arti to work well enough as a replacement for existing Tor users that they can migrate to it comfortably.
In the second half of our second year, we will be “filling in the gaps” to make Arti 2.0.0 a better alternative to the C client implementation for nearly all users. This will include work on circuit padding, a stable C FFI, support for more proxy protocols, and whatever missing features users and developers judge to be most important.
Once that’s done, we’ll be able to deprecate client usage of the C Tor implementation (though we’ll have to keep supporting it in maintenance mode for a couple of years, to give users and developers time to migrate). Throughout the project, we will update Arti's documentation on https://arti.torproject.org. Our goal is to make Arti easy to use for any project that would like to integrate Tor into their solution.
[...]
The greater part of this work will take the form of several new higher-level APIs, including:
- A “blocking API” layer for use by applications that can’t or won’t interface with Rust’s async futures ecosystem.
- A “FFI layer” to expose Arti’s functionality in a form suitable for consumption by non-Rust applications.
- A “compatibility layer” to support drop-in replacement use of Arti for a limited set of legacy C Tor use-cases.