A fost publicat un nou release al proiectului uutils coreutils 0.7.0 (Rust Coreutils), care dezvoltă un analog al pachetului GNU Coreutils, scris în limbajul Rust. Pachetul coreutils include peste o sută de unelte, printre care sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln și ls. Scopul proiectului este de a crea o implementare alternativă multiplatformă a Coreutils, capabilă să funcționeze pe platforme precum Windows, Redox și Fuchsia.
Rust Coreutils este utilizat implicit în release-ul Ubuntu 25.10 și este aplicat în distribuțiile AerynOS (Serpent OS) și Apertis (dezvoltat de Collabora). Spre deosebire de GNU Coreutils, implementarea în Rust este distribuită sub o licență permisivă MIT, în loc de licența copyleft GPL. De asemenea, aceeași echipă de dezvoltatori lucrează la analogi scriși în Rust pentru seturile de unelte util-linux, diffutils, findutils, procps și acl, precum și pentru programele sed și login.
În noua versiune a Rust Coreutils:
- Nivelul de compatibilitate cu setul de teste de referință GNU Coreutils a fost de 94.59% (anterior 96.28%). Au fost executate cu succes 629 de teste, cu 7 mai multe față de versiunea anterioară (622). 23 (anterior 16) teste au eșuat, iar 13 (anterior 7) teste au fost omise. Scăderea nivelului de compatibilitate se datorează actualizării setului de teste la starea release-ului GNU Coreutils 9.10, în care au fost adăugate 19 teste noi. Dacă luăm în considerare numărul total de teste, Rust Coreutils a finalizat cu 7 teste mai multe decât în versiunea anterioară.
- Cea mai semnificativă îmbunătățire a compatibilității a fost observată pentru uneltele date, fmt, kill, ptx, numfmt și cksum. Îmbunătățiri mai puțin semnificative ale compatibilității au fost observate în uneltele cut, tac, tail, tr, uniq, od, chroot, stat, mktemp, pr, readlink, ln, kill, nproc, rm, env, sync, fmt, factor și wc.
- A fost asigurat suportul pentru biblioteca Rust num-prime, care este utilizată pentru testare în uneltele factor.
- Au fost utilizate implementări mai rapide ale hash-urilor rustc-hash în uneltele ls, du, tsort, shuf, mv, și foldhash în sort.
- A fost optimizată gestionarea caracterelor ASCII în uneltele unexpand și expand, ceea ce a permis accelerarea funcționării cu 14% în cazul citirii în buffer.
- Au fost optimizate operațiunile de alocare a memoriei în uneltele shuf, split, sort și du, ceea ce a permis accelerarea uneltei du cu 3–6% și a uneltei shuf cu 4%.
- A fost accelerată conversia numerelor în șiruri în unteleta nl.
- Dimensiunea fișierelor executabile a fost redusă și a fost accelerat lansarea uneltelor true și false.
- În peste 20 de unelte, inclusiv echo, date, sort, expr, hostname, id, comm, pr și dircolors, au fost rezolvate problemele cu închiderea bruscă din cauza imposibilității de a scrie în stderr (redirecționare către /dev/full).
- În umask, mkdirat, mknod și alte utilitare, apelurile libc nesigure au fost înlocuite cu legături protejate din pachetul crate nix.
- S-a asigurat funcționarea corectă a opțiunii «—preserve-root» în utilitara «rm» când se specifică legături simbolice.
- S-a îmbunătățit suportul pentru platformele NetBSD, Windows și NixOS. S-a îmbunătățit compilarea pentru arhitectura PowerPC.
- Funcționalitatea a fost extinsă, problemele au fost remediate și opțiunile lipsă au fost adăugate pentru utilitarele 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.
Sursa: opennet.ro
