Adaptácia Debianu na použitie implementácie coreutils v jazyku Rust

Sylvestre Ledru, známy svojou prácou na zostavovaní Debian GNU/Linux s použitím kompilátora Clang, oznámil úspešné vykonanie experimentu s využitím alternatívneho súboru utilít coreutils, prepísaného v jazyku Rust. Súčasťou coreutils sú také utilitty ako sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln a ls. Pre prvú fázu integrácie variantu coreutils v jazyku Rust do Debianu boli stanovené nasledujúce ciele:

  • Vytvorenie balíka s alternatívnym variantom coreutils v jazyku Rust pre Debian a Ubuntu.
  • Načítanie Debianu s pracovnou plochou GNOME, používajúc rust-coreutils.
  • Inštalácia 1000 najpopulárnejších balíkov z repozitára.
  • Zostavenie z triedených zdrojových textov Firefox, LLVM/Clang a jadra Linux v prostredí s rust-coreutils.

Po vytvorení viac ako 100 patchov pre Rust/coreutils sa podarilo úspešne realizovať všetky stanovené ciele. V pokračujúcej práci sa spomína realizácia chýbajúcich utilít a možností, zlepšenie kvality a jednotnosti kódu, rozvoj testovacieho súboru a odstránenie chýb, ktoré sa vyskytovali pri spustení testovacieho súboru od GNU Coreutils (doteraz úspešne prebehlo 141 testov zo 613).

Pri vytváraní balíka rust-coreutils sa rozhodlo nezamieňať balík coreutils, ale zabezpečiť možnosť ich paralelného fungovania. Varianty utilít v jazyku Rust sa inštalujú do /usr/lib/cargo/bin/ a aktivujú sa pridaním tejto cesty do premennej prostredia PATH. Vytvorenie balíka rust-coreutils skomplikovala potreba načítať do repozitára všetky závislosti pre zostavovanie, vrátane Rustu a rôznych drobných crate-balíkov.

S vytvorením spúšťacieho obrazu sa nevyskytli veľké problémy, ale adaptácia balíkov pre prostredie s rust-coreutils si vyžadovala veľa práce, pretože mnohé post-install skripty vyžadujú utility z balíka coreutils. Najviac problémov spôsobilo chýbanie potrebných možností, napríklad v utilite "cp" chýbali možnosti "--archive" a "--no-dereference", v "ln" nebola podporovaná možnosť "--relative", v mktemp "-t", v sync "-fs", v install "--owner" a "--group". Ďalšie problémy sa objavili v dôsledku rozdielov v správaní, napríklad utilita install nepodporovala špecifikovanie /dev/null ako vstupného súboru, v mkdir namiesto "--parent" bola možnosť "--parents" a podobne.

Pri testovaní zostavenia veľkých kódových základní nevznikli veľké problémy. Pri zostavovaní Firefoxu a LLVM/Clang sa používajú python skripty a cmake, takže výmena coreutils za ne nemala vplyv. Zostavenie jadra Linux prebehlo relatívne hladko, objavili sa len dva problémy: výstup chyby pri použití chown so symbolickým odkazom a absencia voľby „-n“ v nástroji ln.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster