Debianды coreutils'дин Rust ишке ашыруусун колдонууга ылайыкташтыруу

Clang компиляторунун жардамы менен Debian GNU/Linux куруу иши менен белгилүү болгон Сильвестр Ледру Rust тилинде кайра жазылган утилиталардын, coreutils альтернативдүү топтомун колдонуу менен ийгиликтүү эксперимент болгонун билдирди. Coreutils сорттоо, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln жана ls сыяктуу утилиталарды камтыйт. Debianга coreutilsтин Rust версиясынын интеграциясынын биринчи этабында төмөнкү максаттар коюлган:

  • Debian жана Ubuntu үчүн coreutils үчүн Rust альтернативасын топтоңуз.
  • Rust-coreutils аркылуу Debianды GNOME иш тактасы менен жүктөө.
  • Репозиторийден 1000 эң популярдуу пакеттерди орнотуу.
  • Firefox, LLVM/Clang жана Linux өзөк булактарынан rust-coreutils менен чөйрөдө түзүңүз.

Rust/coreutils үчүн 100дөн ашык патчтарды жараткандан кийин, биз бардык коюлган максаттарга ийгиликтүү жете алдык. Жүргүзүлүп жаткан иштер жетишпей жаткан утилиталарды жана опцияларды ишке ашырууну, коддун сапатын жана бирдейлигин жогорулатууну, тесттик топтомун иштеп чыгууну жана GNU Coreutils тесттик пакетин иштетүүдө пайда болгон каталарды жоюуну камтыйт (141 тесттен 613 тест ийгиликтүү өтүп жатат. ).

Rust-coreutils пакетин түзүүдө coreutils пакетин алмаштыруу эмес, аларга параллелдүү иштөө мүмкүнчүлүгүн берүү чечими кабыл алынган. Rust тилиндеги утилита параметрлери /usr/lib/cargo/bin/ ичинде орнотулган жана бул каталогду PATH чөйрө өзгөрмөсүнө кошуу менен иштетилет. Rust-coreutils пакетин түзүү бардык куруу көз карандылыктарын репозиторийге, анын ичинде Rust жана ар кандай кичинекей куту пакеттерин жүктөп алуу зарылчылыгы менен татаалдашкан.

Жүктөө сүрөтүн түзүү көйгөй болгон жок, бирок пакеттерди rust-coreutils менен чөйрөгө ыңгайлаштыруу көп эмгекти талап кылды, анткени орнотуудан кийинки көптөгөн скриптер coreutils топтомунан утилиталарды чакырат. Көйгөйлөрдүн көбү керектүү варианттардын жоктугунан улам келип чыккан, мисалы, “cp” утилитасында “--архив” жана “--но-dereference” опциялары жок, “ln” “-” дегенди колдогон эмес. салыштырмалуу” опциясы, mktemp колдоого алынган жок “-t” , синхрондоштурууда "-fs", орнотууда - "--owner" жана "-group". Башка көйгөйлөр жүрүм-турумдагы айырмачылыктардан улам келип чыккан, мисалы, орнотуунун утилитасы /dev/null киргизүү файлы катары көрсөтүүнү колдогон эмес, mkdirде "-parent" ордуна "--parents" параметри болгон ж.б.

Чоң коддук базаларды монтаждоону сынап көргөндө эч кандай чоң көйгөйлөр болгон эмес. Firefox жана LLVM/Clang куруп жатканда, python скрипттери жана cmake колдонулат, андыктан coreutils алмаштыруу аларга таасирин тийгизген жок. Linux ядросун куруу салыштырмалуу жай жүрдү, эки гана көйгөй пайда болду: символдук шилтеме менен chown колдонууда ката чыгуу жана ln утилитасында “-n” опциясынын жоктугу.

Source: opennet.ru

Комментарий кошуу