Oppdatering til GNU Coreutils, omskrevet i Rust

Utgivelsen av uutils coreutils 0.0.12-verktøysettet presenteres, der en analog av GNU Coreutils-pakken, omskrevet på Rust-språket, utvikles. Coreutils kommer med over hundre verktøy, inkludert sort, cat, chmod, chown, chroot, cp, date, dd, echo, vertsnavn, id, ln og ls. Samtidig ble uutils findutils 0.3.0-pakken utgitt med en implementering i Rust av verktøyene fra GNU Findutils-settet (finn, finn, oppdatertb og xargs).

Grunnen til å lage prosjektet og bruke Rust-språket er ønsket om å lage en alternativ tverrplattformimplementering av Coreutils og Findutils, som kan kjøres på blant annet Windows, Redox og Fuchsia-plattformer. En annen viktig forskjell mellom uutils er at den distribueres under MIT Permissive License, i stedet for GPL copyleft-lisensen.

Foreløpig er implementeringen av 88 verktøy fullstendig brakt til paritet med GNU Coreutils. Individuelle feil er notert i 18 verktøy, inkludert cp, dd, date, df, install, ls, more, sort, split, tail og test. Bare stty-verktøyet forblir uimplementert. Når testpakken fra GNU Coreutils-prosjektet består, blir 214 tester utført, men Rust-analogen består ennå ikke 313 tester. Samtidig har intensiteten i prosjektutviklingen økt merkbart - 400-470 patcher legges til per måned fra 20-50 utviklere i stedet for 30-60 fra 3-8 utviklere for et år siden.

Oppdatering til GNU Coreutils, omskrevet i Rust

Blant de siste prestasjonene er ytelsesoptimalisering notert - i den nåværende tilstanden er mange verktøy, som hode og kutt, betydelig overlegne i ytelse enn alternativene fra GNU Coreutils. Testsuitedekningen er utvidet fra 55 % til 75 % av all kode (80 % er et tilstrekkelig mål). Koden er refaktorisert for å forenkle vedlikeholdet, for eksempel er feilhåndtering blitt samlet i ulike programmer, og kode for arbeid med tilgangsrettigheter er kombinert i chgrp og chown. Tallrike endringer er lagt til for å forbedre kompatibiliteten med GNU Coreutils.

Planer for fremtiden inkluderer implementering av stty-verktøyet, fortsatt arbeid med å forbedre kompatibiliteten med GNU Coreutils, legge til optimaliseringer for å redusere størrelsen på kjørbare filer, samt fortsatte eksperimenter med å bruke uutils-verktøy i Debian og Ubuntu i stedet for GNU Coreutils og GNU Findutils (en av hovedutviklerne av uutils har tidligere jobbet med et prosjekt for å bygge Debian GNU/Linux ved å bruke Clang-kompilatoren). I tillegg er utarbeidelsen av uutils-coreutils-pakken for macOS, eksperimenter med å erstatte GNU Coreutils med uutils-coreutils i NixOS, intensjonen om å bruke uutils-coreutils som standard i Apertis-distribusjonen, og tilpasningen av uutils satt for Redox OS.

Kilde: opennet.ru

Legg til en kommentar