Debians anpassning för att anvÀnda implementationen av coreutils pÄ Rust-sprÄket

Sylvestre Ledru, kÀnd för sitt arbete med att bygga Debian GNU/Linux med Clang-kompilatorn, meddelade om framgÄngsrik genomförande av ett experiment för att anvÀnda en alternativ uppsÀttning coreutils, skriven pÄ Rust-sprÄket. I coreutils ingÄr verktyg som sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln och ls. För den första fasen av integrationen av Rust-versionen av coreutils i Debian sÀtts följande mÄl:

  • Skapa ett paket med alternativ version av coreutils pĂ„ Rust för Debian och Ubuntu.
  • Ladda ner Debian med GNOME-skrivbordet, med hjĂ€lp av rust-coreutils.
  • Installera de 1000 mest populĂ€ra paketen frĂ„n arkivet.
  • Bygga frĂ„n kĂ€llkoden för Firefox, LLVM/Clang och Linux-kĂ€rnan i en miljö med rust-coreutils.

Efter att ha skapat mer Àn 100 patchar för Rust/coreutils har alla planerade mÄl framgÄngsrikt uppnÄtts. PÄgÄende arbete inkluderar implementering av saknade verktyg och alternativ, förbÀttring av kodens kvalitet och enhetlighet, utveckling av testuppsÀttningen, och ÄtgÀrdande av krascher som uppstÄr vid körning av testuppsÀttningen frÄn GNU Coreutils (141 tester av 613 har hittills lyckats genomföras).

Vid skapandet av rust-coreutils-paketet beslutades det att inte ersÀtta coreutils-paketet, utan möjliggöra deras parallella drift. Rust-versionerna av verktygen installeras i /usr/lib/cargo/bin/ och aktiveras genom att lÀgga till denna katalog i miljövariabeln PATH. Skapandet av rust-coreutils-paketet försvÄrades av behovet av att ladda upp alla byggberoenden till arkivet, inklusive Rust och olika smÄ crate-paket.

Inga sĂ€rskilda problem uppstod vid skapandet av den bootbara bilden, men anpassningen av paketen för en miljö med rust-coreutils krĂ€vde mycket arbete, eftersom mĂ„nga post-installationsskript anropar verktyg frĂ„n coreutils. De flesta problemen berodde pĂ„ bristen pĂ„ nödvĂ€ndiga alternativ, till exempel saknades alternativen "—archive" och "—no-dereference" i verktyget "cp", "—relative" stöd saknades i "ln", "-t" i mktemp, "-fs" i sync, "—owner" och "—group" i install. Andra problem uppstod pĂ„ grund av skillnader i beteende, till exempel stödde inte install-verktyget att ange /dev/null som inmatningsfil, i mkdir fanns i stĂ€llet alternativet "—parents" istĂ€llet för "—parent", osv.

Vid testning av stora kodbaser uppstod inga stora problem. NÀr Firefox och LLVM/Clang byggs anvÀnds python-skript och cmake, sÄ bytet av coreutils pÄverkade inte processen. Bygget av Linux-kÀrnan gick relativt smidigt, endast tvÄ problem uppstod: ett felmeddelande vid anvÀndning av chown med en symbolisk lÀnk och avsaknaden av alternativet "-n" i ln-verktyget.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster