Utgitt utgave av prosjektet uutils coreutils 0.4.0 (Rust Coreutils), som utvikler et alternativ til GNU Coreutils-pakken, skrevet i Rust. I coreutils inngår mer enn hundre verktøy, inkludert sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln og ls. Målet med prosjektet er å lage en plattformsuavhengig alternativ implementering av Coreutils, blant annet i stand til å fungere på plattformer som Windows, Redox og Fuchsia.
Rust Coreutils er standard implementert i Ubuntu 25.10 og brukes i distribusjoner som AerynOS (Serpent OS) og Apertis (utviklet av Collabora). I motsetning til GNU Coreutils er Rust-implementeringen lisensiert under den permissive MIT-lisensen, i stedet for kopileft-lisensen GPL. I tillegg utvikler det samme utviklingsteamet Rust-baserte alternativer til verktøyene util-linux, diffutils, findutils og procps, samt programmene sed og login.
I den nye versjonen av Rust Coreutils:
- Kompatibiliteten med den referanse testsettet for GNU Coreutils er forbedret, hvorav 544 tester ble vellykket utført, noe som er 12 mer enn i forrige versjon (532). 56 (68) tester feilet, mens 33 (33) tester ble utelatt. Den rapporterte kompatibilitetsgraden er 85,80% (var 83,91%).
- I verktøyet data er kompatibiliteten med GNU date forbedret ved behandling av tidssoner (muligheten til å spesifisere forkortede navn på tidssoner er lagt til i alternativet —set).
- I verktøyet factor er pakken num_prime benyttet for å akselerere faktoriseringen av typene u64/u128.
- I verktøyet tsort er implementeringen av DFS-algoritmen oversatt fra rekursiv til iterativ metode for å forhindre stakkoverløp.
- I verktøyet cksum er støtten for sha2 og sha3 hasher implementert. Tester er lagt til for å overvåke endringer i ytelsen til cksum. Funksjonaliteten til hashsum er overført til cksum.
- I verktøyet mkdir er stakkoverløpet som førte til krasj ved opprettelse av et stort antall (200+) underkataloger, eliminert.
- Støtte for OpenBSD-plattformen er implementert i verktøyene stdbuf og uptime.
- Bygging og testing på FreeBSD-plattformen er forbedret.
- Generelle forbedringer er gjort for å øke portabiliteten.
- Mulighetene er utvidet, problemer er løst, og manglende alternativer er lagt til for verktøyene base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc.
Det kan også bemerkes et avvik i oppførselen til verktøyet 'du' fra uutils og GNU Coreutils, som ble avdekket etter overgangen av Ubuntu 25.10 til uutils. Utviklerne har ennå ikke bestemt seg for om dette avviket skal betraktes som en feil, ettersom det finnes logikk i oppførselen til uutils og testsettet til GNU Coreutils ikke avdekker problemer. På den annen side skal inkompatibilitet med GNU Coreutils behandles som feil, og at oppførselen til Busybox samsvarer med GNU Coreutils.
Ulike oppførsel observeres når det er angitt flere kataloger som argumenter til verktøyet «du», i situasjoner der noen av katalogene er underkataloger av andre kataloger (for eksempel /var og /var/log). Uutils viser den faktiske størrelsen på hver enkelt katalog, og i den totale linjen viser den den samlede størrelsen på alle angitte kataloger. GNU Coreutils viser i den totale linjen den faktiske størrelsen som de angitte katalogene opptar på disken, men i den separate listen viser den størrelsen på hver katalog med unntak av underkatalogene, noe som gjør at størrelsen blir mindre enn den faktiske. I tillegg endres verdiene som vises i GNU Coreutils og Busybox, avhengig av rekkefølgen katalogene angis i.
For eksempel, ved checking størrelsen på katalogene «/var/log» og «/var», hvor den faktiske størrelsen er 1540 og 35495 byte, vil GNU Coreutils vise: du -smc /var/log /var 1540 /var/log 33955 /var # mindre enn den faktiske 35495 total du -smc /var /var/log 35495 /var # vist bare /var og /var/log vist ikke 35495 total
I uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # større enn den faktiske, men samsvarer med summen av /var og /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # større enn den faktiske, men samsvarer med summen av /var og /var/log
I Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # mindre enn den faktiske 35495 total du -smc /var /var/log 35495 /var # vist bare /var og /var/log vist ikke 35495 total
Kilde: opennet.ru
