Разработчики языка Rust предупредили об отключении 20 ноября 2023 года поддержки в репозитории crate.io неканонических загрузок, в которых используются нормализованные имена пакетов с заменёнными символами подчёркивания и дефиса. В качестве причины внесения изменения называется желания повысить надёжность и оптимизировать производительность.
До сих пор было не важно, подчёркивание или дефис указаны в имени при загрузке – crate.io автоматически приводил подобные ссылки к необходимому виду. Например, для размещённого в репозитории пакета “имя_пакета” при загрузке можно было указывать “имя-пакета” и наоборот. В репозитории также присутствует защита от размещения похожих имён, не позволяющая разместить пакет с именем “имя-пакета” если уже имеется пакет “имя_пакета”.
Наличие процедуры нормализации имён требует вызова специального обработчика, что не позволяет напрямую использовать сети доставки контента для отдачи запросов на загрузку пакетов. Кроме того, перебор вариантов создаёт дополнительную нагрузку на бэкенды и БД. Анализ логов показал, что неканонические имена используются только в запросах с User Agent cargo-binstall/1.1.2, Faraday v0.17.6, Go-http-client/2.0, GNU Guile и python-requests/2.31.0. Автор утилиты cargo-binstall, используемой для установки бинарных артефактов к пакетам, уже внёс изменения, учитывающие грядущее отключение поддержки неканонических имён.