Debian pielāgošana, lai izmantotu Corutils Rust implementāciju

Silvestrs Ledru, kurš pazīstams ar savu darbu, veidojot Debian GNU/Linux, izmantojot kompilatoru Clang, ziņoja par veiksmīgu eksperimentu, izmantojot alternatīvu utilītu kopu, coreutils, kas pārrakstīts Rust valodā. Coreutils ietver tādas utilītas kā sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln un ls. Pirmajā coreutils Rust versijas integrācijas posmā Debianā tika izvirzīti šādi mērķi:

  • Iepakojiet Rust alternatīvu coreutils Debian un Ubuntu.
  • Debian palaišana ar GNOME darbvirsmu, izmantojot rust-coreutils.
  • 1000 populārāko pakotņu instalēšana no repozitorija.
  • Veidojiet no Firefox, LLVM/Clang un Linux kodola avotiem vidē ar rust-coreutils.

Pēc vairāk nekā 100 ielāpu izveidošanas Rust/coreutils, mēs varējām veiksmīgi sasniegt visus iecerētos mērķus. Pašreizējais darbs ietver trūkstošo utilītu un opciju ieviešanu, koda kvalitātes un vienveidības uzlabošanu, testa komplekta izstrādi un avāriju novēršanu, kas rodas, palaižot testa komplektu no GNU Coreutils (141 tests no 613 pašlaik darbojas veiksmīgi ).

Veidojot rust-coreutils paketi, tika nolemts coreutils paketi neaizstāt, bet nodrošināt iespēju tiem darboties paralēli. Utilītas opcijas Rust valodā tiek instalētas mapē /usr/lib/cargo/bin/ un tiek aktivizētas, pievienojot šo direktoriju PATH vides mainīgajam. Rust-coreutils pakotnes izveidi sarežģīja nepieciešamība krātuvē lejupielādēt visas būvēšanas atkarības, tostarp Rust un dažādas mazās kastes pakotnes.

Sāknēšanas attēla izveide nebija problēma, taču pakotņu pielāgošana videi ar rust-coreutils prasīja daudz darba, jo daudzi pēcinstalēšanas skripti izsauc utilītas no coreutils kopas. Visvairāk problēmu radīja nepieciešamo opciju trūkums, piemēram, utilītai “cp” nebija opciju “--archive” un “--no-dereference”, “ln” neatbalstīja “- relatīvā opcija, mktemp neatbalstīja "-t" , sinhronizācijā "-fs", instalācijā - "--owner" un "-group". Citas problēmas radās darbības atšķirību dēļ, piemēram, instalēšanas utilīta neatbalstīja /dev/null kā ievades faila norādīšanu, mkdir bija opcija “--parents”, nevis “-parent” utt.

Pārbaudot lielu kodu bāzu montāžu, lielas problēmas neradās. Veidojot Firefox un LLVM/Clang, tiek izmantoti python skripti un cmake, tāpēc coreutils aizstāšana tos neietekmēja. Linux kodola izveide noritēja samērā gludi, un radās tikai divas problēmas: kļūdu izvade, izmantojot chown ar simbolisku saiti, un opcijas “-n” trūkums utilītprogrammā ln.

Avots: opennet.ru

Pievieno komentāru