Разработчики анонимной сети Tor представили первый бета-выпуск (0.1.0) проекта Arti, развивающего Tor-клиент, написанный на языке Rust. Проект имеет статус экспериментальной разработки, отстаёт от функциональности от основного клиента Tor на языке Си и пока не готов полноценно заменить его. В сентябре планируется сформировать выпуск 1.0 со стабилизацией API, CLI и настроек, который будет пригоден для начального использования обычными пользователями. В более отдалённом будущем, когда код на Rust достигнет уровня, способного полностью заменить вариант на Си, разработчики намерены придать Arti статус основной реализации Tor и прекратить сопровождение реализации на Си.
В отличие от реализации на Си, которая вначале была спроектирована как SOCKS-прокси, а уже потом подогнана под другие потребности, Arti изначально развивается в форме модульной встраиваемой библиотеки, которую смогут использовать различные приложения. Кроме того, при разработке нового проекта учитывается весь прошлый опыт разработки Tor, что позволит избежать известных архитектурных проблем, сделать проект более модульным и эффективным. Код распространяется под лицензиями Apache 2.0 и MIT.
В качестве причин переписывания Tor на Rust называется желание добиться более высокого уровня защищённости кода за счёт использования языка, обеспечивающего безопасную работу с памятью. По оценке разработчиков Tor, как минимум половина всех отслеживаемых проектом уязвимостей будет исключена в реализации на Rust, если в коде не используются блоки “unsafe”. Rust также даст возможность добиться более высокой скорости разработки, чем при использовании Си, за счёт выразительности языка и строгих гарантий, позволяющих не тратить время на двойные проверки и написание лишнего кода.
Из изменений в выпуске 0.1.0 отмечается базовая стабилизация высокоуровневых API и доведение библиотеки до готовности к экспериментальной интеграции с другими проектами. Из изменений упоминается добавление API для создания экземпляров TorClient, в том числе с возможностью сборки и инициализации (bootstrap) в фоновом режиме при первом использовании. Кроме того, добавлен новый высокоуровневый API для обработки ошибок.
До публикации выпуска 1.0.0 разработчики намерены обеспечить в Arti полную поддержки работы в роли клиента Tor, обеспечивающего доступ к интернет (реализации поддержки onion-сервисов отложена на будущее). В том числе планируется добиться паритета с основной реализацией на языке Си в таких областях, как сетевая производительность, нагрузка на CPU и надёжность, а также обеспечить поддержку всех возможностей, связанных с безопасностью.