LINUX.ORG.RU
ФорумTalks

И снова о подвигах растоводов: теперь и в CP

 , ,


0

2

Вот какая новость пришла к нам из комрадов из-за рубежа:

https://www.phoronix.com/news/Rust-Coreutils-cp-Ubuntu-Images

Оказывается, на расте не получилось написать даже полностью совместимый cp, чтобы он не ломал сборку дистра. Даже в busybox есть нормальной работающий cp, а в rust-coreutils нет. Пришлось возвращать на место старый-добрый GNU cp.

★★★★★

Вот это вот совсем непонятно. Выглядит как намеренное внесение отличий.

Я когда-то переписал кусок gentoolkit на perl(изначально оно на python). У меня оно работает на порядок(в прямом смысле, не преувеличение) быстрее на некоторых задачах, но у меня совместимость вплоть до пробелов и цветов в выхлопе. Такие вещи делаются же проще простого.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Вот это вот совсем непонятно. Выглядит как намеренное внесение отличий.

Нейроразнообразные во всех смыслах =)

Они зафейли совместимую реализацию опции L у cp.

-L, --dereference
              always follow symbolic links in SOURCE
praseodim ★★★★★
()

Но как же СВИТАЯ БИЗАПАСНОСТЬ!? Ведь если что-то пере-писать на расте, то оно сразу же мгновенно станет БИЗАПАСНЫМ, а соблюдение edge-cases и обратная совместимость — это для лохов.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 1)

Почитал каменты, стебутся там =))

This wouldn't have happened if it was written in Rust.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

Да, я сходил по ссылке. И вот это мне как раз непонятно. Как они тестировали свою реализацию, если просмотрели такой очевидный фейл? Или никак, или намеренно.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Собственно, с такими фейлами, я бы трижды подумал прежде чем брать rust-coreutils. Кто знает, каких ещё они там безопасных фейлов допустили с таким подходом в других утилитах?

shell-script ★★★★★
()
Ответ на: комментарий от thunar

Да как ты можешь сомневаться в идеальном коде святого ИИ, который буквально вчера уже заменил нас всех? ;)

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 1)

Ничего, проблемы исправят, причём быстро. А счётчик проверки временем уже давно запущен и количество счастливых юзеров (включая меня) растёт.

Good riddance, GNU.

kaldeon ★★
()
Ответ на: комментарий от kaldeon

Если там возникают такие проблемы, как в топике, то неважно, как быстро их исправляют. Такие проблемы говорят о том, что там код пишется очень плохо, а значит доверять такому нельзя.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Проблемы исправляются быстро, большинство тест-кейсов проходит – значит код пишется хорошо. От единичных ошибок, которые исправляются быстро, никто не застрахован. А как по-другому-то оценить качество кода?

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 3)
Ответ на: комментарий от kaldeon

От единичных ошибок, которые исправляются быстро, никто не застрахован.

Ошибки ошибкам рознь. То, что описано в топике - это ошибка, после которой этим софтом пользоваться нельзя. Это же coreutils.

А как по-другому-то оценить качество кода?

Т.е. по-твоему качество кода оценивают тогда, когда базовые функции падают в проде? Я не хотел бы работать с тобой в одной команде, если это так. По-другому такие детские ошибки, если это не диверсия, должны были быть исправлены до релиза. Это же детский сад. А если разработчики не могут такое отловить на тестах, в четвёртый раз повторяю, пользоваться софтом от этих разработчиков опасно.

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от shell-script

Т.е. по-твоему качество кода оценивают тогда, когда базовые функции падают в проде?

Не я начал это делать, а вы. Увидели ошибку и сразу обвиняете в этом качество кода. Я лишь указал, что если следовать этой логике чёрного ящика, то быстрое исправление редких ошибок не даёт никаких поводов усомниться в качестве кода.

По-другому такие детские ошибки … разработчики не могут такое отловить на тестах

Суть ошибки состоит в том, что при решении конфликта флагов -a (который раскрывается в -dpPR) и -L утилита пытается удалить флаг -a, но вместе с ним удаляет не только -dP, но и -pR.

Вы уверены в том, что обязательно смогли бы обнаружить эту ошибку на тестах? Тест бы сработал идеально при копировании файла или симлинка на файл. «Работает с файлом – значит сработает и с директорией» – это суждение очень близко к индукции, которое может совершить любой здравомыслящий человек, не заметив опасность в виде обработки состояния.

пользоваться софтом от этих разработчиков опасно

Жить вообще опасно. Куда примечательнее растущие показатели покрытия тестов и количества пользователей.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 2)
Ответ на: комментарий от anonymous_sama

Им нейросеть и код пишет, и тесты. Ну а дальше «нейросетевые тесты проверили нейросетевой код и не нашли нейросетевых ошибок».

