The developers of the anonymous network TOR introduced the release of the project Arti 0.2.0 , developing a Tor client, written in the RUST language. The project has the status of experimental development, lagging behind the functionality from the main client TOR in the C language and is not yet ready to fully replace it. In September it is planned to form a release 1.0 with stabilization of API, CLI and settings that will be suitable for primary use by regular users. In a more distant future, when the code on RUST reaches a level capable of completely replacing the SI version, the developers intend to give Arti the status of the main implementation of TOR and stop supporting the implementation on C.
In contrast to the implementation of the SI, which was first designed as SOCKS-proxy, and already adjusted for other needs, Arti is initially developing in the form of a modular embedded library that various applications can use. In addition, the development of a new project takes into account the entire last experience of developing TOR, which will avoid well-known architectural problems, make the project more modular and efficient. Code distributed under licenses Apache 2.0 and Mit.
As the reasons for rewriting TOR on Rust is a desire to achieve a higher level of code security due to the use of a language that provides safe memory. According to the evaluation of TOR developers, at least half of all tracked vulnerabilities will be excluded in implementation on Rust if the “Unsafe” blocks are not used in the code. Rust will also provide an opportunity to achieve a higher development speed than when using SI, due to the expressiveness of the language and strict warranties that allow you to spend time on double checks and writing an excess code.
The most notable changes in the release of 0.2.0 are associated with work on improving productivity and reliability. Improved work on networks that support only IPv6. Reduced memory consumption for storing data from directory servers. Added the DNS_PORT option, with which you can configure the sending of DNS requests through TOR. A new code for working with configuration is proposed. Added API to determine the power isolation rules and switching on the sleep mode (suspension of work for inactive clients). It is possible to connect alternative code implementations to work with directory servers.
Before publishing output 1.0.0, developers intend to provide in Arti full support of work as a TOR client, providing access to the Internet (implementation of ONION-services support is postponed for the future). Including, it is planned to achieve parity with the main implementation in the SI language in areas such as network performance, CPU loads and reliability, as well as provide support for all security features.