URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 138324
[ Назад ]

Исходное сообщение
"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du в uutils и GNU Coreutils "

Отправлено opennews , 10-Ноя-25 11:04 
Опубликован выпуск проекта uutils coreutils 0.4.0 (Rust Coreutils), развивающего аналог пакета GNU Coreutils, написанный на языке Rust. В состав coreutils входит более ста утилит, включая sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Целью проекта является создание кроссплатформенной альтернативной реализации Coreutils, среди прочего способной работать на платформах Windows, Redox и Fuchsia...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=64214


Содержание

Сообщения в этом обсуждении
"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено localhostadmin , 10-Ноя-25 11:04 
>работать на платформах Windows, Redox и Fuchsia

А зачем это на винде?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:08 
более того... зачем оно вообще ?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:21 
> показывает размеры каждого каталога с вычетом вложенных каталогов, из-за чего их размер получается меньше фактического

Учитывая, что ещё и работает неправильно.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:39 
Это GNUтая версия показывает неправильно)))

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:22 
Ты чем читал?

В uutils: total # больше фактического


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:40 
> Ты чем читал?
> В uutils: total # больше фактического

GNU Utils
>> 33955   /var # меньше фактического


-s, --summarize
              display only a total for each argument
-c, --total
              produce a grand total

Ну и бсдшный du :


du -smc /var/log /var
7    /var/log
939    /var
945    total

du -smc /var /var/log  
939    /var
7    /var/log
945    total
# гнутый du
gdu -smc /var/log /var
7    /var/log
932    /var
939    total

gdu -smc /var /var/log  
939    /var
939    total


а так - все хорошо, прекрасная маркиза!


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:43 
Почему у раста сумма двух чисел не равна их сумме?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:55 
> Почему у раста сумма двух чисел не равна их сумме?

Где ты в бсдшном du нашел раст?
И да, спецом для тебя:
-m      Display block counts in 1048576-byte (1 MiB) blocks.
Если сначала считать в байтах, суммировать, а потом округлить в блоки, то сумма вполне может быть != округлять в блоки и считать сумму.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:46 
> 37034   total # больше фактического, но соответствует сумме

но НЕ соответствует сумме, т.к. растманы не умеют складывать числа. Пытаются оправдаться на какое-то округление блоков, пишут, что соответствует, но в реальности не соответствует, раст облажался во всём.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:00 
А зачем комментарий обрезал???))))

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:03 
Ты это хотел увидеть?

> соответствует сумме

НЕ соответствует. Раст: 1540 + 35495 = 37035 != 37033


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:34 
> Ты это хотел увидеть?
>> соответствует сумме
> НЕ соответствует. Раст: 1540 + 35495 = 37035 != 37033

Соответствует.
-m     like --block-size=1M

Просто ты классический Воен Супротив Раста, тебе некогда разбираться в "мелочах", тебе ведь Голактеку от Раста спасать надо! 😀


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:34 
В uutils:

1540 + 35495 = 37035 != 37033!


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:15 
ну здрасьте, лет 10 планомерно выкидываем гну на мороз и тут такие вопросы. Если вы не интересуетесь опенсорсом, то к чему тогда вопросы?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:42 
Слышал про MSYS2 или хотя бы Git for windows?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:15 
ну так там все utils собраны mingw64 зачем там что-то еще ?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:29 
В Msys2 оригинальные GNU Coreutils.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Да ну нахер , 10-Ноя-25 15:01 
>А зачем это на винде?

А зачем кривой косой вечно недопереписанный линукс, если можно взять настоящую операционную систему и просто установить на нее нужные утилиты?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:15 
> А зачем кривой косой вечно недопереписанный линукс, если можно взять настоящую
> операционную систему и просто установить на нее нужные утилиты?

Затем что:
1) в линухе у меня проекты билдуются - в разы быстрее. А я не маклауд тормозную ос ждать.
2) не делают мозги онлайн акаунтами, активациями, рекламой, AI в блокноте и отсылкой клавиш майкрософту для улучшения качества обслуживания.
3) в винде изначально вообще пакетногом манагера нет и установка софта VS linux это ужасный гемор, занимающий намного больше времени.
4) при попытке собрать что-то типа linux kernel винды вообще пожалуй загнутся нахрен.
5) с автоматизацией, родным тулингом и проч в винде полный кошмар, настолько что они вот в WSL вдарились и прочие msys.

