Wydanie uutils 0.9, wersji GNU Coreutils napisanej w języku Rust

Opublikowano wydanie projektu uutils coreutils 0.9.0 (Rust Coreutils), rozwijającego odpowiednik pakietu GNU Coreutils, napisanego w języku Rust. W skład coreutils wchodzi ponad sto narzędzi, w tym sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln i ls. Celem projektu jest stworzenie międzyplatformowej alternatywnej implementacji Coreutils, między innymi zdolnej do działania na platformach Windows, Redox i Fuchsia.

Rust Coreutils
jest domyślnie używany w wydaniu Ubuntu 25.10 i częściowo w Ubuntu 26.04. Rust Coreutils jest również stosowany w dystrybucjach AerynOS (Serpent OS) i Apertis (rozwijanym przez firmę Collabora). W przeciwieństwie do GNU Coreutils, implementacja w Rust jest dystrybuowana na licencji MIT, zamiast licencji copyleft GPL. Dodatkowo ta sama ekipa programistów rozwija analogi zestawów narzędzi util-linux, diffutils, findutils, procps i acl, a także programy sed i login napisane w Rust.

W nowej wersji Rust Coreutils:

  • Poziom zgodności z wzorcowym zestawem testów GNU Coreutils wyniósł 90.58% (wcześniej 94.74%). Udało się wykonać 625 testów, co stanowi o 5 mniej niż w poprzedniej wersji (630). 56 testów zakończyło się niepowodzeniem (wcześniej 21), jeden test spowodował błąd, a 8 testów zostało pominiętych (wcześniej 14). Spadek poziomu zgodności wyjaśnia się aktualizacją zestawu testów do stanu wydania GNU Coreutils 9.11, w którym dodano 25 nowych testów.
  • Usunięto 44 podatności, które zostały ujawnione w wyniku audytu przeprowadzonego przez firmę Zellic. Większość podatności wynikała z rozbieżności w zachowaniu z GNU coreutils lub stanu wyścigu, pozwalającego na zmianę danych w momencie po weryfikacji poprawności informacji, ale przed wykonaniem operacji z nimi, na przykład, podmieniając plik na link symboliczny w momencie między zakończeniem weryfikacji a rozpoczęciem wykonania operacji. W kontekście użycia narzędzi cp, chmod i mv w skryptach systemowych uruchamianych z uprawnieniami root, takie podatności mogą pozwolić na skopiowanie lub nadpisanie dowolnych plików. W celu ochrony przed podatnościami spowodowanymi stanem wyścigu w projekcie zastosowano moduł uucore::safe_copy. Informacje o podatnościach opublikowano w osobnej wiadomości.
  • Kontynuowano migrację narzędzi na paczkę crate rustix zamiast paczki crate nix. Na rustix przeniesiono narzędzia id, tr, timeout, sort, wc, tail, cp, who i factor.
    Przeprowadzono czyszczenie kodu z unsafe-operacji w różnych narzędziach.
  • W narzędziach cat, wc, head, tail, yes, cp, tee i unexpand używane są obsługiwacze wejścia/wyjścia oparte na wywołaniach systemowych splice(), tee() i pipe(), które przyspieszyły działanie dzięki wyeliminowaniu zbędnego kopiowania danych między buforami.
  • Poprawiono zgodność z GNU Coreutils dla narzędzi numfmt, date, tr, cksum, factor, head, stat i sort.
  • Narzędzia ln, dd, mktemp i tty zyskały wsparcie dla budowy w formacie WebAssembly i wykorzystania interfejsu WASI (WebAssembly System Interface).
  • Rozszerzono możliwości, usunięto problemy i dodano brakujące opcje dla narzędzi cat, chroot, cksum,
    cp, date, dd, df, dirname, du, echo, env, expr, factor, fmt, head, id, install, join, ln, logname, ls, md5sum, mkdir, mknod, mktemp, more, mv, nl, nohup, nproc, numfmt, od, paste, pinky, pr, realpath, rm, rmdir, shred, sort, split, stat, stdbuf, stty, sum, sync, tail, tee, timeout, touch, tr, tty, unexpand, uniq, uptime, wc, who, yes.
  • Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster