Adapti Debianon por uzi la Rust-efektivigon de coreutils

Sylvestre Ledru, konata pro sia laboro konstruanta Debian GNU/Linukso per la Clang-kompililo, raportis sukcesan eksperimenton uzante alternativan aron de iloj, korutiloj, reverkitaj en la Rust-lingvo. Coreutils inkluzivas ilojn kiel sort, cat, chmod, chown, chroot, cp, dato, dd, echo, gastnomo, id, ln kaj ls. Por la unua etapo de integriĝo al Debiano de la Rust-versio de coreutils, la sekvaj celoj estis fiksitaj:

  • Paku Rust-alternativon al coreutils por Debian kaj Ubuntu.
  • Lanĉante Debian per GNOME-labortablo uzante rust-coreutils.
  • Instalante la 1000 plej popularajn pakaĵojn el la deponejo.
  • Konstruu el Firefox, LLVM/Clang kaj Linukso-kernfontoj en medio kun rust-coreutils.

Post kreado de pli ol 100 diakiloj por Rust/coreutils, ni povis sukcese atingi ĉiujn celitajn celojn. La daŭranta laboro inkluzivas la efektivigon de mankantaj iloj kaj opcioj, plibonigante la kvaliton kaj unuformecon de la kodo, disvolvante la testan suiteon, kaj forigante kraŝojn kiuj okazas dum rulado de la testaro de GNU Coreutils (141 testoj el 613 funkcias ĝis nun sukcese). ).

Kiam oni kreis la pakaĵon rust-coreutils, oni decidis ne anstataŭigi la pakaĵon coreutils, sed havigi al ili la kapablon labori paralele. Utilaj opcioj en la Rust-lingvo estas instalitaj en /usr/lib/cargo/bin/ kaj estas aktivigitaj aldonante ĉi tiun dosierujon al la mediovariablo PATH. Krei la rust-coreutils-pakaĵon estis malfaciligita pro la bezono elŝuti ĉiujn konstruajn dependencojn en la deponejon, inkluzive de Rust kaj diversaj malgrandaj kestaj pakoj.

Krei ekbildon ne estis problemo, sed adapti la pakaĵojn por medio kun rust-coreutils postulis multe da laboro, ĉar multaj post-instalaj skriptoj vokas ilojn de la aro de coreutils. La plej granda nombro da problemoj estis kaŭzita de la manko de necesaj opcioj, ekzemple, la "cp" ilo ne havis la "--archive" kaj "--no-dereference" opciojn, "ln" ne subtenis la "- relative”, mktemp ne subtenis “-t” , en sinkronigi "-fs", en instali - "--owner" kaj "-group". Aliaj problemoj ekestis pro diferencoj en konduto, ekzemple, la instalilo ne subtenis specifi /dev/null kiel enigdosieron, mkdir havis la opcion "--parents" anstataŭ "-parent", ktp.

Dum testado de la kunigo de grandaj kodaj bazoj, ne aperis gravaj problemoj. Dum konstruado de Firefox kaj LLVM/Clang, python-skriptoj kaj cmake estas uzataj, do anstataŭigi korutilojn ne influis ilin. Konstruado de la Linukso-kerno iris relative glate, kun nur du problemoj aperintaj: erara eligo dum uzado de chown kun simbola ligilo kaj la manko de "-n" opcio en la ln-utilo.

fonto: opennet.ru

Aldoni komenton