В общем - нормальная операционка для буха Глаши и прочих кассиров с операторами ПК. Если кто хотел взаимодействие с компом на более продвинутом уровне - УПС. Винды это сущий кошмар. И майкрософт как вендор - головняка кусок.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:43 
боюсь что даже буху Глаше винда не оченьто и подходит, иначе зачем им тп и админы которых они дергают на каждый чих.

лично я не считаю винду осью вообще, как была оболочка для дос так и осталась, из коробки не умеет вообще ничего, драйвера поставь софт поставь, в чем автоматизация, если можно поставить драйвера и соыт для любого рандомного загрузчика, и он тоже будет копировать файлы...и что lilo или grub теперь тоже назвать ос

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

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


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Медведь , 10-Ноя-25 15:22 
Навскидку: https://habr.com/ru/news/962756/
Упс, как же так? Это же НАСТОЯЩАЯ ОС!

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:52 
можно взять freebsd так то да

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:07 
>Дополнительно можно отметить расхождение в поведении утилиты "du" из наборов uutils и GNU Coreutils, всплывшее после перехода Ubuntu 25.10 на uutils. Разработчики ещё не решили трактовать ли данное расхождение как ошибку, так как с одной стороны в поведении uutils есть логика и тестовый набор GNU Coreutils не выявляет проблем

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


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:10 
Не совсем понятно как это чудовище вообще могло что-то облегчить

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено ZloySergant , 10-Ноя-25 13:38 
>Не совсем понятно как это чудовище вообще могло что-то облегчить

Раст-то? Пыталось мой желудок, когда я синтаксис увидел.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:15 
Неосиляторы как всегда ругают синтаксис

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Соль земли2 , 10-Ноя-25 11:39 
Трудно жить с руками из плеч?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:40 
Так это GNUтые тесты такие, а не uutils)))

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено User , 10-Ноя-25 11:44 
Э! Тесты же ж от пакета GNU Coreutil используются - никто их вроде бы на rust переписывать не собирался. Вот что по ходу могут правочки появиться - это да - но на стороне _тестов_ (Читай - GNU) а не уот тут уот.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:51 
Мне казалось, что шутки про весь мир неподходящий для Rust всего лишь шутки...

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено User , 10-Ноя-25 12:08 
Новость-не-читай-комментарий-оставляй? Тест - GNU'тый - ПРОХОДИТСЯ.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:02 
Тесты проходят, а программа правильно не работает. Чудеса.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:45 
> Тесты проходят, а программа правильно не работает. Чудеса.

Ну-ну.


# гну
gdu -smc /var/log /var
7    /var/log
935    /var
942    total

busybox du -smc /var/log /var
7    /var/log
935    /var
941    total

# бсд
du -smc /var/log /var
7    /var/log
942    /var
948    total

# uutils
uu-du -smc /var/log /var
7    /var/log
942    /var
948    total



"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 15:59 
Ну это легко объяснимо. Видите ли, POSIX не стоит на месте.

Так, например, в стандарте POSIX.1-2018, написано[1]:

> A file that occurs multiple times under one file operand and that has a link count greater than 1 shall be counted and written for only one entry. It is implementation-defined whether a file that has a link count no greater than 1 is counted and written just once, or is counted and written for each occurrence. It is implementation-defined whether a file that occurs under one file operand is counted for other file operands.

А вот в стандарте POSIX.1-2024, на который я ссылался ранее[2], написано следующее:

> A file that occurs multiple times shall be counted and written for only one entry, even if the occurrences are under different file operands.

Так что BSD du удовлетворяет стандарту 2018го года, а GNU du -- более свежему стандарту 2024го года.

[1] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/d...
[2] https://pubs.opengroup.org/onlinepubs/9799919799/utilities/d...


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:45 
> Так что BSD du удовлетворяет стандарту 2018го года, а GNU du --
> более свежему стандарту 2024го года.

Я бы сильно удивился, если бы du из 13 фряхи удовлетворял 😉:
ll /usr/bin/du
-r-xr-xr-x  1 root  wheel    13K 21 Nov.  2022 /usr/bin/du*


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 17:02 
> ll /usr/bin/du
> -r-xr-xr-x  1 root  wheel    13K 21 Nov. 2022 /usr/bin/du*

