Arti изначально развивается в форме модульной встраиваемой библиотеки, которую могут использовать различные приложения. При проектировании Arti учтён прошлый опыт разработки Tor, что позволило избежать известных архитектурных проблем, связанных с тем, что реализация на Си вначале была спроектирована как SOCKS-прокси, а уже потом подогнана под другие потребности.
Кроме модернизации архитектуры, причиной переписывания Tor на Rust стало желание повысить защищённость кода за счёт использования языка, обеспечивающего безопасную работу с памятью. По оценке разработчиков Tor, использование языка Rust без блоков «unsafe», позволит не допустить появления как минимум половины от всех типичных уязвимостей в проекте. Кроме того, предполагается, что Rust повысит скорость разработки благодаря выразительности языка и строгих гарантий, позволяющих не тратить время на двойные проверки и написание лишнего кода.
Значительное изменение номера версии произведено в соответствии с применяемой проектом моделью семантического версионирования и связано с внесением изменений, нарушающих обратную совместимость. Прекращена поддержка настроек proxy.socks_port и proxy.dns_port, ранее объявленных устаревшими, на смену которым пришли настройки proxy.socks_listen и proxy.dns_listen. Прекращена поддержка старого синтаксиса определения серверов директорий (Directory Authority). Помечены экспериментальными все программные интерфейсы crate-пакета arti, которые планируют переместить в другие crate-пакеты или удалить.
Из новой функциональности отмечается поддержка нового типа сокетов
«inet-auto» для автоматического назначения неиспользуемого TCP-порта для RPC-сервера. Продолжена реализация функциональности для релеев и серверов директорий. Для серверов директорий проведена работа по управлению сертификатами, добавлена возможность загрузки, верификации и хранения сертификатов. Для релеев реализована новая модульная архитектура управления цепочками узлов, поддержка создания каналов связи с другими релеями, поддержка обработки запросов согласования соединений и возможность работы релея в роли сервера при установке TLS-соединения.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64732
