Debian-ի հարմարեցում կորեուտիլների Rust ներդրումն օգտագործելու համար

Սիլվեստր Լեդրուն, որը հայտնի է Clang կոմպիլյատորի օգտագործմամբ Debian GNU/Linux-ի կառուցման իր աշխատանքով, հաղորդում է հաջող փորձի մասին՝ օգտագործելով այլընտրանքային կոմունալ ծառայություններ՝ coreutils, վերագրված Rust լեզվով: Coreutils-ը ներառում է այնպիսի օգտակար ծրագրեր, ինչպիսիք են տեսակավորումը, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln և ls: Coreutils-ի Rust տարբերակի Debian-ին ինտեգրման առաջին փուլի համար սահմանվել են հետևյալ նպատակները.

  • Փաթեթավորեք Rust այլընտրանք Coreutils-ին Debian-ի և Ubuntu-ի համար:
  • Debian-ի բեռնում GNOME աշխատասեղանի միջոցով՝ օգտագործելով rust-coreutils:
  • Պահոցից 1000 ամենահայտնի փաթեթների տեղադրում:
  • Կառուցեք Firefox, LLVM/Clang և Linux միջուկի աղբյուրներից՝ rust-coreutils-ով միջավայրում:

Rust/coreutils-ի համար 100-ից ավելի patches ստեղծելուց հետո մենք կարողացանք հաջողությամբ հասնել բոլոր նախատեսված նպատակներին: Ընթացիկ աշխատանքը ներառում է բացակայող կոմունալ ծրագրերի և ընտրանքների իրականացում, կոդի որակի և միատեսակության բարելավում, թեստային փաթեթի մշակում և խափանումների վերացում, որոնք տեղի են ունենում GNU Coreutils-ից թեստային փաթեթը գործարկելու ժամանակ (մինչ այժմ հաջողությամբ են աշխատում 141-ից 613 թեստ։ )

Russt-coreutils փաթեթը ստեղծելիս որոշվել է ոչ թե փոխարինել coreutils փաթեթը, այլ ապահովել դրանց զուգահեռ աշխատելու հնարավորություն։ Rust լեզվի օգտակար տարբերակները տեղադրվում են /usr/lib/cargo/bin/-ում և ակտիվանում են՝ ավելացնելով այս գրացուցակը PATH միջավայրի փոփոխականին: Rust-coreutils փաթեթի ստեղծումը բարդանում էր բոլոր build-ի կախվածությունները պահոց ներբեռնելու անհրաժեշտությամբ, ներառյալ Rust-ը և տարբեր փոքր տուփերի փաթեթները:

Բեռնախցիկի պատկեր ստեղծելը խնդիր չէր, բայց փաթեթները rust-coreutils-ով միջավայրին հարմարեցնելը մեծ աշխատանք էր պահանջում, քանի որ հետտեղադրվող շատ սկրիպտներ կանչում են կոմունալ ծառայություններ coreutils հավաքածուից: Ամենամեծ թվով խնդիրներ առաջացել են անհրաժեշտ տարբերակների բացակայության պատճառով, օրինակ՝ «cp» կոմունալը չուներ «--արխիվ» և «--առանց վերաբերման» տարբերակները, «ln»-ը չէր աջակցում «-»-ին: հարաբերական» տարբերակը, mktemp-ը չէր աջակցում «-t», համաժամանակյա «-fs», տեղադրման ժամանակ՝ «--owner» և «-group»: Այլ խնդիրներ առաջացան վարքագծի տարբերության պատճառով, օրինակ՝ install utility-ը չէր աջակցում նշել /dev/null որպես մուտքային ֆայլ, mkdir-ն ուներ «--parents» տարբերակը «-parent»-ի փոխարեն և այլն:

Խոշոր կոդի հիմքերի հավաքումը փորձարկելիս լուրջ խնդիրներ չառաջացան: Firefox-ը և LLVM/Clang-ը կառուցելիս օգտագործվում են python սկրիպտներ և cmake, ուստի coreutil-ների փոխարինումը չի ազդել դրանց վրա։ Linux-ի միջուկի կառուցումը համեմատաբար սահուն ընթացավ, և միայն երկու խնդիր առաջացավ՝ սիմվոլիկ հղումով chown-ի օգտագործման ժամանակ սխալ ելք և ln կոմունալում «-n» տարբերակի բացակայությունը:

Source: opennet.ru

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