Ну вот видите, ларчик-то просто открывался. =)

Я вот из интереса смотрел на du из базовой поставки MacOS -- там точно такая же ситуация.
Интересно было бы узнать, это BSD-шники свой du давно не обновляли, или Apple просто редко утягивает актуальные версии?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Анонимусс , 10-Ноя-25 16:41 
# бсд
# uutils

Ну так логично же.
uutils ориентировались на свободные бсдшные утилиты, а не на гнурак.
А busybox тоже под жпл, поэтому списывали они с gnu утилит.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:03 
Ну так все вопросы к сишникам, что такие кривые тесты написали.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Медведь , 10-Ноя-25 14:27 
> Ну так все вопросы к сишникам, что такие кривые тесты написали

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


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:34 
Опять сишники в штаны Расту ... Надо же было умудриться, что у раста total не соответствует ни фактически занимаемому месту, ни сумме элементов из-за округлений при целочисленном сложении.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:58 
Растройхетеры опять просчитались, но где?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:36 
Где-то тут:

В uutils: ... total # больше фактического

причём НЕ соответствует сумме. Растманы объясняют ошибку целочисленного сложения "округлением".


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:23 
Много раз здесь повторяли. Это просто тесты. Это не тесты на совместимость. Их никто так не писал.

Поэтому упоминание этих тестов в новостях, без оговаривания данного факта, является обманом.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено User , 10-Ноя-25 16:12 
> Много раз здесь повторяли. Это просто тесты. Это не тесты на совместимость.
> Их никто так не писал.
> Поэтому упоминание этих тестов в новостях, без оговаривания данного факта, является обманом.

Ну, т.е. выводит du _какую-то_ сумму - а какую именно GNU Coreutils не интересно, лишь бы не пустоту. Выдает date -r file _какую-то_ дату (А может и не "дату" - "строку", во!) - и опять-таки, тесты не для совместимости сделаны - тесты хорошие!
Ляпотаааа... Вот прям даже не знаю, кто тут эээээ больший чудак выходит.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:17 
> Почему язык, который должен был облегчить программирование только усложнил его?

Ну что вы как маленький, решая 1 проблему - создали 100 новых. И получился такой себе брейнфак 2.0. Хотя современные C++ могут заспорить за это звание. Но это не точно.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:39 
>Проблема в том, что переписанные тесты переписаны также качественно

Где воен против погр=аного раста увидел, что тесты переписаны?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Мурзин , 10-Ноя-25 11:09 
Я правильно понимаю, что Столман и компания не правильно считали байты? И им показали как нужно.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Stanislavvv , 10-Ноя-25 11:16 
Скорее, это совместимость с чем-то более ранним.
Факт в том, что uutils ломают совместимость между системами. Даже если это на самом деле баг, на это может быть что-то завязано.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 12:23 
> Даже если это на самом деле баг, на это может быть что-то завязано.

Это не баг. Я нашёл.

Вот как описывается du в POSIX.1-2024: https://pubs.opengroup.org/onlinepubs/9799919799/utilities/d...

> A file that occurs multiple times shall be counted and written for only one entry, even if the occurrences are under different file operands.

Иными словами это поведение -- часть стандарта.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Анонимусс , 10-Ноя-25 15:44 
> Иными словами это поведение -- часть стандарта.

А какой-то линукс posix compliant?
Если нет, то какие вообще перетензии?))

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

2018 "It is implementation-defined whether a file that occurs under one file operand is counted for other file operands. The directory entry that is selected in the report is unspecified."
pubs.opengroup.org/onlinepubs/9699919799/utilities/du.html



"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 16:21 
А никаких претензий. Вы в своём праве считать новую логику "наркоманской" и не имплементировать её.
Если разработчики uutils решат положить болт на POSIX compliance, для СПО это может будет даже хорошо.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:40 
>Нет никаких причин переносить наркоманскую логику разработчиков посикса

Есть. Поскольку без посикса это уже будет не замена gnu coreutils, а соврешенно другой проект.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено bdrbt , 10-Ноя-25 13:32 
Они ничего не ломают, они изначально не заявляли 100% совместимость, но благодаря убуинам которые потащили их в прод не провери, все вопят о "сломанности".

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:41 
Вообще то заявлено целью. Не сломано - да. Но, как обычно, не дописано.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено User , 10-Ноя-25 13:48 
> Они ничего не ломают, они изначально не заявляли 100% совместимость, но благодаря
> убуинам которые потащили их в прод не провери, все вопят о
> "сломанности".

