A uutils projekt fejlesztői kiadták a Coreutils 0.10-et, amely az egyik eddigi legjelentősebb kompatibilitási fejlesztés a Rust-alapú parancssori eszközkészlethez. A cél továbbra is az, hogy a GNU Coreutils teljes értékű, közvetlenül helyettesíthető alternatívája legyen.
A projekt legfrissebb teszteredményei szerint a uutils Coreutils mostanra 690 GNU tesztből 645-öt teljesít, így a sikerességi arány a 0.9-es verzió 90,58 százalékáról 93,48 százalékra nőtt. A sikertelen tesztek száma közben 56-ról 29-re csökkent.
A mostani frissítés számos, széles körben használt segédprogram viselkedését módosítja, többek között a date, du, head, tail, install, ls, nproc, numfmt, od, pr, stat, sum és truncate esetében. Sok helyen javult a hibaüzenetek minősége is: a rendszer most következetesebben tünteti fel az érintett fájl nevét és az eredeti operációs rendszer hibát, ahelyett hogy egy általános leírást adna.
A 0.10-es verzióban a fejlesztők folytatták a time-of-check-to-time-of-use (TOCTOU) versenyhelyzetek felszámolását. A változtatások érintik például a touch, mkfifo, head, split és chcon segédprogramokat. A chmod és chown rekurzív műveletei ellenállóbbá váltak a szimbolikus linkek által okozott ciklusokkal és a --preserve-root megkerülésére tett kísérletekkel szemben.
A cp segédprogram már nem fog belépni egy célként megadott alkönyvtárba, ha azt szimbolikus link jelöli. Az mv további védelmi mechanizmusokat kapott a fájlrendszerek közötti műveletekhez és a biztonsági mentések során. Emellett a mkdir, mkfifo és mknod által létrehozott SELinux címkéket már a fájlrendszer-objektum létrehozásakor rendeli hozzá a rendszer, nem egy későbbi lépésben.
Egy másik javítási csomag olyan problémákat kezel, mint a /dev/full-hoz hasonló eszközökre íráskor fellépő kimeneti hibák, a szélsőséges argumentumok miatt bekövetkező egész túlcsordulások, a többbyte-os bemenetek érvénytelen karakterhatárai és a túlzott memóriafoglalás. Az expr elemzője mostantól iteratív megközelítést használ, így elkerüli a mélyen egymásba ágyazott kifejezések okozta verem-túlcsordulásokat.
A felhasználók számára elérhető új funkciók egyike az mv --exchange, amellyel két fájlrendszer-útvonal atomikusan felcserélhető. Az install segédprogram mostantól támogatja a --reflink kapcsolót, így copy-on-write klónok hozhatók létre az ezt támogató fájlrendszereken, és az install -C együtt használható a --preserve-timestamps opcióval.
A frissítés része az rm --one-file-system is, amely megakadályozza, hogy a rekurzív törlés átlépjen másik fájlrendszerre. Rövidítésként bekerült a -O opció a cut --output-delimiter helyett. A checksum segédprogramok pedig OpenSSL backend használatával érhetnek el jobb teljesítményt.
Számos ismert eszköznél javult a teljesítmény: a tee mostantól gyors, zero-copy módban is működhet, a cat áteresztőképességét optimalizálták, és a cp által készített, nem reflinkelt másolatoknak is gyorsabbnak kell lenniük. Az eszközök közötti másolások szintén kihasználják a továbbfejlesztett másolási útvonalat.
A többplatformos támogatás bővítése tovább folytatódik. A uutils Coreutils 0.10 kiadás már támogatja a wasm32-wasip2 célt, Windows alatt pedig a felhasználók egy használható timeout parancsot kapnak, valamint működő fájlkövetést a tail -f és tail -F kapcsolókkal. Windowsra bekerült a sparse másolatok támogatása is a cp parancsba, illetve javították a checksum számítást a CRLF sorelválasztók átalakításával kapcsolatban.
További részletekért nézd meg a changelogot.

