Публикуван е новият выпуск на проекта uutils coreutils 0.7.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 е активиран по подразбиране в версия 25.10 на Ubuntu и се използва в дистрибутивите AerynOS (Serpent OS) и Apertis (развиван от компания Collabora). За разлика от GNU Coreutils, реализацията на Rust е лицензирана под пермисивна лицензия MIT, вместо копилефт лиценза GPL. Допълнително, същият екип разработва аналози на наборите утилити util-linux, diffutils, findutils, procps и acl, както и програмите sed и login на Rust.
В новата версия на Rust Coreutils:
- Нивото на съвместимост с еталонния тестови набор на GNU Coreutils е 94.59% (беше 96.28%). Успешно са преминати 629 теста, което е с 7 повече в сравнение с предишната версия (622). 23 (беше 16) теста завършиха с неуспех, а 13 (беше 7) теста бяха пропуснати. Намалението на нивото на съвместимост се дължи на обновлението на тестовия набор до състоянието на издание GNU Coreutils 9.10, в което са добавени 19 нови теста. Ако се вземе предвид общият брой тестове, Rust Coreutils осигурява преминаване на 7 теста повече от предишното издание.
- Най-същественото повишаване на съвместимостта е отбелязано при утилитите date, fmt, kill, ptx, numfmt и cksum. По-малко значими подобрения в съвместимостта са забелязани при утилитите cut, tac, tail, tr, uniq, od, chroot, stat, mktemp, pr, readlink, ln, kill, nproc, rm, env, sync, fmt, factor и wc.
- Осигурена е поддръжка на Rust-библиотеката num-prime, използвана за тестване в утилитата factor.
- Използвани са по-бързи реализации на хешове rustc-hash в ls, du, tsort, shuf, mv и foldhash в sort.
- Оптимизирана е работата с ASCII символи в утилитите unexpand и expand, което е позволило ускорение с 14% при буферирано четене.
- Оптимизирани са операциите по разпределение на паметта в утилитите shuf, split, sort и du, което е позволило ускорение на du с 3–6%, а на shuf с 4%.
- Ускорено е преобразуването на числа в низове в утилитата nl.
- Съкратен е размерът на изпълнимите файлове и ускорен е стартът на утилитите true и false.
- В над 20 утилити, включително echo, date, sort, expr, hostname, id, comm, pr и dircolors, са решени проблеми с аварийно приключване при невъзможност за запис в stderr (пренасочване в /dev/full).
- В umask, mkdirat, mknod и други утилити небезопасните извиквания на libc са заменени с защитени обвивки от crate-пакета nix.
- Осигурена е коректна работа на опцията «—preserve-root» в утилитата «rm» при указване на символични връзки.
- Подобрена е поддръжката на платформите NetBSD, Windows и NixOS. Подобрена е компилацията за архитектурата PowerPC.
- Разширени възможности, отстранени проблеми и добавени липсващи опции за утилитите cat, cksum, chroot, comm, cp, csplit, cut, date, dd, df, dircolors, du, echo, env, expand, expr, factor, false, fmt, fold, hostname, id, install, kill, ln, ls, mktemp, mknod, mv, nl, nproc, numfmt, od, paste, pr, printfm, ptx, readlink, rm, shuf, sort, split, stat, stdbuf, stty, sync, tac, tail, test, tr, true, tsort, unexpand, uniq, uptime, vdir, wc, whoami.
Източник: opennet.ru
