Sylvestre Ledru, i njohur për punën e tij në ndërtimin e Debian GNU/Linux me përdorimin e kompilatorit Clang, njoftoi për realizimin me sukses të një eksperimentimi për angazhimin e një grupi alternativ të utiliteteve coreutils, të shkruara në gjuhën Rust. Në coreutils përfshihen utilitete si sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln dhe ls. Për fazën e parë të integrimit të variantit coreutils në gjuhën Rust në Debian, u vendosën qëllime të mëposhtme:
- Krijimi i njëPaketa me variantin alternativ coreutils në gjuhën Rust për Debian dhe Ubuntu.
- Shkarkimi i Debian me mjedis GNOME, duke përdorur rust-coreutils.
- Instalimi i 1000 paketa më të njohura nga repository.
- Ndërtimi nga kodet burimore të Firefox, LLVM/Clang dhe bërthamës Linux në një mjedis me rust-coreutils.
Pas krijimit të mbi 100 patch-eve për Rust/coreutils, arritëm të realizojmë të gjitha qëllimet e parashikuara. Nga puna e vazhdueshme, theksohet realizimi i utiliteteve dhe opsioneve të munguar, përmirësimi i cilësisë dhe uniformitetit të kodit, zhvillimi i setit të testeve, dhe eliminimi i gabimeve që ndodhin gjatë ekzekutimit të setit të testeve nga GNU Coreutils (deri tani janë ekzekutuar me sukses 141 teste nga 613).
Gjatë krijimit të paketës rust-coreutils, u vendos që të mos zëvendësohet paketa coreutils, por të sigurohet mundësia e punës paralele. Variantet e utiliteteve në gjuhën Rust instalohen në /usr/lib/cargo/bin/ dhe aktivizohen duke e shtuar këtë katalog në variablin ambientor PATH. Krijimi i paketës rust-coreutils e vështirësoi nevojën për të shkarkuar në repository të gjitha varësitë ndihmëse të ndërtimit, duke përfshirë Rust dhe disa crate-pakete të vogla.
Krijimi i një imazhi bootable nuk pati Probleme të veçanta, por adaptimi i paketave për një mjedis me rust-coreutils kërkoi punë të madhe, pasi shumë skriptet post-install thërrasin utilitetet nga grupi coreutils. Numri më i madh i problemeve u shkaktua nga mungesa e opsioneve të nevojshme, për shembull, në utilitetin 'cp' mungonin opsionet '--archive' dhe '--no-dereference', në 'ln' nuk kishte mbështetje për opsionin '--relative', në mktemp '-t', në sync '-fs', në install '--owner' dhe '--group'. Probleme të tjera dolën nga ndryshimet në sjellje, për shembull, utiliteti install nuk mbështeste specifikimin e /dev/null si skedarin hyrës, në mkdir në vend të '--parent' kishte opsionin '--parents' etj.
Gjatë testimit të ndërtimit të bazave të mëdha të kodit nuk u shfaqën probleme të mëdha. Ndërsa ndalohet Firefox dhe LLVM/Clang, përdoren skriptet python dhe cmake, prandaj zëvendësimi i coreutils me to nuk kishte ndikim. Ndërtimi i bërthamës Linux kaloi relativisht pa probleme, vetëm dy çështje dolën: një mesazh gabimi kur përdoret chown me një lidhje simbolike dhe mungesa e opsionit "-n" në utilitarin ln.
Burimi: opennet.ru
