De release van het uutils coreutils 0.4.0-project (Rust Coreutils) is gepubliceerd, dat een alternatief voor het GNU Coreutils-pakket ontwikkelt, geschreven in de programmeertaal Rust. De coreutils omvatten meer dan honderd hulpprogramma's, waaronder sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln en ls. Het doel van het project is om een cross-platform alternatieve implementatie van Coreutils te creëren, onder andere in staat om te werken op Windows, Redox en Fuchsia.
Rust Coreutils is standaard ingeschakeld in de release van Ubuntu 25.10 en wordt toegepast in de distributies AerynOS (Serpent OS) en Apertis (ontwikkeld door Collabora). In tegenstelling tot GNU Coreutils, wordt de implementatie in Rust verspreid onder de permissieve MIT-licentie in plaats van de copyleft GPL-licentie. Bovendien ontwikkelt hetzelfde team van ontwikkelaars Rust-analogen van de util-linux, diffutils, findutils en procps hulpprogramma's, evenals de programma's sed en login.
In de nieuwe versie van Rust Coreutils:
- De compatibiliteit met de referentietestset GNU Coreutils is verbeterd, waarbij 544 tests succesvol zijn uitgevoerd, wat 12 meer is dan in de vorige versie (532). 56 (68) tests zijn mislukt, terwijl 33 (33) tests zijn overgeslagen. Een compatibiliteitsniveau van 85.80% is aangekondigd (was 83.91%).
- In de data-tool is de compatibiliteit met GNU date verbeterd bij het verwerken van tijdzones (de mogelijkheid is toegevoegd om afgekorte tijdzone-aanduidingen op te geven in de -set optie).
- In de factor-tool is het num_prime-pakket gebruikt voor snellere factorisatie van de types u64/u128.
- In de tsort-tool is de implementatie van het DFS-algoritme omgezet van een recursieve naar een iteratieve werkwijze om stack overflow te voorkomen.
- In de cksum-tool is ondersteuning voor sha2- en sha3-hashes geïmplementeerd. Testen zijn toegevoegd om veranderingen in de prestaties van cksum te volgen. De functionaliteit van hashsum is overgezet naar cksum.
- In de mkdir-tool is een stack overflow verholpen die leidde tot een crash bij het aanmaken van een groot aantal (200+) geneste mappen.
- In de tools stdbuf en uptime is ondersteuning voor het OpenBSD-platform toegevoegd.
- De bouw en testen op het FreeBSD-platform zijn verbeterd.
- Algemene verbeteringen zijn doorgevoerd om de draagbaarheid te verhogen.
- De mogelijkheden zijn uitgebreid, problemen zijn opgelost en ontbrekende opties zijn toegevoegd aan de hulpprogramma's base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, en uudoc.
Daarnaast kan worden opgemerkt dat er een discrepantie is in het gedrag van de 'du'-tool tussen de uutils en GNU Coreutils, die naar voren is gekomen na de overstap van Ubuntu 25.10 naar uutils. De ontwikkelaars hebben nog niet besloten of deze discrepantie als een fout moet worden geïnterpreteerd, aangezien het gedrag van uutils logisch is en de testset van GNU Coreutils geen problemen aan het licht brengt, maar aan de andere kant moet incompatibiliteit met GNU Coreutils als fouten worden behandeld en gedraagt de Busybox zich overeenkomstig de GNU Coreutils.
Er wordt verschillend gedrag waargenomen wanneer meerdere mappen als argumenten voor de «du»-tool worden opgegeven, vooral wanneer sommige mappen submappen van andere mappen zijn (bijvoorbeeld, /var en /var/log). Uutils toont de werkelijke grootte van elke afzonderlijke map en geeft in de laatste regel de totale grootte van alle opgegeven mappen weer. GNU Coreutils toont in de laatste regel de werkelijke grootte die de opgegeven mappen op de schijf innemen, maar toont in een gescheiden lijst de groottes van elke map, met aftrek van de submappen, waardoor hun grootte lager is dan de werkelijke. Bovendien veranderen de waarden die in GNU Coreutils en Busybox worden weergegeven, afhankelijk van de volgorde van de opgegeven mappen.
Bijvoorbeeld, bij het controleren van de groottes van de mappen «/var/log» en «/var», waarvan de werkelijke groottes 1540 en 35495 bytes zijn, wordt in GNU Coreutils weergegeven: du -smc /var/log /var 1540 /var/log 33955 /var # lager dan de werkelijke 35495 totaal du -smc /var /var/log 35495 /var # alleen /var wordt getoond en /var/log wordt niet getoond 35495 totaal
In uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 totaal # hoger dan de werkelijke, maar komt overeen met de som van /var en /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 totaal # hoger dan de werkelijke, maar komt overeen met de som van /var en /var/log
In Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # lager dan de werkelijke 35495 totaal du -smc /var /var/log 35495 /var # alleen /var wordt getoond en /var/log wordt niet getoond 35495 totaal
Bron: opennet.ru