Вообще-то - 100% совместимость с GNU Coreutils там на github'е в project goals заявлена.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:20 
> Вообще-то - 100% совместимость с GNU Coreutils там на github'е в project
> goals заявлена.

Обещать - не значит жениться.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено User , 10-Ноя-25 15:37 
>> Вообще-то - 100% совместимость с GNU Coreutils там на github'е в project
>> goals заявлена.
> Обещать - не значит жениться.

"Горизонт, Петька - он как КОММУНИЗМ - удаляется по мере вашего к нему приближения..."


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:51 
Заявлена полная совместимость, а любая несовместимость считается ошибкой.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 11:22 
> Я правильно понимаю, что Столман и компания не правильно считали байты? И им показали как нужно.

Ну вообще-то, если строго посмотреть на цифры, то в GNU Coreutils подсчёт как раз верен: если сначала считается подкаталог, а потом топ-каталог, то в топ-каталоге не учитываются файлы, уже подсчитанные в подкаталоге. А если сначала считается топ-каталог, то подкаталоги уже не считаются.

Честно говоря, я об этом не знал. Но если хорошенько подумать, это вполне логично. А вот то, что uutils выводит неверный total -- это неудобно совсем и 100% является ошибкой.

upd: выяснил, что это поведение -- часть стандарта POSIX. См #40


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Fyji , 10-Ноя-25 15:51 
> Но если хорошенько подумать, это вполне логично.