Smacker ★★★★★
() автор топика

Подождите, где-то я это уже видел.. они же уже отказались от rust coreutils в ubuntu и откатились на сишные, или мне приснилось?

ant1
()

А я думал новость будет про то, что вычисление хэшей изображений для детектирования этого самого на Rust переписали.

shdown ★★
()
Ответ на: комментарий от kaldeon

флагов -a (который раскрывается в -dpPR)

пытается удалить флаг -a, но вместе с ним удаляет не только -dP, но и -pR

Ты сам-то понял хоть, что написал?

shell-script ★★★★★
()
Ответ на: комментарий от kaldeon

Вы уверены в том, что обязательно смогли бы обнаружить эту ошибку на тестах? Тест бы сработал идеально при копировании файла или симлинка на файл. «Работает с файлом – значит сработает и с директорией» – это суждение очень близко к индукции, которое может совершить любой здравомыслящий человек, не заметив опасность в виде обработки состояния.

Шарик, ты балбес! Мы говорим про coreutils, в котором очень разное поведение в зависимости от того, с чем работаем. Пробовал удалить файл? А каталог?

Любые операции с обычными файлами, каталогами и симлинками должны покрываться разными тестами - для coreutils это такой очевидный подход, что отсутствие его реализации о многом говорит.

Жить вообще опасно. Куда примечательнее растущие показатели покрытия тестов и количества пользователей.

Раз жить опасно, то зачем вообще вся эта мастурба с переписыванием? Сидели бы на опасной сишечке, на ней хоть всё работает уже.

Bfgeshka ★★★★★
()
Ответ на: комментарий от shell-script

У меня есть подозрения, что сейчас про юнит-тесты никто не слышал. А если кто и слышал - все забили. В итоге вылезает все то уже в использовании.

LightDiver ★★★★★
()
Ответ на: комментарий от Bfgeshka

Мы говорим про coreutils, в котором очень разное поведение в зависимости от того, с чем работаем.

chmod 0644 работает одинаково на файлах и каталогах.

cp -a уже, вероятно, был протестирован отдельно. При тестировании комбинации cp -aL не очевидно, что кроме логики обработки симлинков может ещё что-то случиться. А лишние тесты, где проверяется всё подряд без какого-либо обоснования — тоже плохо, ибо инфляция.

В общем, баг не указывает на проблему в подходе. Обычная человеческая ошибка.

зачем вообще вся эта мастурба с переписыванием?

Причины у всех разные. Для меня лично отказ от GNU и FSF на первом месте.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 2)
Ответ на: комментарий от anonymous_sama

А это не только они. Недавно была еще новость - кто то там что то переписал и уронил сервис на несколько часов. Десятки тысяч строк кода и все такое. Несколько часов восстанавливали из бэкапа. Ну такое невозможно, если есть тесты. Просто тестов нет вообще, вот и результат.

LightDiver ★★★★★
()
Ответ на: комментарий от Smacker

Тесты так не работают. Они проверяют определенную функциональность. Ты же не будешь переписывать тесты иишкой каждый раз под новый код? Тест он или работает или нет.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Ну, не знаю. Помнится, на работе писал я клиента к нашему внутреннему API по управлению серверами. И в процессе выяснил, что одна ручка возвращает список с дубликатами некоторых строк. Полез в исходники апишки, нашёл нужное место, увидел, что там просто нет метода, который эти дубликаты убирает. Ну забыли разрабы и, видимо, никто до меня к этой ручке не обращался. Ну набросал я этот метод на несколько строк, добавил заслал пулл-реквест. Так разработчики заставили меня к самому методу(повторю несколько очевидных строк) отдельно написать юнит-тесты и переписать тесты к ручке, чтобы добавить туда проверку на отсутсвие дубликатов. В итоге, если по строкам и времени считать, на тесты я потратил больше, чем на самом метод. Зато теперь и я, и разрабы точно знаем, что оно работает и будет работать так, как надо.

И да. Я не программист. А тут люди себя позиционируют как крутых спецов, о безопасности что-то рассказывают...

shell-script ★★★★★
()
Ответ на: комментарий от kaldeon

Для меня лично отказ от GNU и FSF на первом месте.

Ага. Пусть оно кривое, не работает и выдаёт ошибки. Главное, чтобы не GNU и не на сях. Ясно-понятно.

А потом мы удивляемся, почему современный софт всё чаще тормозит и глючит.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Вот это меня и удивляет - я издалека посмотрел на стандартизацию работы программистов. Профессиональных. Там все регламентировано и продумано обычно. Какие паттерны использовать, как писать, как писать совместно, как форматировать - каждый шаг и нюанс. Вплоть до того - какой стиль именования переменных используется в коде. И вдруг такое.

Если соблюдать правила, по идее такие ситуации в принципе не должны возникать.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 2)

