Avaldatud on uutils coreutils 0.4.0 (Rust Coreutils) projekti versioon, mis arendab GNU Coreutils paketi sarnast teost, kirjutatud Rust keeles. coreutils sisaldab üle saja utiliidi, sealhulgas sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln ja ls. Projekti eesmärgiks on luua platvormidevaheline alternatiivne teostus Coreutils'ist, mis suudaks töötada muu hulgas Windows, Redox ja Fuchsia platvormidel.
Rust Coreutils on vaikimisi saadaval Ubuntu 25.10 versioonis ja seda rakendatakse AerynOS (Serpent OS) ja Apertis (arendab Collabora) jaotustes. Erinevalt GNU Coreutils'ist on Rust'i teostus litsentseeritud MITi lubadega, mitte GPLi kopilehtelitsentsiga. Lisaks arendavad samad arendajate meeskonnad Rustis kirjutatud analooge util-linux, diffutils, findutils ja procps utiliidikomplektidest, samuti programmide sed ja login.
Uues versioonis Rust Coreutils:
- Parandatud on ühilduvus standardsete GNU Coreutils testkomplektidega, millest edukalt sooritati 544 testi, mis on 12 rohkem kui eelmine versioon (532). 56 (68) testi lõppes ebaõnnestumisega ja 33 (33) testi jäeti vahele. Deklareeritud ühilduvuse tase on 85.80% (oli 83.91%).
- Utiliidis data on parandatud ühilduvust GNU date'iga ajavööndite töötlemisel (lisatud võimalus määrata lühendatud ajavööndite nimetusi valikuga —set).
- Utiliidis factor on kiiremate u64/u128 faktorite tegemiseks kaasatud num_prime pakett.
- Utiliidis tsort on DFS algoritmi teostus muudetud rekursiivsest iteratiivseks meetodiks, et vältida virna ületäitumist.
- Utiliidis cksum on olemas now sha2 ja sha3 krüptovõtmete tugi. Cksumi jõudluse muutuste jälgimiseks on lisatud testid. Hashsum'i funktsionaalsus on üle viidud cksum'i.
- Utiliidis mkdir on kõrvaldatud virna ületäitumine, mis põhjustas krahhi suurte (200+) sisekataloogide loomisel.
- Utiliidis stdbuf ja uptime on sisse viidud tugi OpenBSD platvormile.
- Parandatud on koostamine ja testimine FreeBSD platvormil.
- Viidud on läbi üldised parandused ühilduvuse suurendamiseks.
- Suurendatud on võimalusi, kõrvaldatud on probleemid ja lisatud puuduvaid valikuid utiliitide jaoks base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc.
Lisaks on märkimisväärne, et utiliidi 'du' käitumine uutils ja GNU Coreutils komplektides on erinenud pärast Ubuntu 25.10 üleminekut uutils'ile. Arendajad pole veel otsustanud, kas seda erinevust pidada veaks, kuna uutils käitumises on loogika ja GNU Coreutils testkomplekt ei tuvastanud probleeme, kuid teisest küljest tuleb GNU Coreutils'iga ühilduvuse puudumisi käsitleda vigadena ning Busybox'i käitumine vastab GNU Coreutils'ile.
Erinev käitumine ilmneb, kui "du" utiliidi argumentide seas on mitu katalooge, millest osad on teiste kataloogide alamkataloogid (näiteks /var ja /var/log). Uutils näitab iga eraldi katalooge tegelikku suurust ja viimases reas kuvab kõigi määratud kataloogide kogusumma. GNU Coreutils kuvab viimases reas tegeliku suuruse, mida määratud kataloogid kettal võtavad, kuid eraldi nimekirjas näitab ta iga katalooge suurust, arvutades välja alamkataloogid, mistõttu on nende suurus väiksem tegelikust. Lisaks muutuvad GNU Coreutils ja Busyboxi väljundväärtused sõltuvalt kataloogide esitamiskorrast.
Näiteks, kui kontrollida kataloogide "\/var\/log" ja "\/var" suurust, mille tegelikud suurused on 1540 ja 35495 baiti, siis GNU Coreutils kuvab: du -smc \/var\/log \/var 1540 \/var\/log 33955 \/var # väiksem tegelikust 35495 total du -smc \/var \/var\/log 35495 \/var # näidatud ainult \/var ja \/var\/log ei ole näidatud 35495 total
Uutilsis: du -smc \/var\/log \/var 1540 \/var\/log 35495 \/var 37033 total # suurem tegelikust, kuid vastab \/var ja \/var\/log summale du -smc \/var \/var\/log 35495 \/var 1540 \/var\/log 37033 total # suurem tegelikust, kuid vastab \/var ja \/var\/log summale
Busyboxis: du -smc \/var\/log \/var 1540 \/var\/log 33955 \/var # väiksem tegelikust 35495 total du -smc \/var \/var\/log 35495 \/var # näidatud ainult \/var ja \/var\/log ei ole näidatud 35495 total
Allikas: opennet.ru
