Opublikowano wersję projektu uutils coreutils 0.3.0 (Rust Coreutils), rozwijającego odpowiednik pakietu GNU Coreutils, napisany 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 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 GPL. Dodatkowo ta sama drużyna programistów rozwija napisane w Rust odpowiedniki zestawów narzędzi util-linux, diffutils, findutils i procps, a także programów sed i login.
W nowej wersji Rust Coreutils:
- Znacząco zwiększono wydajność niektórych narzędzi; na przykład, w porównaniu do GNU Coreutils narzędzie sort jest teraz szybsze 3,72 razy przy zwykłym sortowaniu i 1,46 razy przy sortowaniu liczb, base64 szybsze o 1,2 razy, expand o 1,8 razy, unexpand o 1,5 razy, nl o 1,57 razy, fold o 1,19 razy, a «uniq -c» o 1,13 razy.
- Na bazie narzędzi CodSpeed stworzono infrastrukturę do śledzenia wydajności. System ciągłej integracji zapewnia wykrywanie regresji w wydajności. Dodano testy wydajności dla 15 narzędzi, w tym sort, ls, uniq, du i base64.
- Dla narzędzi rm, du, chmod i chgrp wprowadzono bezpieczne operacje z względnymi ścieżkami katalogów, oparte na użyciu funkcji openat i unlinkat.
- Zwiększono bezpieczeństwo za pomocą pakietu crate nix zamiast niebezpiecznych wywołań libc.
- Ulepszono obsługę błędów i zbliżono ją do obsługi błędów GNU Coreutils w wielu narzędziach.
- Ulepszono zgodność z Coreutils podczas pracy z ścieżkami do plików, które zawierają i nie zawierają znaki UTF8.
- Ulepszono zgodność z referencyjnym zestawem testów GNU Coreutils, podczas którego pomyślnie wykonano 532 testy (w poprzedniej wersji 538), 68 (52) testów zakończyło się niepowodzeniem, a 33 (27) testów zostało pominiętych. Zadeklarowano poziom zgodności na poziomie 83,91% (było 87,06%). Spadek poziomu zgodności tłumaczy się dodaniem 16 nowych testów do zestawu testów.
- W narzędziu date wprowadzono opcję «—reference=file» do wyświetlania czasu modyfikacji pliku. Z powodu braku tej opcji w Ubuntu przestał działać skrypt automatycznej weryfikacji dostępności aktualizacji. W date również skonsolidowano logikę analizy czasu, poprawiono zgodność z GNU date w realizacji opcji «-d» i dodano flagę «—resolution» do wyświetlania danych o dokładności pomiaru czasu.
- Wprowadzono opcje: «basenc —base58», «id -a», «ls -f», «pinky —lookup», «realpath -E», «rm —progress».
- Rozszerzono możliwości, rozwiązano problemy i dodano brakujące opcje dla narzędzi base64, basenc, chgrp, chmod, cksum, cp, csplit, date, df, dirname, du, expand, expr, fold, hashsum, hostname, id, install, ln, ls, mv, nl, nohup, numfmt, od, pinky, ptx, realpath, rm, seq, sort, stat, stdbuf, stty, tail, timeout, touch, tsort, unexpand, uniq, uname, wc, who, uucore.
Źródło: opennet.ru
