Опубликован выпуск проекта uutils coreutils 0.3.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 është përdorur si standard në lëshimin e Ubuntu 25.10 dhe aplikohet në distribucione si AerynOS (Serpent OS) dhe Apertis (i zhvilluar nga Collabora). Ndryshe nga GNU Coreutils, implementimi në Rust shpërndahet nën licencën permissive MIT, në vend të licencës copyleft GPL. Gjithashtu, nga e njëjta ekip zhvilluesish po zhvillohen versione të shkruara në Rust të grupeve të utiliteteve util-linux, diffutils, findutils dhe procps, si dhe programeve sed dhe login.
Në versionin e ri të Rust Coreutils:
- Значительно повышена производительность некоторых утилит, например, по сравнению с 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.
Burimi: opennet.ru
