The developers of the anonymous network Tor formed The first stable release (1.0.0) of the project arti , developing Tor client written in Rust. Issue 1.0 is noted as suitable for use by ordinary users and providing the same level of confidentiality, usability and stability as the main implementation in SI. The API proposed to use the functionality of Arti in other applications is also stabilized. Code spreads under the licenses of Apache 2.0 and Mit.
In contrast to the implementation on SI, which was first designed as SOCKS-Proxy, and only then fitted for other needs, Arti is originally developing in the form of a modular built-in library that various applications can use. In addition, the development of a new project takes into account the entire past experience in developing Tor, which avoids well -known architectural problems, make the project more modular and effective.
, as the reason for rewriting Tor on Rust, there was a desire to achieve a higher level of security of code by using a language that ensures safe work with memory. According to Tor developers, at least half of all vulnerabilities tracked by the project will be excluded in RUST if the “UNSAFE” blocks are not used in the code. Rust will also make it possible to achieve a higher development rate than when using SI, due to the expressiveness of the language and strict guarantees that allow you not to waste time on double checks and writing extra code.
According to the results of the first version, using the RUST language justified itself. For example, it is noted that at each stage in the code on Rust there were fewer errors than with comparable development on SI – the errors emerged during the development process were mainly associated with logic and semantics. The excessive requirements of the Rustc compiler, noted by some as a drawback, in fact turned out to be good, since if the code is compiled and passes through tests, the likelihood of its correctness is significantly increased.
When working on a new option, an increase in the development rate was also confirmed, which was due not only to the fact that the functionality was recreated on the basis of the available template, but also with the more expressive semantics of Rust, convenient libraries of functions and the use of Rust to ensure the safety of code. Of the shortcomings, a large size of the resulting assemblies is distinguished – since
The standard Rust library is not supplied in default systems, it has to be included in the packages proposed for download.