Arti is our ongoing project to create a working embeddable Tor client in Rust. It’s nowhere near ready to replace the main Tor implementation in C, but we believe that it’s the future.
We put out our first official release of Arti last month. It included a working SOCKS proxy client, a supported (but unstable) API for embedding, and all the basic features necessary for anonymous use of the Tor network.
With that done, our next major goal is our 0.1.0 milestone in March, where we’ll to have a (mostly) stable API that applications can rely on. With that in mind, we’re working on API completeness and ergonomics, and trying to get our breaking changes out of the way. We’re also trying to fill in small missing features and set the groundwork for future work on performance and reliability.
We’re planning to do releases every month or so until we put out an 0.1.0 release in March. Each release will break API compatibility until then, when we’ll start making an effort to keep the API a bit more stable.
So what’s new in Arti 0.0.2?
The Arti 0.0.2 release has a major refactor of the backend network code that implements circuits and channels, to better use the reactor architectural pattern and reduce the need for locks.
The configuration API has been completely rewritten, to make it easier for applications to change Arti’s configuration as needed, and to reuse the user’s main Arti configuration file (if they want to).
Optimistic streams are available, for applications that need to reduce stream startup latency.
There’s also a new backend (as yet unused) for asynchronous events, and a bunch of smaller changes throughout the codebase. See the changelog for a more complete list.
What to expect next
The next release will probably be pretty small: there are a lot of people on vacation in December. We’ll likely have preemptive circuit construction ready, and the ability to change the configuration of a running Arti client on the fly.
And if you help us out, we’ll have your user-driven API feedback!
Call for comments - Urgent!
We need feedback on our APIs. Sure, we think we’re making them more complete and ergonomic… but it’s the users’ opinion that matters!
Here are some ideas of how you can help:
You can read over the high-level APIs for the arti-client crate, and look for places where the documentation could be more clear, or where the API is ugly or hard to work with.
Try writing more code with this API: what do you wish you could do with Tor in Rust? Give it a try! Does this API make it possible? Is any part of it harder than necessary? (If you want, maybe clean up your code and contribute it as an example?)