Релиз Rust Coreutils 0.3.0

24 октября 2025 года состоялся релиз открытого проекта Rust Coreutils 0.3.0 (uutils), развивающего аналог пакета GNU Coreutils, написанный на языке Rust. В состав coreutils входит более сотни утилит, включая wc, ls, tail, se, sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, ls и многие другие.

Целью проекта Rust Coreutils является создание кроссплатформенной альтернативной реализации Coreutils, способной работать в том числе на платформах Windows, Redox и Fuchsia.

Ранее решение Rust Coreutils начало использоваться по умолчанию в дистрибутиве Ubuntu, начиная с выпуска 25.10. Команда проекта Ubuntu объявила об обнаруженной ошибке в версии команды date (на основе uutils на языке Rust), поставляемой с Ubuntu 25.10, которая нарушила автоматическое обновление системы.

В отличие от GNU Coreutils реализация на Rust распространяется под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL. Дополнительно команда разработчиков Rust Coreutils развивает написанные на Rust аналоги наборов утилит util-linux, diffutils, findutils и bsdutils.

По информации OpenNET, основные доработки и улучшения в Rust Coreutils 0.3.0:

значительно повышена производительность некоторых утилит, например, по сравнению с GNU Coreutils утилита sort теперь быстрее в 3.72 раза при обычной сортировке и в 1.46 раз при сортировке чисел, base64 быстрее в 1.2 раза, expand в 1.8 раз, unexpand — в 1.5 раз, nl — в 1.57 раз, fold — в 1.19 раз, «uniq ‑c» в 1.13 раз;

на базе инструментария CodSpeed создана инфраструктура для отслеживания производительности. В системе непрерывной интеграции обеспечено выявление регрессий в производительности. Добавлены тесты производительности для 15 утилит, среди которых sort, ls, uniq, du и base64;

для утилит rm, du, chmod и chgrp реализована безопасная работа с относительными путями директорий, основанная на использовании функций openat и unlinkat;

повышена безопасность за счёт использования crate‑пакета nix вместо unsafe‑вызовов libc;

улучшена обработка ошибок и приближена к GNU Coreutils обработка ошибок во многих утилитах;

улучшена совместимость с Coreutils при работе с файловыми путями, содержащими и не содержащими UTF8-символы;

улучшена совместимость с эталонным тестовым набором GNU Coreutils, при прохождении которого успешно выполнено 532 тестов (в прошлой версии 538), 68 (52) тестов завершилось неудачей, а 33 (27) теста было пропущено. Заявлен уровень совместимости 83.91% (было 87.06%). Снижение уровня совместимости объясняется добавлением в тестовый набор 16 новых тестов;

в утилите date реализована опция «‑reference=file» для показа времени модификации файла. Из‑за отсутствия данной опции в Ubuntu перестал работать скрипт автоматической проверки наличия обновлений. В date также консолидирована логика парсинга времени, улучшена совместимость в GNU date в реализации опции «‑d» и добавлен флаг «‑resolution» для вывода данных о точности учёта времени;

реализованы опции: «basenc ‑base58», «id ‑a», «ls ‑f», «pinky ‑lookup», «realpath ‑E», «rm ‑progress»;

расширены возможности, устранены проблемы и добавлены недостающие опции для утилит base64, basenc, chgrp, chmod, cksum, cp, csplit, date, df, dirname, du, expand, expr, fold, hashsum, hostname, id, install, ln, ls, mv, nl, nohup, numfmt, od, pinky, ptx, realpath, rm, seq, sort, stat, stdbuf, stty, tail, timeout, touch, tsort, unexpand, uniq, uname, wc, who, uucore.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии