The developers of the anonymous Tor network have released version 0.0.3 of the Arti project, which develops a Tor client written in Rust. The project is in an experimental development phase, trailing behind the functionality of the main Tor client written in C, and is not yet ready to fully replace it. Version 0.1.0 is expected to be released in March, positioned as the first beta of the project, with version 1.0 expected in the fall, which will stabilize the API, CLI, and settings, making it suitable for initial use by regular users. In the more distant future, when the Rust code reaches a level that can fully replace the C version, the developers intend to designate Arti as the main implementation of Tor and discontinue support for the C implementation.
Unlike the C implementation, which was initially designed as a SOCKS proxy and then adapted to other needs, Arti is being developed from the start as a modular embeddable library that various applications can use. Additionally, the development of the new project takes into account all past experiences in Tor development, which will help avoid known architectural problems and make the project more modular and efficient. The code is distributed under the Apache 2.0 and MIT licenses.
The reasons for rewriting Tor in Rust include the desire to achieve a higher level of code security by using a language that ensures safe memory operations. According to the developers of Tor, at least half of all vulnerabilities tracked by the project will be eliminated in the Rust implementation, provided that 'unsafe' blocks are not used in the code. Rust will also enable a higher speed of development compared to using C, due to the expressiveness of the language and strict guarantees that allow avoiding double checks and unnecessary code.
Notable changes in version 0.0.3 include a complete overhaul of the configuration system and its related API. This change allows settings to be modified dynamically in Rust while the Tor client is running. Additionally, a new system for preemptive circuit construction has been added, which takes previously used ports into account for proactively creating circuits that may be needed in the future.
Source: opennet.ru
