The OpenNET Project / Index page

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

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

10.11.2025 10:51

Опубликован выпуск проекта 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.

Rust Coreutils задействован по умолчанию в выпуске Ubuntu 25.10 и применяется в дистрибутивах AerynOS (Serpent OS) и Apertis (развивается компанией Collabora). В отличие от GNU Coreutils реализация на Rust распространяется под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL. Дополнительно той же командой разработчиков развиваются написанные на Rust аналоги наборов утилит util-linux, diffutils, findutils и procps, а также программ sed и login.

В новой версии Rust Coreutils:

  • Улучшена совместимость с эталонным тестовым набором GNU Coreutils, при прохождении которого успешно выполнено 544 теста, что на 12 больше, чем в прошлой версии (532). 56 (68) тестов завершилось неудачей, а 33 (33) теста было пропущено. Заявлен уровень совместимости 85.80% (было 83.91%).
  • В утилите data улучшена совместимость в GNU date при обработке часовых поясов (добавлена возможность указания сокращённых наименований часовых поясов в опции --set).
  • В утилите factor задействован пакет num_prime для ускорения факторизации типов u64/u128.
  • В утилите tsort реализация алгоритма обхода DFS переведена с рекурсивного на итеративный метод работы для предотвращения переполнения стека.
  • В утилите cksum реализована поддержка хэшей sha2 и sha3. Добавлены тесты для отслеживания изменения производительности cksum. Функциональность hashsum перенесена в cksum.
  • В утилите mkdir устранено переполнение стека, приводящее к аварийному завершению при создании большого (200+) числа вложенных каталогов.
  • У утилитах stdbuf и uptime реализована поддержка платформы OpenBSD.
  • Улучшена сборка и тестирование на платформе FreeBSD.
  • Внесены общие улучшения для повышения переносимости.
  • Расширены возможности, устранены проблемы и добавлены недостающие опции для утилит base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc.

Дополнительно можно отметить расхождение в поведении утилиты "du" из наборов uutils и GNU Coreutils, всплывшее после перехода Ubuntu 25.10 на uutils. Разработчики ещё не решили трактовать ли данное расхождение как ошибку, так как с одной стороны в поведении uutils есть логика и тестовый набор GNU Coreutils не выявляет проблем, но с другой стороны несовместимости с GNU Coreutils предписано обрабатывать как ошибки и поведение Busybox соответствует GNU Coreutils.

Разное поведение наблюдается при указании в числе аргументов утилиты "du" нескольких каталогов в ситуации, когда некоторые из каталогов являются подкаталогами других каталогов (например, /var и /var/log). Uutils показывает фактический размер каждого отдельного каталога, а в итоговой строке выводит суммарный размер всех указанных каталогов. GNU Coreutils показывает в итоговой строке фактический размер, который указанные каталоги занимают на диске, но в раздельном списке показывает размеры каждого каталога с вычетом вложенных каталогов, из-за чего их размер получается меньше фактического. Кроме того, значения, выводимые в GNU Coreutils и Busybox, меняются в зависимости от порядка указания каталогов.

Например, при проверке размера каталогов "/var/log" и "/var", фактический размер которых 1540 и 35495 блоков (МБ), в GNU Coreutils будет выведено:


   du -smc /var/log /var
   1540    /var/log
   33955   /var # меньше фактического
   35495   total

   du -smc /var /var/log 
   35495   /var # показан только /var и не показан /var/log
   35495   total

В uutils:


   du -smc /var/log /var
   1540    /var/log
   35495   /var
   37034   total # больше фактического, но соответствует сумме /var и /var/log

   du -smc /var /var/log
   35495   /var  
   1540    /var/log
   37034   total # больше фактического, но соответствует сумме /var и /var/log

