Debian-ı coreutils-in Rust tətbiqindən istifadə etmək üçün uyğunlaşdırmaq

Clang kompilyatorundan istifadə edərək Debian GNU/Linux qurmaq işi ilə tanınan Sylvestre Ledru Rust dilində yenidən yazılmış alternativ kommunal proqramlar, coreutils dəstindən istifadə edərək uğurlu təcrübə haqqında məlumat verdi. Coreutils-ə sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln və ls kimi utilitlər daxildir. Coreutils-in Rust versiyasının Debian-a inteqrasiyasının ilk mərhələsi üçün aşağıdakı məqsədlər qoyuldu:

  • Debian və Ubuntu üçün coreutils üçün Rust alternativini paketləyin.
  • Rust-coreutils istifadə edərək Debian-ı GNOME masaüstü ilə yükləmək.
  • Repozitoriyadan 1000 ən populyar paketin quraşdırılması.
  • Firefox, LLVM/Clang və Linux nüvə mənbələrindən rust-coreutils ilə mühitdə qurun.

Rust/coreutils üçün 100-dən çox yamaq yaratdıqdan sonra biz bütün nəzərdə tutulan məqsədlərə uğurla nail ola bildik. Davam edən işlərə çatışmayan kommunal proqramların və seçimlərin tətbiqi, kodun keyfiyyətinin və vahidliyinin yaxşılaşdırılması, test paketinin hazırlanması və GNU Coreutils-dən test dəstinin işlədilməsi zamanı baş verən qəzaların aradan qaldırılması daxildir (141 testdən 613-i indiyədək uğurla həyata keçirilir). ).

Rust-coreutils paketini yaratarkən, coreutils paketini əvəz etmək deyil, paralel işləmək qabiliyyətini təmin etmək qərara alındı. Rust dilində kommunal seçimlər /usr/lib/cargo/bin/-də quraşdırılır və bu kataloqu PATH mühit dəyişəninə əlavə etməklə aktivləşdirilir. Rust-coreutils paketinin yaradılması Rust və müxtəlif kiçik sandıq paketləri daxil olmaqla, bütün qurma asılılıqlarını depoya yükləmək ehtiyacı ilə çətinləşdi.

Yükləmə şəklinin yaradılması problem deyildi, lakin paketləri rust-coreutils ilə mühitə uyğunlaşdırmaq çox iş tələb etdi, çünki bir çox quraşdırma sonrası skriptlər coreutils dəstindən utilitləri çağırır. Ən çox problem lazımi seçimlərin olmaması ilə əlaqədar idi, məsələn, "cp" yardım proqramında "--arxiv" və "--no-dereference" seçimləri yox idi, "ln" "-" funksiyasını dəstəkləmədi. Nisbi” seçimi, mktemp dəstəkləmədi “-t” , sinxronizasiyada "-fs", quraşdırmada - "--owner" və "-group". Davranış fərqləri səbəbindən digər problemlər yarandı, məsələn, quraşdırma proqramı giriş faylı kimi /dev/null göstərilməsini dəstəkləmədi, mkdir-də “-parent” əvəzinə “--parents” seçimi var idi və s.

Böyük kod bazalarının yığılmasını sınaqdan keçirərkən heç bir böyük problem yaranmadı. Firefox və LLVM/Clang qurarkən, python skriptləri və cmake istifadə olunur, buna görə də coreutillərin dəyişdirilməsi onlara təsir etmədi. Linux nüvəsinin qurulması nisbətən rəvan getdi, yalnız iki problem yarandı: simvolik əlaqə ilə chown istifadə edərkən səhv çıxışı və ln yardım proqramında "-n" seçiminin olmaması.

Mənbə: opennet.ru

Добавить комментарий