The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В репозитории Rust-пакетов будет прекращена поддержка неканонических загрузок

28.10.2023 19:02

Разработчики языка Rust предупредили об отключении 20 ноября 2023 года поддержки в репозитории crates.io неканонических загрузок, в которых используются нормализованные имена пакетов с заменёнными символами подчёркивания и дефиса. В качестве причины внесения изменения называется желания повысить надёжность и оптимизировать производительность.

До сих пор было неважно, подчёркивание или дефис указаны в имени при загрузке - crates.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, используемой для установки бинарных артефактов к пакетам, уже внёс изменения, учитывающие грядущее отключение поддержки неканонических имён. В утилите cargo изначально использовались только канонические имена.

  1. Главная ссылка к новости (https://blog.rust-lang.org/202...)
  2. OpenNews: Выпуск языка программирования Rust 1.73
  3. OpenNews: Открытие кода Rust-компилятора Ferrocene
  4. OpenNews: Проект NGINX опубликовал инструментарий для разработки модулей на языке Rust
  5. OpenNews: Google переписал на языке Rust прошивку pvmfm, используемую в Android
  6. OpenNews: JetBrains представил IDE RustRover и прекратил разработку открытого плагина intellij-rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60010-rust
Ключевые слова: rust, crate
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (45) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, keydon (ok), 19:15, 28/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > До сих пор было не важно, подчёркивание или дефис указаны в имени при загрузке - crate.io автоматически приводил подобные ссылки к необходимому виду. Например, для размещённого в репозитории пакета "имя_пакета" при загрузке можно было указывать "имя-пакета" и наоборот. В репозитории также присутствует защита от размещения похожих имён, не позволяющая разместить пакет с именем "имя-пакета" если уже имеется пакет "имя_пакета".

    Как-то не безопасно. И вы доверяете этим людям?

    > Наличие процедуры нормализации имён требует вызова специального обработчика, что не позволяет напрямую использовать сети доставки контента для отдачи запросов на загрузку пакетов.

    Позволяет. Во многих CDN можно и гораздо более сложные правила настроить, а не такие редиректы. Возможно речь идет про спонсируемые/бесплатные.

    > Кроме того, перебор вариантов создаёт дополнительную нагрузку на бэкенды и БД.

    Не создает, если нормализовывать на фронте (как обычно и делают).

     
     
  • 2.7, Аноним (7), 20:11, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Позволяет. Во многих CDN можно и гораздо более сложные правила настроить, а
    > не такие редиректы. Возможно речь идет про спонсируемые/бесплатные.

    И как же CDN узнает в каких пакетах заменять символы, а в каких нет?

     
     
  • 3.45, kusb (?), 22:42, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Они на клиенте должны быть заменены на абстрактные, а храниться и загружаться уже в этом формате.
     
  • 3.56, keydon (ok), 13:58, 30/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > И как же CDN узнает в каких пакетах заменять символы, а в
    > каких нет?

    Также как и любой веб-сервер - из конфига, обычно по регуляркам
    https://developers.cloudflare.com/support/page-rules/configuring-url-forwardin

     
  • 2.10, Аноним (10), 20:18, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Как будто сесть на шеи бесплатным - плохо. Главное чтобы индекс с хэшсуммами был у себя.
     
     
  • 3.57, keydon (ok), 14:03, 30/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Как будто сесть на шеи бесплатным - плохо. Главное чтобы индекс с
    > хэшсуммами был у себя.

    Смотря какому. Если это просто технология распределенная просто называется CDNом (а по сути что-то вроде торрента), то это мб и неплохо.
    Если это классический централизованный CDN, но хорошо и ответственно работает, то это конечно угроза конфиденциальности и прочее, но как-то наверное работает.
    Если это классический централизованный CDN, но по принципу "бесплатных в последнюю очередь" (ну или просто с плохой поддержкой), то пока проблем нет все как будто хорошо, а когда проблемы появятся, то иногда лучше бы CDNа и не было. Осложняется еще тем, что у вас проблем то может и не быть и все стало лучше, а вот у парня на другом краю земли (которому и должен был помочь CDN) все резко стало хуже, чем если бы он ходил напрямую.

     

  • 1.3, Пишу с 3 пня (?), 19:28, 28/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Стандартизация, унификация и единообразие это всегда хорошо.
     
     
  • 2.6, Аноним (6), 19:56, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    ...говорили нам растоманы, а потом сами наделали таких же ошибок.
     
     
  • 3.16, Аноним (16), 22:09, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Их читать себя не уважать.
     
     
  • 4.39, Советский инженер (ok), 12:12, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Их читать себя не уважать.

    тем не менее ты здесь

     
     
  • 5.46, Аноним (46), 22:58, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А он тут пишет.
     
  • 2.9, Аноним (9), 20:16, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Так в ядре все дрова переломались. Всё, Карл!
     

  • 1.8, Аноним (9), 20:14, 28/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Последние шаги перед полным закрытием. Одобряемо.
     
  • 1.12, cheburnator9000 (ok), 20:59, 28/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Такая же помойка, как и pypi и npm. Чего только стоит и тот факт, что люди тупо занимают как можно больше "хайповых" названий пакетов в которых "Hello World" с описанием типа: "я такой хороший сделал правильно дело 'засекьюрил' это название! кто хочет развивать библиотеку под этим названием - свяжитесь со мной (контакты)". Дартаньян йопт, админы cargo должны таких людей вычищать с пермабанами.
     
     
  • 2.13, Аноним (13), 21:01, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Такая же помойка, как и pypi и npm.

    Какие альтернативы? Писать всё с нуля?!

     
     
  • 3.14, Аноним (14), 22:01, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Настоящие советские программисты с профильным высшим инженерным образованием всё всегда пишут с нуля.
     
     
  • 4.29, Аноним (29), 03:51, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    На Рапире
     
     
  • 5.53, Аноним (53), 10:15, 30/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На Рефале. Рекомендую https://github.com/bmstu-iu9/refal-5-lambda/ или, если любите Rust - https://github.com/ilya-klyuchnikov/refal
     
  • 3.20, cheburnator9000 (ok), 22:26, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Централизованные репозитории сорцов зло, только если нет жесткой модерации где все лежит в категории грубо говоря "мусорка", а если хочешь попасть в approved список то должен доказать качеством кода и нужностью, но это требует денег на зарплату команде модерации да.

    https://github.com/drogonframework/drogon вот пример у проекта грубо говоря 10 зависимостей.

    а потом взгляни на вот это https://crates.io/crates/axum/0.6.20/dependencies и на "зависимости зависимостей" там наберется грубо говоря штук 200 пакетов, это только вопрос времени когда в один пакет встроят аналог leftpad.

     
     
  • 4.21, Аноним (14), 22:54, 28/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В идеальном мире и пони розовые
     
     
  • 5.47, Аноним (46), 22:59, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В идеальном мире и программы на Rust без ошибок.
     
  • 4.43, YetAnotherOnanym (ok), 16:47, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Гугол, 1ВМ и прочие, кто уже использует или планирует использовать раст, могли бы и раскошелиться хотя бы на одного-двух программистов для вычитывания хотя бы важнейших пакетов.
     
     
  • 5.48, Аноним (46), 23:00, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если ты им совет хотел дать, то немного не туда запостил.
     
  • 4.52, Бывалый смузихлёб (?), 08:19, 30/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то многие до сих пор по инерции поминают leftpad, даже когда это вообще не уместно. Будто бы только звон слышали
    Проблема сабжа была в том, что автор мог ВЫПИЛИТЬ из репы собственный пакет. Не замусорить, не прекратить поддерживать, не что кто-то другой создаст пакет со схожим названием, а именно ПРАВО АВТОРА НА ПОЛНОЕ ВЫПИЛИВАНИЕ СВОЕГО ПАКЕТА ИЗ РЕПЫ, что вроде бы и справедливо ведь он всё-таки автор
    Но право то у авторов, кстати, в итоге отобрали во избежание неведомой фигни
     
     
  • 5.54, 1 (??), 11:09, 30/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    leftpad вспоминают не поэтому. То что автор выпилил пакет вскрыло проблему атомного п...ца, когда пакет однострочник был впихнут в зависимостях 100500 других пакетов.
     
     
  • 6.58, Бывалый смузихлёб (?), 14:24, 30/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну то что небольшие пакеты лежат в зависимостях у многих покрупнее - и до него не вызывало каких-то сомнений среди пользовавших тот же НПМ. Вообще-то многие из них порой являюстя связками кучи мелких пакетов
    Просто, слишком много необоснованного шума

    Я, например, код пакетов, которые меньше пары тысяч строк - непосредственно заношу в проект в отдельные файлы, без зависимостей. Нередко и с выкидыванием лишнего мусора. Всё отлично работает и никаких проблем
    Обновления же - обычно лишь ломают то что уже работало

     
  • 3.31, Tron is Whistling (?), 09:02, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Альтернатива - нормальный релиз-цикл, а не тащить в рот всё что попало.
    Посмотрите, как организовано в современных C/C++ со сторонними библиотеками - и лучше пока не придумано.
     
     
  • 4.33, Аноним (33), 09:45, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ведосипедостроение в С/С++ это самое худшее что можно придумать для управления зависимостей.

    В rust тоже можно сделать похоже уже сейчас, только вот зачем? Конечно, есть определённые ниши где это строго обязательно, но зачем заставлять страдать всех остальных?

     
     
  • 5.37, Tron is Whistling (?), 11:17, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Варианта два: либо вы нормально управляете зависимостями, с нормальным релиз-циклом и прочим.
    Либо вы тащите в рот всё, что вам сунут, с предсказуемым в долгосроке результатом.
     
     
  • 6.38, Советский инженер (ok), 12:07, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    а теперь вот самое главное.
    а как наличие необязательного пакетного менеджера влияет на то как кто-то разрабатывает свой проект и релиз-цикл и прочее?
     
     
  • 7.41, Tron is Whistling (?), 13:55, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Создаёт паттерн поведения.

     
  • 2.27, Вы забыли заполнить поле Name (?), 00:24, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Чего только стоит и тот факт, что люди тупо занимают как можно больше "хайповых" названий пакетов в которых "Hello World" с описанием типа: "я такой хороший сделал правильно дело 'засекьюрил' это название! кто хочет развивать библиотеку под этим названием - свяжитесь со мной (контакты)". Дартаньян йопт, админы cargo должны таких людей вычищать с пермабанами.

    Это решается введением обязательных префиксов login/package_name. Тогда будет не hello_world, а vaysa/hello_world или google/hello_world.

     
     
  • 3.28, cheburnator9000 (ok), 01:17, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Чего только стоит и тот факт, что люди тупо занимают как можно больше "хайповых" названий пакетов в которых "Hello World" с описанием типа: "я такой хороший сделал правильно дело 'засекьюрил' это название! кто хочет развивать библиотеку под этим названием - свяжитесь со мной (контакты)". Дартаньян йопт, админы cargo должны таких людей вычищать с пермабанами.
    > Это решается введением обязательных префиксов login/package_name. Тогда будет не hello_world,
    > а vaysa/hello_world или google/hello_world.

    В Golang именно так.

     
  • 3.44, cargo admin (?), 22:26, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению, выбранный вами логин vasya уже занят. Не хотите ли выбрать vasya56491745502 ?

    (а теперь потренируйте своих пользователей отличать его от vasya56419745502 )

     
     
  • 4.50, Вы забыли заполнить поле Name (?), 23:27, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > К сожалению, выбранный вами логин vasya уже занят. Не хотите ли выбрать
    > vasya56491745502 ?
    > (а теперь потренируйте своих пользователей отличать его от vasya56419745502 )

    Сам придумал себе проблему? Молодец.

     

  • 1.19, freecoder (ok), 22:12, 28/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Стоит сказать, что cargo всегда использовал только канонические имена, так что для его пользователей поведение не изменится.
     
  • 1.30, КО (?), 06:48, 29/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Жесть, может ещё орфографию через левый сайт проверяют? Больше ненужных зависимостей!
     
  • 1.32, Аноним (32), 09:17, 29/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А это "подчёркивание", которое использует переводчик, - оно что подчёркивает?
     
     
  • 2.34, Аноним (-), 10:04, 29/10/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В живом литературном языке "подчёркивание" всегда помещается внизу слова или буквы. Оно  характеризует какое-либо граматическое или синтаксическое свойство. Например, можно подчёркиванием указать все гласные буквы в слове (полезно для школьников). Либо части речи, подлежащее обозначается одной чертой, глагол - двумя, сказуемое - волнистой линией.

    А точки и подчёркивания типа - flags.is_static является чисто программисткой манерой написания литер. В живом языке для разделения слов всегда использовался "пробел".

     

  • 1.36, Аноним (36), 10:59, 29/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Судя по всему, сборки тормозят.

    Решили на спичках экономить.

    Значит система управления проектом кривая. Вместо решения проблемы изображают деятельность.

     
  • 1.51, Банан (?), 08:14, 30/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    "называйте пакеты как попало, мы их сами переименуем на сервере", - до такого только в расте могли додуматься
     
     
  • 2.59, Аноним (59), 16:47, 30/10/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так поступили потому, что дугой принцип "не называйте пакеты как попало" не работает.
     
     
  • 3.60, Аноним (60), 01:57, 31/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Непосильная задача для растогоспод чтоле?
     
  • 2.61, Аноним (61), 15:35, 31/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Эта болезнь называется "одержимость контролем".
     

  • 1.55, Пряник (?), 11:46, 30/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сами добавили, сами убрали?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру