Adaptace Debiánu pro použití implementace coreutils v jazyce Rust

Sylvestre Ledru, známý svou prací na sestavování Debian GNU/Linux s použitím kompilátoru Clang, oznámil úspěšné provedení experimentu se zapojením alternativního souboru utilit coreutils, přepsaného v jazyce Rust. Složení coreutils zahrnuje takové utility jako sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln a ls. Pro první fázi integrace v Debianu alternativy coreutils v jazyce Rust byly stanoveny následující cíle:

  • Vytvoření balíčku s alternativní variantou coreutils v jazyce Rust pro Debian a Ubuntu.
  • Stáhnout Debian s pracovním prostředím GNOME, používající rust-coreutils.
  • Instalace 1000 nejpopulárnějších balíčků z repozitáře.
  • Sestavení z původních textů Firefox, LLVM/Clang a jádra Linux v prostředí s rust-coreutils.

Po vytvoření více než 100 patchů pro Rust/coreutils se podařilo úspěšně realizovat všechny zamýšlené cíle. V rámci pokračující práce je zmiňována realizace chybějících utilit a voleb, zlepšení kvality a jednotnosti kódu, rozvoj testovací sady, odstranění chyb, které vznikaly při spuštění testovací sady od GNU Coreutils (dosud úspěšně proběhlo 141 testů z 613).

Při vytváření balíčku rust-coreutils bylo rozhodnuto nenahrazovat balíček coreutils, ale zajistit možnost jejich paralelního fungování. Varianty utilit v jazyce Rust jsou instalovány v /usr/lib/cargo/bin/ a aktivovány přidáním tohoto adresáře do proměnné prostředí PATH. Vytváření balíčku rust-coreutils ztěžovala potřeba nahrát do repozitáře všechny závislosti pro sestavení, včetně Rustu a různých drobných crate-balíčků.

S vytvořením zaváděcího obrazu nenastal žádný významný problém, ale adaptace balíčků pro prostředí s rust-coreutils si vyžádala velké úsilí, jelikož mnoho post-install skriptů volá utility z balíku coreutils. Největší množství problémů způsobilo chybějící potřebné volby, například v utilitě „cp“ chyběly volby „—archive“ a „—no-dereference“, v „ln“ podpora volby „—relative“, v mktemp „-t“, v sync „-fs“, v install „—owner“ a „—group“. Další problémy se objevily kvůli rozdílům v chování, například utilita install nepodporovala určení /dev/null jako vstupního souboru, v mkdir místo „—parent“ byla volba „—parents“ atd.

Při testování sestavení velkých kódových základů nevznikly žádné větší problémy. Při sestavování Firefoxu a LLVM/Clang se používají python skripty a cmake, takže nahrazení coreutils nimi nemělo vliv. Sestavení jádra Linux proběhlo relativně hladce, objevily se pouze dva problémy: výstup chybové zprávy při použití chown se symbolickým odkazem a absence volby „-n“ v utilitě ln.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster