Debian-г coreutils-ийн Rust хэрэгжилтийг ашиглахад тохируулж байна

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

  • 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 болон төрөл бүрийн жижиг хайрцагны багцуудыг багтаасан бүх бүтээх хамаарлыг репозитор руу татаж авах шаардлагатай байсан тул төвөгтэй байсан.

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

Том кодын суурийн угсралтыг турших үед томоохон асуудал гараагүй. Firefox болон LLVM/Clang-г бүтээхдээ python скрипт болон cmake ашигладаг тул coreutil-г солих нь тэдэнд нөлөөлсөнгүй. Линуксийн цөмийг бүтээх нь харьцангуй хялбар байсан бөгөөд зөвхөн хоёр асуудал гарлаа: симболын холбоос бүхий chown ашиглах үед гарсан алдаа, ln хэрэгсэлд "-n" сонголт байхгүй байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх