|
|
= Rust in Tor =
|
|
|
|
|
|
|
|
|
== What & why ==
|
|
|
|
|
|
We are currently investigating integrating Rust as a first-class language in
|
|
|
Tor. We decided upon Rust due to the benefits of memory safety and the ability
|
|
|
to directly integrate Rust and C.
|
|
|
|
|
|
To read more about how and why this started, see our meeting notes from the
|
|
|
2017 meeting in Amsterdam.
|
|
|
|
|
|
https://lists.torproject.org/pipermail/tor-dev/2017-March/012088.html
|
|
|
|
|
|
== Current status ==
|
|
|
|
|
|
In Tor 0.3.3.x, we include a Rust implementation of our "protover" module. It is not enabled by default, but we encourage people to try it.
|
|
|
|
|
|
Starting with Tor 0.3.4.x, we will accept Rust-only features, if they can be safely merged to the network with only some Tor instances supporting them.
|
|
|
|
|
|
We will continue to build out our modularity efforts, and our Rust infrastructure, to make it easier to write modules in rust and replace parts of Tor.
|
|
|
|
|
|
We encourage ALL downstream packagers to try building Tor with Rust enabled, to help identify any compatibility or usability issues as soon as possible.
|
|
|
|
|
|
== Future steps ==
|
|
|
|
|
|
At some point in the future, when we judge that our Rust support is sufficiently mature, we will announce a release and release date after which Rust will be required. We have not picked such a release or date yet.
|
|
|
|
|
|
=== What we are currently working on ===
|
|
|
|
|
|
1. Understand alignment between Rust and Tor supported platforms. [https://trac.torproject.org/projects/tor/wiki/org/teams/NetworkTeam/SupportedPlatforms This] is a list of which platforms we aim to support, it would be helpful to understand the intersection with Rust. (#22771
|
|
|
1. Adding automated tooling for code quality tools. (#22156)
|
|
|
1. Build Tor with Rust for Windows. (#22839)
|
|
|
1. Investigate the reproducibility of Rust binaries. (#22769)
|
|
|
1. Implementing existing submodules in Rust as a proof of concept. Two that are
|
|
|
currently in progress are consdiff (#24609) and protover (#22840).
|
|
|
1. Add Rust-enabled build to the Tor CI. (#22636 and #22768)
|
|
|
|
|
|
== Interested in helping out? ==
|
|
|
|
|
|
Please see [https://gitweb.torproject.org/tor.git/tree/doc/HACKING/GettingStartedRust.md doc/HACKING/GettingStartedRust.md] ([https://github.com/isislovecruft/tor/blob/master/doc/HACKING/GettingStartedRust.md rendered]) in the tor.git repo.
|
|
|
|
|
|
== Coding Standards ==
|
|
|
|
|
|
Please see [https://gitweb.torproject.org/tor.git/tree/doc/HACKING/CodingStandardsRust.md doc/HACKING/CodingStandardsRust.md] ([https://github.com/isislovecruft/tor/blob/master/doc/HACKING/CodingStandardsRust.md rendered]) in the tor.git repo.
|
|
|
|
|
|
=== All current, non-closed, Rust in Tor tickets ===
|
|
|
|
|
|
[[TicketQuery(keywords~=rust,order=keywords,status=!closed,format=table,col=id|summary,row=description)]]
|
|
|
|