Open
Description
This is related to the engine simplification work.
The reasons for doing this are:
- The story of integrating rust with mobile apps is much nicer (see: https://github.com/mozilla/rust-android-gradle)
- The shipped library is going to be significantly smaller
- We can do parroting in a way that is cleaner and more robust than with utls (see: https://crates.io/crates/rquest)
- Work related to probe-id could benefit from using the already existing cryptographic code that's rust based (see: https://github.com/nategraf/rkvc/ & https://gitlab.torproject.org/onyinyang/lox-zkp)
- Tor integration has been a long source of pain and the rust based arti rewrite would help us with that
This issue is about doing exploratory research to understand the limits of this.
The order or priorities to implement this would be to first focus on the probe-services components which we need for the anonymous credentials project and then eventually move over to experiments (which are going to take a very long time to fully rewrite in rust).
In the interim the tentative plan is to ship both a golang and rust library to the apps which we load dynamically and call either rust or go code depending on what we need.
This is related to: #2826