Разработчики языка Rust предупредили об отключении 20 ноября 2023 года поддержки в репозитории crate.io неканонических загрузок, в которых используются нормализованные имена пакетов с заменёнными символами подчёркивания и дефиса. В качестве причины внесения изменения называется желания повысить надёжность и оптимизировать производительность...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60010
> До сих пор было не важно, подчёркивание или дефис указаны в имени при загрузке - crate.io автоматически приводил подобные ссылки к необходимому виду. Например, для размещённого в репозитории пакета "имя_пакета" при загрузке можно было указывать "имя-пакета" и наоборот. В репозитории также присутствует защита от размещения похожих имён, не позволяющая разместить пакет с именем "имя-пакета" если уже имеется пакет "имя_пакета".Как-то не безопасно. И вы доверяете этим людям?
> Наличие процедуры нормализации имён требует вызова специального обработчика, что не позволяет напрямую использовать сети доставки контента для отдачи запросов на загрузку пакетов.
Позволяет. Во многих CDN можно и гораздо более сложные правила настроить, а не такие редиректы. Возможно речь идет про спонсируемые/бесплатные.
> Кроме того, перебор вариантов создаёт дополнительную нагрузку на бэкенды и БД.
Не создает, если нормализовывать на фронте (как обычно и делают).
> Позволяет. Во многих CDN можно и гораздо более сложные правила настроить, а
> не такие редиректы. Возможно речь идет про спонсируемые/бесплатные.И как же CDN узнает в каких пакетах заменять символы, а в каких нет?
Они на клиенте должны быть заменены на абстрактные, а храниться и загружаться уже в этом формате.
> И как же CDN узнает в каких пакетах заменять символы, а в
> каких нет?Также как и любой веб-сервер - из конфига, обычно по регуляркам
https://developers.cloudflare.com/support/page-rules/configu.../
Как будто сесть на шеи бесплатным - плохо. Главное чтобы индекс с хэшсуммами был у себя.
> Как будто сесть на шеи бесплатным - плохо. Главное чтобы индекс с
> хэшсуммами был у себя.Смотря какому. Если это просто технология распределенная просто называется CDNом (а по сути что-то вроде торрента), то это мб и неплохо.
Если это классический централизованный CDN, но хорошо и ответственно работает, то это конечно угроза конфиденциальности и прочее, но как-то наверное работает.
Если это классический централизованный CDN, но по принципу "бесплатных в последнюю очередь" (ну или просто с плохой поддержкой), то пока проблем нет все как будто хорошо, а когда проблемы появятся, то иногда лучше бы CDNа и не было. Осложняется еще тем, что у вас проблем то может и не быть и все стало лучше, а вот у парня на другом краю земли (которому и должен был помочь CDN) все резко стало хуже, чем если бы он ходил напрямую.
Стандартизация, унификация и единообразие это всегда хорошо.
...говорили нам растоманы, а потом сами наделали таких же ошибок.
Их читать себя не уважать.
>Их читать себя не уважать.тем не менее ты здесь
А он тут пишет.
Так в ядре все дрова переломались. Всё, Карл!
Последние шаги перед полным закрытием. Одобряемо.
Такая же помойка, как и pypi и npm. Чего только стоит и тот факт, что люди тупо занимают как можно больше "хайповых" названий пакетов в которых "Hello World" с описанием типа: "я такой хороший сделал правильно дело `засекьюрил` это название! кто хочет развивать библиотеку под этим названием - свяжитесь со мной (контакты)". Дартаньян йопт, админы cargo должны таких людей вычищать с пермабанами.
> Такая же помойка, как и pypi и npm.Какие альтернативы? Писать всё с нуля?!
Настоящие советские программисты с профильным высшим инженерным образованием всё всегда пишут с нуля.
На Рапире
На Рефале. Рекомендую https://github.com/bmstu-iu9/refal-5-lambda/ или, если любите Rust - https://github.com/ilya-klyuchnikov/refal
Централизованные репозитории сорцов зло, только если нет жесткой модерации где все лежит в категории грубо говоря "мусорка", а если хочешь попасть в approved список то должен доказать качеством кода и нужностью, но это требует денег на зарплату команде модерации да.https://github.com/drogonframework/drogon вот пример у проекта грубо говоря 10 зависимостей.
а потом взгляни на вот это https://crates.io/crates/axum/0.6.20/dependencies и на "зависимости зависимостей" там наберется грубо говоря штук 200 пакетов, это только вопрос времени когда в один пакет встроят аналог leftpad.
В идеальном мире и пони розовые
В идеальном мире и программы на Rust без ошибок.
Гугол, 1ВМ и прочие, кто уже использует или планирует использовать раст, могли бы и раскошелиться хотя бы на одного-двух программистов для вычитывания хотя бы важнейших пакетов.
Если ты им совет хотел дать, то немного не туда запостил.
Что-то многие до сих пор по инерции поминают leftpad, даже когда это вообще не уместно. Будто бы только звон слышали
Проблема сабжа была в том, что автор мог ВЫПИЛИТЬ из репы собственный пакет. Не замусорить, не прекратить поддерживать, не что кто-то другой создаст пакет со схожим названием, а именно ПРАВО АВТОРА НА ПОЛНОЕ ВЫПИЛИВАНИЕ СВОЕГО ПАКЕТА ИЗ РЕПЫ, что вроде бы и справедливо ведь он всё-таки автор
Но право то у авторов, кстати, в итоге отобрали во избежание неведомой фигни
leftpad вспоминают не поэтому. То что автор выпилил пакет вскрыло проблему атомного п...ца, когда пакет однострочник был впихнут в зависимостях 100500 других пакетов.
Ну то что небольшие пакеты лежат в зависимостях у многих покрупнее - и до него не вызывало каких-то сомнений среди пользовавших тот же НПМ. Вообще-то многие из них порой являюстя связками кучи мелких пакетов
Просто, слишком много необоснованного шумаЯ, например, код пакетов, которые меньше пары тысяч строк - непосредственно заношу в проект в отдельные файлы, без зависимостей. Нередко и с выкидыванием лишнего мусора. Всё отлично работает и никаких проблем
Обновления же - обычно лишь ломают то что уже работало
Альтернатива - нормальный релиз-цикл, а не тащить в рот всё что попало.
Посмотрите, как организовано в современных C/C++ со сторонними библиотеками - и лучше пока не придумано.
Ведосипедостроение в С/С++ это самое худшее что можно придумать для управления зависимостей.В rust тоже можно сделать похоже уже сейчас, только вот зачем? Конечно, есть определённые ниши где это строго обязательно, но зачем заставлять страдать всех остальных?
Варианта два: либо вы нормально управляете зависимостями, с нормальным релиз-циклом и прочим.
Либо вы тащите в рот всё, что вам сунут, с предсказуемым в долгосроке результатом.
а теперь вот самое главное.
а как наличие необязательного пакетного менеджера влияет на то как кто-то разрабатывает свой проект и релиз-цикл и прочее?
Создаёт паттерн поведения.
> Чего только стоит и тот факт, что люди тупо занимают как можно больше "хайповых" названий пакетов в которых "Hello World" с описанием типа: "я такой хороший сделал правильно дело 'засекьюрил' это название! кто хочет развивать библиотеку под этим названием - свяжитесь со мной (контакты)". Дартаньян йопт, админы cargo должны таких людей вычищать с пермабанами.Это решается введением обязательных префиксов login/package_name. Тогда будет не hello_world, а vaysa/hello_world или google/hello_world.
>> Чего только стоит и тот факт, что люди тупо занимают как можно больше "хайповых" названий пакетов в которых "Hello World" с описанием типа: "я такой хороший сделал правильно дело 'засекьюрил' это название! кто хочет развивать библиотеку под этим названием - свяжитесь со мной (контакты)". Дартаньян йопт, админы cargo должны таких людей вычищать с пермабанами.
> Это решается введением обязательных префиксов login/package_name. Тогда будет не hello_world,
> а vaysa/hello_world или google/hello_world.В Golang именно так.
К сожалению, выбранный вами логин vasya уже занят. Не хотите ли выбрать vasya56491745502 ?(а теперь потренируйте своих пользователей отличать его от vasya56419745502 )
> К сожалению, выбранный вами логин vasya уже занят. Не хотите ли выбрать
> vasya56491745502 ?
> (а теперь потренируйте своих пользователей отличать его от vasya56419745502 )Сам придумал себе проблему? Молодец.
Стоит сказать, что cargo всегда использовал только канонические имена, так что для его пользователей поведение не изменится.
Жесть, может ещё орфографию через левый сайт проверяют? Больше ненужных зависимостей!
А это "подчёркивание", которое использует переводчик, - оно что подчёркивает?
В живом литературном языке "подчёркивание" всегда помещается внизу слова или буквы. Оно характеризует какое-либо граматическое или синтаксическое свойство. Например, можно подчёркиванием указать все гласные буквы в слове (полезно для школьников). Либо части речи, подлежащее обозначается одной чертой, глагол - двумя, сказуемое - волнистой линией.А точки и подчёркивания типа - flags.is_static является чисто программисткой манерой написания литер. В живом языке для разделения слов всегда использовался "пробел".
Судя по всему, сборки тормозят.Решили на спичках экономить.
Значит система управления проектом кривая. Вместо решения проблемы изображают деятельность.
"называйте пакеты как попало, мы их сами переименуем на сервере", - до такого только в расте могли додуматься
Так поступили потому, что дугой принцип "не называйте пакеты как попало" не работает.
Непосильная задача для растогоспод чтоле?
Эта болезнь называется "одержимость контролем".
Сами добавили, сами убрали?