Где же логично?
Я попросил посчитать размеры нескольких каталогов - напр. некий общий каталог и каталоги каждого пользователя в нем.  
Мне нужны реальные размеры каждого из них, а не сидеть и суммировать всех пользователей чтобы узнать правильный размер общего как это возвращает GNU


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 16:30 
Ну вот ты и укажешь du -smc /home/* /home, и получишь именно то, что хочешь:
- по одной строке с суммой на каждый каталог пользователя
- строку с /home, где будет просуммировано всё, что не вошло в /home/*
- и строку total с корректным общим размером /home со всеми подкаталогами

Альтернативно, ты можешь указать du -md 1 /home, и тогда ты получишь:
- по одной строке с суммой на каждый каталог пользователя
- строку с /home, где будет учтено всё, что находится в /home со всеми подкаталогами

Фишка нового поведения по стандарту 2024-го года как раз в том, что ты можешь получить размеры конкретных подкаталогов отдельно от того, что остаётся в топ-каталоге, плюс вывести корректный total.
Это более гибкое поведение: ты получаешь всё необходимое с одного запуска du, и не надо дополнительно второй раз его гонять с эксклудами. Удобно ж.

PS: И это мы ещё не поднимали вопрос о том, что старое поведение выводило завышенный total, что делало данную строчку вообще невалидной.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:28 
> Я правильно понимаю

Нет. Раст не умеет считать: "total # больше фактического"


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:29 
>> Я правильно понимаю
> Нет. Раст не умеет считать: "total # больше фактического"

А  /var # меньше фактического
этодругоепониматьнадо?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:37 
Раст, в uutils: 1540 + 35495 = 37035 != 37033!
Это как?! Даже сложение на расте неправильное.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:48 
> Раст, в uutils: 1540 + 35495 = 37035 != 37033!
> Это как?! Даже сложение на расте неправильное.

Не, это ты не умеешь в доку.
--
>  -m      Display block counts in 1048576-byte (1 MiB) blocks.

du -smc /var /var/log  
939    /var
7    /var/log
945    total
--



"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:52 
О, не знал, что раст даже целочисленные количества складывать не умеет, но растманы заявляют, что "соответствует сумме", хотя не соответствует по факту. Вы уж определитесь сначала.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:11 
> О, не знал, что раст даже целочисленные количества складывать не умеет, но
> растманы заявляют, что "соответствует сумме", хотя не соответствует по факту. Вы
> уж определитесь сначала.

И все бы хорошо, о Великий Воен Супротив Раста, но там выше - совсем не Раст. Там сишечка. Просто можно сначала округлить байтики до блоков и посчитать сумму, а можно наоборот. Угадай, что будет точнее.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:50 
> A file that occurs multiple times shall be counted and written for only one entry

Но раст не знает, что такое стандарты.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Мурзин , 10-Ноя-25 13:50 
Спасибо всем, кто растолковал, кто не прав Столман или Растобои. А я подумал, что ну вот, наконец, получили все профит. Ан, нет. Ну и нарушать стандарты, это конечно не правильно. Эх, ну как здесь не сказать, читайте матчасть...

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Шарп , 10-Ноя-25 11:21 
>для предотвращения переполнения стека
>В утилите mkdir устранено переполнение стека

Я правильно понял, что если в случае сишки бичом являлся выход за пределы массива, то растеры рвут стек, потому что создают огромные объекты на нём и лепят рекурсию куда не попадя?

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


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Жироватт , 10-Ноя-25 11:30 
До спавна местных, недалеко ушедших от LLM евангелистов 3... 2...

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено 12yoexpert , 10-Ноя-25 11:48 
ИИ это всего лишь инструмент, абыр
А в сишке диды, абыр
UB, абырвалг

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Жироватт , 10-Ноя-25 13:07 
Валг.
Ну не верю я, что уже года два как однотипные, буквально тасуемые на уровне фраз и предложений посты пишут реальные живые люди, а не мясные/программные боты с весами или методичкой.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:31 
> переполнение стека

Это шедевр раста! Умудриться завалить стёк на 64-битной платформе при создании каталогов...


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Жироватт , 10-Ноя-25 11:35 
БЕЗОПАСТНО завалить стек на 64хбитной платформе.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:40 
Главное, чтобы комар... чекер боровов нос не подточил.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:54 
или так или ловите борова

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:09 
- Этот алгоритм запрограммировать невозможно.
- Почему?
- Боровчекер запрещает.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:36 
Программировать на Rust нормально не получается, приходится клонировать все объекты.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:38 
> приходится клонировать все объекты.

Дак вот почему они не смогли браузер переписать, и за что их выгнали из Мозилы.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Соль земли2 , 10-Ноя-25 11:40 
Из-за простоты Rust набежало много новичков, которые так делают.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:48 
Понятно, это неправильные программисты на расте.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено 12yoexpert , 10-Ноя-25 11:50 
ну, с учётом того, что на расте пишут исключительно и только веб-синьоры, - да

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:02 
Они плохие прораммисты, потому что код без CVE получается? Ясно-понятно...

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:27 
> потому что код без CVE получается?

Не получается.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:07 
Ссылки будут, и как обычно сишник вызвал переполенение в комментариях?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Медведь , 10-Ноя-25 15:41 
https://www.cvedetails.com/vulnerability-list/vendor_id-1902...

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:02 
https://app.opencve.io/cve/?vendor=rust-lang

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено iPony128052 , 10-Ноя-25 13:25 
> Из-за простоты Rust

Больше Hello World на нём написал?

Я при написании небольшого проекта на Rust после многолетнего опыта на C++ не заметил чего-то простого (относительно).


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:26 
правильнее было бы переписать их на python

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Vadim , 10-Ноя-25 11:27 
‘-S’
‘--separate-dirs’

    Normally, in the output of du (when not using --summarize), the size listed next to a directory name, d, represents the sum of sizes of all entries beneath d as well as the size of d itself. With --separate-dirs, the size reported for a directory name, d, will exclude the size of any subdirectories.

вот очень похоже на (неявное) использование этого параметра


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:36 
> total # больше фактического

Да... Раст ещё и в арифметике не силён. Ожидаешь "disk usage" - а там ошибка.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:10 
> GNU Coreutils показывает в итоговой строке фактический размер, который указанные каталоги занимают на диске, но в раздельном списке показывает размеры каждого каталога с вычетом вложенных каталогов, из-за чего их размер получается меньше фактического. Кроме того, значения, выводимые в GNU Coreutils и Busybox, меняются в зависимости от порядка указания каталогов.

Точно именно у раста в арифметике проблема? Текст новости не читаем?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:55 
> A file that occurs multiple times shall be counted and written for only one entry, even if the occurrences are under different file operands.

у GNU есть стандарт, и делает всё строго по стандарту.

Раст: "мы даже числа правильно складывать не умеем". total # больше фактического, и НЕ соответствует сумме.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:09 
Тем временем GNU:

> размер получается меньше фактического

Ну ясно-понятно...


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:38 
> A file that occurs multiple times shall be counted and written for only one entry

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 11:39 
> Разработчики ещё не решили трактовать ли данное расхождение как ошибку, так как с одной стороны в поведении uutils есть логика и тестовый набор GNU Coreutils не выявляет проблем, но с другой стороны несовместимости с GNU Coreutils предписано обрабатывать как ошибки и поведение Busybox соответствует GNU Coreutils.

Ну понятное дело, что они "ещё думают". Они ведь радостно рапортуют о том, что "обеспечили совместимость на более, чем 80%". А тут происходит столкновение с реальностью, и выясняется, что удовлетворить оригинальному тестовому набору -- это не то же самое, что и обеспечить 100%-ю совместимость с исходным продуктом.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено User , 10-Ноя-25 11:49 
Ну в общем определенная логика даже есть. Как проводится сертификация на соответствие требованиям? Ну вот прогоняется тест сьют - все зеленое - на бамажка "соответствует". Ах, тест не все покрывает? Все равно, "соответствует" - вот внесете изменение в тесты, будет несоответствовать - исправим, а пока так.

Логика конечно кривая и гниловатая - но определенно, есть.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено freehck , 10-Ноя-25 12:56 
Гниловатая или нет, но с учётом того, что как выяснилось, это поведение -- часть стандарта POSIX (см #40), судя по всему править баг им таки придётся.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Фнон , 10-Ноя-25 17:27 
> это поведение -- часть стандарта POSIX (см #40)

Поправочка, стандарта POSIX 2024.
Т.е достаточно сказать "нам и 2018 хватит" и можно забить на
> править баг им таки придётся


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 11:40 
Растаманы опять не смогли нормально переписать. На этот раз du - блин, просто возьмите и перепишите чтоб не было расхождения в поведении, для этого же язык и создавался.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:10 
Увы, но на раст принципиально невозможно перенести все UB/CVE сишного кода, если только unsafe обмазаться ради совместимости с кривым GNU поделием...

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:27 
Им бы сперва работоспособность coreutils перенести...

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:32 
Ты что-то как-то очень толсто троллишь. Ты реально думаешь, что отличия в поведении du из-за того что в coreutils UB/CVE? Ну ведь вовсе нет, как бы ты ни пытался отмазать этих вебприматов - они просто не смогли переписать.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Фнон , 10-Ноя-25 17:32 
>  просто возьмите и перепишите чтоб не было расхождения

даже если в оригинале какой-то бред?
Типа копировать хpeновые подходы, главное совместимось?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено 12yoexpert , 10-Ноя-25 11:47 
сколько лет они уже это переписывают и всё никак не перепишут?
есть же готовый код перед глазами, что сложного?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено User , 10-Ноя-25 11:53 
В 2020м начали. Сколько-то серьёзно вроде с 22го.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено name_not_found , 10-Ноя-25 13:13 
В код смотреть нельзя - нарушение gpl. А uutils на gpl переводить нельзя, иначе потом ЕЕЕшить будет дорого.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 13:39 
Разве переписанные программы на другой язык подпадают под действие лицензии GPL?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено name_not_found , 10-Ноя-25 14:36 
Производная работа - нельзя.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Фнон , 10-Ноя-25 17:25 
Нет, не попадают.
Производность работы нужно еще доказать.
Что весьма сложно, если в новом коде не будет ни строчки из старого.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:11 
> Заявлен уровень совместимости 85.80% (было 83.91%).

Немножечко беременна. Теперь у вас будет валиться 15 задач из сотни. Подумаешь мелочи какие. Чочо, почти 90 тестов не работают? Notabug, релизить надо - фонд отчеты KPI ждет, а то вообще грантов за безопасное переписывание не насыпят.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 12:31 
1540    /var/log
35495   /var
37033   total # больше фактического, но соответствует сумме /var и /var/log

Не соответствует! 1540 + 35495 = 37035, а не 37033!


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:27 
> 1540    /var/log
> 35495   /var
> 37033   total # больше фактического, но соответствует сумме /var и
> /var/log
> Не соответствует! 1540 + 35495 = 37035, а не 37033!

Начнем с того, что в оригинале не 37033 а 37034, закончим тем, что "-m     like --block-size=1M".
Все там соответствует. Особенно если не подменять последние циферки в "цитировании" 🙄.


du -smc /var/log /var
7    /var/log
942    /var
948    total

uu-du -smc /var/log /var
7    /var/log
942    /var
948    total

du -sc /var/log /var  
6708    /var/log
963712    /var
970420    total

calc 6708 + 963712
    970420
calc 970420/1024
    947.67578125


Ай-ай, опять Воены облажались. Так вы никогда не остановите Ржавое Вторжение и не спасете Галактеку!


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Ilnarildarovuch , 10-Ноя-25 12:44 
Зря

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Медведь , 10-Ноя-25 13:57 
Насколько я помню, в целях проекта заявлено, что любое отличие от оригинала есть баг. Ржавуны, как же так, вы не можете даже переписать логику утилит 1:1?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:00 
>  В утилите tsort реализация алгоритма обхода DFS переведена с рекурсивного на итеративный метод работы для предотвращения переполнения стека.

Молодцы, только такие вещи сразу нужно делать. К сожалению, в вузах всё ещё учат делать через стековую рекурсию вместо итеративной вместо того, что бы учить *не* делать.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:41 
В си почему-то не было переполнения стёка, а в расте - переполнение... Программисты на расте как-то по особенному пишут - намного кривее, чем на си?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:54 
Так GNU утилиты сколько лет существуют, естественно там уже много раз оптимизировано. Странно тоже самое требовать от нового проекта.

P.S. хотя CVE до сих под закрывают в GNU utils, что какбы позорно.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:24 
ну во-первых, много лет не показатель, этот растаманский прожект тоже не вчера появился. во-вторых, что такое размер каталога, это сумма размеров файлов внутри, и/или плюс размер метаданных, или размер суммарно занимаемых блоков фс, а жесткие ссылки считаются по кол-ву, или как.

> какбы позорно.

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


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:43 
А с чего ты взял, что в сишной версии переполнения нет? В сишной версии переполнение есть при поиске цикличных зависимостей (detect_loop). В растовской версии это пофиксили.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:58 
ну и там пофиксят когда надо будет. это непричина генерировать кучу CO2

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 17:26 
>это непричина генерировать кучу CO2

Это формула угоекислого газа. А у амиака который выходит из анального отверстия не такая химическая формула.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 14:44 
В uutils:
35495   /var
37034   total # больше фактического

Очевидно же, что total должен быть 35495 (в GNU всё правильно показывается), а не 37034. К чему в расте сделали виртуальных попугаев, не соответствующих действительности?


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:12 
за 25 лет никогда даже не пытался складывать эти циферки, типа а зачем, если при копировании на другую фс эти циферки станут другими, да и если удалять эти и записывать чтото на их место не факт что влезет, потому что разное кол-во файлов... du -h и там примерно можно прикинуть.

> К чему в расте сделали виртуальных попугаев

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


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено выбираем сорта , 10-Ноя-25 15:07 
Завёл три линукса - получил три разных результата. Все три верны. Математика пошла и повесилась в туалете.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:21 
А что местные ыксепрты молчат?
>так как с одной стороны в поведении uutils есть логика и тестовый набор GNU Coreutils не выявляет проблем, но с другой стороны несовместимости с GNU Coreutils предписано обрабатывать как ошибки и поведение Busybox соответствует GNU Coreutils

Фактически это значит, что в любой момент логика gnu может поменяться, и тесты это не отловят.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:32 
Отличная новость.
Шaвки тявкают, а караван продолжает идти.
Обкатают на убунте - начнут выкидывать гнурак и из более консервативных дистров.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:16 
Из одобренных дистров (RYF) не выкинут.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Анонимусс , 10-Ноя-25 16:36 
> Из одобренных дистров (RYF) не выкинут.

Ты про писульку клованов из FSF?
Боже мой, да всем нacpaть (с)

Они все равно никак не влияют на рынок, что собственно и видно по списку рекомендованны“ дистров - сплошные васяноподелия вроде Hyperbola, Parabola и прочего от непонятных васянов.



"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Анонимусс , 10-Ноя-25 15:37 
> У утилитах stdbuf и uptime реализована поддержка платформы OpenBSD.
> Улучшена сборка и тестирование на платформе FreeBSD.

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


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 15:57 
Сразу видно негодование GNU фанбоев. Им раст прямо на мозоли давит! Это же здорово, что Раст занимает нишу сишки. Ура!

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:11 
Гнушный tsort обрабатывает 100000 элементов за 56 секунд. Растовский за 2 секунды.

Выбор очевиден.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Медведь , 10-Ноя-25 16:29 
> Гнушный tsort обрабатывает 100000 элементов за 56 секунд. Растовский за 2 секунды. Выбор очевиден

Растаманы еще и вpут как дышат


$ wc -l ./tsort_input.txt
100000 ./tsort_input.txt
$ time tsort ./tsort_input.txt > /dev/null
real    0m0,107s
user    0m0,101s
sys     0m0,005s


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Медведь , 10-Ноя-25 16:32 
> GNU tsort обрабатывает 100000 элементов за 56 секунд. Растовский за 2 секунды


$ wc -l ./tsort_input.txt
100000 ./tsort_input.txt
$ time tsort ./tsort_input.txt > /dev/null
real    0m0,107s
user    0m0,101s
sys     0m0,005s

Скрипт генерации файла:


import random

def generate_tsort_file(filename, num_nodes=100000, num_edges=100000):
    """
    Генерирует файл для tsort с num_nodes узлами (1..num_nodes)
    и num_edges рёбрами (зависимостями), где каждая зависимость — это пара (a, b), a < b.
    """
    with open(filename, 'w') as f:
        for _ in range(num_edges):
            a = random.randint(1, num_nodes - 1)
            b = random.randint(a + 1, num_nodes)
            f.write(f"{a} {b}\n")

if __name__ == "__main__":
    random.seed(42)  # для воспроизводимости (удалите или измените seed, если нужно)
    generate_tsort_file("tsort_input.txt", num_nodes=100000, num_edges=100000)
    print("Файл 'tsort_input.txt' успешно создан с 100000 случайными парами (a b, где a < b).")


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:42 
Попробуй 100000 пар n -> n+1 где последняя n -> 1 (циклическая связь).

На телефоне неудобно скрипт перепечатывать.


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Медведь , 10-Ноя-25 16:51 
Первая строка в файле: 83811 85636
100000-я строка: 97424 83811

$ time tsort ./tsort_input.txt > /dev/null
real    0m0,105s
user    0m0,101s
sys     0m0,004s


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 16:59 
```
/home/user: cat tsort_input.sh
#!/usr/bin/env bash
# Generate a long cyclic dependency chain (1 -> 2 -> ... -> N -> 1) to stress tsort's recursion
N=${1:-100000}
# Output edges forming a cycle: 1->2, 2->3, ..., (N-1)->N, then N->1
for i in $(seq 1 $((N-1))); do
    printf "%d %d\n" "$i" "$((i+1))"
done
printf "%d %d\n" "$N" "1"  # close the cycle (N -> 1)

/home/user: bash tsort_input.sh | save -f tsort_input

/home/user: timeit { open tsort_input --raw | /bin/tsort }
/bin/tsort: -: input contains a loop:
[...]
56sec 18ms 880µs 110ns

/home/user: /bin/tsort --version
tsort (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mark Kettenis.
```


"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 17:21 
... все это хорошо, наверно; только когда в какой-нибудь sort появится возможность сортировать по заданному пользователем шаблону?... или ждать XXII век?

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 17:29 
давно есть. Читай man sort.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 17:36 
Ну в общем беш с сопутствующими утилитами - это не 22 век и никогда им не станет. Это безнадёжно устаревший подход к скриптам. Юзайте Nushell - там и язык нормальный с типами и структурами данных, и команды команды для скриптов богатые, и поддержка CLI флагов из коробки и параллельная обработка данных и много чего ещё.

"Выпуск Rust Coreutils 0.4. Расхождение поведения утилиты du ..."
Отправлено Аноним , 10-Ноя-25 17:43 
Следующий шаг, выпиливание всех растаманских утилит из дистрибутивов Линукса. Из-за того, что растаманские утилиты некачественные. К тому же они все пермиссивные. А это деградация.

Огонь прогресса и борьбы только на стороне копилефта и Столлмана.