by nickm | February 1, 2022
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're working towards our 0.1.0 milestone in early March, where our main current priorities are stabilizing our APIs, and resolving issues that prevent integration. We're planning to do releases every month or so until we get to that milestone.
Please be aware that every release between now and then will probably break backward compatibility.
There are new features in our API for developers who need to isolate all circuits from one another, and for setting per-stream preferences across all streams opened through a client handle. The interfaces for creating and using the main
TorClient type are also improved. We've also refactored a large amount of our internal code for creating and dealing with asynchronous runtimes, and added support for using
rustls. (Our default TLS library is still
In the background, we've also got a background for reporting bootstrap status. It isn't too useful yet, since the current API doesn't actually give you anyway to get a not-yet-bootstrapped
TorClient , but we hope to change that in the future.
There are also a bunch of smaller features, bugfixes, and infrastructure improvements; see the changelog for a more complete list.
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-clientcrate, 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?