Debian GNU/Linuxi Clangi kompilaatoriga ehitamise poolest tuntud Sylvestre Ledru teatas edukast eksperimendist alternatiivse Rustis ĂŒmber kirjutatud coreutilsi tööriistakomplekti kasutuselevĂ”tuga. Coreutilsi hulka kuuluvad sellised utiliidid nagu sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln ja ls. Debianisse Rustis kirjutatud coreutilsi variandi integreerimise esimeses etapis seati jĂ€rgmised eesmĂ€rgid:
- Luua Debiani ja Ubuntu jaoks Rustis kirjutatud alternatiivse coreutilsi variandiga pakett.
- KÀivitada Debian GNOME töölauakeskkonnaga, kasutades rust-coreutilsit.
- Paigaldada repositooriumist 1000 kÔige populaarsemat paketti.
- Kompileerida lÀhtekoodist Firefox, LLVM/Clang ja Linuxi kernel rust-coreutilsiga keskkonnas.
PĂ€rast enam kui 100 paiga loomist Rust/coreutilsi jaoks Ă”nnestus kĂ”ik seatud eesmĂ€rgid edukalt tĂ€ita. JĂ€tkuva töö raames tegeletakse veel puuduvate utiliitide ja valikute lisamisega, koodi kvaliteedi ja ĂŒhtsuse parandamisega, testikomplekti arendamisega ning GNU Coreutilsi testikomplekti kĂ€ivitamisel tekkivate tĂ”rgete kĂ”rvaldamisega (praegu lĂ€bib edukalt 141 testi 613-st).
Paketi rust-coreutils loomisel otsustati coreutilsi paketti mitte asendada, vaid tagada nende paralleelne kasutamine. Rustis kirjutatud utiliitide variandid paigaldatakse kataloogi /usr/lib/cargo/bin/ ja aktiveeritakse selle kataloogi lisamisega PATH-keskkonnamuutujasse. Paketi rust-coreutils loomist tegi keerulisemaks vajadus laadida repositooriumi ĂŒles kĂ”ik ehitussĂ”ltuvused, sealhulgas Rust ja mitmesugused vĂ€ikesed crate-paketid.
KĂ€ivitatava tĂ”mmise loomisel suuri probleeme ei tekkinud, kuid pakettide kohandamine rust-coreutilsiga keskkonna jaoks nĂ”udis palju tööd, sest paljud post-install skriptid kutsuvad vĂ€lja coreutilsi komplekti utiliite. KĂ”ige rohkem probleeme pĂ”hjustas vajalike valikute puudumine: nĂ€iteks utiliidis «cp» puudusid valikud «âarchive» ja «âno-dereference», utiliidis «ln» puudus valiku «ârelative» tugi, mktempis «-t», syncis «-fs», installis «âowner» ja «âgroup». Teised probleemid tulenesid kĂ€itumiserinevustest: nĂ€iteks utiliit install ei toetanud /dev/null mÀÀramist sisendfailina, mkdiris oli valiku «âparent» asemel olemas «âparents» jne.
Suurte koodibaaside kompileerimise testimisel suuri probleeme ei ilmnenud. Firefoxi ja LLVM/Clangi kompileerimisel kasutatakse python-skripte ja cmake'i, seega coreutilsi asendamine neid ei mĂ”jutanud. Linuxi kerneli kompileerimine kulges suhteliselt sujuvalt, esile kerkis vaid kaks probleemi: veateate vĂ€ljastamine chowni kasutamisel sĂŒmboolse lingiga ning valiku â-nâ puudumine utiliidis ln.
Allikas: opennet.ru
