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.
Today, we’ve reached our 0.1.0 milestone: this means that we now
consider Arti’s high-level APIs to be “mostly stable”, and ready for
experimental embedding in other projects. (We don’t promise no API
breakage, but we don’t break our high-level APIs without a good
reason.) The 1.0.0 milestone, scheduled for September, will represent
an even stronger API commitment.
From a developer’s point of view the primary new features are our builder API for
constructing TorClient
instances, and the ability to create
unbootstrapped and bootstrap-on-demand TorClient
instances. These
features make it easier to create a “lazy” TorClient that bootstraps
itself in the background the first time it’s used: we’ve provided some
example code to show you how.
We’ve also replaced our top-level Error
API. Previously, it exposed
a huge mass of APIs from lower-level crates, and encouraged dependencies
on unstable lower-level error types. Now the error details are hidden,
and there is instead an explicitly supported ErrorKind
type that
programs can use to see what type of error occurred. (You can still
access the low-level information by enabling an optional trait, if you
really want to.)
There are also a bunch of smaller features, bugfixes, and
infrastructure improvements; see the changelog for a more complete
list.
Between now and our 1.0.0 milestone in September, we