Opublikowano wersję projektu uutils coreutils 0.10.0 (Rust Coreutils), rozwijającego analog 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 wieloplatformowej alternatywnej implementacji Coreutils, która będzie mogła działać 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 także stosowany w dystrybucjach AerynOS (Serpent OS) oraz Apertis (rozwijanym przez firmę Collabora). W przeciwieństwie do GNU Coreutils, implementacja w Rust jest udostępniana na licencji MIT, zamiast licencji copyleft GPL. Dodatkowo ta sama ekipa deweloperów rozwija odpowiedniki zestawów narzędzi util-linux, diffutils, findutils, procps oraz acl napisane w Rust, a także programy sed i login.
W nowej wersji Rust Coreutils:
- Poziom zgodności z odniesieniem zestawu testów GNU Coreutils wyniósł 93.48% (wcześniej 90.58%). Zrealizowano 645 testów, co oznacza wzrost o 20 w porównaniu do poprzedniej wersji (625). 29 testów zakończyło się niepowodzeniem (wcześniej 56), jeden test zakończył się błędem, a 15 testów zostało pominiętych (wcześniej 8).
- Usunięto niektóre rozbieżności w działaniu narzędzi pr, nproc, date, numfmt, ls, du, install, od, truncate, fold, head/tail, sum i stat w porównaniu z GNU Coreutils.
- Kontynuowano pracę nad wzmocnieniem bezpieczeństwa, aby zapobiec powstawaniu luk związanych z warunkami wyścigu, które mogą umożliwić zmianę danych w momencie po weryfikacji ich poprawności, ale przed wykonaniem operacji na nich, na przykład podmianę pliku na dowiązanie symboliczne w momencie między zakończeniem weryfikacji a rozpoczęciem operacji. W kontekście użycia narzędzi cp, chmod i mv w skryptach systemowych uruchamianych z uprawnieniami root, takie luki pozwalają na skopiowanie lub nadpisanie dowolnych plików. Wzmocniono ochronę narzędzi touch, mkfifo, mkdir, mknod, mv, chroot, head, split i chcon.
- Przeprowadzono prace nad eliminacją awaryjnych zakończeń za pośrednictwem mechanizmu panic w narzędziach shuf, printf, numfmt, fmt, pr, chroot, dircolors, install, ln, touch, stat, split, expand, more, kill, cp, du, rm, runcon, sort, chown/chgrp, dirname, expr, cksum, dd, truncate, hashsum.
- Przeprowadzono optymalizację wydajności narzędzi cksum, sum, split, expand/unexpand, base*, tee, cat, cp, mv, expr, uniq, du.
- Dodano wsparcie dla celu kompilacji wasm32-wasip2.
- Do narzędzia mv dodano opcję „—exchange” do zamiany miejscami dwóch plików lub katalogów.
- W narzędziu install zrealizowano opcję „—reflink” oraz zapewniono możliwość współdzielenia opcji „-C” i „—preserve-timestamps.”
- Do narzędzia rm dodano opcję „—one-file-system”.
- W narzędziu cut wprowadzono możliwość pracy z kodowaniami wielobajtowymi przy użyciu lokalizacji nie-UTF-8.
- Do szybkiego obliczania sum kontrolnych wykorzystano backend OpenSSL.
Źródło: opennet.ru
