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