В Busybox:


   du -smc /var/log /var
   1540    /var/log
   33955   /var # меньше фактического
   35495   total

   du  -smc /var /var/log
   35495   /var # показан только /var и не показан /var/log
   35495   total


  1. Главная ссылка к новости (https://github.com/uutils/core...)
  2. OpenNews: Выпуск uutils 0.3, варианта GNU Coreutils на языке Rust
  3. OpenNews: Из-за ошибки в uutils в Ubuntu 25.10 перестала работать автоматическая проверка наличия обновлений
  4. OpenNews: В Ubuntu 25.10 решено заменить GNU Coreutils на uutils, написанные на Rust
  5. OpenNews: В Ubuntu 25.10 решено задействовать аналог sudo, написанный на Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64214-uutils
Ключевые слова: uutils, coreutils
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (178) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, localhostadmin (ok), 11:04, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >работать на платформах Windows, Redox и Fuchsia

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

     
     
  • 2.3, Аноним (3), 11:08, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +19 +/
    более того... зачем оно вообще ?
     
     
  • 3.8, Аноним (8), 11:21, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > показывает размеры каждого каталога с вычетом вложенных каталогов, из-за чего их размер получается меньше фактического

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

     
     
  • 4.22, Аноним (22), 11:39, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Это GNUтая версия показывает неправильно)))
     
     
  • 5.39, Аноним (8), 12:22, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты чем читал?

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

     
     
  • 6.46, Аноним (46), 12:40, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ты чем читал?
    > В uutils: total # больше фактического

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

    [CODE]
    -s, --summarize
                  display only a total for each argument
    -c, --total
                  produce a grand total
    [/CODE]

    Ну и бсдшный du :
    [CODE]
    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
    [/CODE]
    а так - все хорошо, прекрасная маркиза!

     
     
  • 7.48, Аноним (8), 12:43, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почему у раста сумма двух чисел не равна их сумме?
     
     
  • 8.51, Аноним (46), 12:55, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Где ты в бсдшном du нашел раст И да, спецом для тебя -m Display block co... текст свёрнут, показать
     
     
  • 9.70, Аноним (8), 13:46, 10/11/2025 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
  • 8.166, бесплатный как яйцо (?), 18:19, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Числа числами, а от сумы не зарекайся ... текст свёрнут, показать
     
  • 6.54, Аноним (22), 13:00, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем комментарий обрезал???))))
     
     
  • 7.80, Аноним (8), 14:03, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ты это хотел увидеть?

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

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

     
     
  • 8.141, Аноним (46), 16:34, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Соответствует -m like --block-size 1M Просто ты классический Воен Супротив... текст свёрнут, показать
     
     
  • 9.191, Аноним (191), 22:27, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Какие блоки, при чём тут они Раст выдал total 37034, хотя на самом деле всё зан... текст свёрнут, показать
     
     
  • 10.201, Аноним (46), 23:19, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ЧуЙствую спрыг с неудобной темы Но и ту уже разжевали здесь POSIX 2018 vs 2024... текст свёрнут, показать
     
  • 5.44, Аноним (8), 12:34, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В uutils:

    1540 + 35495 = 37035 != 37033!

     
  • 5.181, Я (??), 21:50, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    по факту что та версия показывает неправильно что та, вопрос в том хотим мы оставить неправильно с которым свыклись и вокруг которого научились плясать или хотим пофиксить оба варанта наконец. имхо прикол с тем что гну показывает разные цифры каталогам в зависимости от порядка их указания в запросе вообще недопустимое поведение для утилиты и давно должно быть пофикшено.
     
     
  • 6.192, Аноним (191), 22:30, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    GNU показывает и считает всё правильно, там в стандарте написано, что каждый элемент подсчитывается ровно один раз, в итоге сумма - верная. А в расте элементы могут несколько раз считаться, что приводит к билиберде.
     
  • 5.206, Аноним (206), 23:40, 10/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.131, Аноним (131), 16:15, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ну здрасьте, лет 10 планомерно выкидываем гну на мороз и тут такие вопросы. Если вы не интересуетесь опенсорсом, то к чему тогда вопросы?
     
  • 2.47, Аноним (47), 12:42, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Слышал про MSYS2 или хотя бы Git for windows?
     
     
  • 3.86, Аноним (3), 14:15, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну так там все utils собраны mingw64 зачем там что-то еще ?
     
  • 3.89, Аноним (89), 14:29, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В Msys2 оригинальные GNU Coreutils.
     
  • 2.100, Да ну нахер (?), 15:01, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >А зачем это на винде?

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

     
     
  • 3.104, Аноним (-), 15:15, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Затем что 1 в линухе у меня проекты билдуются - в разы быстрее А я не маклауд... большой текст свёрнут, показать
     
     
  • 4.115, Аноним (115), 15:43, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    боюсь что даже буху Глаше винда не оченьто и подходит, иначе зачем им тп и админ... большой текст свёрнут, показать
     
  • 3.109, Медведь (ok), 15:22, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Навскидку: https://habr.com/ru/news/962756/
    Упс, как же так? Это же НАСТОЯЩАЯ ОС!
     
  • 3.119, Аноним (3), 15:52, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    можно взять freebsd так то да
     

  • 1.2, Аноним (2), 11:07, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Дополнительно можно отметить расхождение в поведении утилиты "du" из наборов uutils и GNU Coreutils, всплывшее после перехода Ubuntu 25.10 на uutils. Разработчики ещё не решили трактовать ли данное расхождение как ошибку, так как с одной стороны в поведении uutils есть логика и тестовый набор GNU Coreutils не выявляет проблем

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

     
     
  • 2.5, Аноним (3), 11:10, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Не совсем понятно как это чудовище вообще могло что-то облегчить
     
     
  • 3.66, ZloySergant (ok), 13:38, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Не совсем понятно как это чудовище вообще могло что-то облегчить

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

     
     
  • 4.105, Аноним (105), 15:15, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Неосиляторы как всегда ругают синтаксис
     
  • 2.20, Соль земли2 (?), 11:39, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Трудно жить с руками из плеч?
     
  • 2.25, Аноним (22), 11:40, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Так это GNUтые тесты такие, а не uutils)))
     
     
  • 3.168, Америка (?), 18:37, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это отблески грядущего
     
  • 2.27, User (??), 11:44, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Э! Тесты же ж от пакета GNU Coreutil используются - никто их вроде бы на rust переписывать не собирался. Вот что по ходу могут правочки появиться - это да - но на стороне _тестов_ (Читай - GNU) а не уот тут уот.
     
     
  • 3.33, Аноним (2), 11:51, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Мне казалось, что шутки про весь мир неподходящий для Rust всего лишь шутки...
     
     
  • 4.36, User (??), 12:08, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Новость-не-читай-комментарий-оставляй? Тест - GNU'тый - ПРОХОДИТСЯ.
     
     
  • 5.56, Аноним (2), 13:02, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тесты проходят, а программа правильно не работает. Чудеса.
     
     
  • 6.69, Аноним (46), 13:45, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Тесты проходят, а программа правильно не работает. Чудеса.

    Ну-ну.
    [CODE]
    # гну
    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
    [/CODE]


     
     
  • 7.123, freehck (ok), 15:59, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну это легко объяснимо. Видите ли, 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/du.html
    [2] https://pubs.opengroup.org/onlinepubs/9799919799/utilities/du.html

     
     
  • 8.147, Аноним (46), 16:45, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы сильно удивился, если бы du из 13 фряхи удовлетворял 128521 ll usr bin... текст свёрнут, показать
     
     
  • 9.150, freehck (ok), 17:02, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот видите, ларчик-то просто открывался Я вот из интереса смотрел на du и... текст свёрнут, показать
     
  • 7.145, Анонимусс (-), 16:41, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    # бсд
    # uutils

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

     
  • 6.81, Аноним (81), 14:03, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ну так все вопросы к сишникам, что такие кривые тесты написали.
     
     
  • 7.87, Медведь (ok), 14:27, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну так все вопросы к сишникам, что такие кривые тесты написали

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

     
  • 7.91, Аноним (8), 14:34, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Опять сишники в штаны Расту ... Надо же было умудриться, что у раста total не соответствует ни фактически занимаемому месту, ни сумме элементов из-за округлений при целочисленном сложении.
     
     
  • 8.179, Аноним (81), 21:15, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А в чем ирония, что сишники не умеют писать тесты А причем тогда тут раст ... текст свёрнут, показать
     
  • 3.53, Аноним (81), 12:58, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Растройхетеры опять просчитались, но где?
     
     
  • 4.94, Аноним (8), 14:36, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Где-то тут:

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

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

     
  • 4.211, Аноним (211), 00:12, 11/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Опять для хайпу сделали ашипку - про них поговорят везде и расскажут всем про Rust.
    Ошибку они канпшна исправят, а вот эффект опстанется. Кароче пафос и перформанс.
    Другео дело, что какое сообщество сейчас кого удивить просто рабочим кодом непонятно.
     
  • 3.62, Аноним (62), 13:23, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Много раз здесь повторяли. Это просто тесты. Это не тесты на совместимость. Их никто так не писал.

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

     
     
  • 4.129, User (??), 16:12, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Много раз здесь повторяли. Это просто тесты. Это не тесты на совместимость.
    > Их никто так не писал.
    > Поэтому упоминание этих тестов в новостях, без оговаривания данного факта, является обманом.

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

     
     
  • 5.178, Аноним (178), 20:41, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В GNU Coreutils люди код пишут. И предъявляют к нему требования. А тесты - дополнительная страховка.
    Ну и вывод Busybox с Coreutils совпадает.. Так что, Д'Артаньян, перелогинься.
     
  • 5.183, Я (??), 22:00, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    да тут выяснилось страшное что нет стандарта никакого и правильного поведения для этих утилит и мы с этим живём уже давно просто на том факте что нам по большей части пофигу что этот ду должен показывать мы просто фиксим скрипты под акутальную версию этого ду пост фактум если вылезают проблемы. если бы не попытка авторов уутилс применить какуюто логику к тому что ду должен бы выводить в теории мы бы и не узнали что за гнутым ду никакой логики не стояло он просто что-то считал как считал а остальные жили под это подстраиваясь. очевидно что тесты для этого ду от которого мы не ожидаем никакого правильного поведения просто не могут покрывать никаких эдж кейсов выявляющих его неправильное поведение.
     
     
  • 6.197, Аноним (178), 22:45, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > нет стандарта никакого и правильного поведения для этих утилит

    https://pubs.opengroup.org/onlinepubs/9799919799.2024edition/utilities/du.html

    > если вылезают проблемы

    Поведение соответствует заявленному.

    > если бы не попытка авторов уутилс применить какуюто логику

    ..не соответствущую заявленной в стандарте. А также **ОШИБКА!!1** в подсчёте суммы.

     
  • 2.106, Аноним (-), 15:17, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Почему язык, который должен был облегчить программирование только усложнил его?

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

     
  • 2.143, Аноним (105), 16:39, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Проблема в том, что переписанные тесты переписаны также качественно

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

     

  • 1.4, Мурзин (?), 11:09, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я правильно понимаю, что Столман и компания не правильно считали байты? И им показали как нужно.
     
     
  • 2.7, Stanislavvv (ok), 11:16, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее, это совместимость с чем-то более ранним.
    Факт в том, что uutils ломают совместимость между системами. Даже если это на самом деле баг, на это может быть что-то завязано.
     
     
  • 3.40, freehck (ok), 12:23, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Даже если это на самом деле баг, на это может быть что-то завязано.

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

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

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

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

     
     
  • 4.117, Анонимусс (?), 15:44, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Иными словами это поведение -- часть стандарта.

    А какой-то линукс 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


     
     
  • 5.134, freehck (ok), 16:21, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А никаких претензий. Вы в своём праве считать новую логику "наркоманской" и не имплементировать её.
    Если разработчики uutils решат положить болт на POSIX compliance, для СПО это может будет даже хорошо.
     
  • 5.144, Аноним (105), 16:40, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Нет никаких причин переносить наркоманскую логику разработчиков посикса

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

     
  • 3.65, bdrbt (ok), 13:32, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Они ничего не ломают, они изначально не заявляли 100% совместимость, но благодаря убуинам которые потащили их в прод не провери, все вопят о "сломанности".
     
     
  • 4.68, Аноним (62), 13:41, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще то заявлено целью. Не сломано - да. Но, как обычно, не дописано.
     
  • 4.72, User (??), 13:48, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Они ничего не ломают, они изначально не заявляли 100% совместимость, но благодаря
    > убуинам которые потащили их в прод не провери, все вопят о
    > "сломанности".

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

     
     
  • 5.107, Аноним (107), 15:20, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Вообще-то - 100% совместимость с GNU Coreutils там на github'е в project
    > goals заявлена.

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

     
     
  • 6.112, User (??), 15:37, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Вообще-то - 100% совместимость с GNU Coreutils там на github'е в project
    >> goals заявлена.
    > Обещать - не значит жениться.

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

     
     
  • 7.198, Аноним (178), 22:47, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ПPEДАТЕЛЬ
     
  • 4.75, Аноним (2), 13:51, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Заявлена полная совместимость, а любая несовместимость считается ошибкой.
     
  • 2.10, freehck (ok), 11:22, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Я правильно понимаю, что Столман и компания не правильно считали байты? И им показали как нужно.

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

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

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

     
     
  • 3.118, Fyji (?), 15:51, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Но если хорошенько подумать, это вполне логично.

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

     
     
  • 4.139, freehck (ok), 16:30, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну вот ты и укажешь du -smc /home/* /home, и получишь именно то, что хочешь:
    - по одной строке с суммой на каждый каталог пользователя
    - строку с /home, где будет просуммировано всё, что не вошло в /home/*
    - и строку total с корректным общим размером /home со всеми подкаталогами

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

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

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

     
  • 3.184, Я (??), 22:04, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    но правильнее было бы либо всегда считать сначала подкаталог потом топ каталог либо наоборот.. даже если это требует пару проверок в парер засунуть..
     
  • 2.13, Аноним (8), 11:28, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Я правильно понимаю

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

     
     
  • 3.42, Аноним (46), 12:29, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Я правильно понимаю
    > Нет. Раст не умеет считать: "total # больше фактического"

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

     
     
  • 4.45, Аноним (8), 12:37, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Раст, в uutils: 1540 + 35495 = 37035 != 37033!
    Это как?! Даже сложение на расте неправильное.
     
     
  • 5.50, Аноним (46), 12:48, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Раст, в 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
    --


     
     
  • 6.76, Аноним (8), 13:52, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    О, не знал, что раст даже целочисленные количества складывать не умеет, но растманы заявляют, что "соответствует сумме", хотя не соответствует по факту. Вы уж определитесь сначала.
     
     
  • 7.128, Аноним (46), 16:11, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > О, не знал, что раст даже целочисленные количества складывать не умеет, но
    > растманы заявляют, что "соответствует сумме", хотя не соответствует по факту. Вы
    > уж определитесь сначала.

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

     
     
  • 8.193, Аноним (191), 22:35, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Раст 35495 var 37034 total Т е total по факту должен быть 35495 реаль... текст свёрнут, показать
     
     
  • 9.202, Аноним (46), 23:23, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Давай ты для начала найдешь там раст https cgit freebsd org src tree usr bin ... текст свёрнут, показать
     
  • 4.73, Аноним (8), 13:50, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > A file that occurs multiple times shall be counted and written for only one entry

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

     
  • 2.74, Мурзин (?), 13:50, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спасибо всем, кто растолковал, кто не прав Столман или Растобои. А я подумал, что ну вот, наконец, получили все профит. Ан, нет. Ну и нарушать стандарты, это конечно не правильно. Эх, ну как здесь не сказать, читайте матчасть...
     

  • 1.9, Шарп (ok), 11:21, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    >для предотвращения переполнения стека
    >В утилите mkdir устранено переполнение стека

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

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

     
     
  • 2.14, Жироватт (ok), 11:30, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    До спавна местных, недалеко ушедших от LLM евангелистов 3... 2...
     
     
  • 3.30, 12yoexpert (ok), 11:48, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ИИ это всего лишь инструмент, абыр
    А в сишке диды, абыр
    UB, абырвалг
     
     
  • 4.57, Жироватт (ok), 13:07, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Валг.
    Ну не верю я, что уже года два как однотипные, буквально тасуемые на уровне фраз и предложений посты пишут реальные живые люди, а не мясные/программные боты с весами или методичкой.
     
  • 4.171, Анон1110м (?), 19:29, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ИИ не существует. Есть нейросети.
     
  • 2.15, Аноним (8), 11:31, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > переполнение стека

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

     
     
  • 3.16, Жироватт (ok), 11:35, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +8 +/
    БЕЗОПАСТНО завалить стек на 64хбитной платформе.
     
     
  • 4.96, Аноним (89), 14:40, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Главное, чтобы комар... чекер боровов нос не подточил.
     
  • 3.120, Аноним (3), 15:54, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    или так или ловите борова
     
     
  • 4.125, Аноним (89), 16:09, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    - Этот алгоритм запрограммировать невозможно.
    - Почему?
    - Боровчекер запрещает.
     
  • 2.17, Аноним (2), 11:36, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Программировать на Rust нормально не получается, приходится клонировать все объекты.
     
     
  • 3.19, Аноним (8), 11:38, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > приходится клонировать все объекты.

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

     
  • 2.24, Соль земли2 (?), 11:40, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Из-за простоты Rust набежало много новичков, которые так делают.
     
     
  • 3.29, Аноним (29), 11:48, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Понятно, это неправильные программисты на расте.
     
     
  • 4.32, 12yoexpert (ok), 11:50, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну, с учётом того, что на расте пишут исключительно и только веб-синьоры, - да
     
     
  • 5.55, Аноним (81), 13:02, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Они плохие прораммисты, потому что код без CVE получается? Ясно-понятно...
     
     
  • 6.64, Аноним (62), 13:27, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > потому что код без CVE получается?

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

     
     
  • 7.83, Аноним (81), 14:07, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ссылки будут, и как обычно сишник вызвал переполенение в комментариях?
     
     
  • 8.114, Медведь (ok), 15:41, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https www cvedetails com vulnerability-list vendor_id-19029 product_id-48677 R... текст свёрнут, показать
     
     
  • 9.182, Аноним (182), 21:54, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    И это всё За всё время существования Раста меньше, чем в Сишных поделиях за год... текст свёрнут, показать
     
     
  • 10.208, Медведь (ok), 23:44, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты просил ссылки Тебе их дали Что не так ... текст свёрнут, показать
     
  • 8.124, Аноним (62), 16:02, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https app opencve io cve vendor rust-lang... текст свёрнут, показать
     
  • 3.63, iPony128052 (?), 13:25, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Из-за простоты Rust

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

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

     

  • 1.11, Аноним (3), 11:26, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    правильнее было бы переписать их на python
     
     
  • 2.210, Аноним (211), 00:09, 11/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Правильнее вообще писать под задачу свой код. Собрал файлы которые тебе нужны сложил байты и посмотрел в своем приложении. А зачем там du и кому он нужен непонятно.
     

  • 1.12, Vadim (??), 11:27, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ‘-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.

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

     
  • 1.18, Аноним (8), 11:36, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > total # больше фактического

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

     
     
  • 2.58, Аноним (81), 13:10, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > GNU Coreutils показывает в итоговой строке фактический размер, который указанные каталоги занимают на диске, но в раздельном списке показывает размеры каждого каталога с вычетом вложенных каталогов, из-за чего их размер получается меньше фактического. Кроме того, значения, выводимые в GNU Coreutils и Busybox, меняются в зависимости от порядка указания каталогов.

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

     
     
  • 3.77, Аноним (8), 13:55, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > 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 # больше фактического, и НЕ соответствует сумме.

     
     
  • 4.84, Аноним (81), 14:09, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тем временем GNU:

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

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

     
     
  • 5.95, Аноним (8), 14:38, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > A file that occurs multiple times shall be counted and written for only one entry
     

  • 1.21, freehck (ok), 11:39, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > Разработчики ещё не решили трактовать ли данное расхождение как ошибку, так как с одной стороны в поведении uutils есть логика и тестовый набор GNU Coreutils не выявляет проблем, но с другой стороны несовместимости с GNU Coreutils предписано обрабатывать как ошибки и поведение Busybox соответствует GNU Coreutils.

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

     
     
  • 2.31, User (??), 11:49, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну в общем определенная логика даже есть. Как проводится сертификация на соответствие требованиям? Ну вот прогоняется тест сьют - все зеленое - на бамажка "соответствует". Ах, тест не все покрывает? Все равно, "соответствует" - вот внесете изменение в тесты, будет несоответствовать - исправим, а пока так.

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

     
     
  • 3.52, freehck (ok), 12:56, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Гниловатая или нет, но с учётом того, что как выяснилось, это поведение -- часть стандарта POSIX (см #40), судя по всему править баг им таки придётся.
     
     
  • 4.154, Фнон (-), 17:27, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > это поведение -- часть стандарта POSIX (см #40)

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

     

  • 1.23, Аноним (29), 11:40, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Растаманы опять не смогли нормально переписать. На этот раз du - блин, просто возьмите и перепишите чтоб не было расхождения в поведении, для этого же язык и создавался.
     
     
  • 2.85, Аноним (81), 14:10, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Увы, но на раст принципиально невозможно перенести все UB/CVE сишного кода, если только unsafe обмазаться ради совместимости с кривым GNU поделием...
     
     
  • 3.88, Аноним (2), 14:27, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Им бы сперва работоспособность coreutils перенести...
     
  • 3.90, Аноним (29), 14:32, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты что-то как-то очень толсто троллишь. Ты реально думаешь, что отличия в поведении du из-за того что в coreutils UB/CVE? Ну ведь вовсе нет, как бы ты ни пытался отмазать этих вебприматов - они просто не смогли переписать.
     
  • 2.156, Фнон (-), 17:32, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >  просто возьмите и перепишите чтоб не было расхождения

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

     
     
  • 3.209, Медведь (ok), 23:46, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно же, главное -- совместимость. Вы же пишете прозрачную замену. Это в целях проекта заявлено -- но нет, ржавуны не перестают выбрыкивать.
     

  • 1.28, 12yoexpert (ok), 11:47, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    сколько лет они уже это переписывают и всё никак не перепишут?
    есть же готовый код перед глазами, что сложного?
     
     
  • 2.34, User (??), 11:53, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В 2020м начали. Сколько-то серьёзно вроде с 22го.
     
  • 2.59, name_not_found (??), 13:13, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В код смотреть нельзя - нарушение gpl. А uutils на gpl переводить нельзя, иначе потом ЕЕЕшить будет дорого.
     
     
  • 3.67, Аноним (2), 13:39, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Разве переписанные программы на другой язык подпадают под действие лицензии GPL?
     
     
  • 4.93, name_not_found (??), 14:36, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Производная работа - нельзя.
     
  • 4.152, Фнон (-), 17:25, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не попадают.
    Производность работы нужно еще доказать.
    Что весьма сложно, если в новом коде не будет ни строчки из старого.
     
     
  • 5.173, Аноним (178), 20:26, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Доказать нетрудно. Сравнение делает эксперт, а не робот, по смыслу, а не построчным стравнением.
    Один раз доказал, и все эти ваши многолетние "переписывания" моментально становятся принудительно (решением суда) GPL-лицензированными.
    Но ты продолжай уговаривать себя и других. Для пермиссивщиков норма - воевать не в ту сторону, и постоянно побеждать себя же самих.
     
  • 2.176, Аноним (176), 20:33, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ахилл никогда не догонит черепаху
     

  • 1.38, Аноним (-), 12:11, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Заявлен уровень совместимости 85.80% (было 83.91%).

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

     
  • 1.43, Аноним (8), 12:31, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1540    /var/log
    35495   /var
    37033   total # больше фактического, но соответствует сумме /var и /var/log

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

     
     
  • 2.136, Аноним (46), 16:27, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > 1540    /var/log
    > 35495   /var
    > 37033   total # больше фактического, но соответствует сумме /var и
    > /var/log
    > Не соответствует! 1540 + 35495 = 37035, а не 37033!

    Начнем с того, что в оригинале не 37033 а 37034, закончим тем, что "-m     like --block-size=1M".
    Все там соответствует. Особенно если не подменять последние циферки в "цитировании" 🙄.
    [CODE]
    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
    [/CODE]
    Ай-ай, опять Воены облажались. Так вы никогда не остановите Ржавое Вторжение и не спасете Галактеку!

     
     
  • 3.194, Аноним (191), 22:39, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Начнём с того, что всё занимает 35495, а вот раст почему-то выдал 37033... И это ещё не касаясь округлений.
     
  • 3.195, Аноним (191), 22:41, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Подсказка для тех, кто не силён в математике:

    35495   /var
    - это место, занимаемое всеми указанными файлами на диске.

    37033   total # больше фактического
    - это то, что выдал раст

    Что такое 37033 - 35495 = 1538 ?

     
     
  • 4.204, Аноним (46), 23:29, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Папа, где море Подсказка 8470 1 для Военов Супротив Раста du выше https ... большой текст свёрнут, показать
     

  • 1.49, Ilnarildarovuch (?), 12:44, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зря
     
  • 1.78, Медведь (ok), 13:57, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Насколько я помню, в целях проекта заявлено, что любое отличие от оригинала есть баг. Ржавуны, как же так, вы не можете даже переписать логику утилит 1:1?
     
     
  • 2.175, Аноним (175), 20:33, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Clean room implementation запрещает смотреть в гнутый код, в котором посиксной лажи напрогали вместо того, чтобы сделать нормально (зато на PDP-11 работает).
     

  • 1.79, Аноним (79), 14:00, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  В утилите tsort реализация алгоритма обхода DFS переведена с рекурсивного на итеративный метод работы для предотвращения переполнения стека.

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

     
     
  • 2.97, Аноним (8), 14:41, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В си почему-то не было переполнения стёка, а в расте - переполнение... Программисты на расте как-то по особенному пишут - намного кривее, чем на си?
     
     
  • 3.99, Аноним (81), 14:54, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так GNU утилиты сколько лет существуют, естественно там уже много раз оптимизировано. Странно тоже самое требовать от нового проекта.

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

     
     
  • 4.110, Аноним (115), 15:24, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну во-первых, много лет не показатель, этот растаманский прожект тоже не вчера появился. во-вторых, что такое размер каталога, это сумма размеров файлов внутри, и/или плюс размер метаданных, или размер суммарно занимаемых блоков фс, а жесткие ссылки считаются по кол-ву, или как.

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

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

     
  • 3.116, Аноним (79), 15:43, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А с чего ты взял, что в сишной версии переполнения нет? В сишной версии переполнение есть при поиске цикличных зависимостей (detect_loop). В растовской версии это пофиксили.
     
     
  • 4.122, Аноним (3), 15:58, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ну и там пофиксят когда надо будет. это непричина генерировать кучу CO2
     
     
  • 5.153, Аноним (-), 17:26, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >это непричина генерировать кучу CO2

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

     
     
  • 6.164, бесплатный как яйцо (?), 18:15, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Михаил тоже учился на химика. А стал широко известным в узких кругах линуксоидом. Почему? Очевидно потому, что в химии ему ничего не светило.
     
  • 5.185, necromant (?), 22:07, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    CH₄ же!
     

  • 1.98, Аноним (8), 14:44, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В uutils:
    35495   /var
    37034   total # больше фактического

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

     
     
  • 2.102, Аноним (115), 15:12, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    за 25 лет никогда даже не пытался складывать эти циферки, типа а зачем, если при копировании на другую фс эти циферки станут другими, да и если удалять эти и записывать чтото на их место не факт что влезет, потому что разное кол-во файлов... du -h и там примерно можно прикинуть.

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

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

     

  • 1.101, выбираем сорта (?), 15:07, 10/11/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.108, Аноним (105), 15:21, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А что местные ыксепрты молчат?
    >так как с одной стороны в поведении uutils есть логика и тестовый набор GNU Coreutils не выявляет проблем, но с другой стороны несовместимости с GNU Coreutils предписано обрабатывать как ошибки и поведение Busybox соответствует GNU Coreutils

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

     
  • 1.113, Анонимусс (?), 15:37, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > У утилитах stdbuf и uptime реализована поддержка платформы OpenBSD.
    > Улучшена сборка и тестирование на платформе FreeBSD.

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

     
  • 1.127, Аноним (79), 16:11, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Гнушный tsort обрабатывает 100000 элементов за 56 секунд. Растовский за 2 секунды.

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

     
  • 1.140, Медведь (ok), 16:32, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > 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).")


     
     
  • 2.146, Аноним (79), 16:42, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуй 100000 пар n -> n+1 где последняя n -> 1 (циклическая связь).

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

     
     
  • 3.148, Медведь (ok), 16:51, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Первая строка в файле: 83811 85636
    100000-я строка: 97424 83811



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



     
  • 2.149, Аноним (149), 16:59, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    home user cat tsort_input sh usr bin env bash Generate a long cyclic ... большой текст свёрнут, показать
     
     
  • 3.159, Медведь (ok), 17:58, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Специально ради тебя качнул бунту 25. И как-то чуда не произошло:




    lubuntu@lubuntu:~$ time tsort ./tsort_input.txt > /dev/null
    <...>
    real    0m59.015s
    user    0m57.733s
    sys     0m1.084s
    lubuntu@lubuntu:~$ tsort --version
    tsort (uutils coreutils) 0.2.2



     
     
  • 4.162, Аноним (149), 18:10, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    /home/user: tsort --version
    tsort (uutils coreutils) 0.4.0

    /home/user: timeit { /home/user/.cargo/bin/tsort ./tsort_input_1mil out+err>| ignore }
    4sec 502ms 483µs 869ns

    Дидовский tsort за два часа не справился - пришлось прибить.

    Убунту качать, что бы попробовать uu_tsort не нужно - достаточно сделать 'cargo install uu_tsort' и собрать + поставить ровно вот эту утилиту.

     
     
  • 5.165, Медведь (ok), 18:15, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > достаточно сделать 'cargo install uu_tsort' и собрать

    Смотри, пыль поднялась -- это я бегу эту фигню ставить...

     
  • 3.161, Аноним (79), 18:06, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Попробовал миллион пар - уже 2 часа жду, когда дидовский tsort завершит работу. Пока он только 100% cpu показывает.
     

  • 1.151, Аноним (151), 17:21, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ... все это хорошо, наверно; только когда в какой-нибудь sort появится возможность сортировать по заданному пользователем шаблону?... или ждать XXII век?
     
     
  • 2.155, Аноним (-), 17:29, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    давно есть. Читай man sort.
     
  • 2.157, Аноним (79), 17:36, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну в общем беш с сопутствующими утилитами - это не 22 век и никогда им не станет. Это безнадёжно устаревший подход к скриптам. Юзайте Nushell - там и язык нормальный с типами и структурами данных, и команды команды для скриптов богатые, и поддержка CLI флагов из коробки и параллельная обработка данных и много чего ещё.
     
     
  • 3.186, Аноним (175), 22:08, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ой, да заманали вы своим снобизмом дешёвым. Юзайте вообще любой язык программирования, на котором можете программировать. В любом проекте я предпочту автоматизацию хоть на КОБОЛе ручному колдовству наполовину состоящему из поиска по ~/.bash_history чтобы посмотреть — как же мы это делали в прошлый раз? А для себя на локалхосте, так вообще без разницы на чём, просто бессмысленно обсуждать, у всего этого ровно один пользователь.
     

  • 1.170, excanonical (?), 19:22, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    ИМХО, выглядит как классический пример UB(Undefined Behavior). Либо в спеку добавить и покрыть тестом, либо забить болт.
     
     
  • 2.196, Аноним (191), 22:44, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Либо в спеку добавить

    У раста есть слабое место: отсутствие стандартов.

     

  • 1.189, Я (??), 22:20, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    давайте просто примем стандарт чтобы во всех графах у ду был фактический размер на диске. тогда это будет логичная и предсказуемая утилита показывающая полезные данные. посиксовский мем что если ты сначала посчитал подкаталог то посчитанный после каталог у тебя уменьшается потому что нельзя считать один блок дважды.. ну бред же. а если я в соседнем терминале эти блоки уже посчитал сегодня я вот сейчас что уже не второй раз их буду считать? почему ситуация когда я отдельными командами прошу подсчитать каталог и подкаталог отличается от ситуации когда я прошу их посчитать одной командой?
     
  • 1.199, Аноним (178), 22:49, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Цuрк безопасности.
     
  • 1.200, Аноним (200), 23:03, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ну ребят, первыми были ГНУ, и можно сколько угодно хаять их код и все остальное, но коль уж эти растеры собрались переписывать, пусть относятся с уважением и копируют поведение точь в точь.
    Или они настолько неадекваты, раз думают что из за их поделия все мигом ломанутся переписывать тонны существующего софта? Типа, не хотим переписывать один в один, и заставим всех вокруг тоже переписыванием заняться, так что ли?
     
     
  • 2.203, Аноним (203), 23:25, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >заставим всех вокруг тоже переписыванием заняться, так что ли?

    так в этом и весь смысл Rust a и uutils - чтобы всех оторвать от использования GNU

     
  • 2.205, Медведь (ok), 23:39, 10/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не поверишь, в предыдущем обсуждении, когда их поделка сломала обновления в ubuntu, они в таком духе и высказывались -- мол, нафига нам тащить весь этот дидов хлам в наши практически непогрешимые утилиты? как захотим, так и исделаем!
     

  • 1.207, Аноним (206), 23:42, 10/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > и тестовый набор GNU Coreutils не выявляет проблем

    Опять заглушки для тестов поставили...

     

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



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

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