Sylvestre Ledru, i njohur për punën e tij në mbledhjen e Debian GNU/Linux duke përdorur kompilatorin Clang, njoftoi për realizimin me sukses të një eksperimenti për të angazhuar një grup alternativ të utiliteteve coreutils, të rishkruara në gjuhën Rust. Midis coreutils përfshihen utilitetet si sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln dhe ls. Për fazën e parë të integrimit në Debian, qëllimet për variantin e coreutils në gjuhën Rust ishin:
- Krijimi i një pakete me variantin alternativ të coreutils në gjuhën Rust për Debian dhe Ubuntu.
- Ngarko Debian me desktopin GNOME, duke përdorur rust-coreutils.
- Instalimi i 1000 пакета më të njohura nga repositories.
- Konstruksioni nga kodet burimor të Firefox, LLVM/Clang dhe bërthamës Linux në një ambient me rust-coreutils.
Pas krijimit të më shumë se 100 patch-eve për Rust/coreutils, u arrit me sukses të gjitha objektivat e paracaktuara. Në punën e vazhdueshme, përmendet realizimi i utiliteteve dhe opsioneve të munguar, përmirësimi i cilësisë dhe homogjenitetit të kodit, zhvillimi i setit të testeve, si dhe eliminimi i dështimeve që ndodhin gjatë ekzekutimit të setit të testit nga GNU Coreutils (deri tani 141 teste nga 613 janë përfunduar me sukses).
Gjatë krijimit të paketës rust-coreutils, u vendos që të mos zëvendësohej paketa coreutils, por të sigurohej mundësia e funksionimit paralel. Variantet e utiliteteve në gjuhën Rust instalohen në /usr/lib/cargo/bin/ dhe aktivizohen duke shtuar këtë katalog në ndryshoren PATH. Krijimi i paketës rust-coreutils e vështirësoi nevoja për të ngarkuar në repository të gjitha varësitë ndihmëse të ndërtimit, përfshirë Rust dhe disa paketa të vogla crate.
Me krijimin e imazhit të ngarkuesit nuk pati probleme të veçanta, por adaptimi i paketave për ambientin me rust-coreutils kërkoi punë të madhe, pasi shumë skripte 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, utiliteti 'cp' nuk kishte 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'. Problemet e tjera dolën për shkak të diferencave në sjellje, për shembull, utiliteti install nuk mbështeste përcaktimin e /dev/null si një skedë hyrëse, në mkdir në vend të '—parent' kishte opsionin '—parents' etj.
Gjatë testimit të ndërtimit të bazave të mëdha të kodit nuk kishte probleme të mëdha. Gjatë ndërtimit të Firefox dhe LLVM/Clang përdoren skripte python dhe cmake, kështu që zëvendësimi i coreutils për to nuk ndikoi. Ndërtimi i bërthamës Linux kaloi relativisht pa probleme, dolën vetëm dy probleme: shfaqja e një gabimi gjatë përdorimit të chown me një lidhje simbolike dhe mungesa e opsionit '-n' në utilitetin ln.
Burimi: opennet.ru