Растоманов поймали на CP!!! Кто бы мог подумать.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от shell-script

Выступлю адвокатом раста, как обычно. Код тестируется на пользователях, потому что нет времени разрабам его тестировать. И не растовики придумали эту модель разработки. Точно так же функционирует ваш любимый Линукс.

seiken ★★★★★
()
Ответ на: комментарий от seiken

Да при чем тут время? Просто прогнать автоматически тесты - на это не нужно много времени. Тесты делают один раз на одну функциональность.

LightDiver ★★★★★
()
Ответ на: комментарий от pasquale

Нет, налицо впаривание мусора. В деталях незачем разбираться.

firkax ★★★★★
()
Ответ на: комментарий от shell-script

Я, в отличии от многих, очень хорошо отношусь к расту - на мозиллу благодаря ему уходит в разы меньше человеко-часов, чем на хром, но вот истерика переписать все на Раст - да, треш.

Shadow ★★★★★
()
Ответ на: комментарий от seiken

Так у меня вопросы не столько к rust, сколько к конкретно этим переписывателям. Как там сказал кто-то из классиков «Писать программу на фортране можно на любом языке». Вот тут они написали фигню. И написали не с нуля, а имея перед глазами полностью рабочий инструмент. Написать тесты тут сильно проще, даже выдумывать ничего не надо.

shell-script ★★★★★
()
Ответ на: комментарий от Shadow

очень хорошо отношусь к расту

Я его не знаю и не написал на нём ни строчки. У меня чисто субъективное отношение подпорчено тем, что у меня gentoo и для сборки раста надо собрать llvm, который мне в системе не нужен. Хорошо, что разрабы gentoo это понимают и для сборки тех трёх с половиной пакетов, которым требуется rust, есть пакет rust-bin. Если бы не эти три с половиной библиотеки(и это не firefox), которые принудительно переписали на rust, он бы мне вообще в системе не был бы нужен.

А вот переписывание уже работающего, да ещё и с ошибками, вызывает много вопросов к переписывателям.

shell-script ★★★★★
()
Ответ на: комментарий от kaldeon

Суть ошибки состоит в том, что при решении конфликта флагов -a (который раскрывается в -dpPR) и -L утилита пытается удалить флаг -a, но вместе с ним удаляет не только -dP, но и -pR.

Не знал, недостаточно внимательно вчитался в сообщения, подумал, что они вообще ошиблись в функциональности -L

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

А вот тут интересно, что тесты на совместимость можно было бы взять и готовые. GNU Test Suite из собственно GNU Core utils. Выходит их или не использовали или даже их недостаточно? Странно как-то получается.

praseodim ★★★★★
()
Ответ на: комментарий от pasquale

Нет же. uutils ставит перед собой цель 100% совместимости с реализацией coreutils. Любое расхождение — баг. Собственно, данный баг уже был исправлен на момент написания статьи (PR точно был).

Поэтому ничего документировать не надо и никакого вендор-лока нет.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от shell-script

Я полагаю, дело в идиотской моде, насаждаемой сверху.

Есть такой термин – minimal viable product – им обозначают что-то, что сделано быстро, дешево, с недостатками, но свою работу выполняет, и можно это продавать.

В классической профессиональной среде не принято гордиться подобным – да, на скорую руку из говна и палок лепят время от времени все, но этим не похвастаешь.

А вот теперь представь, что тебе нужно мотивировать людей этим заниматься 8/5, и ничем иным. Ну и придумали идеологию, где это норма, и даже – желательное и правильное поведение профи. А не вылизывание кода, как у гиков из маминого подвала.

А теперь вот жертвы этой промывки мозгов пишут системные утилиты. 95% времени не падает – ну и отлично, мы профи, мы сделали minimal viable product. А что в 5% ошибки – разве в реальном мире это так уж важно?

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Это очень грустно. Я такой подход никогда не пойму.

shell-script ★★★★★
()
Ответ на: комментарий от shdown

А я думал что rust-пропагандисты спалились на использовании «этого самого».

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от shell-script

Ну а что такого. Такие, как вы гентушники всё и протестируйте. У вас же гента не в проде, а на локалхосте?

seiken ★★★★★
()
Ответ на: комментарий от seiken

У вас же гента не в проде, а на локалхосте?

Всякое бывает. ;)

Такие, как вы гентушники всё и протестируйте.

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

shell-script ★★★★★
()
Ответ на: комментарий от LightDiver

Ну это некорректная параллель. Я и код ИИшкой писать не стану. А если кто код писать начал через жопу, так он и тесты так же через жопу писать будет.

Smacker ★★★★★
() автор топика
Ответ на: комментарий от shell-script

Тогда вас это вообще не затрагивает. Всю грязную работу делают за вас.

seiken ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)